Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Протокол 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.

 

тип код Описание запрос ошибка
    эхо-отклик ·  
    назначение недоступно:    
    сеть недоступна – network unreachable   ·
    хост недоступен – host unreachable   ·
    протокол недоступен – protocol unreachable   ·
    порт недоступен – port unreachable   ·
    необходима фрагментация, однако установлен бит “не фрагментировать”- fragmentation needed but don’t-fragment bit set   ·
    не работает маршрутизация от источника – source route failed   ·
    неизвестна сеть назначения – destination network unknown   ·
    неизвестен хост назначения – destination host unknown   ·
    хост источник изолирован – source host isolated   ·
    сеть назначения закрыта администратором – destination network administrativrly prohibited   ·
    хост назначения закрыт администратором – destination host administrativrly prohibited   ·
    сеть недоступна для TOS – network unreachable for TOS   ·
    хост недоступен для TOS – host unreachable for TOS   ·
    связь административно закрыта путем фильтрации – communication administratively prohibited by filtering   ·
    нарушено старшинство для хоста – host precedence violation   ·
    старшинство разъединено – precedence cutoff in effect   ·
    подавление источника (элементарное управление потоком данных) – source quench   ·
    перенаправление – redirect:    
    перенаправление в сеть – redirect for network   ·
    перенаправление в хост – 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 сообщения об ошибках будут отправляться в ответ на широковещательные пакеты.

2.1.6. Проверка доступности удалённого хоста. Программа ping

Наиболее часто для проверки доступности удалённого хоста используется программа Ping. Программа посылает ICMP эхо запрос на хост и ожидает возврата ICMP эхо отклика. На рис. 2.12 приведен список типов ICMP сообщений.

Ранее считать верным утверждение, что если невозможно послать Ping на хост, то невозможно работать с хостом и с использованием Telnet или FTP. В настоящее время это утверждение не является верным. Связано это с тем, что в сети Internet появились повышенные требования к безопасности. Маршрутизаторы поддерживают списки доступа, появились шлюзы, использующие технологию firewall. В настоящее время доступность хоста основывается не только на доступности IP уровня, а также на том, какой используется протокол и какой при этом работает порт. Ping может показывать хост как недоступный, однако мы можем получить доступ через Telnet на порт 25 (почтовый сервер).

Программа Ping

Программа ping, которая посылает эхо запросы – является клиентом, а хост, на который посылаются эхо запросы – сервером. Большинство реализаций TCP/IP поддерживают Ping сервер непосредственно в ядре – сервер не является пользовательским процессом. На рис. 2.13 показаны ICMP эхо запрос и эхо отклик.

0 7 8 15 16 31    
тип (0 или8) код (0) 16-бит контрольная сумма 8 байт  
идентификатор номер последовательности  
         
необязательные данные      
         
             

Рис. 2.13. Формат ICMP сообщения для эхо запроса и эхо отклика.

 

Так же, как в случае других ICMP запросов, в отклике сервера должны содержаться поля идентификатора (identifier) и номера последовательности (sequence number). Кроме того, любые дополнительные данные, посланные клиентам, должны быть отражены эхом.

Реализации ping, присутствующие в Unix (Linux, МСВС), устанавливают в поле идентификатора ICMP сообщения идентификатор процесса, отправляющего запрос. Это позволяет программе ping идентифицировать вернувшийся ответ, если на одном и том же хосте в одно и то же время запущено несколько программ ping.

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

Исторически сложилось так, что программа ping посылает эхо запрос один раз в секунду, печатая каждый эхо отклик в момент его возвращения. Однако новые разработки требуют указания опции -s, чтобы программа работала подобным образом. По-умолчанию новые реализации посылают только один эхо запрос и выдают сообщение «host is alive» (хост доступен), если эхо отклик получен, или «no answer» (не отвечает), если отклик не получен в течение 20 секунд.

Работа программы в локальных сетях

Вывод программы ping при работе в локальных сетях обычно выглядит следующим образом:

MCBC # ping svr4

PING svr4 (140.252.13.34): 56 data bytes

