Итак, я показал вам все хитрости, которые вы можете использовать при работе с командой ping для диагностики проблем подключения. В этой части мы продолжим разговор рассмотрением некоторых вариаций этих приемов.
Потеря пакетов
Итак, пока мы использовали команду ping, она была либо успешной, либо безуспешной. В этой ситуации не было третьего варианта. Как вы, возможно, помните, команда ping создана для возврата четырех различных ответов. Иногда, один или более ответов могут не дойти, в то время как остальные остаются успешными. Когда такое случается, этой означает, что произошла потеря пакетов.
В такой ситуации локальный хост или удаленный хост (или оба) функционирует правильно, однако существует условие, вызывающее потерю пакетов во время передачи. Протокол TCP/IP создан так, что может повторять попытку передачи, когда возникает потеря пакета, но потеря пакетов значительно снижает производительность. Низкоскоростное подключение без потери пакетов будет превосходить по производительности высокоскоростное подключение, в котором возникает потеря пакетов.
Коварным в потере пакетов является то, что иногда ее очень трудно обнаружить. Конечно, вы знаете, что была потеря пакетов, если один из ответов ping оказался неудачным, но ICMP пакеты, используемые в командах ping, настолько малы, что могут успешно возвращаться, даже если в сети существует условие, которое способно вызвать потерю пакетов в реальности.
Если вы подозреваете, что потеря пакетов имеет место, однако команда ping не показывает никаких ошибок, вы можете попытаться увеличить размер ICMP пакетов. Пакеты больших размеров более подвержены потерям, если в сети есть проблемы. Вы можете сказать команде ping использовать пакеты больших размеров c помощью переключателя ‘L.
Использование параметра ‘L довольно простое. Все что вам нужно сделать, это ввести команду ping, за которой должен идти адрес, который вы будете опрашивать, а затем нужно поставить параметр ‘L и количество байтов, которое вы хотите отправить. К примеру, ваша сеть испытывает проблемы производительности при подключении к определенному узлу. Вы подозреваете, что имеет место потеря пакетов, но ping постоянно успешен. Следовательно, вы говорите команде ping использовать пакеты размерами по 1024 байт. Для этого нужно использовать следующую команду:
Ping 192.168.1.1 ‘L 1024
Реальный пример использования этой команды показан на рисунке A.
Рисунок A: Добавление переключателя ‘L к команде позволяет увеличивать размер ICMP пакета
Срок жизни пакета (Time To Live)
Следующим понятием, которое я хочу обсудить в связи с командой ping, является срок жизни пакета (Time To Live – TTL). Если вы посмотрите на рисунок A, то обратите внимание, что каждый ping ответ оканчивается на TTL=64.
Как вы, вероятно, знаете, Интернет состоит из огромного количества маршрутизаторов, которые соединены друг с другом. Каждый маршрутизатор подключен как минимум к двум другим маршрутизаторам. Суть такой архитектуры заключается в том, что если соединение дает сбой, должен быть еще как минимум один путь к месту назначения. Проблема такого типа архитектуры заключается в том, что при определенных обстоятельствах сбои соединения могут вызывать ситуацию, в которой пакеты будут ходить по кругу до бесконечности, так и не достигая своей цели назначения.
Именно здесь в игру вступает значение TTL. Подумайте о значении TTL, как о механизме самоуничтожения пакета. Изначально TTL имеет довольно высокое значение, хотя это значение изменяется в зависимости от используемой ОС. Всякий раз, когда пакет проходит через маршрутизатор, он выполняет прыжок. При каждом прыжке значение TTL определяется единицей. Если TTL значение достигает нуля, пакет уничтожается. Это не позволяет потерянным пакетам циркулировать в интернете вечно.
Трассировка маршрута
Еще одна причина, по которой значение TTL так полезно, заключается в том, что инструмент диагностики под названием tracert основывается на нем. Использование команды ping отлично подходит для малых сетей, в которых удаленный узел находится в непосредственной близости от узла отправки, но когда речь заходит о глобальной сети, удаленный узел может располагаться в тысячах миль. В этом случае ICMP пакет, сгенерированный командой ping, должен будет пройти через дюжину маршрутизаторов, чтобы достичь удаленного узла. Иногда можно столкнуться с ситуацией, в которой удаленный хост и локальный хост (или оба) работает корректно, но один из маршрутизаторов на пути имеет проблемы. К счастью, вы можете использовать команду tracert для диагностики такого типа проблем.
Команда tracert, по сути, основана на команде ping. Основная идея команды tracert заключается в том, что она отправляет ICMP пакет на удаленный узел, однако значение TTL установлено в единицу. Это заставляет первый попавшийся на пути маршрутизатор отправлять истекший срок TTL в транзитном сообщении. Это сообщение содержит информацию, идентифицирующую маршрутизатор, который произвел это сообщение. Идентификация маршрутизатора документируется, после чего ICMP снова отправляется, но на этот раз с TTL значением, установленным в два. На этот раз ICMP пакет достигает второго маршрутизатора, прежде чем срок значения TTL истекает. Этот процесс повторяется, каждый раз увеличивая значение TTL на единицу, до тех пор, пока удаленный узел не будет достигнут. Это позволяет просматривать отчет обо всех маршрутизаторах между локальным и удаленным узлом. Иногда можно использовать эту информацию для обнаружения проблем в маршруте, которые могут влиять на поток трафика.
Использование команды tracert очень похоже на использование команды ping. Для этого нужно просто ввести команду tracert, за которой вводится IP адрес или полное доменное имя удаленного узла. На рисунке B показана команда tracert в действии.
Рисунок B: Команду tracert можно использовать для обнаружения потока трафика.
Есть пара моментов, которые необходимо учитывать при использовании команды tracert. Во-первых, на некоторых узлах используются брандмауэры, блокирующие ICMP пакеты. В этом случае будет отображаться серия звездочек, указывающая на то, что трассировка маршрута не смогла получить информацию с определенного узла.
Вторым моментом, который следует учитывать, является то, что как и сами узлы, маршрутизаторы имеют присвоенные им IP адреса. Независимо от того, используются ли эти IP адреса для узлов или маршрутизаторов, они структурируются так, чтобы отражать свое географическое положение. На самом деле, иногда эта географическая информация или даже описание маршрутизатора предоставляется в tracert. Однако если вы хотите большего, существуют инструменты сторонних производителей, которые графически отслеживают команду tracert, основываясь на этой географической информации. Пример такого инструмента показан на рисунке C.
Рисунок C: Можно выполнять визуальную трассировку tracert для определения географического расположения хоста