Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
10_Сетевой уровень 1.doc
Скачиваний:
2
Добавлен:
25.04.2019
Размер:
343.55 Кб
Скачать

Фрагментирование пакетов

Когда IP уровень получает IP датаграмму, которую необходимо отправить, он определяет, на какой локальнй интерфейс отправляется датаграмма (или маршрутизируется), и запрашивает интерфейс, чтобы тот сообщил размер своего MTU. IP сравнивает MTU с размером датаграммы и, если необходимо, осуществляет фрагментацию. Фрагментация может быть осуществлена как на отправляющем хосте, так и на промежуточном маршрутизаторе.

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

Вернемся снова к IP заголовку и рассмотрим, какие поля используются в процессе фрагментации. Поле идентификации содержит значение уникальное для каждой отправленной IP датаграммы. Это значение копируется в каждый фрагмент конкретной датаграммы. В поле флагов один бит означает, что "дальше следуют еще фрагменты" (more fragments). Этот бит устанавливается в единицу для каждого фрагмента, кроме последнего. Поле смещения фрагмента (fragment offset) содержит смещение этого фрагмента от начала исходной датаграммы. Когда датаграмма фрагментируется, поле полной длины каждого фрагмента изменяется, так чтобы соответствовать размеру фрагмента.

Один из битов в поле флагов называется "не фрагментировать" (don't fragment). Если этот бит установлен в единицу, IP не будет фрагментировать датаграмму. Вместо этого датаграмма уничтожается, а отправителю посылается ICMP ошибка "фрагментация необходима, однако установлен бит не фрагментировать" (fragmentation needed but don't fragment bit set).

Хочется обратить внимание на терминологию: IP датаграмма (IP datagram) это блок, который передается от одного конца IP уровня к другому концу IP уровня (перед фрагментацией и после повторной сборки), тогда как пакет (packet) это блок данных, который передается между IP уровнем и канальным уровнем. Пакет может быть полной IP датаграммой или всего лишь фрагментом IP датаграммы.

ICMP

Межсетевой протокол управляющих сообщений ICMP (Internet Control Message Protocol) входит в стек протоколов TCP/IP. Используется для передачи сообщений об ошибках и других исключительных ситуациях, возникших при передаче данных, для сервисных функций.

Этот протокол использует для передачи своих сообщений пакеты IP точно так же, как и протоколы более высоких уровней чем сетевой (ICMP пакеты размещаются в поле данных), но по своим функциям он является вспомогательным для IP и относиться поэтому к протоколам именно сетевого уровня.

ICMP сообщения используются для:

  • передачи отклика на пакет;

  • контроля времени жизни дейтограмм в системе;

  • реализации переадресации пакета;

  • выдачи сообщения о недостижимости адресата или о некорректности параметров;

  • формирования и пересылки временных меток;

  • выдачи запросов и откликов для адресных масок и другой информации.

Для ограничения накладных расходов ICMP-сообщения об ошибках не генерируются в ответ на:

ICMP-сообщение об ошибке.

При мультикастинг или широковещательной адресации.

Для фрагмента дейтограммы (кроме первого).

Для дейтограмм, чей адрес отправителя является нулевым, широковещательным или мультикастинговым.

ICMP-сообщения имеют свой формат, а их вложение в IP пакет происходит аналогично вложению пакетов транспортного уровня UDP или TCP. Универсальными для ICMP пакетов являются первые три поля общей длиной 32 бита. Далее используются подзаголовки, отличающиеся для пакетов различных типов:

Бит

0—7

8—15

16—31

0

Тип

Код

Контрольная сумма

32

Содержание сообщения (зависит от значений полей «Код» и «Тип»)

Тип определяет а код уточняет функцию ICMP-сообщения, символом * в таблице помечены сообщения об ошибках:

ICMP-сообщение

Описание сообщения

Тип

Код

0

 

Эхо-ответ (ping-отклик)

3

 

Адресат недостижим

0

* Сеть недостижима

1

* ЭВМ не достижима

2

* Протокол не доступен

3

* Порт не доступен

4

* Необходима фрагментация сообщения

5

* Исходный маршрут вышел из строя

6

* Сеть места назначения не известна

7

* ЭВМ места назначения не известна

8

* Исходная ЭВМ изолирована

