IP адрес источника
IP адрес назначения
Опции - список дополнительной информации переменной длины, при необходимости дополняемые нулями до длины, кратной 32 битам. В качестве опций могут указываться: запись маршрута (каждый маршрутизатор, который обрабатывает пакет, добавляет свой IP адрес), временная марка (Каждый маршрутизатор записывает свой IP адрес и временную марку, места в списке опций хватает только на четыре такие пары), свободная маршрутизация от источника (Отправитель указывает список IP адресов, через который должна пройти IP датаграмма, однако датаграмма может также пройти через другие маршрутизаторы между любыми двумя адресами, указанными в списке), жесткая маршрутизация от источника (Отправитель указывает точный путь, по которому должна пройти IP датаграмма. Если маршрутизатор обнаруживает, что следующая пересылка, указанная в маршрутизации от источника, не является непосредственно подключенной сетью, возвращается ошибка "маршрутизация от источника невозможна"). Эти опции используются редко и не все маршрутизаторы поддерживают все опции.
Данные – данные более высокого уровня. То-есть в нашем случае ICMP пакет.
Фрагментирование пакетов
Когда IP уровень получает IP датаграмму, которую необходимо отправить, он определяет, на какой локальнй интерфейс отправляется датаграмма (или маршрутизируется), и запрашивает интерфейс, чтобы тот сообщил размер своего MTU. IP сравнивает MTU с размером датаграммы и, если необходимо, осуществляет фрагментацию. Фрагментация может быть осуществлена как на отправляющем хосте, так и на промежуточном маршрутизаторе.
Когда IP датаграмма фрагментирована, она не собирается вновь до тех пор, пока не достигнет конечного пункта назначения. (Для некоторых других сетевых протоколов процесс повторной сборки отличается от описанного выше, при этом повторная сборка осуществляется на маршрутизаторе следующей пересылки, а не в конечном пункте назначения.) На уровне IP сборка осуществляется в конечном пункте назначения. Это сделано для того, чтобы сделать фрагментацию и повторную сборку прозрачной для транспортных уровней (TCP и UDP), хотя это может вести к некоторой потере производительности. Существует вероятность, что фрагмент датаграммы будет снова фрагментирован (возможно даже несколько раз). Информации, которая содержится в IP заголовке вполне достаточно для фрагментации и повторной сборки.
|
Вернемся снова к IP заголовку и рассмотрим, какие поля используются в процессе фрагментации. Поле идентификации содержит значение уникальное для каждой отправленной IP датаграммы. Это значение копируется в каждый фрагмент конкретной датаграммы. В поле флагов один бит означает, что "дальше следуют еще фрагменты" (more fragments). Этот бит устанавливается в единицу для каждого фрагмента, кроме последнего. Поле смещения фрагмента (fragment offset) содержит смещение этого фрагмента от начала исходной датаграммы. Когда датаграмма фрагментируется, поле полной длины каждого фрагмента изменяется, так чтобы соответствовать размеру фрагмента.
Один из битов в поле флагов называется "не фрагментировать" (don't fragment). Если этот бит установлен в единицу, IP не будет фрагментировать датаграмму. Вместо этого датаграмма уничтожается, а отправителю посылается ICMP ошибка «фрагментация необходима». Такое ICMP сообщение имеет в заголовке тип 3 код 4.
|
Изучив протокол ICMP и формат IP пакета вернемся к команде ping и рассмотрим подробно её работу. При запуске без параметров утилита выводит уже приведенную выше справку
ping [ -t ] [ -a ] [ -n число ] [ -l размер ] [ -f ] [ -i TTL ] [ -v TOS ] [ -r число ] [ -s число ] [{ -j список_узлов | -k список_узлов }] [ -w интервал ] [ имя_конечного_компьютера ].
-t
Задает для команды ping отправку сообщений с эхо-запросом к точке назначения до тех пор, пока команда не будет прервана. Для прерывания команды и вывода статистики нажмите комбинацию CTRL-BREAK. Для прерывания команды ping и выхода из нее нажмите клавиши CTRL-C. Внимание: <Ctrl-Break> не прерывает процесс, а выводит текущую статистику!
-a
Задает разрешение обратного имени по IP-адресу назначения. В случае успешного выполнения выводится имя соответствующего узла;
-n счетчик
Задает число отправляемых сообщений с эхо-запросом. По умолчанию – 4. Увеличение количества запросов бывает необходимо для контроля надежности и устойчивости работы сервера. Чем выше качество канала, тем меньше разброс по времени ответов;
-l размер
Задает длину (в байтах) поля данных в отправленных сообщениях с эхо-запросом без учета длины заголовка. По умолчанию размер IP пакета с вложенным ICMP запросом минимальной длины - 32 байта. Манипулируя этим значением, можно выяснить зависимость: скорость доставки – размер дейтаграммы. Если размер дейтаграммы превысит некоторую критическую величину (определяемую каждым промежуточным узлом самостоятельно), дейтаграмма фрагментируется на несколько пакетов подходящего размера, каждый из которых добирается до конечной точки маршрута самостоятельно, а на узле назначения они вновь собираются в исходную дейтаграмму;
|
-f
Задает отправку сообщений с эхо-запросом с флагом "Don't Fragment" в IP-заголовке, установленном на 1. Сообщения с эхо-запросом не фрагментируются маршрутизаторами на пути к месту назначения. Если хотя бы один из промежуточных узлов не может обрабатывать пакеты таких размеров, он удаляет дейтаграмму и посылает отправителю уведомление что требуется фрагментация, но установлена пометка, ее запрещающая. Возможна ситуация, когда некоторые узлы не посылают такого уведомления, молча уничтожая пакет или же фрагментируют дейтаграмму вопреки запрету. Вкупе с ключом –l, задающим длину дейтаграммы, запрет фрагментации ключом –f, позволяет определить максимальный размер нефрагментируемых пакетов. Этот параметр полезен для устранения проблем, возникающих с максимальным блоком данных для канала (Maximum Transmission Unit);
-i TTL
задает значение поля TTL (сокращенно TTL – T ime T o L ive (время жизни)) пакета посылаемых дейтаграмм, измеряемое количеством узлов, которые может проследовать пакет (по умолчанию 128). Максимальное значение TTL - 255. Каждый промежуточный узел уменьшает значение TTL на единицу и, когда оно достигает нуля, пакет уничтожается с посылкой отправителю соответствующего уведомления. Это обстоятельство позволяет отслеживать маршрут путешествия пакетов.
-v тип
Задает значение поля типа службы (TOS – T ype O f S ervice) в IP-заголовке для отправляемых сообщений с эхо-запросом. Тип сервиса указывает предпочтительный вид обслуживания – минимальная задержка, максимальная пропускная способность, максимальная надежность, минимальные издержки на пересылку или обычная, неприоритетная, пересылка. Предпочтение может быть отдано только одному типу приоритета. Тип сервиса задается одним из следующих десятичных чисел. Как легко увидеть, каждому значению соответствует свой бит:
Допустимые типы сервиса в поле TOS | ||||||||||
| ||||||||||
Хотя не все маршрутизаторы анализируют поле TOS, прикладные программы могут манипулировать полем TOS по своему усмотрению, выбирая значение, соответствующее специфике своей работы. Например, telnet-клиенты, ICQ и чаты очень чувствительны к задержкам, ftp клиентам задержки не страшны, – была бы хорошей пропускная способность, и т.д. Если промежуточные узлы игнорируют содержимое поля TOS, никакого выигрыша не получается и высокоприоритетные пакеты (например, от ICQ) обрабатываются с той же скоростью, что и пакеты, скажем, от почтового сервера, не критичные к скорости доставки. Использование ping с ключом –v позволяет выяснить, поддерживается ли TOS на данном маршруте и, если имеется несколько альтернативных маршрутов, выбрать из них наиболее подходящий.
-r счетчик
Задает параметр записи маршрута (Record Route) в IP-заголовке для записи пути, по которому проходит сообщение с эхо-запросом и соответствующее ему сообщение с эхо-ответом. Каждый переход в пути использует параметр записи маршрута. По возможности значение счетчика задается равным или большим, чем количество переходов между источником и местом назначения. Параметр счетчик имеет значение от 1 до 9. Не все маршртузаторы поддерживают такую возможность. Ping с ключом –r, позволяет отслеживать маршрут пересылки пакетов и могла бы полностью заменить собой утилиту tracert, если бы не ограничения, налагаемые размером IP-заголовка на максимальное количество запоминаемых адресов – их умещается всего девять, и более длинные пути отслеживать этим способом невозможно.
-s счетчик
Указывает вариант штампа времени Интернета (Internet Timestamp) в заголовке IP для записи времени прибытия сообщения с эхо-запросом и соответствующего ему сообщения с эхо-ответом для каждого перехода. Параметр счетчик имеет значение от 1 до 4. По общепринятым соглашениям временная метка представляет собой четырехбайтовое поле, содержащее число миллисекунд, истекших с начала полуночи всеобщего скоординированного времени.
-j список_узлов
Указывает для сообщений с эхо-запросом использование параметра свободной маршрутизации в IP-заголовке с набором промежуточных точек назначения, указанным в списке_узлов. При свободной маршрутизации последовательные промежуточные точки назначения могут быть разделены одним или несколькими маршрутизаторами. Максимальное число адресов или имен в списке узлов - 9. Список узлов - это набор IP-адресов (в точечно-десятичной нотации), разделенных пробелами.
-k список_узлов
Указывает для сообщений с эхо-запросом использование параметра строгой маршрутизации в IP-заголовке с набором промежуточных точек назначения, указанным в списке_узлов. При строгой маршрутизации следующая промежуточная точка назначения должна быть доступной напрямую (она должна быть соседней в интерфейсе маршрутизатора). Максимальное число адресов или имен в списке узлов равно 9. Список узлов - это набор IP-адресов (в точечно-десятичной нотации), разделенных пробелами. Если узел не может передать пакет напрямую, он уничтожает его и посылает отправителю соответствующее уведомление: маршрутизация от источника невозможна.
Свободная или жесткая маршрутизации применимы для исследования маршрутов движения пакетов в достаточно сложных сетях в целях оптимизации этих маршрутов. В настоящее время подобные проблемы решаются маршрутизаторами самостоятельно и данные опции используются крайне редко.
-w интервал
Определяет в миллисекундах время ожидания получения сообщения с эхо-ответом, которое соответствует сообщению с эхо-запросом. Если сообщение с эхо-ответом не получено в пределах заданного интервала, то выдается сообщение об ошибке "Request timed out" - “ Превышен интервал ожидания для запроса ”. Интервал по умолчанию равен 4000 (4 секунды).
имя_конечного_компьютера
Задает точку назначения, идентифицированную IP-адресом или именем узла.
/?
Отображает справку в командной строке.
Практичесое использование.
- Можно узнать, работает ли сервер. Например, системный администратор может узнать завис ли только веб-сервер или на сервере глобальные проблемы.
- Можно узнать, есть ли связь с сервером. Например, о проблеме с настройкой DNS серверов можно узнать, задав в ping сначала доменное имя, а потом IP-адрес.
- Можно узнать скорость соединения, так как ping показывает сколько запросов удалось выполнить в секунду. Так же можно узнать качество канала, посмотрев сколько ответов не пришло.
- Пингование осуществляется в режиме максимального приоритета канала, поэтому к неумеренному использованию, приводящему к задержкам менее приоритетного трафика, провайдеры относятся неодобрительно.
Возможна ситуация, когда ping к некоторому серверу не проходит, какая бы задержка ни была выбрана, но все сервисы (почта или web) работают нормально. Это объясняется использованием администратором сервера межсетевого экрана, блокирующего либо эхо-запросы, либо эхо-отклики, либо и то и другое вместе. Возможен также запрет эхо-откликов на самом узеле.
Все эти меры предосторожности объясняются тем, что эхо-посылки имеют более высокий приоритет по сравнению с обычными пакетами и злоумышленники могут перегрузить сервер, направив на него много эхо-запросов.
Вопросы для самопроверки
1. Что такое ICMP протокол и для чего он используется.
2. Как взаимодействуют ICMP и IP протоколы
3. Какие типы IСMP-сообщений использует утилита ping
4. Содержание ICMP эхо-запроса и отклика. Назначение полей идентификатор, номер по порядку, данные
5. Структура IP – пакета и поля его заголовка
6. Фрагментация IP-пакетов. Что это такое, когда и для чего используется.
7. Параметры утилиты ping
8. Реализация параметров утилиты в ICMP и IP пакетах
9. Назначение утилиты ping и варианты её применения