
- •5.6.Уровни стека tcp/ip
- •Алгоритм построения таблицы маршрутов
- •28. Ограничения nat
- •9.4 Доставка сообщения icmp
- •9.5 Формат сообщения icmp
- •9.7 Формат сообщения запроса эха и ответа эха
- •9.10 Формат подавления источника
- •34.Протокол udp
- •Контрольное суммирование
- •Формат сегмента tcp
- •Номер подтверждения
- •[Править] Смещение данных
- •[Править] Зарезервировано
- •[Править] Флаги (управляющие биты)
- •Контрольная сумма
- •Указатель важности
- •[Править] Механизм действия протокола
- •[Править] Установка соединения
- •[Править] Передача данных
- •[Править] Завершение соединения
- •[Править] Известные проблемы [править] Максимальный размер сегмента
- •[Править] Обнаружение ошибок при передаче данных
- •Выделенный маршрутизатор (dr) и резервный выделенный маршрутизатор (bdr)
9.4 Доставка сообщения icmp
Сообщения ICMP требуют двух уровней инкапсуляции, как показано на рисунке 9.1. Каждое сообщения ICMP передается по интернету в поле данных IP-дейтаграммы, которая сама передается по каждой физической сети в поле данных кадра. Дейтаграммы, несущие сообщения ICMP маршрутизируются точно так же, как и дейтаграммы, несущие информацию для пользователей; для них не используются дополнительные приоритет или надежность. Поэтому, сами сообщения об ошибках могут быть потеряны или удалены. Более того, в уже переполненной сети сообщения об ошибках могут вызвать дополнительное переполнение. Исключение делается для процедур обработки ошибок, если IP-дейтаграмма, несущая сообщение ICMP, вызвала ошибку. Это исключение, установленное для того, чтобы избежать проблемы появления сообщений об ошибках, вызванных в свою очередь сообщениями об ошибках, определяет, что сообщения ICMP не генерируются для ошибок, появившихся из-за дейтаграмм, несущих сообщения об ошибках ICMP.
--------------------------------------
|заголовок | данные ICMP |
| ICMP | |
--------------------------------------
V V
-------------------------------------------------
| заголовок| область данных дейтаграммы |
|дейтаграмм| |
-------------------------------------------------
V V
-----------------------------------------------------------
|заголовок| область данных кадра |
|кадра | |
9.5 Формат сообщения icmp
Хотя каждое сообщение ICMP имеет свой собственный формат, все они начинаются с трех одинаковых полей: 8-битового целочисленного поля ТИП, которое идентифицирует сообщение, 8-битового поля КОД, которое обеспечивает более точную информацию о типе сообщения, и 16-битового поля КОНТРОЛЬНАЯ_СУММА(ICMP использует тот же самый аддитивный алгоритм, что и IP, но контрольная сумма ICMP учитывает только сообщение ICMP). Помимо того, сообщения ICMP, сообщающие об ошибках, всегда включают заголовок и первые 64 бита данных дейтаграммы, вызвавшей ошибку.
Причиной возвращения не только заголовка дейтаграммы, вызвавшей ошибку, является желание позволить получателю более точно определять, какие протоколы и какие прикладные программы ответственны за появление этой дейтаграммы. Как мы увидим позже, протоколы более высокого уровня в связке TCP/IP разрабатывались таким образом, что критическая информация закодирована в первых 64 битах.
Поле ТИП ICMP определяет смысл сообщения, а также его формат. Эти типы включают:
9.7 Формат сообщения запроса эха и ответа эха
Рисунок 9.2 содержит формат сообщений запроса эха и ответа на запрос эха.
0 8 16
------------------------------------------------------------
|тип(8 или 0)| код(0) | Контрольная сумма |
------------------------------------------------------------
| идентификатор | последовательный номер |
------------------------------------------------------------
| необязательные данные |
------------------------------------------------------------
| ...... |
------------------------------------------------------------
Рисунок 9.2 Формат сообщения запроса эха и ответа на него
Поле, названное НЕОБЯЗАТЕЛЬНЫЕ ДАННЫЕ имеет переменную длину и содержит данные, которые надо вернуть отправителю. Ответ на эхо всегда возвращает те же самые данные, что были получены им в запросе. Поля ИДЕНТИФИКАТОР и ПОСЛЕДОВАТЕЛЬНЫЙ НОМЕР используются отправителем для проверки соответствия ответов запросам. Значение поля ТИП определяет, является ли сообщение запросом(8) или ответом(0).