Примеры сетевых топологий

         

IP-протокол


Семёнов Ю.А. (ГНЦ ИТЭФ), book.itep.ru

В Интернет используется много различных типов пакетов, но один из основных - IP-пакет (RFC-791), именно он вкладывается в кадр Ethernet и именно в него вкладываются пакеты UDP, TCP. IP-протокол предлагает ненадежную транспортную среду. Ненадежную в том смысле, что не существует гарантии благополучной доставки IP-дейтаграммы. Алгоритм доставки в рамках данного протокола предельно прост: при ошибке дейтаграмма выбрасывается, а отправителю посылается соответствующее ICMP-сообщение (или не посылается ничего). Обеспечение же надежности возлагается на более высокий уровень (UDP или TCP). Формат IP-пакетов показан на рисунке 4.4.1.1.

Рис. 4.4.1.1. Формат дейтаграммы Интернет

Поле версия характеризует версию IP-протокола (например, 4 или 6). Формат пакета определяется программой и, вообще говоря, может быть разным для разных значений поля версия. Только размер и положение этого поля незыблемы. Поэтому в случае изменений длины IP-адреса слишком тяжелых последствий это не вызовет. Понятно также, что значение поля версия во избежании непредсказуемых последствий должно контролироваться программой. HLEN - длина заголовка, измеряемая в 32-разрядных словах, обычно заголовок содержит 20 октетов (HLEN=5, без опций и заполнителя). Поле полная длина определяет полную длину IP-дейтаграммы (до 65535 октетов), включая заголовок и данные. Одно-октетное поле тип сервиса (TOS - type of service) характеризует то, как должна обрабатываться дейтаграмма. Это поле делится на 6 субполей:

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

0   Обычный уровень
1   Приоритетный
2   Немедленный
3   Срочный
4   Экстренный
5   ceitic/ecp
6   Межсетевое управление
7   Сетевое управление

Формат поля TOS определен в документе RFC-1349. Биты C, D, T и R характеризуют пожелание относительно способа доставки дейтаграммы. Так D=1 требует минимальной задержки, T=1 - высокую пропускную способность, R=1 - высокую надежность, а C=1 – низкую стоимость.
TOS играет важную роль в маршрутизации пакетов. Интернет не гарантирует запрашиваемый TOS, но многие маршрутизаторы учитывают эти запросы при выборе маршрута (протоколы OSPF и IGRP). В таблице 4.4.1.1 приведены рекомендуемые значения TOS.

Табл. 4.4.1.1. Значения TOS для разных протоколов

ПроцедураМинимал. задержкаМаксим. пропускная способностьМаксим. надежностьМинимал. стоимостьКод TOS
FTP управление FTP данные
10000x10
01000x08
TFTP10000x10
DNS

UDP

TCP
1000 
00000x10
00000x00
telnet10000x10
ICMP00000x00
IGP00100x04
SMTP управление



SMTP данные
10000x10
01000x08
SNMP00100x04
NNTP00010x02
Только один бит из четырех в TOS может принимать значение 1. Значения по умолчанию равны нулю. Большинство из рекомендаций самоочевидны. Так при telnet наибольшую важность имеет время отклика, а для SNMP (управление сетью) - надежность.

До середины 90-х годов поле TOS в большинстве реализаций игнорировалось. Но после начала разработок средств обеспечения качества обслуживания (QoS) внимание к этому возрасло. Появилось предложение замены поля TOS на поле DSCP (Differenciated Services Code Point), которое также имеет 8 бит (см. RFC-2474). Смотри рис. 4.4.1.1a. Биты CU пока не определены. Иногда это поле называется байтом DS (Differentiated Services).


Рис. 4.4.1.1a. Формат поля DSCP.

Биты DS0-DS5 определяют селектор класса. Значения этого кода представлены в таблице ниже. Стандартным значением DSCP по умолчанию является 000000.
Селектор классаDSCP
Приоритет 1001000
Приоритет 2010000
Приоритет 3011000
Приоритет 4100000
Приоритет 5101000
Приоритет 6110000
Приоритет 7111000
На базе DSCP разработана технология "пошагового поведения" PHB (per Hop Behavior). В рамках этой политики определяются коды DSCP внутри классов. Например, для политики немедленной переадресации EF рекомендуемое значение DSCP=101110. Эта политика соответствует наиболее высокому уровню обслуживания.

