Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные по сетям Л7-Л14 (693).doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
8.89 Mб
Скачать

2.1.5. Протокол icmp

Обычно считается, что ICMP это часть IP уровня. С его помощью передаются сообщения об ошибках и сообщения о возникновении условий и ситуаций, которые требуют к себе особого внимания. ICMP сообщения обрабатываются IP уровнем или более высокими уровнями (TCP или UDP). При появлении некоторых ICMP сообщений генерируются сообщения об ошибках, которые передаются пользовательским процессам.

ICMP сообщения передаются внутри IP датаграмм, как показано на рис. 2.10.

Рис 2.10. Инкапсуляция ICMP сообщений в IP датаграммы.

Официальная спецификация ICMP находится в RFC 792.

На рис. 2.11 показан формат ICMP сообщения. Первые 4 байта одинаковы для всех сообщений, однако остальные отличаются в зависимости от типа сообщения.

Существует 15 различных значений для поля типа (type), которые указывают на конкретный тип ICMP сообщения. Для некоторых ICMP сообщений используются различные значения в поле кода (code), подобным образом осуществляется дальнейшее подразделение ICMP сообщений.

Поле контрольной суммы (checksum) охватывает ICMP сообщения целиком. Алгоритм, используемый при этом, такой же, как при расчёте контрольной суммы IP заголовка. Контрольная сумма ICMP присутствует всегда.

0 7

8 15

16 31

8-бит код

8-бит код

16-бит контрольная сумма

содержимое зависит от типа и кода

Рис. 2.11. ICMP сообщение.

ICMP могут быть различных типов. Возможные типы ICMP сообщений, как они определяются полями типа (type) и кода (code), приведены на рис. 1.12.

 

тип

код

Описание

запрос

ошибка

0

0

эхо-отклик

·

3

назначение недоступно:

0

сеть недоступна – network unreachable

·

1

хост недоступен – host unreachable

·

2

протокол недоступен – protocol unreachable

·

3

порт недоступен – port unreachable

·

4

необходима фрагментация, однако установлен бит “не фрагментировать”- fragmentation needed but don’t-fragment bit set

·

5

не работает маршрутизация от источника – source route failed

·

6

неизвестна сеть назначения – destination network unknown

·

7

неизвестен хост назначения – destination host unknown

·

8

хост источник изолирован – source host isolated

·

9

сеть назначения закрыта администратором – destination network administrativrly prohibited

·

10

хост назначения закрыт администратором – destination host administrativrly prohibited

·

11

сеть недоступна для TOS – network unreachable for TOS

·

12

хост недоступен для TOS – host unreachable for TOS

·

13

связь административно закрыта путем фильтрации – communication administratively prohibited by filtering

·

14

нарушено старшинство для хоста – host precedence violation

·

15

старшинство разъединено – precedence cutoff in effect

·

4

0

подавление источника (элементарное управление потоком данных) – source quench

·

5

перенаправление – redirect:

0

перенаправление в сеть – redirect for network

·

1

перенаправление в хост – redirect for host

·

Рис. 2.12. Возможные типы ICMP сообщений.

Последние две колонки на рисунке указывают, является ли ICMP сообщение запросом (query) или сообщением об ошибке (error). Подобное разделение необходимо, потому что сообщения об ошибках ICMP иногда обрабатываются специальным образом. Например, ICMP сообщение об ошибке никогда не генерируется в ответ на ICMP сообщение об ошибке. (Если не придерживаться этого правила, то ошибка будет генерироваться на ошибку до бесконечности.)

Когда посылается ICMP сообщение об ошибке, оно всегда содержит IP заголовок и первые 8 байт IP датаграммы, которая вызвала генерацию ICMP ошибки. Это позволяет принимающему ICMP модулю установить соответствие между полученным сообщением, одним из конкретных протоколов (TCP или UDP из поля протоколов в IP заголовке) и с одним из конкретных пользовательских процессов (с помощью номера порта TCP или UDP, который содержится в первых 8 байтах заголовка TCP или UDP IP датаграммы).

Сообщение об ошибке ICMP никогда не генерируется в ответ на:

  1. ICMP сообщение об ошибке. (ICMP сообщение об ошибке, однако, может быть сгенерировано в ответ на ICMP запрос.)

  2. Датаграмму, направляющуюся на широковещательный IP адрес или групповой адрес IP (адрес класса D).

  3. Датаграмму, которая посылается широковещательным запросом на канальном уровне.

  4. Фрагмент, который не является первым.

  5. Датаграмму, адрес источника, которой не указывает на конкретный хост. Это означает, что адрес источника не может быть нулевым, lookup адресом, широковещательным или групповым адресом.

Эти правила введены для того, чтобы предотвратить лавинообразный рост количества широковещательных сообщений, который может произойти, если ICMP сообщения об ошибках будут отправляться в ответ на широковещательные пакеты.