Контрольная сумма TCP, почему?

1395
quack quixote

Зачем TCP нужна контрольная сумма, когда нижние уровни все равно проверяют целостность (например, Ethernet CRC)?

3

2 ответа на вопрос

12
wfaulk

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

http://www.rfc-editor.org/rfc/rfc1149.txt Richard Hoskins 14 лет назад 3
Если вам не нужна точность или гарантированная доставка, вы всегда можете использовать UDP. quack quixote 14 лет назад 1
@Richard Hoskins, почему вы связались с IP через CP (почтовый голубь)? quack quixote 14 лет назад 0
Pigeons are notorious for dropping "packets". Thanks, I'll be here all week. Please tip your waitstaff. Try the veal. wfaulk 14 лет назад 4
@quack В качестве примера протокола, который не проверяет ошибки. Richard Hoskins 14 лет назад 4
я знаю, я просто хотел оправдание сказать "IP over CP" :) quack quixote 14 лет назад 0
:% s / CP / AC / g ^ M:% s / почтовый голубь / Avian Carriers / g ^ M (прошу прощения за мое `vi`.) Eroen 12 лет назад 0
1
TheJoke

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

Лично я думаю об этом как о пережитке ранних лет разработки протокола.

Вот почему я считаю эту контрольную сумму чокнутой:

  1. он слишком слаб, чтобы обеспечить значимую защиту
  2. все еще больно рассчитывать (особенно на микроконтроллерах. Это пустая трата циклов)
  3. это не защищает от манипуляций (потому что это так легко исправить)
  4. многие реализации игнорируют его в любом случае

Похожие вопросы