9

* Связь с сетью места назначения административно запрещена

10

* Связь с ЭВМ места назначения административно запрещена

11

* Сеть не доступна для данного вида сервиса

12

* ЭВМ не доступна для данного вида сервиса

13

* Связь административно запрещена с помощью фильтра.

14

* Нарушение старшинства ЭВМ

15

* Дискриминация по старшинству

4

0

* Отключение источника при переполнении очереди

5

 

Переадресовать (изменить маршрут)

0

Переадресовать дейтограмму в сеть (устарело)

1

Переадресовать дейтограмму на ЭВМ

2

Переадресовать дейтограмму для типа сервиса (tos) и сети

3

Переадресовать дейтограмму для типа сервиса и ЭВМ

8

0

Эхо запроса (ping-запрос).

9

0

Объявление маршрутизатора

10

0

Запрос маршрутизатора

11

 

Для дейтограммы время жизни истекло (ttl=0):

0

*при передаче

1

* при сборке (случай фрагментации).

12

 

* Проблема с параметрами дейтограммы

0

* Ошибка в ip-заголовке

1

* Отсутствует необходимая опция

13

 

Запрос временной метки

14

 

Временная метка-отклик

15

 

Запрос информации (устарел)

16

 

Информационный отклик (устарел)

17

 

Запрос адресной маски

18

 

Отклик на запрос адресной маски

Для эхо-запроса (ping) и отклика имеем:

Поля идентификатор (процесса, отправившего запрос) и номер по порядку (увеличивающийся на 1 при посылке каждого следующего пакета) служат для сопоставления запросов и откликов. Поле данные служит для записи информации, возвращаемой отправителю. При выполнении процедуры ping эхо-запрос с временной меткой в поле данные посылается адресату. Если адресат активен, он принимает IP-пакет, меняет адрес отправителя и получателя местами и посылает его обратно. ЭВМ-отправитель, восприняв этот отклик, может сравнить временную метку, записанную им в пакет, с текущим показанием внутренних часов и определить время распространения пакета. Необходимо понимать, что время распространения ICMP-запроса в общем случае не равно времени распространения отклика. Это связано не только с возможными изменениями в канале. В общем случае маршруты их движения могут быть различными. Размер поля данные не регламентирован и определяется предельным размером IP-пакета.

Когда маршрутизатор не может доставить дейтограмму по месту назначения, он посылает отправителю сообщение "адресат не достижим":

Поле код содержит целое число, проясняющее причину. Поле MTU на следующем этапе характеризует максимальную длину пакетов на очередном шаге пересылки. Включение в сообщение заголовка и первых 64-бита (ИМЕННО БИТА! На рисунках ошибка) не прошедшего пакета позволяет легко понять, какой адрес оказался недостижим. Этот тип ICMP-сообщения посылается и в случае, когда дейтограмма имеет флаг DF=1 ("не фрагментировать"), а фрагментация необходима. В поле код в этом случае будет записано число 4.

Если буфер приема сообщения переполнен, ЭВМ посылает сообщение типа 4 для каждого из не записанных в буфер сообщений. Такое сообщение имеет формат:

Если маршрутизатор обнаружит, что хост использует неоптимальный маршрут, он может послать ему ICMP-запрос переадресации.

Поле Internet-адрес маршрутизатора при этом содержит адрес маршрутизатора, который необходимо использовать. Сообщения данного типа маршрутизатор может посылать только хостам.

Протокол ICMP предусматривает и возможность обмена маршрутной информацией между маршрутизаторами. Для этого используются пакеты типов 9 и 10.

Ошибки в маршрутных таблицах могут привести к зацикливанию пакетов. Для подавления таких циркуляций используется контроль по времени жизни пакета (TTL). При ликвидации пакета по истечении TTL маршрутизатор посылает отправителю сообщение "время истекло» Значение поля код определяет природу тайм-аута.

:

Когда маршрутизатор или ЭВМ выявили какую-либо ошибку, не из числа описанных выше (например, неправильный заголовок дейтограммы), посылается сообщение «конфликт параметров»:

Поле указатель отмечает октет дейтограммы, который создал проблему.

При необходимости синхронизовать часы общающихся по сети хостов можно использовать запрос временной метки. Запросы такого типа позволяют решать и более сложные задачи исследования сети:

