69582

Заголовок IP пакета

Практическая работа

Информатика, кибернетика и программирование

Так же заголовок IP пакета может дополнительно содержать в себе не обязательно используемые поля – опции. Опции могут как присутствовать в пакете так и отсутствовать их длина при этом не может превысить 40 байт. Опции в IP пакете используются не часто в основном с целью диагностики...

Русский

2014-10-07

4.7 MB

6 чел.

В предыдущем уроке было начато рассмотрение заголовка IP, точнее – его обязательной части. Описаны названия полей заголовка, их длина и назначение. Установлено, что длина минимального заголовка IP пакета составляет 20 байт, при этом, заголовок содержит следующие поля

Version – номер версии протокола IP. Для IP v.4 = 0100bin

IHL – длина заголовка в 4 байтовых словах. Минимальное значение 0101bin, что соответствует 20 байтам.

TOS – тип сервиса, содержит приоритет пакета и, необязательно, один из трех кодов требований по передаче пакета Delay, Throughput, Reliability.

Total Length – общая длина пакета. Показывает длину IP пакета в байтах, включая полный заголовок IP пакета и поле данных пакета, следующее за заголовком.

ID – поле, содержащая уникальный присваиваемый по порядку либо генерируемый случайно код-идентификатор пакета. Используется при фрагментации и сборке пакета.

Flags – флаги. Используется  для запрета фрагментации пакета, либо в качестве указателя что пакет является фрагментом. Нулевое значение значит что пакет не фрагментирован, либо является заключительной частью фрагментированного пакета (в зависимости от поля Fragment Offset).

Fragment Offset – используется при фрагментации и сборке пакета. Поле указывает начиная с какого байта исходного пакета начинается данный фрагмент. Значение приводится в восьмибайтовых словах.

TTL – время жизни. Используется для ограничения времени существования пакета в сети, например для предотвращения зацикливания пакетов при маршрутных петлях. Значение поля уменьшается при прохождении пакета через маршрутизатор.

Protocol – протокол. Используется для идентификации инкапсулированного протокола верхнего уровня.

Header Checksum – контрольная сумма заголовка. Поле указывает контрольную сумму заголовка, пересчитывается при прохождении через маршрутизатор, в случае несхождения суммы пакет сбрасывается.

Source AddressIP адрес источника (отправителя) пакета.

Destination AddressIP адрес назначения (получателя) пакета.

Так же  заголовок IP пакета может дополнительно содержать в себе не обязательно используемые поля – опции. Опции могут, как присутствовать в пакете, так и отсутствовать, их длина при этом не может превысить 40 байт.  Это ограничение связано с тем, что поле IHL показывающее длину заголовка, выражает ее в четырехбайтовых словах, длина этого поля – 4 бита, максимальное значение, соответственно - пятнадцать (четырехбайтовых слов), таким образом,        15 умножить на 4 байта -  получаем 60 байт. Так как стационарная часть заголовка имеет длину 20 байт, следовательно, для опций остается максимум 40 байт. Кроме того, так как поле IHL показывает длину заголовка в четырехбайтовых словах, следовательно, длина заголовка должна быть кратна четырем байтам, а так как стационарная часть заголовка сама кратна четырем байтам, следовательно, и длина опций должна быть кратна четырем байтам.

Опции в IP пакете используются не часто, в основном с целью диагностики сетевых неисправностей или исследования сети, опять же с целью диагностики, в обычных взаимодействиях, коих большинство, IP заголовок лишен опций. Одна отдельно взятая опция IP заголовка предназначена для решения одной конкретной задачи, при этом в одном заголовке может присутствовать как одна опция, так и несколько опций, если тот, кто послал данный пакет, хочет решить сразу несколько задач, решаемых разными опциями. Следовательно, опций в одном IP заголовке может быть от нуля, до нескольких, главное чтобы длины всех опций не превысила 40 байт и была кратна 4.

Теперь перейдем к рассмотрению формата опций IP заголовка. Все опции IP заголовка начинаются с однобайтового поля Option-type, которое показывает, что именно за опция следует далее. При этом, не смотря на то, что опции нумеруются однобайтовым полем, нельзя сказать, что протокол IP просто поддерживает возможность использования до 265 опций, дело в том, что первый бит поля Option-type имеет особое назначение – этот бит, называемый «признак копирования» используется для указания маршрутизатору о необходимости переносить данную опцию в заголовок каждого фрагмента, полученного из данного пакета (если конечно, данный пакет будет необходимо фрагментировать). Если опцию не нужно копировать в заголовок каждого фрагмента, то первый бит поля Option-type устанавливается равным 0, и опция будет фигурировать только в первом фрагменте пакета, если же опция должна быть перенесена в заголовок каждого фрагмента, то первый бит поля Option-type устанавливается равным 1. При рассмотрении опций мы найдем как «копируемые», так и «не копируемые» опции, в зависимости от того, какие задачи решает опция будет ясно, почему та или иная опция является копируемой или не копируемой. Таким образом, поддерживается до 128 копируемых и 128 не копируемых опций, реально определенных сегодня опций гораздо меньше, остальные неиспользуемые значения поля Option-type зарезервированы. Однако на этом структура поля Option-type не исчерпана: следующие два бита за признаком копирования используются для указания так называемого класса опции. На сегодняшний день определено два класса опций:

00 – управление (control)

01 – зарезервировано

10 – измерение и поиск неисправностей (debugging and measurement)

11 – зарезервировано

Таким образом, можно сказать, что протокол IP поддерживает до 32 управляющих копируемых и 32 управляющих не копируемых опций, 32 измеряющих копируемых и 32 измеряющих не копируемых опций, и так же еще 2 класса по 32 копируемых и 32 не копируемых опции в каждом. Значение 32 получается следующим образом:

- длина поля Option type составляет 8 бит. Из них 1-й бит слева на право это признак копирования, следующие 2 бита (2-й и 3-й бит слева на право) это класс опции. Таким образом на нумерацию опции остается 8-3=5 бит, а количество идентификаторов соответственно 25 = 32.

Итак, первое поле, Option-type, показывает, что за опция перед нами. Продолжим рассмотрение формата опций дальше.

Опции делятся на два типа в зависимости от формата:

  •  Опции, состоящие ТОЛЬКО из поля Option-type. Это значит, что самого объявления, что эта опция есть достаточно, присутствие опции говорит само за себя и никаких дополнительных данных опция не переносит и не использует.
  •  Опции, имеющие следующий формат:

Option-type

Option-length

Option Data

Где Option-type – рассмотренный выше тип опции, Option-length (1 байт) – длина опции, включающая в себя 1 байт поля Option-type, 1 байт поля Option-type и количество байт в поле Option Data, которое имеет переменную длину, в зависимости от типа опции. Таким образом, принимающая сторона, встречающая в пакете опцию, всегда может понять, где заканчивается та или иная опция: даже не поддерживая некоторою опцию второго типа, станция или маршрутизатор может, считав второй байт такой опции, найти где эта опция заканчивается и перейти к анализу следующей опции, кроме того, многие опции второго типа могут иметь различную длину поля Option Data, в зависимости от некоторых обстоятельств. Таким образом, наличие в опции поля Option-length позволяет четко определить границы каждой опции и правильно интерпретировать последовательность опций, идущих в одном заголовке.

Перейдем к рассмотрению опций IP заголовка. Для начала рассмотрим опции первого типа, которые состоят только из поля Option-type.

Опция «Конец поля опций», EOOF (End Of Option Field).