Маршрут транспортировки IP-дейтаграммы нельзя знать заранее, это связано с поэтапным (по-шаговом) принятием решения о пути каждого пакета.


Это свойство маршрутизации обусловлено тем, что IP является протоколом передачи данных без установления соединения.

Поля идентификатор, флаги (3 бита) и указатель фрагмента (fragment offset) управляют процессом фрагментации и последующей "сборки" дейтаграммы. Идентификатор представляет собой уникальный код дейтаграммы, позволяющий идентифицировать принадлежность фрагментов и исключить ошибки при "сборке" дейтаграмм. Бит 0 поля флаги является резервным, бит 1 служит для управления фрагментацией пакетов (0 - фрагментация разрешена; 1 - запрещена), бит 2 определяет, является ли данный фрагмент последним (0 – последний фрагмент; 1 - следует ожидать продолжения). Поле время жизни (TTL - time to live) задает время жизни дейтаграммы в секундах, т.е. предельно допустимое время пребывания дейтаграммы в системе. При каждой обработке дейтаграммы, например в маршрутизаторе, это время уменьшается в соответствии со временем пребывания в данном устройстве или согласно протоколу обработки. Если TTL=0, дейтаграмма из системы удаляется. Во многих реализациях TTL измеряется в числе шагов, в этом случае каждый маршрутизатор выполняет операцию TTL=TTL-1. TTL помогает предотвратить зацикливание пакетов. Поле протокол аналогично полю тип в Ethernet-кадре и определяет структуру поля данные (см. табл. 4.4.1.2).

Поле контрольная сумма заголовка вычисляется с использованием операций сложения 16-разрядных слов заголовка по модулю 1. Сама контрольная сумма является дополнением по модулю один полученного результата сложения. Обратите внимание, здесь осуществляется контрольное суммирование заголовка, а не всей дейтаграммы. Поле опции не обязательно присутствует в каждой дейтаграмме. Размер поля опции зависит от того, какие опции применены. Если используется несколько опций, они записываются подряд без каких-либо разделителей. Каждая опция содержит один октет кода опции, за которым может следовать октет длины и серия октетов данных. Если место, занятое опциями, не кратно 4 октетам, используется заполнитель.


Структура октета кода опции отражена на рис. 4.4.1.2.

Таблица 4.4.1.2. Коды протоколов Интернет
Код протокола ИнтернетСокращенное название протоколаОписание
0-Зарезервировано
1ICMPПротокол контрольных сообщений [rfc792]
2IGMPГрупповой протокол управления [rfc1112]
3GGPПротокол маршрутизатор-маршрутизатор [RFC-823]
4IPIP поверх IP (инкапсуляция/туннели)
5STПоток [rfc1190]
6TCP

Протокол управления передачей [RFC-793]
7UCLUCL
8EGPПротокол внешней маршрутизации [RFC-888]
9IGPПротокол внутренней маршрутизации
10BBN-MONBBN-RCC мониторирование
11NVP-IIСетевой протокол для голосовой связи [RFC-741]
12PUPPUP
13ARGUSargus
14Emconemcon
15XnetПерекрестный сетевой отладчик [IEN158]
16ChaosChaos
17UDPПротокол дейтаграмм пользователя [RFC-768]
18MUXМультиплексирование [IEN90]
19DCN-MEASDCN измерительные субсистемы
20HMPПротокол мониторирования ЭВМ (host [RFC-869])
21PRMМониторирование при передаче пакетов по радио
22XNS-IDPXerox NS IDP
23Trunk-1Trunk-1
24Trank-2Trunk-2
25Leaf-1Leaf-1
26Leaf-2Leaf-2
27RDPПротокол для надежной передачи данных [RFC-908]
28IRTPНадежный TP для Интернет [RFC-938]
29ISO-TP4iso транспортный класс 4 [RFC-905]
30NetbltМассовая передача данных [RFC-969]
31MFE-NSPСетевая служба MFE
32Merit-INPМежузловой протокол Merit
33SEPПоследовательный обмен
34 не определен
35IDRPМеждоменный протокол маршрутизации
36XTPXpress транспортный протокол
37DDPПротокол доставки дейтаграмм
38IDPR-CMTPIDPR передача управляющих сообщений
39TP++TP++ транспортный протокол
40ILIL-транспортный протокол
41SIPПростой Интернет-протокол
42SDRPПротокол маршрутных запросов для отправителя
43SIP-SRSIP исходный маршрут
44SIP-FragSIP-фрагмент
45IDRPИнтер-доменный маршрутный протокол
46RSVPПротокол резервирования ресурсов канала
47GREОбщая инкапсуляция маршрутов
49BNABNA
50SIPP-ESPSIPP ESЗ
52I-NLSP

