Параметр записи маршрута позволяет посылающей стороне создать заголовок 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-адреса и отметки времени. Они заполняются маршрутизатором при ответе на дейтаграмму.
Следующие рекомендации могут оказаться полезными при выделении проблемы.
• Можно видеть несколько идентификаторов сеансов, приходящих с одного компьютера. Попробуйте изолировать трассировку для определенного идентификатора сеанса, чтобы проверить его правильность.
• Посмотрите на число переходов и сравните физический уровень Ethernet с Token Ring. Проблема может быть связана с промежуточными маршрутизаторами или с размером пакета. Помните, что SPX не выполняет согласования пакетов.
• Обратите внимание на номер размещения и проверьте, что он больше номера подтверждения. Это проверка того, что отсутствует какая-либо проблема, связанная с переполнением буфера. В основном это происходит с 16-разрядными клиентами в реальном режим .
• Проверьте все повторные передачи пакетов данных. Обычно проблема повторной передачи проявляется как вопрос производительности. Проверьте интервал времени между отправкой данных и получением пакета АСК, чтобы проверить наличие временной задержки.
Ограничения протокола SPX Хотя SPX предоставляет транспорт с поддержкой соединения, SPX имеет несколько ограничений.
• Только один пакет может ожидать в любой момент времени.
• Коммуникация на основе SPX не делает никакого согласования пакета.
• SPX II использует максимальный размер пакета, допустимый сетью. Пример: 1518 байтов для Ethernet (SPX имеет максимум 576 байтов).
• Окна SPX II допускают несколько ожидающих пакетов и позволяют передавать отрицательное подтверждение (NAK), чтобы указать, что некоторые пакеты не были получены.
• SPX II допускает согласование пакетов. Пакет запроса согласования размера может посылаться в любое время в процессе коммуникации, если пакеты не доходят до места назначения.
Идентификатор соединения с источником Это поле содержит двухбайтовый номер соединения SPX, присвоенный станцией источника SPX и используемый для отслеживания различных виртуальных соединений SPX, которые может поддерживать сокет. Этот номер появится в идентификаторе соединения места назначения, когда прибудут пакеты от партнера по соединению для этой станции.
Идентификатор соединения с местом назначения Это поле содержит двухбайтовый номер соединения SPX, присвоенный станции места назначения SPX. Он используется для отслеживания различных виртуальных соединений SPX, которые может поддерживать сокет. Этот номер появится в идентификаторе соединения источника, когда пакеты посылаются партнеру по соединению.
Порядковый номер SPX присваивает порядковый номер каждому пакету данных, посланных партнеру по соединению. Этот номер увеличивается, когда пакет данных подтверждается, что обеспечивает упорядоченную передачу пакетов из источника в место назначения партнера по соединению. Это поле не увеличивается для пакетов, которые не содержат данных (системных пакетов).
Номер подтверждения Это ожидаемый номер последовательности для следующего пакета данных от партнера по соединению в месте назначения. Это поле не увеличивается для пакетов, которые не содержат данных (системных пакетов).
Номер размещения Этот номер используется для вычисления количества доступных для получения пакетов буферов, посланных из места назначения соединения. Он соответствует номеру последовательности пакета, который подготовлен для отправки, но еще не послан. Источник соединения не может превысить номер размещения. Когда источник соединения генерирует ЕСВ (блок управления событиями) приема, SPX увеличивает номер размещения. Это поле не увеличивается для пакетов, которые не содержат данных (системных пакетов).
Данные Запись данных (если они присутствуют) содержит любые данные или коды, которые посылаются на сервер и с сервера.
Поле сокета указывает пакет SPX, посылаемый клиентом на сервер. Со-кет клиента сервера будет 8060. Пакет содержит также некоторые имеющие отношение к SPX данные для целей соединения. Запись управления соединением в заголовке SPX показывает код COh, означающий, что пакет является системным пакетом, который требует подтверждения от сервера при получении.