Эта опция не является копируемой и относится к классу «Управление», следовательно первые три бита поля Option-type = 000. Номер этой опции 00000, следовательно, поле Option-type принимает значение 00000000. Эта опция используется для указания того, что опции IP пакета завершились. Однако, как мы знаем, в заголовке IP пакета есть поле IHL, которое позволяет заранее объявить, как много байтов будут занимать опции в заголовке (IHL*4-20). Зачем же показывать специальной опцией конец поля опций? Это делается не всегда, а лишь тогда, когда поле опций заканчивается не по четырехбайтовой границе, в этом случае из-за небольшой длины поля IHL заголовок IP должен иметь длину, кратную четырем байтам. Так вот, если предыдущие опции закончились как раз на четырехбайтовой границе, то поле опций НЕ ставится опция EOOF, а просто начинается поле данных IP пакета, если же опции закончились не по четырехбайтовой границе, то после всех опций ставиться опция EOOF. Если использование этой опции привело в к тому, что вместе с ней поле опций закончилось на четырехбайтовой границе, то после этого начинается поле данных IP пакета, если же применение опции EOOF еще не привело к достижению четырехбайтовой границе, то поле этой опции используется необходимо количество байт заполнителя, в качестве заполнителя используется байт 00000000.

Рассмотрим примеры:

Пример первый: пусть в заголовке необходимо применить некоторую опцию длиной 8 байт (6 байт данных, байт типа и байт длины). Тогда в поле IHL указывается значение 7 (28 байт – длина заголовка), из них 20 байт – стационарная часть заголовка. Тогда принимающая сторона понимает, что опции занимают 8 байт. После поля Destination IP Address приемная сторона начинает считывать опции, и второй байт первой опции имеет значение 8, т.е. приемная сторона отсчитывает 8 байт опции, знает, на основании вышеприведенного расчета, что поле опций закончилось на 28 байте заголовка и начинает считывать поле данных IP пакета – в опции EOOF нет потребности. Пример такого заголовка приведен ниже.

Следующий пример: пусть в заголовке необходимо применить некоторую опцию длиной 7 байт (байт типа, байт длины и 5 байт данных). Тогда суммарная длина IP заголовка вроде бы должна быть равна 27 байт, но это не возможно, так как длина IP заголовка должна быть кратна 4 байтам, поэтому заголовок придется делать не 27, а 28 байт. Поле IHL равно 7 (28 байт – длина заголовка), из них 20 байт – стационарная часть заголовка. Следовательно, опции занимают в заголовке 8 байт. После поля Destination IP Address приемная сторона начинает считывать опции, и второй байт первой опции имеет значение 7, следовательно, опции не закончились – их должно быть 8 байт, а первая опция занимает лишь 7 байт. Вот тут и применяется опция EOOF, которая как раз и делает поле опций длиной 8 байт, выравнивая тем самым опции по четырехбайтовой границе. Пример такого заголовка приведен ниже.

Третий пример: пусть теперь в заголовке необходимо применить опцию длиной 6 байт (байт типа, байт длины и 4 байта данных). Тогда суммарная длина IP заголовка на этот раз должна быть равна 26 байт, но это как уже многократно говорилось, не возможно, поэтому заголовок придется делать не 26, а 28 байт. Поле IHL равно 7 (28 байт – длина заголовка), из них 20 байт – стационарная часть заголовка. Следовательно, опции занимают в заголовке снова 8 байт. После поля Destination IP Address приемная сторона начинает считывать опции, и второй байт первой опции имеет значение 6, следовательно, опции не закончились – их должно быть 8 байт, а первая опция занимает лишь 6 байт. Тогда после того, как все опции (в нашем случае – одна) закончились, необходимо установить опцию EOOF, показывающую, что поле опций закончено, но так как и теперь четырехбайтовая граница не достигнута, то поле опции EOOF необходимо применить заполнитель из байта (или байтов) 00000000. Пример такого заголовка приведен ниже.

Если длина опции равна 5 байт, то помимо опции EOOF должно быть применено два байта заполнителя:

А вот если длина опции равна 4 байта, то ни трех байт заполнителя, ни самой опции EOOF не применяют – тогда опция, длиной 4 байта сама по себе заканчивается по четырехбайтовой границе. Пример такого заголовка приведен ниже.

Таким образом, опция EOOF необходима лишь для выравнивание границы всех опций для того, чтобы длина всего IP заголовка была кратна 4 байтам.

Опция EOOF является не копируемой, так как  используется только для выравнивание и только тогда, когда это необходимо. Положим, что изначально в заголовке присутствовало две опция диной 7 байт и 8 байт, тогда после них обязательно необходимо использовать опцию EOOF. Но положим, что эта опция длиной 7 байт являлась не копируемой, а опция длиной 8 байт – копируемой.

Тогда в первом фрагменте будут присутствовать обе опции (длиной 7 и 8 байт) и после них снова будет применена опция EOOF.

В остальных фрагментах будет присутствовать только опция длиной 8 байт и потребности в опции EOOF не будет – зачем ставить в этом заголовке опцию EOOF, можно просто показать полем IHL наличие в заголовке опции длиной 8 байт, которая и так заканчивается  на четырехбайтовой границе. Пример:

Исходный пакет (точно так же выглядит и первый фрагмент):

А так выглядят все остальные фрагменты:

Таким образом, опция EOOF оказалась не перенесена в каждый фрагмент из исходного пакета (но оказалась перенесена в первый фрагмент).

Однако возможна и такая ситуация: пусть в пакете присутствовало 2 опции, с длинами 7 и 8 байт. Тогда в исходном пакете присутствовала опция EOOF для выравнивания. Однако положим, что опция длиной 7 байт является копируемой, а опция длиной 8 байт – не копируемой. Тогда исходный пакет (и первый фрагмент) имеет вид:

Остальные фрагменты содержат только опцию длиной 7 бит, поэтому в конце поля опций будет присутствовать опция EOOF:

Видно, что в этом примере опция EOOF копируется во все фрагменты. Но фактически эта опция не является копируемой (она формально и не является не копируемой) – она просто используется там, где это необходимо. Возможна ситуация, когда в исходном пакете опции EOOF не было, но она появится во фрагментах.

Пример: пусть в пакете присутствовало 3 опции: длиной 6 байта, 3 байта и 3 байта. Пусть одна из трехбайтовых опций является не копируемой, а две остальных опции – копируемые. Тогда исходный пакет и первый фрагмент имеют вид:

Заметим, опции EOOF нет. А вот как выглядят все остальные фрагменты:

В данном случае с целью выравнивания используется опция EOOF и заполнитель.

Вывод: опция EOOF используется там, где это необходимо. Опция может присутствовать как в исходном пакете, так и во фрагментах, может присутствовать в исходном пакете, но не применяться во фрагментах и, наконец, может отсутствовать в исходном пакете и присутствовать во фрагментах.

 

Опция «Нет операции» или NOOP (NO Operation).

Следующая опция первого типа, т.е. состоящая только из поля Option-type, является опция называемая «Нет операции» или NOOP (NO Operation). Эта опция является не копируемой (первый бит поля Option-type = 0, но, по сути, она похожа в этом смысле на EOOF) и относится к классу управления (второй и третий бит поля Option-type =00), ее номер 00001, т.е. поле Option-type принимает значение 00000001. Эта опция, как и предыдущая, служит целям выравнивания, но применяется для выравнивания внутри поля опций. Положим, отправитель хочет, чтобы каждая опция пакета начиналась с четырехбайтовой границы, тогда для выравнивания конца очередной опции по четырехбайтовой границе можно применить опцию NOOP, например:

