Пример анализа протокола
541
ошибочным. При просмотре этих данных мы заметили, что, возвращая заго-
ловок, центральная система «скорректировала» поле контрольной суммы и
записала в него значение 0000. Очевидно, центральная система не согласна с
вычисленной маршрутизатором контрольной суммой.
Время от времени ошибки с вычислением контрольной суммы происходят.
Они могут быть вызваны проблемами передачи и необходимы для выявле-
ния подобного рода проблем. В каждом семействе протоколов существует
механизм для восстановления после ошибок в контрольной сумме. Как они
могут обрабатываться в TCP/IP?
Чтобы определить действие протокола, корректное в данной ситуации, мы
обратились к авторитетным источникам - документам RFC. RFC 791, Inter-
net Protocol, снабдил нас информацией о вычислении контрольной суммы,
но лучшим источником для данной конкретной проблемы стал документ
RFC 1122, Requirements for Internet Hosts - Communication Layers (Требова-
ния к узлам сети Интернет - уровни передачи данных), за авторством
Р. Брейдена (R. Braden). Этот документ содержит две отсылки к действиям,
которые должны быть предприняты. Следующие выдержки взяты со стра-
ницы 29 документа RFC 1122:
В нижеследующем тексте в определенных случаях в отношении полученной
дейтаграммы используется выражение «молча удалить». Это означает, что
дейтаграмма удаляется без дополнительной обработки, а узел не посылает ка-
кие-либо ICMP-сообщения об ошибках (см. раздел 3.2.2) в результате...
...Узел ОБЯЗАН проверять правильность контрольной суммы заголовка IP для
каждой полученной дейтаграммы и молча удалять все дейтаграммы с невер-
ными контрольными суммами.
Следовательно, получив пакет с неверной контрольной суммой, система не
должна ничего с ним делать. Пакет следует удалить, а затем ожидать по-
ступления следующего пакета. Система не должна отвечать сообщением об
ошибке. Система не может ответить на неверную контрольную сумму 1Р-за-
головка, поскольку не может определить, откуда в действительности посту-
пил пакет. Если под сомнением контрольная сумма заголовка, как опреде-
лить, что верны адреса в заголовке? А если нет уверенности относительно
источника пакета, как можно на него ответить?
IP полагается на протоколы верхних уровней в восстановлении после таких
ошибок. Если используется TCP (как было в данном случае), источник TCP в
конечном итоге замечает, что получатель не подтвердил доставку сегмента, и
посылает сегмент заново. Если используется UDP, приложение-источник от-
вечает за восстановление после ошибки. Ни в том ни в другом случае восста-
новление не зависит от сообщения об ошибке, генерируемого получателем.
Итак, получив неверную контрольную сумму, центральная система должна
была просто удалить испорченный пакет. Мы уведомили о проблеме разработ-
чиков, и, следует отметить, они прислали нам поправку к программному обес-
печению в пределах двух недель. Более того, поправка замечательно работала!