Поле тип=13 указывает на то, что это запрос, а тип=14 - на то, что это отклик. Поле идентификатор и номер по порядку используются отправителем для связи запроса и отклика. Поле исходная временная метка заполняется отправителем непосредственно перед отправкой пакета. Поле временная метка на входе заполняется маршрутизатором при получении этого пакета, а Временная метка на выходе - непосредственно перед его отправкой. Именно этот формат используется в процедурах ping и traceroute.

.

При работе с подсетью важно знать её маску. Для получения маски подсети ЭВМ может послать "запрос маски" в маршрутизатор и получить отклик, содержащий эту маску. ЭВМ может это сделать непосредственно, если ей известен адрес маршрутизатора, либо прибегнув к широковещательному запросу.

Поле тип здесь специфицирует модификацию сообщения, тип=17 - это запрос, а тип=18 - отклик. Поля идентификатор и номер по порядку, как обычно, обеспечивают взаимную привязку запроса и отклика, а поле адресная маска содержит 32-разрядную маску сети.

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

IPv6

Проблемы с ограниченностью 32-битного адресного пространства, построением таблиц маршрутизации и относительной сложностью заголовков пакетов IPv4 достаточно давно поставили вопрос о необходимости разработки новой версии этого протокола IPv6.

В IPv6 длина адреса расширена до 128 бит (против 32 в IPv4), что позволяет обеспечить больше уровней иерархии адресации, увеличить число адресуемых узлов, упростить авто-конфигурацию.

Для упрощения маршрутизации систему адресации планируется строить по иерархическому принципу. Примером такой системы может служить телефонная система, где по коду страны, города и затем линии АТС можно проследить маршрут до абонента.

Первая спецификация протокола опубликована в RFC-1883 еще в декабре 1995, несколько модифицированная версия опубликована в RFC-2460 в декабре 1998 года.

В IPv6 определены три типа адресов:

unicast: Идентификатор одиночного интерфейса. Пакет, посланный по уникастному адресу, доставляется интерфейсу, указанному в адресе.

anycast: Идентификатор набора интерфейсов (принадлежащих разным узлам). Пакет, посланный по эникастному адресу, доставляется одному из интерфейсов, указанному в адресе (ближайший, в соответствии с мерой, определенной протоколом маршрутизации).

multicast: Идентификатор набора интерфейсов (обычно принадлежащих разным узлам). Пакет, посланный по мультикастинг-адресу, доставляется всем интерфейсам, заданным этим адресом.

В IPv6 не существует широковещательных адресов, их функции выполняют мультикас-адреса.

В IPv6 все нули и все единицы являются допустимыми кодами для любых полей, если не оговорено исключение.

Типы адресов IPv6 идентифицируются первыми битами адреса. Поле переменной длины с этими специфицированными битами называется префиксом формата:

Назначение

Префикс (двоичный)

Часть адресного пространства

Зарезервировано

0000 0000

1/256

Не определено

0000 0001

1/256

Зарезервировано для NSAP

0000 001

1/128

Зарезервировано для IPX

0000 010

1/128

Не определено

0000 011

1/128

Не определено

0000 1

1/32

Не определено

0001

1/16

Не определено

001

1/8

Провайдерские уникаст-адреса

010

1/8

Не определено

011

1/8

Зарезервировано для географических уникаст-адресов

100

1/8

Не определено

101

1/8

Не определено

110

1/8

Не определено

1110

1/16

Не определено

1111 0

1/32

Не определено

1111 10

1/64

Не определено

1111 110

1/128

Не определено

1111 1110 0

1/512

Локальные канальные адреса

1111 1110 10

1/1024

Локальные адреса (site)

1111 1110 11

1/1024

Мультикаст-адреса

1111 1111

1/256

Данное распределение адресов поддерживает прямое выделение адресов провайдера, адресов локального применения и мультикастинг-адресов. Уникастные адреса отличаются от мультикастных значением старшего октета: значение FF (11111111) идентифицирует мультикастинг-адрес; любые другие значения говорят о том, что адрес уникастный. Эникастные (anycast) адреса берутся из уникастного пространства, и синтаксически неотличимы от них.