Пусть в пакете две опции, длиной 3 и 3 байта. Пакет можно сформировать следующим образом, без применения опции NOOP, которая, как ясно из ее описания, вообще является не необходимой для применения:

Однако, для удобства чтения можно выровнять каждую опцию по четырехбайтовой границе с помощью опции NOOP, например:

Так, очевидно, красивее, хотя какой то особой функциональности за этим не стоит. Вообще, корректный заголовок можно формировать ТОЛЬКО с помощью опции EOOF или ТОЛЬКО c помощью опции NOOP, например, следующий заголовок, использующий опцию EOOF:

 можно сформировать и так:

Из вышеприведенного следует, что две рассмотренные опции служат целям выравнивания конца поля опций и выравнивания внутри поля опций, при чем формально говоря корректные заголовки можно строить применяя только одну, любую из этих опций. Стиль формирования опций IP пакета зависит от реализации стека TCP/IP и на может конфигурироваться в рамках операционной системы по усмотрению разработчиков.

Опции EOOF и NOOP исчерпывают множество опций первого типа, т.е. состоящих только их поля Option-type. Все остальные опции, которые мы рассмотрим, имеют формат второго типа:

Option-type

Option-length

Option Data

Рассмотрим первую из этих опций: Record Route или RR. Данная опция позволяет узлу отправителю пакета попросить маршрутизаторы, обрабатывающие пакет записать свои IP адреса в специально отведенные места в заголовке IP пакета с целью дальнейшего анализа списка маршрутизаторов, которые пересекает пакет (однако принцип работы утилиты tracert.exe НЕ базируется на данной технологии). При этом, маршрутизаторы записывают в заголовок IP пакета IP адреса тех своих портов, через которые ОТПРАВЛЯЮТ маршрутизируемый пакет (в отличие от tracert.exe, в ходе работы которого мы можем узнать IP адреса тех портов транзитных маршрутизаторов, которые принимают пакет).

Рассмотрим формат опции. Данная опция является не копируемой: зачем нагружать маршрутизаторы не свойственным им делом (вписыванием своего IP адреса в заголовок) записыванием своего адреса в КАЖДЫЙ фрагмент, если достаточно информации, которую приносит первый фрагмент? Данная опция относится к классу «управление», поэтому первых три бита поля Option-type = 000, номер опции 00111, т.е. десятичное значение поля Option-type =7. Длина данной опции является переменной и определяется тем, сколько именно маршрутизаторов попросил отправитель вписать свои IP адреса в заголовок пакета. Если бы маршрутизаторы, вписывая свои адреса, удлиняли бы заголовок пакета, это привело бы к дополнительным сложностям с пересчетом поля Total Length IP заголовка. Для того чтобы заголовок IP не изменял длину при вписывании IP адресов маршрутизаторами, отправитель пакета с опцией RR  заранее резервирует место под адреса, которые впишут маршрутизаторы. Пока эти зарезервированные места есть, маршрутизаторы вписывают свой адрес в заголовок IP пакета, когда место, зарезервированное отправителем, заканчивается - маршрутизаторы просто перенаправляют пакеты, не внося изменений в заголовок.

Формат опции:

Type

Length

Pointer

IP первого маршрутизатора, второго и т.д., поле переменной длины

Длина кратна 4-м байтам, так как представляет собой совокупность целого числа IP адресов.

Отправитель формирует пакет следующим образом: поле Type = 07, поле Length = 4N+3, где N – количество маршрутизаторов, для которых зарезервировано место в опции, Pointer = 4, работа этого поля будет описана ниже, далее заполненное нулями то количество байт, которое зарезервировано для заполнения IP адресами маршрутизаторов, число этих байт кратно 4. Пример такого заголовка:

Рассмотрим, в каком случае IP пакеты снабжаются опцией RR. Очевидно, это происходит только в том случае, когда приложение, пославшее пакет нуждается в проведении диагностики сети. Очевидно, что обычные приложения не станут устанавливать RR в обычных отправляемых пакетах, с другой стороны естественно, что диагностические утилиты могут позволить администратору потребовать установки данной опции в отправляемых пакетах. Пример работы ping.exe с ключом –r:

C:\>ping -r 9 -n 1 www.farlep.net

Обмен пакетами с opossum.farlep.net [213.130.0.6] по 32 байт:

Ответ от 213.130.0.6: число байт=32 время=1097мс TTL=55

   Маршрут: 212.86.234.26 ->

          212.86.227.100 ->

          212.86.227.110 ->

          195.248.160.254 ->

          195.35.65.11 ->

          213.130.30.170 ->

          213.130.30.83 ->

          62.221.34.73 ->

          213.130.0.205

Статистика Ping для 213.130.0.6:

   Пакетов: отправлено = 1, получено = 1, потеряно = 0 (0% потерь),

Приблизительное время приема-передачи в мс:

   Минимальное = 1097мсек, Максимальное = 1097 мсек, Среднее = 1097 мсек

Пример захвата в анализаторе (рекомендуется Network Monitor, так как Sniffer Pro часто неправильно декодирует опции IP заголовка).

Приведенный пример демонстрирует поручение следующим 4 маршрутизаторам записать сведения о себе в данный пакет, следовательно, IHL = 10, т.е. длина заголовка 40 байт, из которых 20 байт – стационарная часть заголовка, 3 байта – тип, длина и указатель опции RR, 16 байт – место под IP адреса, которые впишут маршрутизаторы, и 1 байт – EOOF, так как заголовок сам по себе не заканчивается на четырехбайтовой границе.

При этом сама опция имеет вид: тип опции – 07 (Record Route), длина – 19 байт (тип, сама длина, указатель и 16 байт под IP адреса), указатель – 4, остальное заполнено нулями.

Теперь рассмотрим, как это работает, и проясним роль поля Pointer (указатель). Когда маршрутизатор получает такой пакет,  он считывает опцию RR и понимает, что вероятно должен записать свой адрес в опцию, если конечно там еще есть свободные четырехбайтовые «гнезда». С какого байта может начинать писать свой адрес в опцию маршрутизатор? Для этого и применятся поле указатель – маршрутизатор должен вписать свой IP адрес в тело опции начиная с байта с номером указателя, в данном случае, действительно с байта №4, так как три первых байта заняты служебной информацией – «заголовком» опции. Когда маршрутизатор впишет свой адрес, он перешлет пакет дальше, но перед этим он увеличит поле указатель на 4 байта, давая, таким образом, инструкцию следующему маршрутизатору, вписывать свой адрес уже с восьмого байта, так как первые три байта заняты заголовком опции, а следующие четыре байта заняты адресом первого записавшего свой адрес маршрутизатора. Тогда следующий маршрутизатор будет вписывать свой адрес в опцию начиная с восьмого байта, а после этого поменяет указатель на 12 и так далее. Четвертый маршрутизатор, вписав свой IP адрес в последнее зарезервированное четырехбайтовое поле, установит, в соответствии с описанной выше логикой поле Pointer = 20. Когда пятый маршрутизатор получит этот пакет, длина его опции RR будет по прежнему 19, а указатель, показывающий с какого места можно вписывать свой адрес будет равен 20 – это и есть указание на то, что следующие маршрутизаторы не могут и не должны вписывать свой адрес в опцию RR. Логика маршрутизатора при обработке опции RR такова:

  •  Найти адрес следующего маршрутизатора, найти IP адрес своего интерфейса, через который будет достигнут следующий маршрутизатор.
  •  Проверить, не больше ли Pointer нежели Option-length.
  •  Если да, то просто маршрутизировать пакет, ничего не меняя в опции RR
  •  Иначе вписать найденный IP адрес своего выходного порта в опцию RR начиная с позиции, показанной Pointer, увеличить Pointer на четыре, маршрутизировать пакет

