Home

Page 2
Page 2
background image

 

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

 

Таким  образом,  ICMP  не  делает  IP  сеть  надежной,  он  применяется  лишь 

для уведомления об ошибках, при чем доставка самих ICMP сообщений тоже не 
гарантируется.  ICMP  предназначен  для  помощи  в  диагностике  неисправностей, 
но при этом НИЧЕГО не гарантирует. 
 

ICMP передается по составной сети непосредственно в IP пакете, для чего 

одно  из значений поля Protocol IP заголовка (а именно 01) зарезервировано за 
ICMP.  Протокол  ICMP  описан  в  основном  в  RFC792.  Рассмотрим  обобщенный 
формат ICMP заголовка: 
 
<----------8--------><---------8---------><--------------------16--------------------> 

Type 

Code 

Checksum 

Зарезервировано, может использоваться в зависимости от значений полей 

тип и код 

Данные,  могут  иметь  переменную  длину,  содержимое  поля  зависит  от 
значений полей тип и код 

 
Значение полей: 

Поле  Type  показывает  тип  пакета.  Что  это  значит?  Уж  ясно, что  протокол 

ICMP выполняет много различных, порой непохожих друг на друга функций. Как 
один  протокол  с  одним,  формализованным,  заголовком  может  выполнять 
множество  разнородных  задач?  Фактически,  поле  Type  показывает,  что  именно 
делает  данное  сообщение  ICMP,  какую  функцию  реализует,  и  тогда 
последующие  поля (зарезервированное четырехбайтовое слово и  поле данных) 
принимают  значения,  специфичные  для  данного  конкретного  значения  пỏля 
Type. С формальной точки  зрения можно сказать,  что ICMP – это много разных 
протоколов, поле Type показывает - о каком именно подпротоколе идет речь.  
 

Поле  Code  дополняет  поле  Type.  Если  Type  показывает  тип  пакета, 

например,  показывает,  что  пакет  уничтожен  маршрутизатором,  то  поле  Code 

уточняет  причину  –  например,  пакет  уничтожен,  так  как  нет  маршрута  в  сеть 
получателя  или  пакет  уничтожен,  так  как  у  пакета  установлен  флаг  DF,  а  его 
необходимо  фрагментировать.  Фактически,  поля  Type  и  Code  –  две  половинки 
одного  по смыслу поля, поля,  показывающего, какой  именно  ICMP пакет перед 
нами.  
 

Контрольная  сумма  рассчитывается,  в  соответствии  с  концепцией  защиты 

данных  в  стеке  TCP/IP  для  заголовка  и  всех  данных  пакета.  В  стеке  TCP/IP 
принято защищать все данные, так как на канальном уровне могут существовать 
сети,  не  обладающие  надежностью  и  защитой  контрольной  суммой 
передаваемых  данных  (например,  SLIP).  В  соответствии  с  идеологией  TCP/IP  - 
тот,  кто  кладет  данные  в  IP  пакет,  должен  сам  позаботится  об  их  защите,  а  IP 
защищает  лишь  свой  заголовок.  Для  расчета  контрольной  суммы  ICMP 

используется  тот  же  метод,  что  и  для  расчета  контрольной  суммы  заголовка  IP 
(дополнение до единицы всех двухбайтовых слов заголовка, при этом на этапе 
расчета  само  поле  контрольной  суммы  полагается  равным  нулю).  Так  же 
допускается 

возможность, 

впоследствии, 

изменить 

алгоритм 

расчета 


Copyright © 2021 Файлообменник files.d-lan.dp.ua

Использование любых материалов сайта возможно только с разрешения автора.