Маршрутизаторы объединяют отдельные сети в общую составную сеть (рисунок 1.1). Внутренняя структура каждой сети не показана, так как она не имеет значения при рассмотрении сетевого протокола. К каждому маршрутизатору могут быть присоединены несколько сетей (по крайней мере две).
Маршрут - это последовательность маршрутизаторов, которые должен пройти пакет от отправителя до пункта назначения.
Маршрутизатор выбирает маршрут на основании своего представления о текущей конфигурации сети и соответствующего критерия выбора маршрута. Обычно в качестве критерия выступает время прохождения маршрута, которое в локальных сетях совпадает с длиной маршрута, измеряемой в количестве пройденных узлов маршрутизации (в глобальных сетях принимается в расчет и время передачи пакета по каждой линии связи).
В
протоколах сетевого уровня термин "сеть"
означает совокупность компьютеров,
соединенных между собой в соответствии с
одной из стандартных типовых топологий и
использующих для передачи пакетов общую
базовую сетевую технологию. Внутри сети
сегменты не разделяются маршрутизаторами,
иначе это была бы не одна сеть, а несколько
сетей. Маршрутизатор соединят несколько
сетей в интерсеть.
Заголовок
сетевого уровня должен содержать адрес
назначения и другую информацию,
необходимую для успешного перехода пакета
из сети одного типа в сеть другого типа. К
такой информации может относиться,
например:
![]() |
номер фрагмента пакета, нужный для успешного проведения операций сборки-разборки фрагментов при соединении сетей с разными максимальными размерами кадров канального уровня, |
![]() |
время жизни пакета, указывающее, как долго он путешествует по интерсети, это время может использоваться для уничтожения "заблудившихся" пакетов, |
![]() |
информация о наличии и о состоянии связей между сетями, помогающая узлам сети и маршрутизаторам рационально выбирать межсетевые маршруты, |
![]() |
информация о загруженности сетей, также помогающая согласовать темп посылки пакетов в сеть конечными узлами с реальными возможностями линий связи на пути следования пакетов, |
![]() |
качество сервиса - критерий выбора маршрута при межсетевых передачах - например, узел-отправитель может потребовать передать пакет с максимальной надежностью, возможно в ущерб времени доставки. |
В качестве
адресов отправителя и получателя в
составной сети используется не МАС-адрес, а
пара чисел - номер сети и номер компьютера в
данной сети.
Таким образом,
внутри сети доставка сообщений
регулируется канальным уровнем. А вот
доставкой пакетов между сетями занимается
сетевой уровень.
Номера узла в
заголовке сетевого пакета, как правило,
определяется для каждого узла нового
адреса, отличного от того, который
использовался на канальном уровне.
Преимуществом такого подхода является его
универсальность и гибкость - каков бы ни был
формат адреса на канальном уровне, формат
адреса узла на сетевом уровне выбирается
единым. Однако, здесь имеются и некоторые
неудобства, связанные с необходимостью
заново нумеровать узлы, причем чаще всего
вручную..
Для
того, чтобы иметь информацию о текущей
конфигурации сети, маршрутизаторы
обмениваются маршрутной информацией между
собой по специальному протоколу. Протоколы
этого типа называются протоколами обмена
маршрутной информацией (или протоколами
маршрутизации).
С
помощью протоколов обмена маршрутной
информацией маршрутизаторы составляют
карту межсетевых связей той или иной
степени подробности и принимают решение о
том, какому следующему маршрутизатору
нужно передать пакет для образования
рационального пути.
На
сетевом уровне работают протоколы еще
одного типа, которые отвечают за
отображение адреса узла, используемого на
сетевом уровне, в локальный адрес сети.
Такие протоколы часто называют протоколами
разрешения адресов - Address Resolution Protocol, ARP.
Стандарты
TCP/IP опубликованы в серии документов,
названных Request for Comment (RFC). Стек был
разработан по инициативе Министерства
обороны США более 20 лет назад.
Структура
протоколов TCP/IP приведена на рисунке 2.1.
Протоколы TCP/IP делятся на 4 уровня.
Уровень
IV
соответствует физическому и канальному
уровням модели OSI. Этот уровень в протоколах
TCP/IP не регламентируется, но поддерживает
все популярные стандарты физического и
канального уровня: для локальных сетей это
Ethernet, FDDI, Fast Ethernet, для глобальных сетей -
протоколы соединений "точка-точка" SLIP
и PPP, протоколы территориальных сетей с
коммутацией пакетов X.25, frame relay. Разработана
также специальная спецификация,
определяющая использование технологии ATM в
качестве транспорта канального уровня.
Уровень
III- это уровень межсетевого
взаимодействия, который занимается
передачей пакетов с использованием
различных транспортных технологий
локальных сетей, территориальных сетей,
линий специальной связи и т. п.
В
качестве основного протокола сетевого
уровня (в терминах модели OSI) в стеке
используется протокол IP, который
изначально проектировался как протокол
передачи пакетов, состоящих из большого
количества локальных сетей, объединенных
как локальными, так и глобальными связями. К
уровню межсетевого взаимодействия
относятся и все протоколы, связанные с
составлением и модификацией таблиц
маршрутизации, такие как протоколы сбора
маршрутной информации RIP (Routing Internet Protocol) и
OSPF (Open Shortest Path First), а также протокол
межсетевых управляющих сообщений ICMP (Internet
Control Message Protocol). Последний протокол
предназначен для обмена информацией об
ошибках между маршрутизаторами сети и
узлом - источником пакета
Следующий
уровень (уровень II) называется основным. На
этом уровне функционируют протокол
управления передачей TCP (Transmission Control Protocol) и
протокол дейтаграмм пользователя UDP (User
Datagram Protocol). Протокол TCP обеспечивает
надежную передачу сообщений между
удаленными прикладными процессами за счет
образования виртуальных соединений.
Протокол UDP обеспечивает передачу
прикладных пакетов дейтаграммным способом,
как и IP.
Уровень
I называется прикладным. (FTP, telnet, WWW).
Протокол SNMP (Simple Network Management Protocol)
используется для организации сетевого
управления. Изначально протокол SNMP был
разработан для удаленного контроля и
управления маршрутизаторами Internet, которые
традиционно часто называют также шлюзами. С
ростом популярности протокол SNMP стали
применять и для управления любым
коммуникационным оборудованием -
концентраторами, мостами, сетевыми
адаптерами и т.д. и т.п
Каждый
компьютер в сети TCP/IP имеет адреса трех
уровней:
![]() |
Локальный адрес узла - это МАС-адрес сетевого адаптера или порта маршрутизатора, например, 11-А0-17-3D-BC-01. Эти адреса назначаются производителями оборудования и являются уникальными адресами, так как управляются централизовано. (6 байтов: старшие 3 байта - идентификатор фирмы производителя, а младшие 3 байта назначаются самим производителем). Для узлов, входящих в глобальные сети, такие как Х.25 или frame relay, локальный адрес назначается администратором глобальной сети. |
![]() |
IP-адрес, состоящий из 4 байт, например, 109.26.17.100. Этот адрес используется на сетевом уровне. Номер сети может быть выбран администратором произвольно, либо назначен по рекомендации специального подразделения Internet (Network Information Center, NIC), если сеть должна работать как составная часть Internet. Обычно провайдеры услуг Internet получают диапазоны адресов у подразделений NIC, а затем распределяют их между своими абонентами. |
Узел
может входить в несколько IP-сетей. В этом
случае узел должен иметь несколько IP-адресов,
по числу сетевых связей. Таким образом IP-адрес
характеризует не отдельный компьютер или
маршрутизатор, а одно сетевое соединение.
![]() |
Символьный идентификатор-имя, например, www.math.spbu.ru. Этот адрес назначается администратором и состоит из нескольких частей, например, имени машины, имени организации, имени домена. Такой адрес, называемый также DNS-именем. |
Класс А |
|
||||||
Класс В |
|
||||||
Класс С |
|
||||||
Класс D |
|
||||||
Класс Е |
|
Адрес
состоит из двух логических частей - номера
сети и номера узла в сети. Какая часть
адреса относится к номеру сети, а какая к
номеру узла, определяется значениями
первых битов адреса.
![]() |
Если
адрес начинается с последовательности
1110, то он является адресом класса D и
обозначает особый, групповой адрес -
multicast. Если в пакете в качестве адреса
назначения указан адрес класса D, то
такой пакет должны получить все узлы,
которым присвоен данный адрес. |
![]() |
Если адрес начинается с последовательности 11110, то это адрес класса Е, он зарезервирован для будущих применений. |
![]() |
если IР-адрес состоит только из двоичных нулей, то он обозначает адрес того узла, который сгенерировал этот пакет; |
![]() |
если в поле номера сети стоят 0, то по умолчанию считается, что этот узел принадлежит той же самой сети, что и узел, который отправил пакет; |
![]() |
если все двоичные разряды IP-адреса равны 1то пакет с таким адресом назначения должен рассылаться всем узлам, находящимся в той же сети, что и источник этого пакета. Такая рассылка называется ограниченным широковещательным сообщением (limited broadcast); |
![]() |
если в поле адреса назначения узла стоят сплошные 1, то пакет, имеющий такой адрес рассылается всем узлам сети с заданным номером. Такая рассылка называется широковещательным сообщением (broadcast); |
![]() |
адрес 127.0.0.1 зарезервирован для организации обратной связи при тестировании работы программного обеспечения узла без реальной отправки пакета по сети. Этот адрес имеет название loopback. |
Уже
упоминавшаяся форма группового IP-адреса -
multicast - означает, что данный пакет должен
быть доставлен сразу нескольким узлам,
которые образуют группу с номером,
указанным в поле адреса. Узлы сами
идентифицируют себя, то есть определяют, к
какой из групп они относятся. Один и тот же
узел может входить в несколько групп. Такие
сообщения в отличие от широковещательных
называются мультивещательными. Групповой
адрес не делится на поля номера сети и узла
и обрабатывается маршрутизатором особым
образом.
Деление
сети с помощью маршрутизаторов на части
локализует широковещательный шторм
пределами одной из составляющих общую сеть
частей просто потому, что нет способа
адресовать пакет одновременно всем узлам
всех сетей составной сети.
Локальный
адрес используется в протоколе IP только в
пределах локальной сети при обмене данными
между маршрутизатором и узлом этой сетию.
Для
определения локального адреса по IP-адресу
используется протокол разрешения адреса
Address Resolution Protocol, ARP. Существует также
протокол, решающий обратную задачу -
нахождение IP-адреса по известному
локальному адресу. Он называется
реверсивный ARP - RARP (Reverse Address Resolution Protocol)
и используется при старте бездисковых
станций, не знающих в начальный момент
своего IP-адреса, но знающих адрес своего
сетевого адаптера.
В
локальных сетях протокол ARP использует
широковещательные кадры протокола
канального уровня для поиска в сети узла с
заданным IP-адресом.
DNS
(Domain Name System) - это распределенная база данных,
поддерживающая иерархическую систему имен
для идентификации узлов в сети Internet. Служба
DNS предназначена для автоматического
поиска IP-адреса по известному символьному
имени узла. Спецификация DNS определяется
стандартами RFC 1034 и 1035.
Протокол
DNS является служебным протоколом
прикладного уровня. В нем определены DNS-серверы
и DNS-клиенты. DNS-серверы хранят часть
распределенной базы данных о соответствии
символьных имен и IP-адресов. Эта база данных
распределена по административным доменам
сети Internet. Клиенты сервера DNS знают IP-адрес
сервера DNS своего административного домена.
Если
хранятся в DNS-сервера, то он сразу посылает
ответ клиенту, если же нет - то он посылает
запрос DNS-серверу другого домена. Все DNS-серверы
соединены иерархически, в соответствии с
иерархией доменов сети Internet. Клиент
опрашивает эти серверы имен, пока не найдет
нужные отображения. Серверы имен постоянно
кэшируют информацию.
База
данных DNS имеет структуру дерева,
называемого доменным пространством имен, в
котором каждый домен (узел дерева) имеет имя
и может содержать поддомены.
Корень
базы данных DNS управляется центром Internet Network
Information Center. Домены верхнего уровня
назначаются для каждой страны, а также на
организационной основе. Имена этих доменов
должны следовать международному стандарту
ISO 3166. com - коммерческие организации
![]() |
edu - образовательные (например, mit.edu); |
![]() |
gov - правительственные организации (например, nsf.gov); |
![]() |
org - некоммерческие организации (например, fidonet.org); |
![]() |
net - организации, поддерживающие сети (например, nsf.net). |
Основным назначением DHCP является динамическое назначение IP-адресов. Однако, кроме динамического, DHCP может поддерживать и более простые способы ручного и автоматического статического назначения адресов.
В ручной процедуре назначения адресов активное участие принимает администратор, который предоставляет DHCP-серверу информацию о соответствии IP-адресов физическим адресам или другим идентификаторам клиентов. Эти адреса сообщаются клиентам в ответ на их запросы к DHCP-серверу.
DHCP обеспечивает надежный и простой способ конфигурации сети TCP/IP, гарантируя отсутствие конфликтов адресов за счет централизованного управления их распределением. Администратор управляет процессом назначения адресов с помощью параметра "продолжительности аренды" (lease duration), которая определяет, как долго компьютер может использовать назначенный IP-адрес, перед тем как снова запросить его от сервера DHCP в аренду.
Однако использование DHCP несет в себе и некоторые проблемы. Во-первых, это проблема согласования информационной адресной базы в службах DHCP и DNS. Как известно, DNS служит для преобразования символьных имен в IP-адреса. Если IP-адреса будут динамически изменятся сервером DHCP, то эти изменения необходимо также динамически вносить в базу данных сервера DNS. Хотя протокол динамического взаимодействия между службами DNS и DHCP уже реализован некоторыми фирмами (так называемая служба Dynamic DNS), стандарт на него пока не принят.
Во-вторых, нестабильность IP-адресов усложняет процесс управления сетью. Системы управления, основанные на протоколе SNMP, разработаны с расчетом на статичность IP-адресов. Аналогичные проблемы возникают и при конфигурировании фильтров маршрутизаторов, которые оперируют с IP-адресами.
Наконец, централизация
процедуры назначения адресов снижает
надежность системы: при отказе DHCP-сервера
все его клиенты оказываются не в состоянии
получить IP-адрес и другую информацию о
конфигурации. Последствия такого отказа
могут быть уменьшены путем использовании в
сети нескольких серверов DHCP, каждый из
которых имеет свой пул IP-адресов.
Основу транспортных средств стека протоколов TCP/IP составляет протокол межсетевого взаимодействия - Internet Protocol (IP).
Функции:
![]() |
перенос между сетями различных типов адресной информации в унифицированной форме, |
![]() |
сборка и разборка пакетов при передаче их между сетями с различным максимальным значением длины пакета. |
Пакет IP состоит из заголовка и поля данных. Заголовок пакета имеет следующие поля:
0 |
|
15 |
31 |
|
VERS(4бита) V 4 будет
V 6 |
HLEN(4бита)=5 Длина заголовка в 32-битовых словах |
SERVICE TYPE (3 бита приоритетность, критерий маршрута -(задерж.,скор.,надеж.) |
TOTAL LENGTH общую длину пакета с учетом заголовка и поля данн |
|
IDENTIFICATION (16 бит) Все фрагменты пакета должны иметь одинаковое значение Идентификатора |
FLAGS(3бита) Не фрагм., промежуточный, eofragment |
FRAGMENT OFFSET (13 бит) смещения поля данных этого фрагмента от начала общего поля данных исходного пакета |
||
TIME TO LIVE (8 бит) =30 по
истечении каждой секунды вычитается
единица; единица вычитается также при
каждой транзитной передаче (даже если не
прошла секунда). При истечении времени
жизни пакет аннулируется |
PROTOCOL (8бит) 6-TCP, 17- UDP, 1-ICMP... |
HEADER CHECKSUM |
||
SOURCE IP ADDRESS |
||||
DESTINATION IP ADDRESS |
||||
Резерв -IP OPTIONS ( длина любая кратная 32) |
||||
Данные |
||||
Данные |
||||
Максимальная длина поля данных пакета ограничена разрядностью поля, определяющего эту величину, и составляет 65535 байтов, однако при передаче по сетям различного типа длина пакета выбирается с учетом максимальной длины пакета протокола нижнего уровня, несущего IP-пакеты. Если это кадры Ethernet, то выбираются пакеты с максимальной длиной в 1500 байтов, умещающиеся в поле данных кадра Ethernet.
Протоколы транспортного уровня (протоколы TCP или UDP), пользующиеся сетевым уровнем для отправки пакетов, считают, что максимальный размер поля данных IP-пакета равен 65535, и поэтому могут передать ему сообщение такой длины для транспортировки через интерсеть. В функции уровня IP входит разбиение слишком длинного для конкретного типа составляющей сети сообщения на более короткие пакеты с созданием соответствующих служебных полей, нужных для последующей сборки фрагментов в исходное сообщение.
В большинстве типов локальных и глобальных сетей определяется такое понятие как максимальный размер поля данных кадра или пакета, в которые должен инкапсулировать свой пакет протокол IP. Эту величину обычно называют максимальной единицей транспортировки - Maximum Transfer Unit, MTU. Сети Ethernet имеют значение MTU, равное 1500 байт, сети FDDI - 4096 байт, а сети Х.25 чаще всего работают с MTU в 128 байт.
IP-маршрутизаторы не собирают фрагменты пакетов в более крупные пакеты, даже если на пути встречается сеть, допускающая такое укрупнение. Это связано с тем, что отдельные фрагменты сообщения могут перемещаться по интерсети по различным маршрутам, поэтому нет гарантии, что все фрагменты проходят через какой-либо промежуточный маршрутизатор на их пути.
При приходе первого фрагмента пакета узел назначения запускает таймер, который определяет максимально допустимое время ожидания прихода остальных фрагментов этого пакета. Если таймер истекает раньше прибытия последнего фрагмента, то все полученные к этому моменту фрагменты пакета отбрасываются, а в узел, пославший исходный пакет, направляется сообщение об ошибке с помощью протокола ICMP.
Рассмотрим теперь принципы, на основании которых в сетях IP происходит выбор маршрута передачи пакета между сетями.
Сначала необходимо обратить внимание на тот факт, что не только маршрутизаторы, но и конечные узлы - компьютеры - должны принимать участие в выборе маршрута.
Пример таблицы маршрутов:
Адрес
сети |
Адрес
следующего маршрутизатора |
Номер
выходного |
56.0.0.0 |
198.21.17.7 |
1 20 |
56.0.0.0 |
213.34.12.4.
|
2 130 |
116.0.0.0 |
213.34.12.4 |
2 1450 |
129.13.0.0 |
198.21.17.6 |
1 50 |
198.21.17.0 |
- |
2 0 |
213. 34.12.0
|
- |
1 0 |
default |
198.21.17.7 |
1 - |
В
этой таблице в столбце "Адрес сети
назначения" указываются адреса всех
сетей, которым данный маршрутизатор может
передавать пакеты. В стеке TCP/IP принят так
называемый одношаговый подход к
оптимизации маршрута продвижения пакета (next-hop
routing) - каждый маршрутизатор и конечный узел
принимает участие в выборе только одного
шага передачи пакета. Поэтому в каждой
строке таблицы маршрутизации указывается
не весь маршрут в виде последовательности
IP-адресов маршрутизаторов, через которые
должен пройти пакет, а только один IP-адрес -
адрес следующего маршрутизатора, которому
нужно передать пакет. Вместе с пакетом
следующему маршрутизатору передается
ответственность за выбор следующего шага
маршрутизации. Одношаговый подход к
маршрутизации означает распределенное
решение задачи выбора маршрута. Это снимает
ограничение на максимальное количество
транзитных маршрутизаторов на пути пакета.
Конечный
узел, как и маршрутизатор, имеет в своем
распоряжении таблицу маршрутов
унифицированного формата и на основании ее
данных принимает решение, какому
маршрутизатору нужно передавать пакет для
сети N. Решение о том, что этот пакет нужно
вообще маршрутизировать, компьютер
принимает в том случае, когда он видит, что
адрес сети назначения пакета отличается от
адреса его собственной сети (каждому
компьютеру при конфигурировании
администратор присваивает его IP-адрес или
несколько IP-адресов, если компьютер
одновременно подключен к нескольким сетям).
Когда компьютер выбрал следующий
маршрутизатор, то он просматривают кэш-таблицу
адресов своего протокола ARP и, может быть,
находит там соответствие IP-адреса
следующего маршрутизатора его MAC-адресу.
Если же нет, то по локальной сети передается
широковещательный ARP-запрос и локальный
адрес извлекается из ARP-ответа.
После
этого компьютер формирует кадр протокола,
используемого на выбранном порту, например,
кадр Ethernet, в который помещает МАС-адрес
маршрутизатора. Маршрутизатор принимает
кадр Ethernet, извлекает из него пакет IP и
просматривает свою таблицу маршрутизации
для нахождения следующего маршрутизатора.
При этом он выполняет те же действия, что и
конечный узел.
Cократить
объем таблиц маршрутизации в конечных
узлах и маршрутизаторах можно за счет
использования в качестве номера сети
назначения так называемого маршрута по
умолчанию - default, который обычно занимает в
таблице маршрутизации последнюю строку.
Если в таблице маршрутизации есть такая
запись, то все пакеты с номерами сетей,
которые отсутствуют в таблице
маршрутизации, передаются маршрутизатору,
указанному в строке default. Подразумевается,
что маршрутизатор, используемый по
умолчанию, передаст пакет на магистральную
сеть, а маршрутизаторы, подключенные к
магистрали, имеют полную информацию о
составе интерсети.
Кроме
маршрута default, в таблице маршрутизации
могут встретиться два типа специальных
записей - запись о специфичном для узла
маршруте и запись об адресах сетей,
непосредственно подключенных к портам
маршрутизатора.
Записи в таблице маршрутизации, относящиеся к сетям, непосредственно подключенным к маршрутизатору, в поле "Расстояние до сети назначения" содержат нули.
Существуют
различные алгоритмы построения таблиц для
одношаговой маршрутизации. Их можно
разделить на три класса:
![]() |
алгоритмы фиксированной маршрутизации, |
![]() |
алгоритмы простой маршрутизации, |
![]() |
алгоритмы адаптивной маршрутизации. |
Фиксированная маршрутизация
Этот
алгоритм применяется в сетях с простой
топологией связей и основан на ручном
составлении таблицы маршрутизации
администратором сети. Алгоритм часто
эффективно работает также для магистралей
крупных сетей, так как сама магистраль
может иметь простую структуру с очевидными
наилучшими путями следования пакетов в
подсети, присоединенные к магистрали.
Простая маршрутизация
Алгоритмы
простой маршрутизации подразделяются на
три подкласса:
![]() |
Случайная маршрутизация - пакеты передаются в любом, случайном направлении, кроме исходного. |
![]() |
Лавинная маршрутизация - пакеты передаются во всех направлениях, кроме исходного (применяется в мостах для пакетов с неизвестным адресом доставки). |
![]() |
Маршрутизация по предыдущему опыту - таблицы маршрутов составляются на основании данных, содержащихся в проходящих через маршрутизатор пакетах. Именно так работают прозрачные мосты, собирая сведения об адресах узлов, входящих в сегменты сети. Такой способ маршрутизации обладает медленной адаптируемостью к изменениям топологии сети. |
Адаптивная маршрутизация
Это
основной вид алгоритмов маршрутизации,
применяющихся маршрутизаторами в
современных сетях со сложной топологией.
Адаптивная маршрутизация основана на том,
что маршрутизаторы периодически
обмениваются специальной топологической
информацией об имеющихся в интерсети сетях,
а также о связях между маршрутизаторами.
Обычно учитывается не только топология
связей, но и их пропускная способность и
состояние.
Часто
администраторы сетей испытывают
неудобства, из-за того, что количество
централизовано выделенных им номеров сетей
недостаточно для того, чтобы
структурировать сеть надлежащим образом,
например, разместить все слабо
взаимодействующие компьютеры по разным
сетям.
В
такой ситуации возможны два пути. Первый из
них связан с получением от NIC
дополнительных номеров сетей. Второй
способ, употребляющийся более часто, связан
с использованием так называемых масок,
которые позволяют разделять одну сеть на
несколько сетей.
Маска
- это число, двоичная запись которого
содержит единицы в тех разрядах, которые
должны интерпретироваться как номер сети.
Например,
для стандартных классов сетей маски имеют
следующие значения:
·
255.0.0.0 - маска для сети класса
А,
·
255.255.0.0 - маска для сети
класса В,
·
255.255.255.0 - маска для сети
класса С.
В
масках, которые использует администратор
для увеличения числа сетей, количество
единиц в последовательности, определяющей
границу номера сети, не обязательно должно
быть кратным 8, чтобы повторять деление
адреса на байты.
Пусть,
например, маска имеет значение 255.255.192.0 (11111111
11111111 11000000 00000000). И пусть сеть имеет номер
129.44.0.0 (10000001 00101100 00000000 00000000), из которого
видно, что она относится к классу В. После
наложения маски на этот адрес число
разрядов, интерпретируемых как номер сети,
увеличилось с 16 до 18, то есть администратор
получил возможность использовать вместо
одного, централизованно заданного ему
номера сети, четыре:
· 129.44.0.0 (10000001 00101100 00000000 00000000)
· 129.44.64.0 (10000001 00101100 01000000 00000000)
· 129.44.128.0 (10000001 00101100 10000000 00000000)
· 129.44.192.0 (10000001 00101100 11000000 00000000)
Таким образом, установив новое значение маски, можно заставить маршрутизатор по-другому интерпретировать IP-адрес. При этом два дополнительных последних бита номера сети часто интерпретируются как номера подсетей.
Задачей
протокола транспортного уровня UDP (User Datagram
Protocol) является передача данных между
прикладными процессами без гарантий
доставки, поэтому его пакеты могут быть
потеряны, продублированы или прийти не в
том порядке, в котором они были отправлены.
В
то время, как задачей сетевого уровня
является передача данных между
произвольными узлами сети, задача
транспортного уровня заключается в
передаче данных между любыми прикладными
процессами, выполняющимися на любых узлах
сети. Действительно, после того, как пакет
средствами протокола IP доставлен в
компьютер-получатель, данные необходимо
направить конкретному процессу-получателю.
Каждый компьютер может выполнять несколько
процессов, более того, прикладной процесс
тоже может иметь несколько точек входа,
выступающих в качестве адреса назначения
для пакетов данных.
Пакеты,
поступающие на транспортный уровень,
организуются операционной системой в виде
множества очередей к точкам входа
различных прикладных процессов. В
терминологии TCP/IP такие системные очереди
называются портами. Таким образом, адресом
назначения, который используется на
транспортном уровне, является
идентификатор (номер) порта прикладного
сервиса. Номер порта, задаваемый
транспортным уровнем, в совокупности с
номером сети и номером компьютера,
задаваемыми сетевым уровнем, однозначно
определяют прикладной процесс в сети.
UDP
является дейтаграммным протоколом, то есть
он не устанавливает логического соединения,
не нумерует и не упорядочивает пакеты
данных.
Функциональная
простота протокола UDP обуславливает
простоту его алгоритма, компактность и
высокое быстродействие.
Единица данных
протокола UDP называется UDP-пакетом или
пользовательской дейтаграммой (user datagram). UDP-пакет
состоит из заголовка и поля данных, в
котором размещается пакет прикладного
уровня. Заголовок имеет простой формат и
состоит из четырех двухбайтовых полей:
![]() |
UDP source port - номер порта процесса-отправителя, |
![]() |
UDP destination port - номер порта процесса-получателя, |
![]() |
UDP message length - длина UDP-пакета в байтах, |
![]() |
UDP checksum - контрольная сумма UDP-пакета |
Не все поля UDP-пакета
обязательно должны быть заполнены. Если
посылаемая дейтаграмма не предполагает
ответа, то на месте адреса отправителя
могут помещаться нули. Можно отказаться и
от подсчета контрольной суммы, однако
следует учесть, что протокол IP подсчитывает
контрольную сумму только для заголовка IP-пакета,
игнорируя поле данных.
В стеке
протоколов TCP/IP протокол TCP (Transmission Control Protocol)
работает так же, как и протокол UDP, на
транспортном уровне. Он обеспечивает
надежную транспортировку данных между
прикладными процессами путем установления
логического соединения.
Единицей
данных протокола TCP является сегмент.
Информация, поступающая к протоколу TCP в
рамках логического соединения от
протоколов более высокого уровня,
рассматривается протоколом TCP как
неструктурированный поток байт.
Поступающие данные буферизуются
средствами TCP. Для передачи на сетевой
уровень из буфера "вырезается"
некоторая непрерывная часть данных,
называемая сегментом.
В протоколе TCP
предусмотрен случай, когда приложение
обращается с запросом о срочной передаче
данных (бит PSH в запросе установлен в 1). В
этом случае протокол TCP, не ожидая
заполнения буфера до уровня размера
сегмента, немедленно передает указанные
данные в сеть. О таких данных говорят, что
они передаются вне потока - out of band.
В протоколе TCP
также, как и в UDP, для связи с прикладными
процессами используются порты. Номера
портам присваиваются аналогичным образом:
имеются стандартные, зарезервированные
номера (например, номер 21 закреплен за
сервисом FTP, 23 - за telnet), а менее известные
приложения пользуются произвольно
выбранными локальными номерами.
Однако в
протоколе TCP порты используются несколько
иным способом. Для организации надежной
передачи данных предусматривается
установление логического соединения между
двумя прикладными процессами. В рамках
соединения осуществляется обязательное
подтверждение правильности приема для всех
переданных сообщений, и при необходимости
выполняется повторная передача. Соединение
в TCP позволяет вести передачу данных
одновременно в обе стороны, то есть
полнодуплексную передачу.
Соединение в
протоколе TCP идентифицируется парой полных
адресов обоих взаимодействующих процессов
(оконечных точек). Адрес каждой из оконечных
точек включает IP-адрес (номер сети и номер
компьютера) и номер порта. Одна оконечная
точка может участвовать в нескольких
соединениях.
Установление
соединения выполняется в следующей
последовательности:
![]() |
При установлении соединения одна из сторон является инициатором. Она посылает запрос к протоколу TCP на открытие порта для передачи (active open). |
![]() |
После открытия порта протокол TCP на стороне процесса-инициатора посылает запрос процессу, с которым требуется установить соединение. |
![]() |
Протокол TCP на приемной стороне открывает порт для приема данных (passive open) и возвращает квитанцию, подтверждающую прием запроса. |
![]() |
Для того чтобы передача могла вестись в обе стороны, протокол на приемной стороне также открывает порт для передачи (active port) и также передает запрос к противоположной стороне. |
![]() |
Сторона-инициатор открывает порт для приема и возвращает квитанцию. Соединение считается установленным. Далее происходит обмен данными в рамках данного соединения. |
В рамках
соединения правильность передачи каждого
сегмента должна подтверждаться квитанцией
получателя. Квитирование - это один из
традиционных методов обеспечения надежной
связи. Идея квитирования состоит в
следующем.
Для того, чтобы
можно было организовать повторную передачу
искаженных данных отправитель нумерует
отправляемые единицы передаваемых данных (далее
для простоты называемые кадрами). Для
каждого кадра отправитель ожидает от
приемника так называемую положительную
квитанцию - служебное сообщение, извещающее
о том, что исходный кадр был получен и
данные в нем оказались корректными. Время
этого ожидания ограничено - при отправке
каждого кадра передатчик запускает таймер,
и если по его истечению положительная
квитанция на получена, то кадр считается
утерянным.
Существуют два
подхода к организации процесса обмена
положительными и отрицательными
квитанциями: с простоями и с организацией
"окна".
Метод с
простоями требует, чтобы источник,
пославший кадр, ожидал получения квитанции
(положительной или отрицательной) от
приемника и только после этого посылал
следующий кадр (или повторял искаженный). Из
рисунка 6.1 видно, что в этом случае
производительность обмена данными
существенно снижается - хотя передатчик и
мог бы послать следующий кадр сразу же
после отправки предыдущего, он обязан ждать
прихода квитанции
Метод
подтверждения корректности передачи
кадров с простоем источника
Во втором
методе для повышения коэффициента
использования линии источнику разрешается
передать некоторое количество кадров в
непрерывном режиме, то есть в максимально
возможном для источника темпе, без
получения на эти кадры ответных квитанций.
Количество кадров, которые разрешается
передавать таким образом, называется
размером окна. Рисунок 6.2 иллюстрирует
данный метод для размера окна в W кадров.
Обычно кадры при обмене нумеруются
циклически, от 1 до W. При отправке кадра с
номером 1 источнику разрешается передать
еще W-1 кадров до получения квитанции на кадр
1. Если же за это время квитанция на кадр 1
так и не пришла, то процесс передачи
приостанавливается, и по истечению
некоторого тайм-аута кадр 1 считается
утерянным (или квитанция на него утеряна) и
он передается снова.
Метод "окна" - непрерывная отправка пакетов
Выбор тайм-аута
Выбор времени
ожидания (тайм-аута) очередной квитанции
является важной задачей, результат решения
которой влияет на производительность
протокола TCP.
Тайм-аут не
должен быть слишком коротким, чтобы по
возможности исключить избыточные
повторные передачи, которые снижают
полезную пропускную способность системы.
Но он не должен быть и слишком большим,
чтобы избежать длительных простоев,
связанных с ожиданием несуществующей или
"заблудившейся" квитанции.
При выборе
величины тайм-аута должны учитываться
скорость и надежность физических линий
связи, их протяженность и многие другие
подобные факторы
В качестве
тайм-аута выбирается среднее время оборота,
умноженное на некоторый коэффициент.
Практика показывает, что значение этого
коэффициента должно превышать 2. В сетях с
большим разбросом времени оборота при
выборе тайм-аута учитывается и дисперсия
этой величины.
Варьируя
величину окна, можно повлиять на загрузку
сети. Чем больше окно, тем большую порцию
неподтвержденных данных можно послать в
сеть. Если сеть не справляется с нагрузкой,
то возникают очереди в промежуточных узлах-маршрутизаторах
и в конечных узлах-компьютерах.
При
переполнении приемного буфера конечного
узла "перегруженный" протокол TCP,
отправляя квитанцию, помещает в нее новый,
уменьшенный размер окна. Если он совсем
отказывается от приема, то в квитанции
указывается окно нулевого размера. Однако
даже после этого приложение может послать
сообщение на отказавшийся от приема порт.
Для этого, сообщение должно сопровождаться
пометкой "срочно" (бит URG в запросе
установлен в 1). В такой ситуации порт обязан
принять сегмент, даже если для этого
придется вытеснить из буфера уже
находящиеся там данные.
После приема
квитанции с нулевым значением окна
протокол-отправитель время от времени
делает контрольные попытки продолжить
обмен данными. Если протокол-приемник уже
готов принимать информацию, то в ответ на
контрольный запрос он посылает квитанцию с
указанием ненулевого размера окна.
Сообщения
протокола TCP называются сегментами и
состоят из заголовка и блока данных.
Заголовок сегмента имеет следующие поля:
![]() |
Порт источника (SOURS PORT) занимает 2 байта, идентифицирует процесс-отправитель; |
![]() |
Порт назначения (DESTINATION PORT) занимает 2 байта, идентифицирует процесс-получатель; |
![]() |
Последовательный номер (SEQUENCE NUMBER) занимает 4 байта, указывает номер байта, который определяет смещение сегмента относительно потока отправляемых данных; |
![]() |
Подтвержденный номер (ACKNOWLEDGEMENT NUMBER) занимает 4 байта, содержит максимальный номер байта в полученном сегменте, увеличенный на единицу; именно это значение используется в качестве квитанции; |
![]() |
Длина заголовка (HLEN) занимает 4 бита, указывает длину заголовка сегмента TCP, измеренную в 32-битовых словах. Длина заголовка не фиксирована и может изменяться в зависимости от значений, устанавливаемых в поле Опции; |
![]() |
Резерв (RESERVED) занимает 6 битов, поле зарезервировано для последующего использования; |
![]() |
Кодовые биты (CODE BITS) занимают 6 битов, содержат служебную информацию о типе данного сегмента, задаваемую установкой в единицу соответствующих бит этого поля: |
![]() |
URG - срочное сообщение; |
![]() |
ACK - квитанция на принятый сегмент; |
![]() |
PSH - запрос на отправку сообщения без ожидания заполнения буфера; |
![]() |
RST - запрос на восстановление соединения; |
![]() |
SYN - сообщение используемое для синхронизации счетчиков переданных данных при установлении соединения; |
![]() |
FIN - признак достижения передающей стороной последнего байта в потоке передаваемых данных. |
![]() |
Окно (WINDOW) занимает 2 байта, содержит объявляемое значение размера окна в байтах; |
![]() |
Контрольная сумма (CHECKSUM) занимает 2 байта, рассчитывается по сегменту; |
![]() |
Указатель срочности (URGENT POINTER) занимает 2 байта, используется совместно с кодовым битом URG, указывает на конец данных, которые необходимо срочно принять, несмотря на переполнение буфера; |
![]() |
Опции (OPTIONS) - это поле имеет переменную длину и может вообще отсутствовать, максимальная величина поля 3 байта; используется для решения вспомогательных задач, например, при выборе максимального размера сегмента; |
Протокол
обмена управляющими сообщениями ICMP (Internet
Control Message Protocol) позволяет маршрутизатору
сообщить конечному узлу об ошибках, с
которыми машрутизатор столкнулся при
передаче какого-либо IP-пакета от данного
конечного узла.
Управляющие
сообщения ICMP не могут направляться
промежуточному маршрутизатору, который
участвовал в передаче пакета, с которым
возникли проблемы, так как для такой
посылки нет адресной информации - пакет
несет в себе только адрес источника и адрес
назначения, не фиксируя адреса
промежуточных маршрутизаторов.
Протокол ICMP -
это протокол сообщения об ошибках, а не
протокол коррекции ошибок. Конечный узел
может предпринять некоторые действия для
того, чтобы ошибка больше не возникала, но
эти действия протоколом ICMP не
регламентируются.
Каждое
сообщение протокола ICMP передается по сети
внутри пакета IP. Пакеты IP с сообщениями ICMP
маршрутизируются точно так же, как и любые
другие пакеты, без приоритетов, поэтому они
также могут теряться. Кроме того, в
загруженной сети они могут вызывать
дополнительную загрузку маршрутизаторов.
Для того, чтобы не вызывать лавины
сообщения об ошибках, потери пакетов IP,
переносящие сообщения ICMP об ошибках, не
могут порождать новые сообщения ICMP.
Протокол ICMP
предоставляет сетевым администраторам
средства для тестирования достижимости
узлов сети. Эти средства представляют собой
очень простой эхо-протокол, включающий
обмен двумя типами сообщений: эхо-запрос и
эхо-ответ. Компьютер или маршрутизатор
посылают по интерсети эхо-запрос, в котором
указывают IP-адрес узла, достижимость
которого нужно проверить. Узел, который
получает эхо-запрос, формирует и отправляет
эхо-ответ и возвращает сообщение узлу -
отправителю запроса. В запросе могут
содержаться некоторые данные, которые
должны быть возвращены в ответе. Так как эхо-запрос
и эхо-ответ передаются по сети внутри IP-пакетов,
то их успешная доставка означает
нормальное функционирование всей
транспортной системы интерсети.
Во многих
операционных системах используется
утилита ping, которая предназначена для
тестирования достижимости узлов. Эта
утилита обычно посылает серию эхо-запросов
к тестируемому узлу и предоставляет
пользователю статистику об утерянных эхо-ответах
и среднем времени реакции сети на запросы.
Когда
маршрутизатор не может передать или
доставить IP-пакет, он отсылает узлу,
отправившему этот пакет, сообщение "Узел
назначения недостижим" (тип сообщения - 3).
Это сообщение содержит в поле кода значение,
уточняющее причину, по которой пакет не был
доставлен. Причина кодируется следующим
образом:
Код
|
Причина |
0 |
Сеть недостижима |
1 |
Узел недостижим |
2 |
Протокол недостижим |
3 |
Порт недостижим |
4 |
Требуется фрагментация, а
бит DF установлен |
5 |
Ошибка в маршруте, заданном
источником |
6 |
Сеть назначения неизвестна |
7 |
Узел назначения неизвестен |
8 |
Узел-источник изолирован |
9 |
Взаимодействие с сетью
назначения административно запрещено |
10 |
Взаимодействие с узлом
назначения административно запрещено |
11 |
Сеть недостижима для
заданного класса сервиса |
12 |
Узел недостижим для
заданного класса сервиса |
Все протоколы
обмена маршрутной информацией стека TCP/IP
относятся к классу адаптивных протоколов,
которые в свою очередь делятся на две
группы, каждая из которых связана с одним из
следующих типов алгоритмов:
![]() |
дистанционно-векторный алгоритм (Distance Vector Algorithms, DVA), |
![]() |
алгоритм состояния связей (Link State Algorithms, LSA). |
В алгоритмах
дистанционно-векторного типа каждый
маршрутизатор периодически и
широковещательно рассылает по сети вектор
расстояний от себя до всех известных ему
сетей. Под расстоянием обычно понимается
число промежуточных маршрутизаторов через
которые пакет должен пройти прежде, чем
попадет в соответствующую сеть.
Дистанционно-векторные
алгоритмы хорошо работают только в
небольших сетях. В больших сетях они
засоряют линии связи интенсивным
широковещательным трафиком. Наиболее
распространенным протоколом, основанным на
дистанционно-векторном алгоритме, является
протокол RIP (Routing Information Protocol).
Преимуществом протокола RIP является его
вычислительная простота, а недостатками -
увеличение трафика при периодической
рассылке широковещательных пакетов и
неоптимальность найденного маршрута.
Алгоритмы
состояния связей обеспечивают каждый
маршрутизатор информацией, достаточной для
построения точного графа связей сети. Все
маршрутизаторы работают на основании
одинаковых графов, что делает процесс
маршрутизации более устойчивым к
изменениям конфигурации.
Широковещательная рассылка используется
здесь только при изменениях состояния
связей, что происходит в надежных сетях не
так часто. Маршрутизатор периодически
обменивается короткими пакетами со своими
ближайшими соседями. Этот трафик также
широковещательный, но он циркулирует
только между соседями и поэтому не так
засоряет сеть.
Протоколом,
основанным на алгоритме состояния связей, в
стеке TCP/IP является протокол OSPF.
Большинство
протоколов маршрутизации, применяемых в
современных сетях с коммутацией пакетов,
ведут свое происхождение от сети Internet и ее
предшественницы - сети ARPANET. Для того, чтобы
понять их назначение и особенности, полезно
сначала познакомится со структурой сети
Internet, которая наложила отпечаток на
терминологию и типы протоколов.
Internet
изначально строилась как сеть,
объединяющая большое количество
существующих систем. С самого начала в ее
структуре выделяли магистральную сеть (core
backbone network), а сети, присоединенные к
магистрали, рассматривались как автономные
системы (autonomous systems). Магистральная сеть и
каждая из автономных систем имели свое
собственное административное управление и
собственные протоколы маршрутизации. Общая
схема архитектуры сети Internet показана на
рисунке 8.3. Далее маршрутизаторы будут
называться шлюзами для следования
традиционной терминологии Internet.
Шлюзы,
которые используются для образования
подсетей внутри автономной системы,
называются внутренними шлюзами (interior gateways),
а шлюзы, с помощью которых автономные
системы присоединяются к магистрали сети,
называются внешними шлюзами (exterior gateways).
Непосредственно друг с другом автономные
системы не соединяются. Соответственно,
протоколы маршрутизации, используемые
внутри автономных систем, называются протоколами
внутренних шлюзов (interior gateway protocol, IGP), а
протоколы, определяющие обмен маршрутной
информацией между внешними шлюзами и
шлюзами магистральной сети - протоколами
внешних шлюзов (exterior gateway protocol, EGP). Внутри
магистральной сети также может
использоваться любой собственный
внутренний протокол IGP.
Смысл
разделения всей сети Internet на автономные
системы в ее многоуровневом представлении,
что необходимо для любой крупной системы,
способной к расширению в больших масштабах.
Внутренние шлюзы могут использовать для
внутренней маршрутизации достаточно
подробные графы связей между собой, чтобы
выбрать наиболее рациональный маршрут.
Однако, если информация такой степени
детализации будет храниться во всех
маршрутизаторах сети, то топологические
базы данных так разрастутся, что потребуют
наличия памяти гигантских размеров, а время
принятия решений о маршрутизации
непременно возрастет.
Поэтому
детальная топологическая информация
остается внутри автономной системы, а
автономную систему как единое целое для
остальной части Internet представляют внешние
шлюзы, которые сообщают о внутреннем
составе автономной системы минимально
необходимые сведения - количество IP-сетей,
их адреса и внутреннее расстояние до этих
сетей от данного внешнего шлюза.
Развитием
протокола EGP является протокол BGP (Border
Gateway Protocol), имеющий много общего с EGP и
используемый наряду с ним в магистрали сети
Internet.
Протокол
OSPF (Open Shortest Path Firs) является
достаточно современной реализацией
алгоритма состояния связей (он принят в 1991
году) и обладает многими особенностями,
ориентированными на применение в больших
гетерогенных сетях.
Технология
стека TCP/IP сложилась в основном в конце 1970-х
годов и с тех пор основные принципы работы
базовых протоколов, таких как IP, TCP, UDP и ICMP,
практически не изменились. Однако, сам
компьютерный мир за эти годы значительно
изменился, поэтому долго назревавшие
усовершенствования в технологии стека TCP/IP
сейчас стали необходимостью.
Основными
обстоятельствами, из-за которых требуется
модификация базовых протоколов стека TCP/IP,
являются следующие.
![]() |
Повышение производительности компьютеров и коммуникационного оборудования. За время существования стека производительность компьютеров возросла на два порядка, объемы оперативной памяти выросли более чем в 30 раз, пропускная способность магистрали Internet в Соединенных Штатах выросла в 800 раз. |
![]() |
Появление новых приложений. Коммерческий бум вокруг Internet и использование ее технологий при создании intranet привели к появлению в сетях TCP/IP, ранее использовавшихся в основном в научных целях, большого количества приложений нового типа, работающих с мультимедийной информацией. Эти приложения чувствительны к задержкам передачи пакетов, так как такие задержки приводят к искажению передаваемых в реальном времени речевых сообщений и видеоизображений. Особенностью мультимедийных приложений является также передача очень больших объемов информации. Некоторые технологии вычислительных сетей, например, frame relay и ATM, уже имеют в своем арсенале механизмы для резервирования полосы пропускания для определенных приложений. Однако эти технологии еще не скоро вытеснят традиционные технологии локальных сетей, не поддерживающие мультимедийные приложения (например, Ethernet). Следовательно, необходимо компенсировать такой недостаток средствами сетевого уровня, то есть средствами протокола IP. |
![]() |
Бурное расширение сети Internet. В начале 90-х годов сеть Internet расширялась очень быстро, новый узел появлялся в ней каждые 30 секунд, но 95-й год стал переломным - перспективы коммерческого использования Internet стали отчетливыми и сделали ее развитие просто бурным. Первым следствием такого развития стало почти полное истощение адресного пространства Internet, определяемого полем адреса IP в четыре байта. |
![]() |
Новые стратегии администрирования. Расширение Internet связано с его проникновением в новые страны и новые отрасли промышленности. При этом в сети появляются новые органы администрирования, которые начинают использовать новые методы администрирования. Эти методы требуют появления новых средств в базовых протоколах стека TCP/IP. |
Основным
предложением по модернизации протокола IP
является предложение, разработанное
группой IETF. Сейчас принято называть ее
предложение версией 6 - IPv6, а все
остальные предложения группируются под
названием IP Next Generation, IPng.
Отличия IPv6
коротко можно описать следующим образом.
![]() |
Использование более длинных адресов. Новый размер адреса - наиболее заметное отличие IPv6 от IPv4. Версия 6 использует 128-битные адреса. |
![]() |
Гибкий формат заголовка. Вместо заголовка с фиксированными полями фиксированного размера (за исключением поля Резерв), IPv6 использует базовый заголовок фиксированного формата плюс набор необязательных заголовков различного формата. |
![]() |
Поддержка резервирования пропускной способности. В IPv6 механизм резервирования пропускной способности заменяет механизм классов сервиса версии IPv4. |
![]() |
Поддержка расширяемости протокола. Это одно из наиболее значительных изменений в подходе к построению протокола - от полностью детализированного описания протокола к протоколу, который разрешает поддержку дополнительных функций. |