64 bytes from 140.252.13.34: icmp_seq=0 ttl=255 time=0 ms

64 bytes from 140.252.13.34: icmp_seq=1 ttl=255 time=0 ms

64 bytes from 140.252.13.34: icmp_seq=2 ttl=255 time=0 ms

64 bytes from 140.252.13.34: icmp_seq=3 ttl=255 time=0 ms

Когда принимается ICMP эхо отклик, печатается номер последовательности, затем параметр время жизни (TTL) и рассчитанное время возврата. TTL – это поле времени жизни в IP заголовке. В настоящее время программа ping печатает полученное TTL каждый раз, когда принимается эхо отклик – некоторые реализации этого не делают.

Программа ping может рассчитать время возврата, так как она сохраняет время, когда был отправлен эхо запрос, в разделе данных ICMP сообщения. Когда отклик возвращается, эти данные извлекаются и сравниваются с текущим временем.

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

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

 

Работа программы в глобальных сетях

При работе в глобальных сетях можно встретиться с дублированием пакетов (один и тот же номер последовательности появляется дважды или несколько раз), также может возникнуть перемешивание номеров последовательности (номер последовательности N+1 появляется перед номером последовательности N).

Опция записи IP маршрута

Программа ping предоставляет возможность просмотреть IP опцию записи маршрута (RR). В большинстве версий программы ping присутствует опция -r, которая включает характеристику записи маршрута. При использовании этой опции ping устанавливает опцию IP записи маршрута (RR) в исходящих датаграммах (которые содержат ICMP эхо запрос). При этом каждый маршрутизатор, который обрабатывает датаграмму, добавляет свой IP адрес в список, находящийся в дополнительном поле. Когда датаграмма достигает конечного пункта назначения, список IP адресов копируется в исходящий ICMP эхо отклик, а все маршрутизаторы на обратном пути также добавляют свои IP адреса в список. Когда ping принимает эхо отклик, печатает список IP адресов.

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

Ограничения использования опции RR связаны с ограниченным размером IP заголовка, в который должен поместиться список IP адресов. Из рис. 2.9 видно, что поле длины заголовка (header length) в IP заголовке составляет 4 бита, что ограничивает размер IP заголовка в пределах пятнадцати 32-битных слов (60 байт). Так как фиксированный размер IP заголовка составляет 20 байт, а RR опция использует 3 байта для своей установки, то остается 37 байт (60-20-3) на список адресов, а это, в свою очередь, позволяет поместить туда до 9 IP адресов. На заре развития ARPANET 9 IP адресов было немного, однако, в настоящее время, подобный размер существенно ограничивает работу команды ping с опцией -r. Несмотря на все ограничения, опция записи маршрута работает и предоставляет возможность пронаблюдать, как обрабатываются опции IP.

Примером применения команды ping с опцией -r является проверка доступности удалённого хоста, находящегося в другой подсети с максимальным количеством «прыжков» 9 и выводом маршрута на экран:

ping –r 9 192.168.63.1

 

На рис. 2.14 показан общий формат опции записи маршрута в IP датаграмме.

Рис. 2.14. Общий формат опции маршрута в IP заголовке.

 

Код (code) – однобайтовое поле, содержащее тип IP опции. Для опции RR установлено значение 7. Длина (len) – это полный размер в байтах опции RR, в данном случае 39.

Указатель (ptr) – это индекс в 39-байтной опции, который указывает на то, где хранится следующий IP адрес. Его минимальное значение 4, что указывает на первый IP адрес. Когда следующий IP адрес записывается в список, значение ptr меняется следующим образом: 8, 12, 16 и так до 36. После того как записан девятый адрес, ptr устанавливается в значение 40, указывая на то, что список полон.

Для вывода на экран всех доступных опций команды ping в ОС необходимо выполнить команду:

ping /?

<== предыдущая лекция | следующая лекция ==>
Протокол IP | Примерный перечень вопросов для самостоятельного контроля
Поделиться с друзьями:


Дата добавления: 2014-01-15; Просмотров: 992; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.