Интегрированная система безопасности сетевого уровня
53SwipeIP с кодированием
54NHRPnbma протокол определения следующего шага
55-60 не определены
61 Любой внутренний протокол ЭВМ
62CFTPCFTP
63 Любая локальная сеть
64Sat-ExpakSatnet и Expak
65MIT-SubnПоддержка субсетей MIT
66RVDУдаленный виртуальный диск MIT
67IPPCIPPC
68 Любая распределенная файловая система
69Sat-MonМониторирование Satnet
70 не определен
71IPCVБазовая пакетная утилита
75PVPПакетный видео-протокол
76BRsat-MonРезервное мониторирование Satnet
78Wb-monМониторирование Expak
79Wb-expakШирокополосная версия Expak
80ISO-IPiso Интернет протокол
88IGRPIGRP (Cisco) - внутренний протокол маршрутизации
89OSPFIGPOSPFIGP - внутренний протокол маршрутизации
92MTPТранспортный протокол мультикастинга
101-254 не определены
255 зарезервировано






Рис. 4.4.1.2. Формат описания опций

Флаг копия равный 1 говорит о том, что опция должна быть скопирована во все фрагменты дейтаграммы. При равенстве этого флага 0 опция копируется только в первый фрагмент. Ниже приведены значения разрядов 2-битового поля класс опции:
Значение поля класс опции Описание
0Дейтограмма пользователя или сетевое управление
1Зарезервировано для будущего использования
2Отладка и измерения (диагностика)
3Зарезервировано для будущего использования


В таблице, которую вы найдете ниже, приведены значения классов и номеров опций.
Класс опцииНомер опцииДлина описанияНазначение
00-Конец списка опций. Используется, если опции не укладываются в поле заголовка (смотри также поле "заполнитель")
01-Никаких операций (используется для выравнивания октетов в списке опций)
0211Ограничения,связанные с секретностью (для военных приложений)
03*

Свободная маршрутизация. Используется для того, чтобы направить дейтаграмму по заданному маршруту
07*Запись маршрута. Используется для трассировки
084Идентификатор потока. Устарело.
09*

Жесткая маршрутизация. Используется, чтобы направить дейтаграмму по заданному маршруту
24*Временная метка Интернет


* в колонке "длина" - означает - переменная.

Наибольший интерес представляют собой опции временные метки и маршрутизация. Опция записать маршрут создает дейтаграмму, где зарезервировано место, куда каждый маршрутизатор по дороге должен записать свой IP-адрес (например, утилита traceroute). Формат опции записать маршрут в дейтаграмме представлен ниже на рис. 4.4.1.3 (предусмотрено место для записи 9 IP-адресов, к сожаления, реализация RR не является обязательной):



Рис. 4.4.1.3 Формат опций записать маршрут

Поле код содержит номер опции (7 в данном случае). Поле длина определяет размер записи для опций, включая первые 3 октета. Указатель отмечает первую свободную позицию в списке IP-адресов (куда можно произвести запись очередного адреса). Интересную возможность представляет опция маршрут отправителя, которая открывает возможность посылать дейтаграммы по заданному отправителем маршруту.


Это позволяет исследовать различные маршруты, в том числе те, которые недоступны через узловые маршрутизаторы. Существует две формы такой маршрутизации: Свободная маршрутизация и Жесткая маршрутизация (маршрутизация отправителя). Форматы для этих опций показаны ниже:



Рис. 4.4.1.3а. Формат опций маршрутизации

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

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