Рассмотрим пример пакета, показанного выше, после того, как он прошел первый маршрутизатор:

Теперь посмотрим на этот же пакет после того, как он прошел четвертый маршрутизатор:

А вот так выглядит тот же пакет после неправильного декодирования в Sniffer Pro:

Таким образом, опция RR используется для изучения маршрута, который проходит пакет при перемещении по составной сети. Однако, такую же информацию может предоставить и утилита tracert.exe, в чем же разница? С помощью опции RR можно «попросить» записать свои IP адреса в заголовок лишь ограниченное количество маршрутизаторов, так как размер всех опций в пакете не может превысить 40 байт. Так как сам заголовок опции занимает 3 байта, то максимальное количество четырехбайтовых слотов для записи IP адресов маршрутизаторов не может превысить 9, тогда опция будет иметь длину 4*9+3=39 байт – почти максимум для опций IP пакета. Итак, с помощью RR можно изучить IP адреса интерфейсов не более чем у 9 ближайших от отправителя маршрутизаторов. Далее, когда источник отправляет пакет с опцией RR с целью исследования сети, то такой пакет придет ПОЛУЧАТЕЛЮ пакета, а исследованием маршрутов занимается источник . Хотелось бы, чтобы отчет о пройденных маршрутизаторах получил все таки источник  пакета с опцией RR. Для этого поступают следующим образом: когда приложение на узле получает пакет с опцией RR, оно, в случае, если на этот пакет необходимо сгенерировать ответ, цитирует в нем опцию в том виде, в котором опция поступила в принятом пакете, более того, станция сама заполняет свободный слот своим IP адресом (если такой слот есть), и если свободные слоты еще остались, то их заполнят маршрутизаторы на обратном пути пакета ответа. При этом, если отправляется пакет с опцией RR, то слоты в опции маршрутизаторы заполнят своими «дальними» от отправителя пакета адресами (теми, через которые выдают пакеты), при движении пакета-ответа (если конечно он движется по тому же маршруту) мы увидим в опции и адреса «ближних» к отправителю исходного пакета портов, так как они являются дальними для отправителя пакета-ответа.

Пример:

Пусть станция PC1 послала пакет, в котором опция RR содержит слоты для 9 маршрутизаторов. Тогда, слоты будут заполняться в таком порядке: 2, 4, 6, 8, после чего пакет попадет на узел получатель. Если на этот пакет требуется ответ (не от протокола IP, он чисто дейтаграммный, а ответ от протокола верхнего уровня), то станция PC2 запишет свой IP адрес в слот #5 (действительно, пакет выдается через интерфейс станции PC2 – значит этот адрес записывается в опцию), после чего сформирует пакет ответ, в котором процитирует опцию  с уже заполненными и еще свободными слотами. Тогда на обратном пути в пакет ответ попадут записи об IP адресах тех же маршрутизаторов, но теперь об их портах, через которые они выдают пакет от PC2  к PC1, то есть о «ближайших» к PC1 портах. Следовательно, 9 слотов будут заполнены такими адресами: 2, 4, 6, 8, PC1, 7, 5, 3, 1. Станция PC1 получив такой пакет, узнает обо всех интерфейсах всех маршрутизаторов между ней и станцией PC2. Итого, если маршрутизаторов между отправителем и получателем 4 или менее, то отправитель пакета может узнать и «ближние» и «дальние» интерфейсы всех транзитных маршрутизаторов. Если маршрутизаторов больше 4 (пусть N, меньше 9), то удастся узнать IP адреса  всех дальних от отправителя портов и несколько (9-N) ближних портов. Например:

Если станция PC1 пошлет пакет станции PC2 с заготовленными 9-ю слотами для записи IP адресов маршрутизаторов, то слоты буду заполнены в следующем порядке: 2, 4, 6, 8, 10, 12, PC2, 11, 9. На этом слоты в опции RR заканчиваются. Итого, о маршрутизаторах R5 и R6 удалось узнать оба их интерфейса, а о маршрутизаторах R1, R2, R3, R4 мы смогли узнать лишь адреса «дальних» от нас портов. Но с другой стороны, а что, если теперь мы пошлем пакет не PC2, а порту 9 ? В этом случае слоты опции RR будут заполнены следующим образом: 2, 4, 6, 8, 9, 7, 5, 3, 1. Т.е. мы можем, обмениваясь пакетами с промежуточными маршрутизаторами используя опции RR узнать в этом примере адреса всех интерфейсов, принимающих участие в маршрутизации.

Увеличим количество маршрутизаторов до девяти.

Тогда обменявшись пакетом в узлом получателем, мы узнаем адреса «дальних» от нас портов всех маршрутизаторов: 2, 4, 6, 8, 10, 12, 14, 16, 18. Затем, обменявшись пакетами с портом четвертого маршрутизатора (8, найденным на первом шаге) мы узнаем адреса «ближних» портов первых четырех маршрутизаторов (R1 – R4): 2, 4, 6, 8, 7, 5, 3, 1. Затем пошлем пакет на порт 12, получим список портов: 2, 4, 6, 8, 10, 12, 11, 9, 7 – узнали адрес ближнего порта маршрутизаторов R5 и R6. Пошлем пакет порту 14, получим список портов 2, 4, 6, 8, 10, 12, 14, 13, 11 – получили адрес ближнего порта маршрутизатора R7. Пошлем пакет порту 16, получим список портов 2, 4, 6, 8, 10, 12, 14, 16, 15  – получили адрес ближнего порта маршрутизатора R8. А вот адреса ближнего к нам порта маршрутизатора R9 нам получить уже не удастся .

Итак, какую информацию узнать, если не забывать обмениваться пакетами и с промежуточными маршрутизаторами (адреса которых мы узнаем по ходу исследования) на пути к тому, узлу, маршрут к которому мы исследуем?

Если маршрутизаторов не более 8, то мы можем узнать адреса всех интерфейсов (и «дальних» и «ближних» от отправителя) всех маршрутизаторов.

Если маршрутизаторов более либо равно 9, то можно узнать адреса дальних портов первых 9-и маршрутизаторов, и адреса ближних портов первых восьми маршрутизаторов. Данная технология исследования сети может быть весьма полезна, особенно в сочетании с той, которую мы рассмотрим позднее (которая используется утилитой tracert.exe и базируется на ином механизме, нежели использование опции RR). Серьезным недостаток данного метода исследования маршрута является необходимость доступности узла, маршрут к которому исследуется (иначе просто не поступит пакета ответа).

Опция Временной Штамп (Time Stamp, TS).

Переходим к рассмотрению следующей опции Временной Штамп (Time Stamp, TS).

Для начала рассмотрим, что такое временной штамп по определению:

 The Timestamp is a right-justified, 32-bit timestamp in milliseconds since midnight UT.  If the time is not available in milliseconds or cannot be provided with respect to midnight UT then any time may be inserted as a timestamp provided the high order bit of the timestamp field is set to one to indicate the use of a non-standard value.

