Почему протокол ftp иногда выдает ошибки передачи, если данные используют TCP, который является контрольной суммой? - PullRequest
1 голос
/ 11 января 2011

Время от времени загрузка (особенно больших) файлов через ftp приводит к ошибкам. Я предполагаю, что это также частично является причиной того, что все основные сайты публикуют внешние контрольные суммы вместе со своими загрузками.

Как это возможно, если ftp проходит через TCP, который имеет встроенную контрольную сумму и повторно отправляет данные, если они передаются некорректно?

Можно утверждать, что это происходит из-за короткой длины CRC в протоколе TCP (который, я думаю, 16-битный или что-то в этом роде), и коллизии просто случаются слишком часто. но 1) для того, чтобы это было верно, не только должен иметь место конфликт CRC, но также и случайная ошибка сети должна изменить как CRC в пакете, так и сам пакет так, чтобы CRC был действительным для нового пакета ... Даже с 16 bitCRC это так вероятно? 2) Казалось бы, не так много ошибок, скажем, при просмотре веб-страниц, которые также проходят через TCPIP.

Ответы [ 2 ]

3 голосов
/ 11 января 2011

FTP различает данные ASCII и BINARY и может соответствующим образом изменять поток данных, что является наиболее распространенной причиной, с которой я столкнулся при повреждении загрузок с FTP.(Контрольные суммы TCP будут вычисляться для измененных данных, поэтому на уровне TCP ничего не будет выглядеть неправильно.)

Следующим наиболее распространенным, я полагаю, будет перевод, который будет усечен из-за тайм-аута или другой сети.ошибка.В этом случае контрольные суммы TCP будут локально правильными, но частично загруженный файл поврежден.

Протокол FTP немного недружелюбен к брандмауэру, поскольку может включать внешние хосты, подключающиеся к непредсказуемым номерам портов, но этообычно проявляется в невозможности передачи чего-либо вообще, а не в поврежденной загрузке.

Помимо проблем ASCII и BINARY, я не могу придумать причину, по которой FTP-соединения должны быть более восприимчивыми к поврежденным передачам.Может быть, вы просто замечаете их больше, потому что они, как правило, представляют собой такие вещи, как двоичные файлы или сжатые файлы, которые должны быть бит за битом полными и правильными, а если нет, вы получаете большое уродливое сообщение об ошибке.Скорее всего, можно заметить, например, отсутствие рекламы на веб-странице, потому что время подключения к рекламной сети истекло.

1 голос
/ 11 января 2011

16-битная контрольная сумма не поразительно сильна, особенно если учесть размер некоторых передач по FTP, например загрузки программного обеспечения.Однако на нижних уровнях есть CRC и т. Д., Которые компенсируют это.

Я не думаю, что у меня была испорченная загрузка FTP в этом веке.

...