Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
2.3 Бесклассовая модель
Предположим, что требуется подключить к сети Интернет сеть, состоящую из 2000 компьютеров. Для получения адресного пространства
требуется либо 8 сетей класса С, либо одна сеть класса B. Использование одной сети класса В нерационально, т.к. она вмещает 65534 адреса.
В свою очередь при использовании 8 сетей класса С каждая такая IP
сеть должна быть представлена отдельной строкой в таблице маршрутов на маршрутизаторах, т.к. эти 8 сетей с точки зрения маршрутизаторов никак не связаны между собой, хотя сети находятся в одной локальной сети и маршрут к ним одинаковый.
Таким образом, за счет экономии адресного пространства многократно
увеличивается служебный трафик в сети, затраты по поддержа-
49
нию и обработке маршрутных таблиц. Однако нет причин проводить
границу между сетью и хостом в IP-адрес по границе байта. Если выбрать длину сетевой части 21 бит, а на номер хоста отвести оставшиеся
11, то получится сеть, адресное пространство которой включает в себя
2046 IP-адресов, что максимально точно соответствует поставленному
требованию. В результате получится одна сеть, определяемая своим
уникальным 21-битным номером, и, следовательно, для ее обслуживания потребуется только одна запись в таблице маршрутов. В случае адресации вне классов с произвольным положением границы между сетью и хостом внутри IP-адреса к IP-адресу прилагается 32-битная
маска, которую называют маской сети или маской подсети. Сетевая
маска получается следующим образом: на позициях, соответствующих
номеру сети, биты равны 1, а на позициях, соответствующих номеру
хоста, биты равны 0.
Для удобства записи IP-адрес бесклассовой модели часто представляется в виде a.b.c.d/n, где a.b.c.d – это IP-адрес, а n – количество бит в
сетевой части. Например, для IP-адреса 89.186.244.16/23 маска подсети равна
11111111.1111111.11111110.000000002 = 255.255.254.0
Такая модель адресации называется бесклассовой (CIDR – Classless
Internet Direct Routing). В настоящее время классовая модель считается
устаревшей и маршрутизация осуществляется по бесклассовой модели.
2.4 Протокол TCP
Протокол TCP (Transmission Control Protocol) обеспечивает сквозную доставку данных между прикладными процессами, запущенными
на узлах, взаимодействующих по сети. Описание протокола TCP содержится в стандарте RFC-793. TCP является надежным байториентированным протоколом, устанавливающим соединение. Прото50
кол TCP находится между протоколом IP и собственно приложением.
Протокол IP обеспечивает пересылку дейтаграмм по сети, но не гарантирует доставку, целостность, порядок прибытия информации. Эти задачи возложены на протокол TCP.
При получении IP-дейтаграммы, в поле Protocol которой указан код
протокола TCP (6), модуль IP передает данные этой дейтаграммы модулю TCP. Эти данные представляют собой TCP-сегмент, содержащий
TCP-заголовок и данные пользователя. Модуль TCP анализирует служебную информацию заголовка, определяет, какому именно процессу
предназначены данные пользователя, проверяет целостность и порядок
прихода данных и подтверждает их прием другой стороне. По мере получения правильной последовательности неискаженных данных пользователя они передаются прикладному процессу.
Основными функциями TCP являются:
1. Базовая передача данных.
TCP выполняет передачу потоков данных между своими клиентами
в обоих направлениях. Клиенты TCP – это прикладные процессы, вызывающие модуль TCP при необходимости получить или отправить
данные процессу-клиенту на другом узле.
2. Обеспечение достоверности.
Модуль TCP обеспечивает защиту от повреждения, потери, дублирования и нарушения очередности получения данных. Для выполнения
этих задач все октеты в потоке данных сквозным образом пронумерованы в возрастающем порядке. Заголовок каждого сегмента содержит
число октетов данных в сегменте и порядковый номер первого октета
той части потока данных, которая пересылается в данном сегменте.
Номер первого байта в потоке определяется на этапе установления соединения. Для каждого сегмента вычисляется контрольная сумма, позволяющая обнаружить повреждение данных.
При удачном приеме октета данных принимающий модуль посылает отправителю подтверждение о приеме – номер удачно принятого
51
октета. Если в течение некоторого времени отправитель не получит
подтверждения, считается, что октет не дошел или был поврежден, и он
посылается снова. Этот механизм контроля надежности называется
PAR (Positive Acknowledgment with Retransmission). В действительности подтверждение посылается не для одного октета, а для некоторого
числа последовательных октетов.
Нумерация октетов используется также для упорядочения данных в
порядке очередности и обнаружения дубликатов (которые могут быть
посланы из-за большой задержки при передаче подтверждения или потери подтверждения).
3. Разделение каналов.
Протокол TCP обеспечивает работу нескольких соединений одновременно. Каждый прикладной процесс идентифицируется номером
порта; заголовок TCP-сегмента содержит номера портов процессаотправителя и процесса-получателя. При получении сегмента модуль
TCP извлекает номер порта и перенаправляет данные соответствующему процессу.
Наиболее распространенные сервисы сети Internet имеют свои стандартные номера портов, например 80 – WWW, 21 – FTP, и т.д.
Совокупность IP-адреса и номера порта называется сокетом. Сокет
уникальным образом идентифицирует прикладной процесс в сети
Internet. Сокет обычно записывают как a.b.c.d:n, где a.b.c.d – IP-адрес,
n – номер порта.
4. Управление соединением.
Соединение – это совокупность информации о состоянии потоков
данных, включающая в себя сокеты, номера отправленных, принятых и
подтвержденных октетов, а также размеры окон. Каждое соединение в
сети Интернет уникально идентифицируется парой сокетов.
Различают два типа открытия соединения: активное и пассивное.
При активном открытии TCP-модуль начинает процедуру установления
соединения с указанным сокетом, при пассивном – ожидает, что уда52
ленный TCP-модуль начнет процедуру установления соединения с указанного сокета. Указание 0.0.0.0:0 в качестве сокета при пассивном открытии означает, что ожидается соединение с любого сокета. Такой
способ применяется в серверных приложениях сети Интернет (почтовые, web- и ftp-серверы), которые ждут установления соединения от
клиента. Клиент же применяет процедуру активного открытия; сокет
при этом формируется из IP-адреса сервера и стандартного номера порта для данного сервиса.
5. Управление потоком данных.
Для ускорения и оптимизации процесса передачи больших объемов
данных протокол TCP применяет метод управления потоком, называемый методом скользящего окна, который позволяет отправителю посылать очередной сегмент, не дожидаясь подтверждения о получении в
пункте назначения предыдущего сегмента. Размер окна выбирается таким образом, чтобы подтверждения приходили вовремя и не происходила остановка передачи. Размер окна может динамически изменяться
получателем.
Для временной остановки посылки данных без разрыва соединения
достаточно объявить нулевое окно. Но даже и в этом случае через определенные промежутки времени будут отправляться сегменты с одним
октетом данных. Это делается для того, чтобы отправитель гарантированно узнал о том, что получатель вновь объявил ненулевое окно, поскольку получатель обязан подтвердить получение «пробных» сегментов, а в этих подтверждениях он укажет также и текущий размер своего
окна.
Модуль TCP может использовать алгоритм «медленного старта»,
формируя при установлении соединения окно перегрузки, размер которого изначально равен размеру одного сегмента. Это окно показывает,
сколько сегментов TCP-модуль, с его собственной точки зрения, может
отправить без получения подтверждения. Скользящее же окно показывает, какой объем неподтвержденных данных модулю разрешено от53
править с точки зрения удаленного модуля, получателя его данных. После прихода подтверждения от получателя окно перегрузки увеличивается на один сегмент и отправитель может выслать уже два сегмента,
не дожидаясь подтверждения. Такой подход позволяет постепенно увеличивать нагрузку на сеть. Если окно перегрузки становится больше
скользящего окна, объявляемого получателем, ограничение на передачу
неподтвержденных данных устанавливает уже скользящее окно получателя.
В случае, если никакие данные приложениями не передаются, а соединение открыто, модуль TCP может периодически посылать сегменты для выяснения того, не отключилась ли другая сторона без уведомления партнера.
TCP-сегмент состоит из заголовка и данных.
Заголовок сегмента состоит из 32-разрядных слов и имеет переменную длину, зависящую от размера поля Options, но всегда кратную 32
битам. За заголовком непосредственно следуют данные – часть потока
данных пользователя, передаваемая в данном сегменте. Формат TCPзаголовка приведен на рис. 2.1.
Рис. 2.1. Формат TCP-заголовка
54
Значения полей заголовка следующие.
Source Port, Destination Port – номера портов процесса-отправителя
и процесса-получателя.
Sequence Number (SN) (32 бита) – порядковый номер первого октета
в поле данных сегмента среди всех октетов потока данных для текущего соединения. Если в заголовке сегмента установлен бит SYN (фаза
установления соединения), то в поле SN записывается начальный
номер (ISN), например, 0. Номер первого октета данных, посылаемых
после завершения фазы установления соединения, равен ISN+1.
Acknowledgment Number (ACK) (32 бита) – если установлен бит
ACK, то это поле содержит порядковый номер октета, который отправитель данного сегмента желает получить. Это означает, что все предыдущие октеты (с номерами от ISN+1 до ACK-1 включительно) были
успешно получены.
Data Offset – длина TCP-заголовка в 32-битных словах.
Reserved – поле зарезервировано, заполняется нулями.
Control Bits – управляющие биты.
Флаг URG – поле срочного указателя задействовано.
Флаг ACK – поле номера подтверждения (Acknowledgment Number)
задействовано.
PSH – осуществить “проталкивание” – если модуль TCP получает
сегмент с установленным флагом PSH, то он немедленно передает все
данные из буфера приема процессу-получателю для обработки, даже
если буфер не был заполнен.
RST – перезагрузка текущего соединения.
SYN – запрос на установление соединения.
FIN – нет больше данных для передачи.
Window – размер окна в октетах.
Checksum – контрольная сумма.
Urgent Pointer – используется для указания длины срочных данных,
которые размещаются в начале поля данных сегмента. Указывает сме55
щение октета, следующего за срочными данными, относительно первого октета в сегменте. Протокол TCP не определяет, как именно должны
обрабатываться срочные данные, но предполагает, что прикладной
процесс будет предпринимать усилия для их быстрой обработки. Поле
Urgent Pointer задействовано, если установлен флаг URG.
Options – поле переменной длины; может отсутствовать или содержать одну опцию или список опций, реализующих дополнительные услуги протокола TCP.
Padding – выравнивание заголовка по границе 32-битного слова, если список опций занимает нецелое число 32-битных слов. Поле Padding
заполняется нулями.
2.5 Протокол UDP
Данный протокол иногда называют протоколом ненадёжной доставки. Этот протокол предоставляет прикладным процессам транспортные услуги, которые немногим отличаются от услуг протокола IP
(сетевого уровня).
Протокол UDP обеспечивает только доставку дейтаграммы и не гарантирует её выполнение. Протокол не поддерживает виртуального
соединения с удалённым модулем UDP. Основное достоинство – простота.
UDP-заголовок состоит из двух 32-битных слов и содержит следующие поля: «порт источника» указывает порт процесса источника,
куда может быть адресован ответ на данное сообщение. «порт получателя» является частью межсетевого адреса. В поле «длина» указывается
размер данной дейтаграммы с учётом длины заголовка в байтах. Поле
«контрольная сумма» обеспечивает контроль правильности данных в
заголовке.
За заголовком UDP-пакета следуют пользовательские данные. Протокол UDP рассматривает эти данные как целостное сообщение, т.е.
56
никогда не разбивает его для передачи в нескольких пакетах и никогда
не объединяет несколько сообщений для передачи в одном пакете. При
получении пакетов модуль UDP проверяет контрольную сумму и в случае удачной проверки передает содержимое сообщения прикладному
процессу, номер порта которого указан в заголовке. В случае, если проверка контрольной суммы выявила ошибку или процесса с указательным номером порта не существует, то UDP-пакет игнорируется. Если
UDP-пакеты поступают быстрее, чем модуль UDP успевает их обработать, то они также игнорируются.
Протокол UDP не имеет никаких средств для подтверждения безошибочного приема данных или получения сообщений об ошибке, не
обеспечивает поступление сообщений в порядке их отправки, не производит предварительные установления сеанса связи между прикладными
процессами и поэтому является ненадежным протоколом без установления соединения. Если приложение нуждается в этих услугах, то оно
должно использовать протокол TCP. Максимальная длина передаваемого по протоколу UDP сообщения равна максимальной длине
IP-дейтаграммы (64 Кб) за вычетом IP-заголовка минимальной длины
(20 байт) и UDP-заголовка (8 байт). Таким образом, максимальная длина передаваемого с использованием протокола UDP сообщения равна
65507 байтам. Обычно используются UDP-сообщения длиной 8 Кб.
Протокол UDP использует в таких прикладных процессах, как NFS,
TFTP, SNMP, DNS.
2.6 Маршрутизация
В архитектуре TCP/IP сети соединяются друг с другом коммутаторами IP-пакетов, которые называются шлюзами или IP-маршрутизаторами. Основная задача IP-маршрутизатора — определение по специальному алгоритму адреса следующего IP-маршрутизатора. Для реше57
ния этой задачи каждый IP-маршрутизатор должен располагать матрицей маршрутов (специальной базой данных, обеспечивающей маршрутизацию), которую необходимо регулярно обновлять. Это связано с
тем, что в сети Интернет используется дейтаграммный режим коммутации пакетов, и пакеты одного сообщения могут доставляться различными маршрутами, причём для каждого пакета должен выбираться
маршрут, оптимальный для ситуации, сложившейся в данный момент
на сети.
Алгоритм маршрутизации является тем фундаментом, на котором
строится вся работа базовой сети с архитектурой TCP/IP. Неожиданные
изменения в связности базовой сети должны рассматриваться как обычные явления и соответствующим образом обрабатываться, так же как и
перегрузки отдельных направлений и каналов. Существует ряд свойств,
которые считаются необходимыми для приемлемого алгоритма маршрутизации:
−
алгоритм маршрутизации должен распознавать отказ и восста-
новление каналов связи или других IP-маршрутизаторов и переключаться на другие, подходящие маршруты, причём время переключения
маршрутов должно быть меньшим, чем типичный тайм-аут пользователя протокола ТСР (около 1 минуты);
−
алгоритм должен исключать образование циклов в назначаемых
маршрутах как между соседними, так и между удаленными маршрутизаторами, а время существование циклов в случае их возникновения не
должно превышать типичного тайм-аута пользователя протокола TCP
(примерно 1 минута);
−
нагрузка, создаваемая управляющими сообщениями, необходи-
мыми для работы алгоритма маршрутизации, не должна ощутимо сказываться на нормальной работе сети. Изменение состояния сети, которое может прервать нормальную работу в некоторой локальной области
сети, не должно оказывать воздействия на удалённые участки;
58
−
использование маршрутов по умолчанию, вводимых обычно
как средство сокращения размеров базы данных по маршрутизации,
должно быть ограничено, так как наличие маршрутов по умолчанию
может вызвать множество проблем, связанных с возможностью появления циклов и ошибочных конфигураций.
Маршрутизатор должен обеспечивать эффективное распределение
собственных ресурсов как по пропускной способности каналов, так и
по объёму буферных запоминающих устройств, используемых для хранения ожидающих передачу пакетов. Например, нельзя допустить, чтобы высокоскоростной канал захватил весь объём буферных запоминающих устройств, ничего не оставив низкоскоростному каналу.
Маршрутизатор может назначить больший приоритет IP-пакетам, передающим управляющую или служебную информацию.
Наконец, алгоритм маршрутизации должен обеспечивать надёжный
алгоритм определения состояния каждого канала связи и узла в базовой
сети и, если требуется, состояние хостов сети.
По техническим, административным, географическим, а также иногда и политическим соображениям IP-маршрутизаторы группируются в
так называемые автономные системы. Маршрутизаторы, входящие в
одну автономную систему, контролируются одной организацией, обеспечивающей их сопровождение, и используют общие для данной автономной системы алгоритмы маршрутизации.
Конкретный вариант протокола маршрутизации, действующий
внутри одной автономной системы, называется внутренним протоколом маршрутизации (IGP — Interior Gateway Protocol).
Возможно, что некоторому IP-пакету, чтобы достичь места назначения, придётся пройти через ЦКП двух или более автономных систем.
Поэтому автономные системы должны иметь возможность обмениваться информацией о своём состоянии.
59
Протокол для обмена служебной информацией между автономными
системами называется внешним протоколом маршрутизации (EGP —
Exterior Gateway Protocol).
IP-маршрутизатору необходима реализация некоторого алгоритма
выбора маршрута по таблице маршрутизации, а также алгоритма обновления этой таблицы.
Процедура выбора пути заложена в протоколе IP, причём IPуровень не знает всего пути, а владеет лишь информацией о том, какому маршрутизатору передать IP-пакет с конкретным адресом места назначения.
Просмотр маршрутной таблицы происходит в три этапа:
− На первом производится поиск соответствия адреса, записанного
в IP-пакете, адресу места назначения в маршрутной таблице. В случае
успеха пакет посылается соответствующему маршрутизатору или непосредственно хосту.
− На втором ищется соответствие адреса, записанного в IP-пакете,
адресу некоторой региональной сети места назначения. Одна запись в
таблице маршрутизации соответствует всем хостам, входящим в данную региональную сеть. В случае успеха пакет посылается соответствующему маршрутизатору.
− Ищется маршрут «по умолчанию». Если таковой предусмотрен,
дейтаграмма посылается в соответствующий маршрутизатор.
Существуют статические и динамические алгоритмы маршрутизации.
Статический алгоритм есть способ маршрутизации, не изменяющийся при изменении топологии и состояния сети. Простая маршрутизация обеспечивается разными алгоритмами, типичными из которых
являются алгоритмы случайной и лавинной маршрутизации. Случайная
маршрутизация — передача данных из узла в любом, случайным образом выбранном направлении, кроме направления, по которому данные
60
поступили в узел. Данные, передаваемые по сети, с конечной вероятностью когда-либо достигают адресата. Лавинная маршрутизация — передача данных из узла во всех направлениях, кроме того, по которому
поступили данные. Очевидно, что хотя бы одно направление обеспечит
доставку пакета за минимальное время, т.е. лавинная маршрутизация
гарантирует малое время доставки.
Шлюзы, входящие в состав одной автономной системы, могут работать по алгоритмам динамической маршрутизации. Наиболее известными из них являются протоколы на основе алгоритма Беллмана-Форда
и протоколы на основе алгоритма Дейкстры. Шлюзы, работающие по
алгоритму Беллмана-Форда, хранят вектор длин кратчайших маршрутов до всех сетей, входящих в состав объединённой сети. Периодически
каждый шлюз передаёт свой вектор соседним шлюзам автономной системы, а элементы вектора, принятого от соседнего шлюза, складываются с длинами исходящих линий связи. На основе полученной таблицы
строится новый вектор длин кратчайших маршрутов.
Протоколы на основе алгоритма Беллмана-Форда достаточно просто реализуются, требуют мало памяти и процессорного времени, однако они обладают рядом общих недостатков. При увеличении количества сетей, входящих в состав автономной системы, резко возрастает
количество передаваемой информации, т.к. алгоритм требует, чтобы
все шлюзы периодически передавали свои векторы длин маршрутов.
Шлюзы, работающие по алгоритму Дейкстры (или SPF-алгоритм –
Shortest Path First), сначала определяют кратчайшие маршруты по всем
сетям автономной системы. Для этого в каждом шлюзе строится полное
дерево кратчайших путей с корнем в данном шлюзе. Процедура построения дерева кратчайших путей использует принцип, согласно которому в дерево кратчайших путей первой включается дуга с наименьшей
длиной. После того, как в шлюзе построено дерево кратчайших путей,
изменения характеристик линий связи, определяющих длины соответствующих дуг графа, изменения топологии сети приводят к небольшим
61
дополнительным вычислениям для корректирования дерева кратчайших путей. Шлюзы обмениваются только сведениями о длинах исходящих линий связи, а не векторами длин маршрутов, как в случае алгоритма Беллмана-Форда. Размер корректирующих пакетов со служебной
информацией для маршрутизации мал и не зависит от числа сетей в
автономной системе. Каждый шлюз посылает такие пакеты с помощью
лавинной маршрутизации. При появлении в сети нового шлюза или
включении новой линии связи изменения в топологии сети не учитываются при маршрутизации в течение некоторого времени для того,
чтобы информация о происшедших изменениях успела достигнуть всех
шлюзов автономной системы.
Алгоритм Дейкстры по сравнению с алгоритмом Беллмана-Форда
обеспечивает более реальную оценку ситуации в сети, более быструю
реакцию на важные изменения в сети (такие, как включение новой линии связи) и уменьшает зацикливание пакетов; однако алгоритм Дейкстры сложнее в реализации и требует в несколько раз больше памяти.
62