Просмотр маршрутной таблицы происходит в три этапа:


  1. Ищется полное соответствие адресу места назначения. В случае успеха, пакет посылается соответствующему маршрутизатору или непосредственно интерфейсу адресата. Связи точка-точка выявляются именно на этом этапе.


  2. Ищется соответствие адресу сети места назначения. В случае успеха система действует также как и в предшествующем пункте. Одна запись в таблице маршрутизации соответствует всем ЭВМ, входящим в данную сеть.


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




Для того чтобы посмотреть, как выглядит простая маршрутная таблица, воспользуемся командой netstat –rn (ЭВМ Sun. Флаг -r выводит на экран маршрутную таблицу, а -n отображает IP-адреса в цифровой форме. С целью экономии места таблица в несколько раз сокращена).
routing tables destinationgatewayflagsrefcntuseinterface
193.124.225.72193.124.224.60ughd061le0
192.148.166.1193.124.224.60ughd0409le0
193.124.226.81193.124.224.37ughd0464le0
192.160.233.201193.124.224.33ughd0222le0
192.148.166.234193.124.224.60ughd13248le0
193.124.225.66193.124.224.60ughd0774le0
192.148.166.10193.124.224.60ughd0621le0
192.148.166.250193.124.224.60ughd0371le0
192.148.166.4193.124.224.60ughd0119le0
145.249.16.20193.124.224.60ughd0130478le0
192.102.229.14193.124.224.33ughd013206le0
default193.124.224.33ug95802624le0
193.124.224.32193.124.224.35u61920046le0
193.124.134.0193.124.224.50ugd1291672le0


Колонка destination - место назначение, Default - отмечает маршрут по умолчанию; Gateway - IP-адреса портов подключения (маршрутизаторов); REFCNT (reference count) - число активных пользователей маршрута; USE – число пакетов, посланных по этому маршруту; interface - условные имена сетевых интерфейсов. Расшифровка поля FLAGS приведено ниже:
uМаршрут работает (up).
g

Путь к маршрутизатору (gateway), если этот флаг отсутствует, адресат доступен непосредственно.
h

Маршрут к ЭВМ (host), адрес места назначения является полным адресом этой ЭВМ (адрес сети + адрес ЭВМ). Если флаг отсутствует, маршрут ведет к сети, а адрес места назначения является адресом сети.
dМаршрут возник в результате переадресации.
mМаршрут был модифицирован с помощью переадресации.


Опция временные метки работает также как и опция запись маршрута. Каждый маршрутизатор на пути дейтаграммы делает запись в одном из полей дейтаграммы (два слова по 32 разряда; смотри раздел ). Формат этой опции отображен на рисунке 4.4.1.4.



Рис. 4.4.1.4 Формат опции "временные метки"



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

Таблица 4.4.1.3.
Значение флагаНазначение
0

Записать только временные метки; опустить ip-адреса.
1

Записать перед каждой временной меткой ip-адрес (как в формате на предыдущем рисунке).
3

ip-адреса задаются отправителем; маршрутизатор записывает только временные метки, если очередной IP-адрес совпадает с адресом маршрутизатора


Временные метки должны содержать время в миллисекундах, отсчитанное от начала суток. Если маршрутизатору некуда положить свою временную метку (число меток превысило 9), он инкрементирует счетчик переполнение.

Взаимодействие других протоколов с IP можно представить из схемы на рис. 4.4.1.5. В основании лежат протоколы, обеспечивающие обмен информацией на физическом уровне, далее следуют протоколы IP, ICMP, ARP, RARP, IGMP и протоколы маршрутизаторов. Чем выше расположен протокол, тем более высокому уровню он соответствует. Протоколы, имена которых записаны в одной и той же строке, соответствуют одному и тому же уровню. Но все разложить аккуратно по слоям невозможно - некоторые протоколы занимают промежуточное положение, что и отражено на схеме, (области таких протоколов захватывают два уровня. Здесь протоколы IP, ICMP и IGMP помещены на один уровень, для чего имеется не мало причин. Но иногда последние два протокола помещают над IP, так как их пакеты вкладываются в IP-дейтаграммы. Так что деление протоколов по уровням довольно условно. На самом верху пирамиды находятся прикладные программы, хотя пользователю доступны и более низкие уровни (например, ICMP), что также отражено на приведенном рисунке (4.4.1.5).



Рис. 4.4.1.5. Распределение протоколов Интернет по уровням

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


Содержание раздела