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

3

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

шарлатан
источник

Ответы:

13

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

wfaulk
источник
3
rfc-editor.org/rfc/rfc1149.txt
Ричард Хоскинс
1
Если вам не нужна точность или гарантированная доставка, вы всегда можете использовать UDP.
Quackote Quixote
@Richard Hoskins, почему вы связались с IP через CP (почтовый голубь)?
Квик-кихот
4
Голуби печально известны тем, что сбрасывают «пакеты». Спасибо, я буду здесь всю неделю. Пожалуйста, дайте чаевые вашему официанту. Попробуйте телятину.
wfaulk
4
@quack В качестве примера протокола, который не проверяет ошибки.
Ричард Хоскинс
1

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

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

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

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