Глобальный уникаст адрес эквивалентен "белому" IPv4-адресу, он маршрутизируется в Интернете и доступен в IPv6-участке Глобальной сети. Первые 48-бит адреса являются уникальными по всему Интернету (Global Routing Prefix), а провайдер, используя следующие 16 бит (идентификатор подсети), может создать до 65536 подсетей:

Как записывается IP-адрес в IPv6? Он может быть представлен в двух формах:

1) Основная форма:

x:x:x:x:x:x:x:x

Здесь x - это шестнадцатеричное 16-битное число (т.е. имеющее в себе максимум 4 символа в шестнадцатеричной системе).

Например fabc:de12:3456:7890:abcd:ef98:7654:3210

2) Сжатая форма.

Здесь, для уменьшения длинны адреса, в котором присутствует несколько групп, содержащих в себе только нулевые биты, применяется сокращение "::" - оно означает, что на его месте находится какое-то количество групп с нулевыми битами. Выглядеть этот тип записи будет следующим образом:

(1 форма) ff01:0:0:0:0:0:0:43 (2 форма) ff01::43

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

Основными преимуществами нового протокола являются:

А. У протокола IPv6 поля адресов длиннее, чем у IPv4. Они имеют длину 16 байт, что решает основную проблему - обеспечить практически неограниченный запас интернет-адресов.

Б. Протокол IPv6 по сравнению с IPv4 имеет более простой заголовок пакета. Его заголовок состоит всего из 7 полей (вместо 13 у протокола IPv4) и маршрутизаторы могут быстрее обрабатывать пакеты. Формат заголовка пакета для IPv6 был определен в RFC-1883:

Версия 4-битный код номера версии Интернет протокола (версия Интернет протокола для IPv6= 6)

Приоритет 4-битный код приоритета

Метка потока 24-битный код метки потока

Размер поля данных 16-битовое число без знака. Несет в себе код длины поля данных в октетах, которое следует сразу после заголовка пакета. Если код равен нулю, то длина поля данных записана в поле данных jumbo, которое в свою очередь хранится в зоне опций.

Следующий заголовок 8-битовый разделитель. Идентифицирует тип заголовка, который следует непосредственно за IPv6 заголовком

Предельное число шагов 8-битовое целое число без знака. Уменьшается на 1 в каждом узле, через который проходит пакет. При предельном числе шагов, равном нулю, пакет удаляется.

Адрес отправителя 128-битовый адрес отправителя пакета.

Адрес получателя 128-битовый адрес получателя пакета

Позже, в документе RFC-2460, поле приоритет заменено на поле класс трафика. Это поле имеет 8 бит (против 4 в поле приоритет). При этом размер поля метка потока сократился до 20 бит

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

так как в новом заголовке требуемые прежде поля стали необязательными. Измение способа представления необязательных параметров упростило для маршрутизаторов пропуск не относящихся к ним параметров и ускорило обработку пакетов.

В IPv6, опционная информация уровня Интернет записывается в отдельных заголовках, которые могут быть помещены между IPv6 заголовком и заголовком верхнего уровня пакета. Существует небольшое число таких заголовков, каждый задается определенным значением кода поля следующий заголовок. В настоящее время определены заголовки: маршрутизации, фрагментации, аутентификации, инкапсуляции, опций hop-by-hop, места назначения и отсутствия следующего заголовка. Как показано в примерах ниже, IPv6 пакет может нести нуль, один, или более заголовков расширения, каждый задается предыдущим полем следующий заголовок. В заголовке, за которым следует поле данных, в поле следующий заголовок IPv6 записывается код 59.

Г. Протокол IPv6 имеет существенные улучшения в области безопасности. Аутентификация и конфиденциальность являются ключевыми чертами нового IP-протокола.

Д. В новом протоколе уделено больше внимания типу предоставляемых услуг. Для этой цели еще в заголовке пакета IPv4 было отведено 8-разрядное поле (практически не используемое), но в IPv6 предпринята попытка предусмотреть возможность организации виртуальных каналов для ускорения доставки и приоритезации трафика.

Е. Отказ от промежуточной фрагментации и передача проблем с размерами пакетов отправляющему узлу.

Ж. Отказ от использования контрольных сумм.

Пока IPv6 все еще в значительной степени перспектива и подробнее мы на нем останавливаться не будем.

17