Временной штамп (Timestamp) это записанная слева на право (младший разряд самый правый. Прим.) 32-битная отметка времени в миллисекундах прошедших после полуночи по Гринвичу. Если время не доступно в миллисекундах или не может быть предоставлено относительно полуночи по Гринвичу, тогда любое значение времени может быть записано в поле Timestamp, при этом самый старший бит поля должен быть установлен в единицу, что бы указать на использование не стандартного значения времени (например, местное время. Прим.).

Опция TS - не копируемая во фрагменты опция, относящаяся к классу «измерение», ее номер 00100, следовательно поле Option-type для этой опции = 01000100 = 68. С помощью данной опции узел отправитель может попросить маршрутизаторы записывать в опцию свои временные штампы (см. выше) в момент перенаправления пакета. При этом возможны три ситуации:

  •  Отправитель может попросить маршрутизаторы вписывать лишь свои временные штампы
  •  Отправитель может попросить маршрутизаторы вписывать свои IP адреса и временные штампы. При этом, в качестве IP адреса маршрутизаторы вписывают тот IP адрес, который соответствует интерфейсу, через который ПОЛУЧЕН пакет.
  •  Отправитель может попросить маршрутизаторы вписывать свои временные штампы только в том случае, если маршрутизатор обнаружил в опции свой заранее внесенный туда отправителем IP адрес.

Какую именно запись должен сделать маршрутизатор определяется специальным полем заголовка опции. Рассмотрим этот заголовок:

Обобщенный формат данной опции похож на формат RR, хотя и несколько отличается:

Type

Length

Pointer

oflw

flag

Данные

      1 байт  1 байт         1 байт    4 бита     4 бита  Переменная длина

По сравнению с опцией RR в опции TS есть еще два четырехбитовых поля: Overflow и Flag. Смысл этих полей:

Flag – это инструкция маршрутизатору, что именно он должен вписать в поле данных опции:

  •  0000 – вписывать только временной штамп каждому маршрутизатору, для которого еще есть свободные четырехбайтовые слоты.  
  •  0001 – вписывать свой IP адрес и после этого свой временной штамп (для этого отправитель пакета резервирует восьмибайтовые слоты)
  •  0011 – отправитель заранее заполняет первую половину восьмибайтового слота IP адресом маршрутизатора. Маршрутизатор, обнаруживший свой IP адрес в слоте, на который указывает Pointer, вписывает во вторую, свободную половину слота свой временной штамп.

Поле Overflow позволяет отправителю посчитать, как много маршрутизаторов не смогли вписать свои временные штампы, так как им не хватило свободного места в опции. Так как опции могут иметь длину не более 40 байт, а заголовок опции сам занимает 4 байта, то для данных (IP адресов и временных штампов) остается не более 36 байт. В эти 36 байт может поместиться до 9 слотов под временные штампы или до 4 слотов под совокупность IP адреса и временного штампа. Так как 4 восьмибайтовых слотов весьма мало, введено поле Overflow для счета количества маршрутизаторов, которым не хватило свободных слотов: изначально это поле устанавливается равным нулю, каждый маршрутизатор, которому не хватило свободного слота, увеличивает данное поле на единицу. В остальном, данная опция работает подобно RR:

-отправитель заранее резервирует необходимые слоты, заполняя поле данных нулями, рассчитывает длину опции, ставит флаг в необходимое значение, при необходимости (при флаге 0011) заполняет первые половинки восьмибайтовых слотов IP адресами и устанавливает Pointer = 5, показывая, что записывать данные необходимо начиная с пятого байта опции (так как первые четыре уже заняты). Когда маршрутизатор получает такой пакет, он, обнаружив опцию TS,  сперва проверяет, не больше ли указатель нежели длина опции. Если это так, маршрутизатор увеличивает на единицу поле Overflow (если оно еще может быть увеличено) и маршрутизирует пакет. Если же длина опции меньше указателя, то дальше маршрутизатор действует в зависимости от флага:

  •  0000 – Вписывает с позиции, определяемой указателем свой TS в опцию, увеличивает указатель на 4 и маршрутизирует пакет
  •  0001 – Вписывает с позиции, определяемой указателем свой IP адрес и TS в опцию, увеличивает указатель на 8 и маршрутизирует пакет
  •  0011 – Проверяет, совпадает ли IP адрес в позиции, определяемой указателем с собственным IP адресом, если да, то с позиции Pointer+4 вписывает свой временной штамп, увеличивает указатель на 8 и маршрутизирует пакет, иначе увеличивает поле Overflow на единицу и маршрутизирует пакет.

Все, что было сказано выше о цитировании опции RR в пакетах – ответах справедливо и для опции TS. Т.е. значение TS заказываются отправителем, но получаются адресатом, пакета. Значит, заказанные значения отправитель может получить, только если адресат, возвращает ответ с процитированным заголовком IP, содержащим заполненное поле опций.

Рассмотрим, в каком случае IP пакеты снабжаются опцией TS. Как и в случае с RR, это происходит только в том случае, если приложение, пославшее пакет нуждается в диагностике сети. Очевидно, что обычные приложения не станут устанавливать TS в обычных отправляемых пакетах, но диагностические утилиты могут позволить администратору потребовать установки данной опции в отправляемых пакетах. Пример работы утилиты ping.exe с ключом –s:

C:\>ping -s 4 -n 1 www.alkar.net

Обмен пакетами с www.alkar.net [195.248.190.51] по 32 байт:

Ответ от 195.248.190.51: число байт=32 время=366мс TTL=58

   Штамп времени: 192.168.0.1 : 52457505 ->

              212.86.243.225 : 41688266 ->

              212.86.227.110 : 41688246 ->

              195.248.160.254 : 41688250

Статистика Ping для 195.248.190.51:

   Пакетов: отправлено = 1, получено = 1, потеряно = 0 (0% потерь),

Приблизительное время приема-передачи в мс:

   Минимальное = 366мсек, Максимальное = 366 мсек, Среднее = 366 мсек

Утилита ping.exe в Windows не может позволить администратору сгенерировать пакет с TS с произвольным значением флага: флаг всегда будет равен 0001. При необходимости сгенерировать пакеты с другим значением флага необходимо пользоваться другими утилитами или генерировать пакеты вручную (это будет рассмотрено ниже).

Рассмотрим пример пакета, полученного с помощью утилиты ping .exe:

 

Длина опции 36 байт (24 hex), Указатель на 5-й (05 hex) байт от начала поля опций, переполнение отсутствует 0000,  значение флага 0001 (01 hex) и 32 байта (четыре 8-ми байтовых слота) отведено под заполнение в процессе передачи пакета. Что будет с таким пакетом после прохождения первого маршрутизатора? Будет заполнен первый восьмибайтовый слот, а указатель увеличится на 8, после прохождения четвертого маршрутизатора указатель станет равным 37, и все слоты будут заполнены, а после прохождения шестого маршрутизатора поле Overflow станет равным 2.

Рассмотрим пример:

После прохода первого маршрутизатора

Длина опции 36 байт (24 hex), Указатель на 13-й (0D hex) байт от начала поля опций – т.к. 5+8=13, переполнение отсутствует 0000, значение флага 0001 (01 hex)) и первая обойма заполнена – это IP адрес 192.168.0.1 (C0 A8 00 01 hex) и TS 11259136 мс (00 AB CD 00 hex). Свободное место в поле опций составляет 32 -8 = 24 байта.

После прохода четвертого маршрутизатора

