Утилита Ping
Программа Ping была написана специально для проверки доступности удаленного хоста. Он позволяет измерить время прохождения пакетов от нашего узла до любого другого узла сети.
Эта программа посылает несколько IP-пакетов и ожидает ответы на них, при этом измеряет интервал времени, в течении которого пакет вернулся а также показывает соотношение количества отосланных пакетов к количеству принятых, что может служить субъективной оценкой "качества связи" между узлами.
С помощью Ping можно оценить время возврата пакета от хоста, что дает представление о том, "насколько далеко" находится хост.
Для того, чтобы запустить программу Ping, достаточно знать IP-адрес или имя необходимого узла.
Программа использует протокол ICMP. Ping посылает ICMP эхо запрос на хост и ожидает возврата ICMP эхо отклика.
Утилита ping выводит на экран сообщения следующего вида обо всех поступивших ответах:
Пример работы программы Ping в локальной сети
1) Из приведенной распечатки видно, что в ответ на тестирующие запросы, посланные узлу 192.168.0.3, было получено 4 эхо-ответа.
2) Длина каждого сообщения составляет 32 байта.
3) В следующей колонке помещены значения времени оборота (RTT - Round Trip Time), то есть времени от момента отправки запроса до получения ответа на этот запрос.
Утилита ping позволяет определять двусторонние задержки (RTT) по маршруту и частоту потери пакетов, то есть косвенно определять загруженность на каналах передачи данных и промежуточных устройствах.
4) Часто бывает, что первое время возврата больше чем все остальные. Это происходит в том случае, если аппаратный адрес назначения отсутствует в ARP кэше отправителя. Как мы помним из предыдущих уроков, отправка ARP запроса и получение ARP отклика может занять несколько миллисекунд, только после этого отправляется первый эхо запрос.
5) TTL - Time to live — время жизни пакета данных в протоколе IP -предельно допустимое время его пребывания в системе.
Пpедставьте себе, что вам 5 лет и вы хотите кушать. Вы идете к папе иговоpите: <Папа, я хочу кушать>. Ваш папа смотpит телевизоp, согласно таблице маpшpутизации он посылает вас к маме. Вы идете к ней и пpосите <Мамааа, я хочу кушать>. Мама болтает с подpугой по телефону и согласно своей таблице маpшpутизации посылает вас к папе. И так вы ходите как дуpак от папы к маме и обpатно, туда-сюда, туда-сюда, а все потому, что кpивоpукие админы (pодители папы и мамы) непpавильно настpоили таблицу маpшpутизации. Чтобы защититься от таких ситуаций пpидумали понятие TTL (Time To Live), что пpименительно к нашей ситуации означает количество теpпения у мальчика, пока он не скажет <изверги> и не упадет пеpед ногами мамы или папы в беспомощном состоянии. Последний, по пpавилам (стандаpты - это <так заведено в семье>), обязан послать коpоткий нелестный отзыв в адpес того, кто послал мальчика кушать. Это так называемый icmp-пакет <мальчик издох>
Поле TTL устанавливается отправителем дейтаграммы, и уменьшается каждым узлом (например, маршрутизатором) на пути его следования, в соответствии со временем пребывания в данном устройстве или согласно протоколу обработки.
Если поле TTL становится равным нулю до того, как дейтаграмма прибудет в пункт назначения, то такая дейтаграмма отбрасывается и отправителю отсылается ICMP-пакет с кодом 11 — «Превышение TTL».
Каждый маршрутизатор, который обрабатывает датаграмму, уменьшает значение TTL на единицу или на количество секунд, в течение которых маршрутизатор обрабатывал датаграмму. Так как большинство маршрутизаторов задерживает датаграмму меньше чем секунду, поле TTL, как правило, уменьшается на единицу и довольно точно соответствует количеству пересылок.
С помощью поля TTL предотвращается зацикливание датаграммы в петлях маршрутизации. Например, если маршрутизатор вышел из строя или соединение между двумя маршрутизаторами потеряно, может потребоваться некоторое время (от нескольких секунд до нескольких минут), для того чтобы определить, что маршрут потерян и что его необходимо обойти. В это время существует вероятность, что датаграмма будет уничтожена в петле маршрутизации. Чтобы предотвратить потерю датаграммы, поле TTL устанавливается в максимальную величину.
При слишком маленьком значении пакет может просто не дойти, при слишком большом, в случае зацикливания, ждать много времени (теоретически при TTL = 255 время ожидания может достигать 4 мин. 15 сек.).
Изначально ТТЛ =128 (для Винды)
Когда маршрутизатор получает IP датаграмму с TTL равным либо 0, либо 1, он не должен отправлять эту датаграмму дальше, он уничтожает ее и посылает хосту, который ее отправил ICMP сообщение "время истекло" (time exceeded) .
Пример работы программы Ping в глобальной сети
# ping serverl.citmgu.ru
Pinging serverl.citmgu.ru [193.107.2.200] with 64 bytes of data:
Reply from 193.107.2.200: bytes=64 time=256ms TTL = 123
Reply from 193.107.2.200: bytes=64 time=310ms TTL = 123
Reply from 193.107.2.200: bytes=64 time=260ms TTL = 123
Reply from 193.107.2.200: bytes=64 time=146ms TTL = 123
Как видим, сеть работает достаточно нестабильно — время в последней строке отличается от времени во второй более чем в два раза.
На экран выведено также оставшееся время жизни поступивших пакетов.
У утилиты ping обычно имеется несколько ключей, с помощью которых можно установить размер поля данных сообщения, начальное значение поля TTL, количество повторных передач пакетов, флаг DF.
В том случае, когда за установленное время тайм-аута ответы не приходят или протокол ICMP сообщает об ошибках, утилита ping выводит на экран соответствующие диагностические сообщения.
Утилита traceroute (для Unix) (tracert для Windows)
Traceroute позволяет нам посмотреть маршрут, по которому двигаются IP датаграммы от одного хоста к другому.
Утилита traceroute осуществляет трассировку маршрута путем посылки обычных IP-пакетов с адресом назначения, являющимся конечной точкой изучаемого маршрута. Суть метода трассировки состоит в том, что значение TTL первого отправляемого пакета установлено равным 1. Когда протокол IP первого маршрутизатора принимает этот пакет, то он в соответствии со своим алгоритмом уменьшает значение TTL на 1 и получает 0. Маршрутизатор отбрасывает пакет с нулевым временем жизни и возвращает узлу-источнику ICMP-сообщение об ошибке истечения тайм-аута вместе с заголовком IP и первыми 8 байтами потерянного пакета.
Получив ICMP-сообщение о причине недоставки пакета, утилита traceroute запоминает адрес первого маршрутизатора (который извлекает из заголовка IP-пакета, несущего ICMP-сообщение) и вычисляет для него RTT. (RTT - время оборота, то есть время от момента отправки запроса до получения ответа на этот запрос). Затем traceroute посылает следующий IP-пакет, но теперь со значением TTL, равным 2. Этот пакет благополучно проходит первый маршрутизатор, но «умирает» на втором, о чем немедленно отправляется аналогичное ICMP-сообщение об ошибке истечения тайм-аута. Утилита traceroute запоминает адрес и время для второго маршрутизатора и т. д. Такие действия выполняются с каждым маршрутизатором вдоль маршрута вплоть до узла назначения.
Будет очень интересно посмотреть, как работает traceroute в больших сетях, например, в сети Internet.
Формат записи программы Traceroute и возможные опции:
tracert [-d] [-h макс. число] [-j список узлов] [-w интервал] имя-d - без определения адресов по именам узлов
-h - максимальное число переходов при поиске узла
-j - свободный выбор маршрута по списку узлов
-w - интервал ожидания каждого ответа в миллисекундах
Дата добавления: 2015-10-13; просмотров: 1890;