Зачем TCP нужна контрольная сумма, когда нижние уровни все равно проверяют целостность (например, Ethernet CRC)?
2 ответа
12
Протокол TCP гарантирует точную доставку независимо от базовых механизмов. Нет гарантии, что каждый протокол, который он может запустить, будет выполнять какую-либо проверку целостности. SLIP, например, не обнаруживает ошибок.
1
Потому что это протокол, который коренится в начале 1970-х годов. Слоистая модель общения еще тогда не была здравым смыслом.
Лично я думаю об этом как о пережитке ранних лет разработки протокола.
Вот почему я считаю эту контрольную сумму чокнутой:
- он слишком слаб, чтобы обеспечить значимую защиту
- все равно больно рассчитывать (особенно на микроконтроллеры. Это пустая трата циклов)
- это не защищает от манипуляций (потому что это так легко исправить)
- многие реализации игнорируют его в любом случае