Home

Page 4
Page 4
background image

 

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

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

Итак, в ICMP сообщениях типа 8 и 0 необходимо два дополнительных поля, 

для  адресации  приложения,  пославшего  эхо-запрос  и  для  нумерации  запросов, 
посланных  одним  приложением.  Для  этого  используются  зарезервированные 
поля ICMP заголовка. Рассмотрим ICMP заголовок для сообщений типа 8 и 0: 

 

 

 

Type = 8 или 0 

Code = 0 

Checksum 

Identifier  

Sequence Number 

Произвольные данные произвольной длины 

 

Поле Identifier предназначено для адресации приложения, пославшего эхо-

запросы  и  получающего  эхо-ответы,  поле  Sequence  Number  позволяет 

приложению,  посылающему  эхо-запросы,  присваивать  каждому  посланному 
сообщению  уникальный  номер.  Таким  образом,  заголовок  ICMP  эхо-запроса  и 
ICMP эхо-ответа использует все восемь байт заголовка ICMP.  

Кроме  проверки  возможности  обмениваться  пакетами  в  IP  сети,  так  же 

часто 

бывает 

полезным 

проверить 

возможность 

передавать 

пакеты 

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

Как должен поступить стек TCP/IP, получив ICMP сообщение типа 8 с кодом 

0? Необходимо сформировать ICMP пакет с типом 0 и кодом 0, процитировать из 
полученного  запроса  поля  Identifier  и  Sequence  Number,  процитировать  все 
данные, которые получены в запросе,  сформировать IP пакет, поменяв местами 

адрес отправителя и получателя и вложить в него данное, сформированное ICMP 
сообщение. 

Для диагностики с помощью ICMP сообщений типов 8 и 0 в Windows, как в 

любой  операционной  системе,  поддерживающей  TCP/IP,  есть  утилита  обычно 
называемая  ping,  которая  умеет  посылать  эхо-запросы  и  анализировать  эхо-
ответы. Рассмотрим пример посылки пакетов с помощью утилиты ping: 

 

C:\>ping www.alkar.net 
Обмен пакетами с www.alkar.net [195.248.190.51] по 32 байт: 

Ответ от 195.248.190.51: число байт=32 время=345мс TTL=58 
Ответ от 195.248.190.51: число байт=32 время=319мс TTL=58 

Ответ от 195.248.190.51: число байт=32 время=113мс TTL=58 
Ответ от 195.248.190.51: число байт=32 время=361мс TTL=58 
 


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

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