Длина опции 36 байт (24 hex), Указатель на 37-й (25 hex) байт от начала поля опций – т.к. 5+8+8+8+8=37, переполнение отсутствует 0000, значение флага 0001 (01 hex) и все четыре обоймы заполнены. Свободное место в поле опций составляет 32 -32 = 0 байт.

После прохода следующего маршрутизатора

Длина опции 36 байт (24 hex), Указатель на 37-й (25 hex) байт от начала поля опций – т.к. 5+8+8+8+8=37. Значение следующего байта 21 hex или 00100001 – т.е. переполнение 0010, значение флага 0001. Это означает, что два маршрутизатора (0001Bin = 2dec) не смогли записать информацию так как свободные обоймы закончились.

Как послать пакет с другими флагами, отличными от 0001? Для этого применяют генерацию пакетов вручную с помощью Sniffer Pro и/или Commit View. При генерации пакета вручную часто не имеет смысла формировать пакет «с нуля», а стоит сформировать пакет на базе заранее захваченного пакета.

Отдельное внимание следует уделить значению контрольной суммы сгенерированного пакета. Во вновь сгенерированном пакете значение контрольной суммы неверное что и показывается в дампе захваченном при отправке пакета. В случае использования Sniffer Pro, программа указывает в дампе ожидаемое значение контрольной суммы – на основании чего исправляется тело пакета. В случае использования Commit View, программа снабжена функцией расчета контрольной суммы.

Рассмотрим пакет с флагом 0000 и 9-ю слотами под запись временного штампа, посланный пакет к узлу в Интернет.

Перед отправкой.

Длина опции 40 байт (28 hex) 40-4=36=9*4 – т.е. 9 обойм под значение времени. Указатель на 5-й (05 hex) байт от начала поля опций, переполнение отсутствует 0000, значение флага 0000 (00 hex) и все четыре обоймы заполнены. Свободное место в поле опций составляет 36 байт.

После получения ответа.

Длина опции 40 байт (28 hex) 40-4=36=9*4 – т.е. 9 обойм под значение времени. Указатель на 41-й (29 hex) значит, свободное место закончилось. Следующий байт 60 hex = 01100000bin - значит переполнение 0110bin = 6, т.е. 6 маршрутизаторов не смогли записать свои временные отметки т.к. закончилось свободное место. Свободное место в поле опций составляет 0 байт.

Рассмотрим пакет с флагом 0011 с заполненными IP адресами маршрутизаторов.

Перед отправкой.

Ситуация аналогична флагу 0001, описанному в одном из предыдущих примеров. Но в каждой обойме присутствует адрес маршрутизатора, который должен поставить отметку времени при прохождении данного пакета.  Т.е. обойма состоит из 8 байт – четыре на IP адрес мршрутизатора (уже заполнены) и четыре на отметку времени (пусто).

После получения ответа.

Как видим, только первых два маршрутизатора заполнили предназначенные для них слоты временного штампа, это, вероятно, значит, что маршрутизатор номер 3 по списку не поддерживает запись временного штампа с флагом 0011, а о маршрутизаторе 4 этого сказать нельзя – он просто не мог найти при текущем значении указателя своего адреса в опции.

Теперь выясним, для чего можно использовать опцию TS. Если бы все маршрутизаторы Интернет имели бы часы, синхронизированные с точностью до миллисекунд, то сравнивая временные штампы соседних маршрутизаторов можно было бы делать выводы и задержках при переходах между маршрутизаторами. Но так как часы каждого маршрутизатора не синхронизированы с соседями, это значит, что сравнивать временные штампы разных маршрутизаторов бессмысленно. Как же тогда пользоваться временным штампом? Рассмотрим пример:

Пусть станция PC1 послала пакет с опцией TS и флагом 0000. Тогда в каком порядке порты изображенные на данном рисунке установят свои временные штампы? Порядок будет следующим:

1, 3, 5, 7, PC1, 8, 6, 4, 2. Заметим, что порты 7 и 8 принадлежат одному и тому же маршрутизатору, следовательно, временной штамп 7 и 8 установлены по одним и тем же часам. Следовательно, разница между TS8 и TS7 – есть время в течение которого пакет перемещался к станции PC1, обрабатывался на ней и перемещался снова с порту 8. Так как станции сегодня обрабатывают пакеты быстро и без серьезных задержек, можно полагать, что эта разница временных штампов – есть время двойной задержки передачи данных в сети (8 – PC2). Найдем разницу между показаниями временного штампа на портах 5 и 6 и вычтем из нее найденную выше разницу между штампами портов 7 и 8. (5-6)-(7-8) – есть двойная задержка передачи данных в сети (6-7). Таким образом, с помощью данной опции можно измерить задержку, которую создает сеть, причем, учитывая возможность отправлять пакеты с флагом 0011, это можно сделать для любой сети, адреса портов в которой мы знаем (узнать адреса можно либо с помощью опции RR, либо утилитой tracert.exe).

Опция Loose Source and Record Route (LSRR).

Данная опция позволяет отправителю IP пакета указать, какие именно маршрутизаторы и в каком порядке должен пересечь пакет прежде, чем он будет переправлен получателю.

Зачем это нужно? Предположим, из соображений безопасности содержимого отправитель желает, чтобы его пакет не пересекал сетей, которые считаются ненадежными или не безопасными. Разумеется, практическая ценность этой технологии в обычно жизни невелика, однако IP предлагает подобную возможность. При этом важно, что маршрутизаторы, не являющиеся заявленными «обязательно пересекаемыми» могут и не поддерживать данную опцию – достаточно, чтобы ее поддерживали лишь те маршрутизаторы, которые  перечислены отправителем. Такая ситуация называется «маршрутизация от источника», так как отправитель пакета сам определяет, какие маршрутизаторы должен пройти пакет. Так же данную опцию называют «мягкая маршрутизация от источника», так как пакет может пересекать любые маршрутизаторы, важно лишь, чтобы он обязательно в строгом порядке пересек завяленные отправителем маршрутизаторы, какие еще маршрутизаторы он пересечет – не оговаривается. Как обеспечивается такая передача пакетов, особенно в условиях поддержки данной опции не всеми маршрутизаторами сети? Очень просто – поле Destination Address пакета заполняется не адресом конечного получателя, как мы обычно привыкли, а адресом первого маршрутизатора, который необходимо пересечь. Разумеется, обычные маршрутизаторы и перенаправляют пакет этому самому первому маршрутизатору в списке, заданном отправителем, как будто конечному получателю, не подозревая, что это лишь заявленный отправителем маршрутизатор, а не истинный получатель пакета. Когда пакет будет доставлен на первый маршрутизатор из списка (его адрес указан в поле Destination Address пакета), маршрутизатор, получивший данный пакет проверяет, нет ли в пакете опции LSRR. Если такой опции нет, то маршрутизатор и есть истинный получатель пакета, если опция есть, то проверяется, не больше ли поле длины в опции поля Pointer (алгоритм проверки Указателя описан в предыдущих примерах).

Формат опции при этом таков:

Type

Length

Pointer

IP второго маршрутизатора, третьего и т.д., IP получателя пакета

Поле Type принимает значение 10000011 (131), (опция - копируемая во фрагменты, так как логично, если уж отправитель требует следования пакетов по определенному маршруту, то все фрагменты отправлять по этому маршруту), поле длина показывает, как обычно длину опции, поле Pointer показываем маршрутизаторам, из какого байта поля данных нужно извлечь адрес следующего получателя пакета (маршрутизатора или узла). Начальное значение Pointer = 3. В поле данных записаны четырехбайтовыми словами адреса второго, третьего и т.д. маршрутизаторов, которые пакету необходимо пересечь, последним в поле данных указывается адрес конечного узла получателя.

