Параметр записи маршрута позволяет посылающей стороне создать заголовок 1Р с рядом пустых адресов 1Р в качестве параметров 1Р. Когда дейтаграмма 1Р перемещается по сети, каждый встреченный маршрутизатор добавляет в список свой адрес 1Р, тем самым записывая пройденный к месту назначения маршрут. В параметре записи маршрута 1Р должно быть выделено достаточно места для хранения адресов 1Р. Размер каждого поля определяется посылающим компьютером. Как можно видеть в списке ниже, посылающий компьютер задает поле параметров как 0x7, что указывает на использование параметра записи маршрута. Следующее поле - это поле длины параметра, которое является полем переменной длины, заданной в октетах посылающей машиной. Затем следует поле указателя следующего слота, которое используется для указания сдвига октета в поле параметра записи маршрута, где начинается следующий доступный слот для записи адресов IP маршрута.
Теперь посмотрим на ответ, который приходит из места назначения. Как можно видеть в приведенной ниже распечатке, большая часть информации выглядит точно так же, однако теперь она дополнена некоторой дополните льной информацией. Мы в наибольшей степени заинтересованы в маршруте к месту назначения. Мы видим адреса IP, которые были использованы для записи информации маршрутизатора, когда дейтаграмма IP перемещалась к своему месту назначения. Существуют максимум девять доступных слотов, которые могут распределяться посылающим компьютером. В этом примере использованы три из них.
Приведенные выше листинги были сделаны с помощью команды PING Windows NT с параметром команды -г. Она посылает сообщение с запросом Echo ICMP, который записывает маршрут.
Обычно маршрутизаторам и Windows NT разрешается принимать решения о маршрутизации на основе таблиц маршрутизации. Однако иногда при поиске неисправностей, тестировании и отладке сетей необходимо определить маршрут к месту назначения, не беспокоясь о модификации таблиц маршрутизации. Когда мы переопределяем путь доступа, который будет обычно использоваться, мы вмешиваемся в маршрутизацию IP от источника. IP поддерживает два вида маршрутизации от источника: неопределенную и точную. Сначала рассмотрим неопределенную маршрутизацию от источника.
При неопределенной маршрутизации от источника IP-дейтаграмма адресуется следующему маршрутизатору с помощью IP-адреса места назначения из заголовка IP. При неопределенном источнике маршрута хорошо то, что можно определить маршрутизатор, который находится в нескольких переходах. Посмотрим на поле параметров при использовании неопределенной маршрутизации от источника. В распечатке ниже можно видеть, что поле кода параметра задано равным 131. Это значит, что используется параметр неопределенной маршрутизации от источника
Поле длины параметра, приведенное выше, равно длине в байтах, полученной 131 параметром. Это поле задается посылающей машиной. В данном случае используется семь байтов для параметра неопределенной маршрутизации источника. Указатель маршрутизации используется для определения сдвига октета в полях параметра 131 для указания, где начинаются данные маршрутизатора. Здесь мы пропускаем четыре байта с начала поля параметра и видим IP-адрес первого маршрутизатора в шестнадцате-ричном представлении. Это выделено на рис. 2.7. Если посмотреть на шест-надцатеричную панель (внизу экрана), можно увидеть, что поле параметра начинается с 83 (шестнадцатеричного значения 131, кода параметра неопределенной маршрутизации источника). Теперь сдвиг определен как 04, что сообщает, где в данных расположен IP-адрес первого маршрутизатора. Отсчитывая от 83 четыре числа, мы получаем OA (10 в шестнадцатеричном представлении), что будет первым октетом IP-адреса маршрутизатора.
Можно заставить PING использовать неопределенный маршрут от источника, применяя параметр -j. Команда будет выглядеть как PING -j 10.0.0.10 10.0.0.60. Первый адрес определяет место назначения, а второй и следующие адреса являются маршрутизаторами для использования в направлении к месту назначения.
Этот параметр очень похож на неопределенный маршрут от источника. Как можно видеть в распечатке ниже, поля выглядят почти идентично параметру неопределенной маршрутизации. Имеется поле кода параметра, который в данном случае содержит 137. Это код параметра точной маршрутизации от источника. Он равен 0x89 в шестнадцатеричном представлении, что видно в распечатке. Следующее поле определяет длину параметра, которая в данном случае также равна семи. Она будет меняться в зависимости от числа переходов, которое будет определено для места назначения. Это задается посылающей машиной так же, как и прежде. Указатель маршрутизации используется для отметки начала данных для первого маршрутизатора, как было и в случае параметра неопределенной маршрутизации от источника.
Можно использовать точную маршрутизацию от источника с целью тестирования, используя команду PING с параметром -к. Например, можно ввести PING -к 10.0.0.10 10.0.0.60. Первый адрес определяет место назначения, а второй и последующие адреса являются маршрутизаторами для использования в направлении места назначения. Что-нибудь подобное нельзя сделать с помощью команды TRACERT.
Параметр отметки времени Интернета Этот параметр работает аналогично параметру записи маршрута в том смысле, что посылающий узел создает последовательность пустых пробелов, которые заполняются маршрутизаторами на пути к месту назначения. Записи являются IP-адресом маршрутизатора и отметкой времени. Отметка времени — это 32-битное целое число, которое является числом миллисекунд, прошедших с полуночи универсального (т.е. гринвичского) времени. Если универсальное время недоступно маршрутизатору, то он может использовать что-то другое, но должен указать, что используется не универсальное время, задавая старший бит в поле отметки времени равным 1. Код параметра равен 68 (0x44). Он сообщает, что используется параметр отметки времени Интернета. Поле длины параметра задается посылающей машиной, но оно имеет максимальную длину 40 октетов, включая поля типа параметра, длины, указателя и флага переполнения. Как можно видеть в листинге, поле указателя времени сообщает, где начинается отметка времени. Это смещение от начала поля параметра 68. Наименьшее законное значение для этого поля равно пяти, что показано в приведенной ниже распечатке.
Следующее поле — это поле флага, использующее 0 для записи только отметки времени без IP-адресов, 1 для записи отметки времени с IP-адресом и 3 для определения посылающего узла и отметки времени, если он соответствует IP-адресу следующего маршрутизатора. В распечатке ниже задан флаг 1, это значение используется чаще всего.
Размер этого параметра не изменяется с числом собранных отметок времени. Если выделенная для отметок времени область будет исчерпана, то будет увеличиваться поле пропущенных станций. Поля шлюза и точки времени используются для хранения IP-адреса и отметки времени. Они заполняются маршрутизатором при ответе на дейтаграмму.
Этот параметр очень похож на неопределенный маршрут от источника. Как можно видеть в распечатке ниже, поля выглядят почти идентично параметру неопределенной маршрутизации. Имеется поле кода параметра, который в данном случае содержит 137. Это код параметра точной маршрутизации от источника. Он равен 0x89 в шестнадцатеричном представлении, что видно в распечатке. Следующее поле определяет длину параметра, которая в данном случае также равна семи. Она будет меняться в зависимости от числа переходов, которое будет определено для места назначения. Это задается посылающей машиной так же, как и прежде. Указатель маршрутизации используется для отметки начала данных для первого маршрутизатора, как было и в случае параметра неопределенной маршрутизации от источника.
Можно использовать точную маршрутизацию от источника с целью тестирования, используя команду PING с параметром -к. Например, можно ввести PING -к 10.0.0.10 10.0.0.60. Первый адрес определяет место назначения, а второй и последующие адреса являются маршрутизаторами для использования в направлении места назначения. Что-нибудь подобное нельзя сделать с помощью команды TRACERT.
Параметр отметки времени Интернета Этот параметр работает аналогично параметру записи маршрута в том смысле, что посылающий узел создает последовательность пустых пробелов, которые заполняются маршрутизаторами на пути к месту назначения. Записи являются IP-адресом маршрутизатора и отметкой времени. Отметка времени — это 32-битное целое число, которое является числом миллисекунд, прошедших с полуночи универсального (т.е. гринвичского) времени. Если универсальное время недоступно маршрутизатору, то он может использовать что-то другое, но должен указать, что используется не универсальное время, задавая старший бит в поле отметки времени равным 1. Код параметра равен 68 (0x44). Он сообщает, что используется параметр отметки времени Интернета. Поле длины параметра задается посылающей машиной, но оно имеет максимальную длину 40 октетов, включая поля типа параметра, длины, указателя и флага переполнения. Как можно видеть в листинге, поле указателя времени сообщает, где начинается отметка времени. Это смещение от начала поля параметра 68. Наименьшее законное значение для этого поля равно пяти, что показано в приведенной ниже распечатке.
Следующее поле — это поле флага, использующее 0 для записи только отметки времени без IP-адресов, 1 для записи отметки времени с IP-адресом и 3 для определения посылающего узла и отметки времени, если он соответствует IP-адресу следующего маршрутизатора. В распечатке ниже задан флаг 1, это значение используется чаще всего.
Размер этого параметра не изменяется с числом собранных отметок времени. Если выделенная для отметок времени область будет исчерпана, то будет увеличиваться поле пропущенных станций. Поля шлюза и точки времени используются для хранения IP-адреса и отметки времени. Они заполняются маршрутизатором при ответе на дейтаграмму.
Тип потока данных (DataStream) сообщает, какой тип данных переносится внутри пакета. Он может быть задан как специальное число, определенное приложением через Winsock. Самой важной функцией этого поля является обеспечение аккуратного разъединения сеанса. По умолчанию это будет одно из двух следующих сообщений:
• Конец соединения (End-of-Connection). Если тип потока данных задан как OxFE, то партнер по сеансу хочет прекратить сеанс.
• Конец соединения (End-of-Connection). Если тип потока данных задан как OxFF, то пакет передается, так как был получен запрос конца соединения.
Некоторые из других записей, встречающиеся в этом поле, включают числа, перечисленные в таблице
Идентификатор соединения источника и места назначения Это третье и четвертое поля из семи полей заголовка SPX. Поля идентификаторов сое динения источника и места назначения занимают два байта и используются для демультиплексирования сеансов SPX через единственный сокет на уровне IPX. Если идентификатор соединения места назначения задан как 0XFFFF, значит, это пакет начального соединения.
Порядковый номер Пятое поле в заголовке SPX является полем порядкового номера. Это двухбайтовое поле, содержащее счетчик переданных пакетов данных. Это число будет увеличиваться после получения подтверждения о передаче пакета данных.
Номер подтверждения Шестое поле является полем номера подтверждения, сообщающим номер последовательности следующего пакета SPX, который ожидается от партнера SPX.
Номер размещения Последнее поле заголовка SPX является полем номера размещения. Это поле сообщает номер буфера получения, который доступен на рабочей станции. Этот номер почти всегда больше, чем номер подтверждения. Доступность свободных буферов вычисляется, как размер окна, который равен номеру размещения минус номер подтверждения плюс один. Это поле используется как механизм управления потоком. Он работает следующим образом. Когда получающая сторона посылает номер размещения меньше номера подтверждения, отправитель не будет больше посылать данные, пока получающая сторона не пошлет пакет с номером размещения больше номера подтверждения.
Пример создания соединения Трассировка сетевого монитора, приведенная ниже, показывает последовательность успешной инициализации сеанса. Отметим, что идентификатор соединения места назначения задан как OxFFFF, а номер размещения как OxFFFF. Эта последовательность пакетов называется квитированием SPX.
