Тип сервиса задается одним из следующих десятичных чисел (См. таблицу 1). Как легко увидеть, каждому значению соответствует свой бит: Таблица 1. Допустимые типы сервиса в поле TOS
Код сервиса
Пояснение
2
минимальные
издержки на пересылку
4
максимальная
надежность доставки
8
максимальная
пропускная способность
16
минимальная
задержка
Не все маршрутизаторы анализируют поле TOS, многие из них его напрочь игнорируют, что и подтверждает следующий эксперимент:
C:>ping www.itech.ru –v 0x2
Обмен пакетами с ns1.itech.ru [195.151.210.34] по 32 байт:
Ответ от 195.151.210.34: число байт=32 время=130мс TTL=254
C:>ping www.itech.ru –v 0x4 –n 1
Обмен пакетами с ns1.itech.ru [195.151.210.34] по 32 байт:
Ответ от 195.151.210.34: число байт=32 время=130мс TTL=254
C:>ping www.itech.ru –v 0x8 –n 1
Обмен пакетами с ns1.itech.ru [195.151.210.34] по 32 байт:
Ответ от 195.151.210.34: число байт=32 время=130мс TTL=254
C:>ping www.itech.ru –v 16
Обмен пакетами с ns1.itech.ru [195.151.210.34] по 32 байт:
Ответ от 195.151.210.34: число байт=32 время=130мс TTL=254
Независимо от типа сервиса, время отклика всегда составляло 130 мс, и быстроты пересылки при TOS, равном 16, не наблюдалось. А вот пример сети, поддерживающей TOS:
C:>ping www.krintel.ru –v 2
Обмен пакетами с www.krintel.ru [195.161.42.218] по 32 байт:
Ответ от 195.161.42.218: число байт=32 время=2143мс TTL=127
C:>ping www.krintel.ru –w 10000 –v 4
Обмен пакетами с www.krintel.ru [195.161.42.218] по 32 байт:
Ответ от 195.161.42.218: число байт=32 время=1763мс TTL=127
C:>ping www.krintel.ru –v 8
Обмен пакетами с www.krintel.ru [195.161.42.218] по 32 байт:
Превышен интервал ожидания для запроса.
Ответ от 195.161.42.218: число байт=32 время=1332мс TTL=127
C:>ping www.krintel.ru –v 16
Обмен пакетами с www.krintel.ru [195.161.42.218] по 32 байт:
Ответ от 195.161.42.218: число байт=32 время=1092мс TTL=127
Наибольшая задержка наблюдалась при TOS, равном 2 (минимальные издержки на пересылку), а наименьшая – при TOS, равном 16 (минимальная задержка), и чуть менее быстрыми оказались посылки с TOS, равном 8.
Какую пользу из этого можно извлечь? А вот какую – прикладные программы могут манипулировать полем TOS по своему усмотрению, выбирая значение, соответствующее специфике своей работы. Например, telnet-клиенты, ICQ и чаты очень чувствительны к задержкам, ftp клиентам задержки не страшны, – была бы хорошей пропускная способность, и т.д. Разумеется, если промежуточные узлы игнорируют содержимое поля TOS, никакого выигрыша не получается и высокоприоритетные пакеты (например, от ICQ) обрабатываются с той же скоростью, что и пакеты, скажем, от почтового сервера, не критичные к скорости доставки. Использование ping с ключом –v позволяет выяснить, поддерживается ли TOS на данном маршруте и, если имеется несколько альтернативных маршрутов, выбрать из них наиболее подходящий2.
Ключ –r заставляет промежуточные узлы записывать в заголовок отправляемых эхо-запросов свои IP-адреса. Не все маршртузаторы поддерживают такую возможность, но очень многие. Ping, вызванная с ключом –r, позволяет отслеживать маршрут пересылки пакетов и могла бы полностью заменить собой утилиту tracert, если бы не ограничения, налагаемые размером IP-заголовка на максимальное количество запоминаемых адресов – их умещается всего девять, и более длинные пути отслеживать этим способом невозможно.
Ключ –s похож на ключ –r, но заставляет промежуточные узлы вносить в заголовок не свои адреса, а временную метку (или "штамп времени" в плохом русском переводе). По общепринятым соглашениям временная метка представляет собой четырехбайтовое поле, содержащее число миллисекунд, истекших с начала полуночи всеобщего скоординированного времени, однако на практике это соглашение мало кто соблюдает, и многие маршрутизаторы заполняют это поле всякой отсебятиной, интерпретируемой только одним им известным способом.
На количество запоминаемых временных меток наложены те же самые ограничения, что и на количество запоминаемых IP-адресов, за одним небольшим исключением – временная метка, вставленная неизвестно каким маршрутизатором, бесполезна (разве что маршрут путешествия пакетов заведомо не меняется с течением времени и может быть предварительно выявлен трассировкой). По умолчанию утилита ping автоматически запоминает IP-адреса узлов при записи временных меток, таких пар в заголовок пакета может вместиться только четыре.
Временная метка выгодно отличается тем, что позволяет вычислять точную скорость пересылки пакета, поскольку содержит в себе не общий интервал задержки (от пересылки в оба конца), а время пересылки на заданный узел. По непонятным причинам штатная (да и большинство остальных) реализация утилиты ping не позволяет задавать запись временной метки для произвольного узла в цепочке (хотя, в принципе, это возможно), чем полностью обесценивает ключ –s - ну право же, редкий сервер отделен от клиента менее чем четырьмя промежуточными узлами!
Пример вызова ping с ключом –s приведен ниже. Обратите внимание на временную метку: похоже, она представляет собой ни что иное, как случайное число.
C:>ping www.itech.ru –s 2
Обмен пакетами с ns1.itech.ru [195.151.210.34] по 32 байт:
Ответ от 195.151.210.34: число байт=32 время=151мс TTL=254
Штамп времени: 195.151.210.36 : 3658968578 –>
195.151.210.34 : 2275040770
Ответ от 195.151.210.34: число байт=32 время=140мс TTL=254
Штамп времени: 195.151.210.36 : 3357240834 –>
195.151.210.34 : 1956535810
Ответ от 195.151.210.34: число байт=32 время=141мс TTL=254
Штамп времени: 195.151.210.36 : 3122621954 –>
195.151.210.34 : 1738694146
Ответ от 195.151.210.34: число байт=32 время=140мс TTL=254
Штамп времени: 195.151.210.36 : 2888003074 –>
195.151.210.34 : 1504075266
Статистика Ping для 195.151.210.34:
Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь),
Приблизительное время передачи и приема:
наименьшее = 140мс, наибольшее = 151мс, среднее = 143мс
Ключ -j задает список узлов для свободной маршрутизации от клиента и аналогичен одноименному ключу утилиты tracert.
Ключ -k похож на ключ -j, но задает список узлов для жесткой маршрутизации, т.е. пакет передается из рук в руки строго по перечню перечисленных узлов, и ни один их них не может позволить себе воспользоваться услугами "собственного" маршрутизатора для передачи пакета следующему узлу. Если узел не может передать пакет напрямую, он уничтожает его и посылает отправителю соответствующее уведомление: дескать, такая маршрутизация от источника невозможна. Существует очень мало причин, требующих применения свободной, а тем более жесткой маршрутизации. Все это пережиток старых времен, современные сети самостоятельно решают проблемы маршрутизации пакетов, и пытаться помочь им, право, не стоит – они и без того справляются со своей задачей слишком хорошо.
Ключ -a задает определение имен узлов по их IP-адресам. Так, во всяком случае, сказано в документации. Смысл этого неясен: такое определение и без того происходит автоматически независимо от наличия (отсутствия) ключа "-a".
Почему ping не проходит, а сайт сервера нормально работает и открывается?
Бывает, ping к некоторому серверу упорно не проходит, какая бы задержка ни была выбрана, но все сервисы (будь то почта или web) работают нормально. Почему? Все объясняется очень просто – администратор сервера защитил его межсетевым экраном, блокирующим либо эхо-запросы, либо эхо-отклики, либо и те, и другие вместе. А может запрет эхо-откликов наложен на сам узел.
Все эти меры предосторожности объясняются тем, что эхо-посылки имеют более высокий приоритет по сравнению с обычными пакетами (иначе бы эха век не дождаться), и злоумышленники могут перегрузить сервер, направив на него штурм эхо-запросов. "Упасть", правда, сервер не упадет, но вот общая производительность несколько снизится. Хуже, если направить шторм эхо-запросов от имени жертвы, выходящей в Интернет по модему: на нее обрушится сокрушительная лавина эхо-ответов от быстродействующего сервера (хорошо, если одного), плотно забивающая канал…
Вот поэтому-то для заблаговременного предотвращения возможности атаки, эхо-посылки и запрещаются, делая работу ping невозможной, но все службы сервера продолжают, как ни в чем не бывало, работать!
Источник: http://www.winzone.ru