Рассмотрим логику работы маршрутизатора, обрабатывающего опцию: если указатель больше, чем длина опции, это значит, что маршрутизатор и есть истинный получатель пакета, а если нет, это значит что данный маршрутизатор – лишь один из перечисленных отправителем пакета. Тогда маршрутизатор поступает следующим образом: начиная с байта, на который указывает Pointer извлекается четырехбайтовое слово, помещается в поле Destination Address пакета, а адрес маршрутизатора, который это сделал, записывается вместо только считанного адреса в позицию, указанную полем Pointer,  после чего поле Pointer увеличивается на 4. Таким образом, маршрутизатор переадресует пакет следующему маршрутизатору из списка, заданного отправителем, при этом увеличение указателя на 4 означает, что следующий маршрутизатор будет брать адрес очередного следующего маршрутизатора из следующего четырехбайтового слова.

Таким образом, пакет, посланный отправителем путешествует по составной сети в направлении первого маршрутизатора из списка, так как, если не анализировать опцию, то пакет как раз, и послан первому маршрутизатору – на это указывает поле Destination Address IP пакета. Этот первый маршрутизатор извлекает из опции адрес второго маршрутизатора и направляет пакет ему, так происходит до тех пор, пока последний из указанных отправителем маршрутизаторов не извлечет из последнего четырехбайтового слова поля данных опции LSRR адрес настоящего получателя пакета и не установит его в поле Destination Address пакета – тогда пакет будут перенаправлен истинному получателю. Из этого алгоритма работы опции LSRR ясно, почему пакет может пересечь произвольное количество маршрутизаторов – главное, что пакет перемещается при этом строго между указанными отправителем маршрутизаторами, так же ясно, почему промежуточные, не указанные отправителем маршрутизаторы могут не поддерживать LSRR – они просто перенаправляют обычные пакеты.

Когда пакеты снабжаются данной опцией? Только, если так захочет приложение. Подавляющее большинство (практически все!) обычные сетевые приложения не умеют отправлять пакеты с опцией LSRR, однако утилита ping.exe в Windows поддерживает отправку таких пакетов. Пример работы утилиты ping.exe с ключом –j:

C:\>ping –j 1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 5.5.5.5

Дав такую команду, мы получим пакет, посланный узлу 5.5.5.5, при этом он должен пересечь маршрутизаторы 1.1.1.1, затем 2.2.2.2, затем 3.3.3.3 после этого 4.4.4.4 и только после этого пакет попадет на станцию 5.5.5.5

Рассмотрим такой пакет в анализаторе. Затем рассмотрим этот же пакет после того, как он прошел первый маршрутизатор, четвертый маршрутизатор.

Перед отправкой.

Указатель установлен на 4-й байт (т.е. следующий по списку маршрутизатор должен установить адрес получателя начиная с 4-го байта поля опций) , адреса маршрутизаторов записаны в поле опции по порядку. В адресе получателя пакета 1.1.1.1.

После прохождения маршрутизатора 1.1.1.1.

Указатель установлен на 8-й байт (т.е. следующий по списку маршрутизатор должен установить адрес получателя начиная с 8-го байта поля опций), адреса маршрутизаторов содержат адрес маршрутизатора из списка который уже пересек пакет и оставшиеся адреса маршрутизаторов которые еще нужно пересечь пакету. В списке отсутствует только адрес маршрутизатора которому отправляется пакет, т.е. адрес на который накануне указывал Pointer, это адрес 2.2.2.2. В адресе получателя пакета 2.2.2.2.

После прохождения маршрутизатора 4.4.4.4.

Указатель установлен на 20-й байт (т.е. на конец поля опций – адреса маршрутизаторов закончились), адреса маршрутизаторов содержат адреса маршрутизаторов из списка через которые пакет уже прошел. В списке отсутствует только адрес маршрутизатора которому отправляется пакет, т.е. адрес на который накануне указывал Pointer, это адрес 5.5.5.5. В адресе получателя пакета 5.5.5.5.

Опция Strict Source and Record Route.

Данная опция очень похожа на предыдущую, ее называют «Жесткая маршрутизация от источника». Поле Type для этой опции = 10001001 (137), формат опции полностью совпадает с LSRR. Отличие опции SSRR от LSRR состоит в том, что в жесткой маршрутизации от источника маршрутизаторы обязаны передать пакет помеченному отправителем маршрутизатору не с помощью составной сети (т.е. через транзитные маршрутизаторы) а непосредственно в кадре канального уровня, иными словами никаких промежуточных не указанных отправителем маршрутизаторов быть не должно. Принцип работы прост: не можешь передать кадр на канальном уровне следующему, указанному отправителем маршрутизатору – уничтожь его! Таким образом, достигается жесткость задания маршрута – пересекать можно только указанные отправителем маршрутизаторы и только в заранее заданном порядке.

Пример работы утилиты ping.exe с опцией SSRR:

 

C:\>pingk 192.168.0.1 2.2.2.2 3.3.3.3 4.4.4.4 5.5.5.5

Рассмотрим пакет в анализаторе:

Перед отправкой.

Указатель установлен на 4-й байт (т.е. следующий по списку маршрутизатор должен установить адрес получателя начиная с 4-го байта поля опций), адреса маршрутизаторов содержат адреса маршрутизаторов из списка. Адресе получателя пакета – первый адрес из командной строки 192.168.0.1.

Маршрутизация от источника применяется достаточно редко, хотя и весьма интересная и важная технология, которая вполне может быть применена в будущем, обычно маршрутизаторы в Интернет не поддерживают маршрутизацию от источника, поэтому попрактиковаться с этой технологией в полном объеме достаточно сложно.

На этом рассмотрение опций IP заголовка завершено. Помимо описанных опций в заголовке могут присутствовать и некоторые другие опции, которые на сегодняшний день устарели и не применяются, поэтому они не были нами рассмотрены.

Практические примеры по опциям IP заголовка.

Рассмотрим  сеть из четырех подключенных один за другим маршрутизаторов, и крайних компьютеров:

1. С помощью утилиты ping.exe проверим прохождение в этой сети пакетов с опцией RR. С помощью анализатора проследим модификацию заголовка IP пакета после КАЖДОГО маршрутизатора вдоль пути следования пакета и ответа на него.

PC1 -> R1

R1->R2

R2->R3

R3->R4

R4->PC2

R4<-PC2

и далее по обратной цепочке пакет проходит без изменений в поле опций

PC1<-R1

2. Рассмотрим прохождение пакетов с опцией TS, сгенерированные утилитой ping.exe. С помощью анализатора проследим модификации заголовка IP пакета после КАЖДОГО маршрутизатора вдоль пути следования пакета и ответа на него.

PC1->R1

R1->R2

R2->R3

R3->R4

R4->PC2

R4<-PC2

и далее по обратной цепочке пакет проходит без изменений в поле опций

PC1<-R1

3. Сгенерируем пакеты с опцией TS и флагами 0000 и 0011. С помощью анализатора прослем модификации заголовка IP пакета после КАЖДОГО маршрутизатора вдоль пути следования пакета и ответа на него.

Для флага 0000

PC1->R1

R1->R2

R2->R3

R3->R4

R4->PC2

