Иногда мы сталкиваемся с проблемой с поврежденными файлами после загрузки по протоколу HTTP.
Сегодня я прочитал статья это говорит о том, что протокол TCP не на 100% надежен из-за слабого алгоритма CRC и других вещей.
Как я понял из RFC, HTTPS использует TLS поверх TCP и при обработке использует хэш-функции. Т.е. целостность данных дополнительно контролируется.
Могу ли я считать загрузку на 100% надежной (или насколько надежной?), Если я просто переключу протокол на HTTPS?
Хотя TCP (протокол, на котором построен http / https) имеет обнаружение ошибок в виде контрольной суммы на борту (что вызывает повторные передачи), он не пуленепробиваемый. Это очень редко, но многочисленные перевороты битов в одном пакете все же могут привести к получению действительной контрольной суммы. Если остальная часть пакета все еще не повреждена, эти ошибки могут попасть в ваше приложение. Я удобно пропускаю здесь обнаружение / исправление ошибок на нижних уровнях передачи.
Как правило, алгоритмы шифрования включают гораздо более надежные контрольные суммы как часть безопасности данных. TLS / SSL (через TCP), безусловно, работает, поэтому ваш вывод технически обоснован.
Однако учтите, что это очень и очень редко; в том же масштабе, что и ошибки в оперативной памяти (без ECC), кабелях sata и дисковом хранилище (как на стороне сервера, так и на стороне клиента!). В целях надежности переключаться на https, не решая другие потенциальные проблемы, глупо и никогда не достигнет «100%» надежности.
По моему опыту, это так же вероятно, что причина в какой-то другой части системы (приложение, обрабатывающее загруженные данные, возможно, автоматическое преобразование формата в базе данных, ...).
Вся эта проблема относится и к протоколам, отличным от http.
Кстати - цитируемой вами статье более 11 лет.
Я никогда не слышал о том, что HTTPS более надежен, чем HTTP (и даже не слышал о том, что HTTP ненадежен), поэтому я не думаю, что это будет иметь значение. Однако я могу ошибаться.
Я бы сказал, что прежде чем вы начнете указывать пальцем на протокол, вы абсолютно уверены, что ваша процедура загрузки или приложение не вызывает проблемы? Например, раньше я сталкивался с неожиданными проблемами загрузки / выгрузки в PHP, которые сбивали с толку, но в конце концов их легко исправить.
Вы также не упоминаете, что именно вы загружаете, его размер и уровень коррупции.