R4<-PC2

R3<-R4

R2<-R3

R1<-R2

PC1<-R1

Для флага 0011

Заданы адреса выпускающих интерфейсов маршрутизаторов 11.0.0.1 (0B 00 00 01) и 13.0.0.1 (0D 00 00 01)

PC1->R1

очевидные проблемы с декодированием опции 0011 анализатора Ethereal, дальнейшее изучение производим по шестнадцатеричному дампу

R1->R2

R2->R3

R3->R4

R4->PC2

R4<-PC2

R3<-R4

R2<-R3

R1<-R2

TS записан т.к. совпал выпускающих интерфейс, указатель сместился на 8 байт

PC1<-R1

Задание для самостоятельной работы

С помощью опции RR исследовать адреса маршрутизаторов провайдера, услугами которого пользуется Ваш офис. При этом необходимо исследовать по возможности максимальное количество адресов маршрутизаторов.

Необходимо построить наиболее полную схему маршрутизаторов провайдера, узнав как можно большее количество адресов его интерфейсов.

Найти маршрутизаторы, которые проходят в сети провайдера все пакеты, независимо от того, куда их посылает, и найти, какие маршрутизаторы провайдера используются для передачи пакетов с Вашем городе, в Украину, в Россию, в западную Европу, в Америку.

Примеры в Одессе:

C:\>ping -n 1 -r 9 www.farlep.net

Обмен пакетами с opossum.farlep.net [213.130.0.6] по 32 байт:

Ответ от 213.130.0.6: число байт=32 время=994мс TTL=55

   Маршрут: 212.86.234.26 ->

          212.86.227.100 ->

          212.86.227.110 ->

          195.248.160.254 ->

          195.35.65.11 ->

          213.130.30.204 ->

          213.130.30.83 ->

          62.221.34.73 ->

          213.130.0.205

C:\>ping -w 8000 -n 1 -r 9 www.te.net.ua

Обмен пакетами с www.te.net.ua [195.138.80.39] по 32 байт:

Ответ от 195.138.80.39: число байт=32 время=1433мс TTL=250

   Маршрут: 212.86.234.26 ->

          212.86.227.100 ->

          212.86.227.110 ->

          194.44.93.253 ->

          195.138.80.177 ->

          195.138.80.64 ->

          195.138.80.39 ->

          195.138.80.178 ->

          194.44.93.252

C:\>ping -w 8000 -n 1 -r 9 www.tairovo.net

Обмен пакетами с www.tairovo.net [213.130.2.65] по 32 байт:

Ответ от 213.130.2.65: число байт=32 время=3883мс TTL=54

   Маршрут: 212.86.234.26 ->

          212.86.227.100 ->

          212.86.227.110 ->

          195.248.160.254 ->

          195.35.65.11 ->

          213.130.30.170 ->

          213.130.30.83 ->

          62.221.34.73 ->

          213.130.0.205


 

А также другие работы, которые могут Вас заинтересовать

33819. Суфии и суфизм 16.21 KB
  В отличие от рационалистовмутазилитов суфии – мистики ислама. Суфии от слова суф означающего грубую шерстяную накидку в которую они облачались – это своеобразные мусульманские монахи. Подавляя а то и пугая правоверных своим необычным видом и странным поведением суфии особенно нищие дервиши вначале вызывали настороженное к себе отношение подозрение и даже преследование властей. Посвятив себя Аллаху стремясь уйти от мирских дел отказываясь от имущества и от земных привязанностей усмиряя свои чувства и страсти суфии как бы...
33820. Бахаизм 19.62 KB
  Городом в котором сформировалась первая бахаистская община был Багдад сейчас столица Ирака. Бабизм от имени своего основателя Баба став важным идейным источником бахаизма в дальнейшем прекратил своё существование причём именно его последователи и образовали первые общины бахаи. Главная идея бабизма унаследованная бахаизмом состояла в утверждении что Мухаммад был последним пророком Бога не для всей истории человечества а только для определённого исторического этапа что после него новый этап открывают два пророка одним из...
33821. Синтоизм 13.96 KB
  В японской религии синто или синтоизме как называют её европейцы к числу божеств именуемых ками относятся божественные предки японского народа; духи гор рек камней деревьев огня ветра; божествапокровители отдельных местностей и ремёсел; божества олицетворяющие человеческие добродетели; духи умерших. Само название религии синто состоит из двух иероглифов: син и то . Таким образом дословный перевод синто путь богов . Что же стоит за столь необычным названием Строго говоря синто языческая религия.
33822. Шаманизм 15.02 KB
  Шаманизм особенно широко распространен в племенных культурах которые развиваясь на значительных удалениях друг от друга создали системы поверий поразительно схожие между собой. Шаманом называется человек который погружаясь в особое исступленное состояние сознания обретает способность общаться с оберегающими и помогающими духами и черпать из потусторонних источников значительную силу. Главной целью шаманизма является лечение тела и рассудка. Шаманизм представляет собой сложное явление и его часто ошибочно приравнивают к магии...
33823. Рели́гия 16.96 KB
  С усложнением общества изменялись формы компенсации: обращаясь к религии и твердо веря в ее догматы человек стремился найти в ней утешение избавиться с ее помощью от несправедливостей и обид социального неустройства и политических преследований. Но суть функции оставалась неизменной: в религии люди и особенно религиозно активные слои населения отшельники аскеты монахи суфии и т. Компенсирующая функция религии тесно связана с другой ее функцией – интегрирующей.
33824. Подходы к происхождению человека 14.81 KB
  История религии. История религии начиная с ее самых простых примитивных форм представляет собой этот длинный путь человеческого богопознания. Все предшествующие формы религии представляют собой ни что иное как подготовительные формы на пути человечества к истинной религии.
33825. Родоплеменные религии: тотемизм, табу, магия, фетишизм и анимизм 25.8 KB
  С этой обрядностью связаны все важные этапы в жизни человека: рождение посвящение введение юноши в число взрослых охотников смерть. Наряду с тотемизмом и табу значительное место в жизнедеятельности первобытного человека занимала магия греч. mgic колдовство чародейство совокупность представлений и обрядов в основе которых лежит вера в таинственные силы с помощью которых путем определенных символических действий возможно оказать влияние на людей предметы ход событий в нужном для человека направлении. Он считал что магия не...
33826. Зороастризм и маздеизм 19.6 KB
  Но в наиболее ранних персидских текстах ахеменидских надписях о нем не упоминается хотя в этих текстах есть немало связываемых с его именем идей в частности в связи с прославлением АхураМазды. Будем условно именовать ее маздеизмом – по имени АхураМазды. Третьей в верховной первоначальной триаде древнеиранских богов была Ардвисура Анахита богиня воды и плодородия воспринимавшаяся в качестве дочери АхураМазды. Хотя его подчас считают не имеющим прямого отношения к маздеизму и тем более зороастризму более поздние мифы приписывают именно...
33827. Индуизм — ведущая религия Древней Индии 23.27 KB
  Исследователи выявляют несколько исторических форм индуизма. Основы индуизма заложены в ведической религии которую принесли на территорию полуострова Индостан племена ариев вторгшиеся туда в середине II тысячелетия до н. Во втором направлении индуизма вишнуизме образ бога Вишну предстает прежде всего как хранителя мирового порядка. Третий член троицы высших божеств индуизма Брахма рассматривается как первопричина мира и творец человечества из различных частей которого произошли разные касты: из уст брахманы из рук кшатрии из бедер ...