Протоколы маршрутизации в IP-сетях. Сетевая маршрутизация Протокол маршрутизации ip

5.4.1. Внутренние и внешние протоколы маршрутизации Internet

Большинство протоколов маршрутизации, применяемых в современных сетях с коммутацией пакетов, ведут свое происхождение от сети Internet и ее предше­ственницы - сети ARPANET. Для того чтобы понять их назначение и особенности, полезно сначала познакомиться со структурой сети Internet, которая наложила отпечаток на терминологию и типы протоколов.

Internet изначально строилась как сеть, объединяющая большое количество су­ществующих систем. С самого начала в ее структуре выделяли магистральную сеть (care backbone network), а сети, присоединенные к магистрали, рассматривались как автономные системы (autonomous systems, AS). Магистральная сеть и каждая из автономных систем имели свое собственное административное управление и соб­ственные протоколы маршрутизации. Необходимо подчеркнуть, что автономная система и домен имен Internet - это разные понятия, которые служат разным це­лям. Автономная система объединяет сети, в которых под общим административ­ным руководством одной организации осуществляется маршрутизация, а домен объединяет компьютеры (возможно, принадлежащие разным сетям), в которых под общим административным руководством одной организации осуществляется назначение уникальных символьных имен. Естественно, области действия авто­номной системы и домена имен могут в частном случае совпадать, если одна орга­низация выполняет обе указанные функции.

Общая схема архитектуры сети Internet показана на рис. 5.25. Далее маршрути­заторы мы будем называть шлюзами, чтобы оставаться в русле традиционной тер­минологии Internet.

Шлюзы, которые используются для образования сетей и подсетей внутри авто­номной системы, называются внутренними шлюзами (interiorgateways), а шлюзы, с помощью которых автономные системы присоединяются к магистрали сети, назы­ваются внешними шлюзами (exterior gateways). Магистраль сети также является ав­тономной системой. Все автономные системы имеют уникальный 16-разрядный номер, который выделяется организацией, учредившей новую автономную систе­му, InterNIC.

Соответственно протоколы маршрутизации внутри автономных систем называ­ются протоколами внутренних шлюзов (interior gateway protocol, IGP), а протоколы, определяющие обмен маршрутной информацией между внешними шлюзами и шлюзами магистральной сети - протоколами внешних шлюзов (exterior gateway protocol, EGP). Внутри магистральной сети также допустим любой собственный внутренний протокол IGP.

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



418 Глава 5 Сетевой уровень как средство построения больших сетей

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

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

Техника бесклассовой маршрутизации CIDR может значительно сократить объе­мы маршрутной информации, передаваемой между автономными системами. Так, если все сети внутри некоторой автономной системы начинаются с общего пре­фикса, например 194.27.0.0/16, то внешний шлюз этой автономной системы должен делать объявления только об этом адресе, не сообщая отдельно о существова­нии внутри данной автономной системы, например, сети 194.27.32.0/19 или 194.27.40.0/21, так как эти адреса агрегируются в адрес 194.27.0.0/16.



5.4. Протоколы маршрутизации в IP-сетях 419

Приведенная на рис. 5.25 структура Internet с единственной магистралью до­статочно долго соответствовала действительности, поэтому специально для нее был разработан протокол обмена маршрутной информации между автономными систе­мами, названный EGP. Однако по мере развития сетей поставщиков услуг структу­ра Internet стала гораздо более сложной, с произвольным характером связей между автономными системами. Поэтому протокол EGP уступил место протоколу BGP, который позволяет распознать наличие петель между автономными системами и исключить их из межсистемных маршрутов. Протоколы EGP и BGP используют­ся только во внешних шлюзах автономных систем, которые чаще всего организу­ются поставщиками услуг Internet. В маршрутизаторах корпоративных сетей работают внутренние протоколы маршрутизации, такие как RIP и OSPF.

5.4.2. Дистанционно-векторный протокол RIP

Построение таблицы маршрутизации

Протокол RIP (Routing Information Protocol) является внутренним протоколом маршрутизации дистанционно-векторного типа, он представляет собой один из наиболее ранних протоколов обмена маршрутной информацией и до сих пор чрез­вычайно распространен в вычислительных сетях ввиду простоты реализации. Кро­ме версии RIP для сетей TCP/IP существует также версия RIP для сетей IPX/SPX компании Novell.

Для IP имеются две версии протокола RIP: первая и вторая. Протокол RIPvl не поддерживает масок, то есть он распространяет между маршрутизаторами толь­ко информацию о номерах сетей и расстояниях до них, а информацию о масках этих сетей не распространяет, считая, что все адреса принадлежат к стандартными классам А, В или С. Протокол RIPv2 передает информацию о масках сетей, поэто­му он в большей степени соответствует требованиям сегодняшнего дня. Так как при построении таблиц маршрутизации работа версии 2 принципиально не отли­чается от версии 1, то в дальнейшем для упрощения записей будет описываться работа первой версии.

В качестве расстояния до сети стандарты протокола RIP допускают различные виды метрик: хопы, метрики, учитывающие пропускную способность, вносимые задержки и надежность сетей (то есть соответствующие признакам D, Т и R в поле «Качество сервиса» IP-пакета), а также любые комбинации этих метрик. Метрика должна обладать свойством аддитивности - метрика составного пути должна быть равна сумме метрик составляющих этого пути. В большинстве реализаций RIP используется простейшая метрика - количество хопов, то есть количество проме­жуточных маршрутизаторов, которые нужно преодолеть пакету до сети назначения.

Рассмотрим процесс построения таблицы маршрутизации с помощью протоко­ла RIP на примере составной сети, изображенной на рис. 5.26.

Этап 1 - создание минимальных таблиц

В этой сети имеется восемь IP-сетей, связанных четырьмя маршрутизаторами с идентификаторами: Ml, М2, МЗ и М4. Маршрутизаторы, работающие по протоко­лу RIP, могут иметь идентификаторы, однако для работы протокола они не явля­ются необходимыми. В RIP-сообщениях эти идентификаторы не передаются.

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

Таблица 5.14 позволяет оценить примерный вид минимальной таблицы марш­рутизации маршрутизатора Ml.

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

5.4. Протоколы маршрутизации в IP-сетях 421

RIP-сообщения передаются в пакетах протокола UDP и включают два парамет­ра для каждой сети: ее IP-адрес и расстояние до нее от передающего сообщение маршрутизатора.

Соседями являются те маршрутизаторы, которым данный маршрутизатор не­посредственно может передать IP-пакет по какой-либо своей сети, не пользуясь услугами промежуточных маршрутизаторов. Например, для маршрутизатора Ml соседями являются маршрутизаторы М2 и МЗ, а для маршрутизатора М4 - марш­рутизаторы М2 и МЗ.

Таким образом, маршрутизатор Ml передает маршрутизатору М2 и МЗ следую­щее сообщение:

сеть 201.36.14.0, расстояние 1;

сеть 132.11.0.0, расстояние 1;

сеть 194.27.18.0, расстояние 1.

Этап 3 - получение RIP-сообщений от соседей и обработка полученной информации

После получения аналогичных сообщений от маршрутизаторов М2 и МЗ маршру­тизатор Ml наращивает каждое полученное поле метрики на единицу и запомина­ет, через какой порт и от какого маршрутизатора получена новая информация (адрес этого маршрутизатора будет адресом следующего маршрутизатора, если эта запись будет внесена в таблицу маршрутизации). Затем маршрутизатор начинает сравнивать новую информацию с той, которая хранится в его таблице маршрути­зации (табл. 5.16).

Таблица 5.16. Таблица маршрутизации маршрутизатора Ml

Протокол RIP (Routing Information Protocol) представляет собой один из старейших протоколов обмена маршрутной информацией, однако он до сих пор чрезвычайно распространен в вычислительных сетях. Помимо версии RIP для сетей TCP/IP, существует также версия RIP для сетей IPX/SPX компании Novell.

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

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

На рисунке 8.1 приведен пример сети, состоящей из шести маршрутизаторов, имеющих идентификаторы от 1 до 6, и из шести сетей от A до F, образованных прямыми связями типа "точка-точка".

Рис. 8.1. Обмен маршрутной информацией по протоколу RIP

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

При необходимости отправить пакет в сеть D маршрутизатор просматривает свою базу данных маршрутов и выбирает порт, имеющий наименьшее расстояния до сети назначения (в данном случае порт, связывающий его с маршрутизатором 3).

Для адаптации к изменению состояния связей и оборудования с каждой записью таблицы маршрутизации связан таймер. Если за время тайм-аута не придет новое сообщение, подтверждающее этот маршрут, то он удаляется из маршрутной таблицы.

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

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

Рис. 8.2. Пример неустойчивой работы сети при использовании протокола RIP

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

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

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

Внутренний протокол маршрутизации RIP

Этот протокол маршрутизации предназначен для сравнительно небольших и относительно однородных сетей. Маршрут характеризуется вектором расстояния до места назначения. Предполагается, что каждый маршрутизатор является отправной точкой нескольких маршрутов до сетей, с которыми он связан. Описания этих маршрутов хранится в специальной таблице, называемой маршрутной. Таблица маршрутизации RIP содержит по записи на каждую обслуживаемую машину (на каждый маршрут). Запись должна включать в себя:

  • IP-адрес места назначения.
  • Метрика маршрута (от 1 до 15; число шагов до места назначения).
  • IP-адрес ближайшего маршрутизатора (gateway) по пути к месту назначения.
  • Таймеры маршрута.

Периодически (раз в 30 сек) каждый маршрутизатор посылает широковещательно копию своей маршрутной таблицы всем соседям-маршрутизаторам, с которыми связан непосредственно. Маршрутизатор-получатель просматривает таблицу. Если в таблице присутствует новый путь или сообщение о более коротком маршруте, или произошли изменения длин пути, эти изменения фиксируются получателем в своей маршрутной таблице. Протокол RIP должен быть способен обрабатывать три типа ошибок:

Циклические маршруты.

Для подавления нестабильностей RIP должен использовать малое значение максимально возможного числа шагов (не более 16).

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

Протокол состояния связей OSPF

Протокол OSPF (Open Shortest Path Firs) является реализацией алгоритма состояния связей (он принят в 1991 году) и обладает многими особенностями, ориентированными на применение в больших гетерогенных сетях.

Протокол OSPF вычисляет маршруты в IP-сетях, сохраняя при этом другие протоколы обмена маршрутной информацией.

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

Для распространения по сети данных о состоянии связей маршрутизаторы обмениваются сообщениями другого типа. Эти сообщения называются router links advertisement - объявление о связях маршрутизатора (точнее, о состоянии связей). OSPF-маршрутизаторы обмениваются не только своими, но и чужими объявлениями о связях, получая в конце-концов информацию о состоянии всех связей сети. Эта информация и образует граф связей сети, который, естественно, один и тот же для всех маршрутизаторов сети.

Протокол BGP

Общая схема работы BGP такова. BGP-маршрутизаторы соседних АС, решившие обмениваться маршрутной информацией, устанавливают между собой соединения по протоколу BGP и становятся BGP-соседями (BGP-peers).

Далее BGP использует подход под названием path vector, являющийся развитием дистанционно-векторного подхода. BGP-соседи рассылают (анонсируют, advertise) друг другу векторы путей (path vectors). Вектор путей, в отличие от вектора расстояний, содержит не просто адрес сети и расстояние до нее, а адрес сети и список атрибутов (path attributes), описывающих различные характеристики маршрута от маршрутизатора-отправителя в указанную сеть. В дальнейшем для краткости мы будем называть набор данных, состоящих из адреса сети и атрибутов пути до этой сети, маршрутом в данную сеть.

Реализация BGP

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

Поток информации, которым обмениваются BGP-соседи по протоколу TCP, состоит из последовательности BGP-сообщений. Максимальная длина сообщения 4096 октетов, минимальная - 19. Имеется 4 типа сообщений.

Протокол передачи данных TCP/IP

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

  • Transmission Control Protocol (TCP) - транспортный протокол;
  • Internet Protocol (IP) - протокол маршрутизации.

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

Аналогично передаваемая по сети информация "упаковывается в конверт", на котором "пишутся" IP-адреса компьютеров получателя и отправителя, например "Кому: 198.78.213.185", "От кого: 193.124.5.33". Содержимое конверта на компьютерном языке называется IP-пакетом и представляет собой набор байтов.

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

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

Internet Protocol (IP) обеспечивает маршрутизацию IP-пакетов, то есть доставку информации от компьютера-отправителя к компьютеру-получателю.

Определение маршрута прохождения информации. "География" Интернета существенно отличается от привычной нам географии. Скорость получения информации зависит не от удаленности Web-сервера, а от количества промежуточных серверов и качества линий связи (их пропускной способности), по которым передается информация от узла к узлу.

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

Проследим, как реализуется доступ к информации в "московской" части Интернета к одному из наиболее популярных поисковых серверов российского Интернета www.rambler.ru.

Определение маршрута прохождения информации

2. В окне Сеанс MS-DOS в ответ на приглашение системы ввести команду .

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


Трассировка маршрута передачи информации показывает, что сервер www.rambler.ru находится от нас на "расстоянии" 7 переходов, т. е. информация передается через шесть промежуточных серверов Интернета (через серверы московских провайдеров МТУ-Информ и Демос). Скорость передачи информации между узлами достаточно высока, на один "переход" тратится от 126 до 138 мс.

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

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

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

Transmission Control Protocol (TCP) , то есть транспортный протокол, обеспечивает разбиение файлов на IP-пакеты в процессе передачи и сборку файлов в процессе получения.

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

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

Определение времени обмена IP-пакетами

1. Соединиться с Интернетом, ввести команду [Программы-Сеанс MS-DOS].

2. В окне Сеанс MS-DOS в ответ на приглашение системы ввести команду .

3. В окне Сеанс MS-DOS высветится результат пробного прохождения сигнала в четырех попытках. Время отклика характеризует скоростные параметры всей.цепочки линий связи от сервера до локального компьютера.


Вопросы для размышления

1. Что обеспечивает целостное функционирование глобальной компьютерной сети Интернет?

Практические задания

4.5. Проследить маршрут прохождения информации от одного из наиболее популярных поисковых серверов Интернета www.yahoo.com, расположенного в "американском" сегменте Интернета.

4.6. Определить время обмена IP-пакетами с сервером www.yahoo.com.

IP расшифровывается как Internet Protocol (протокол Интернет), и конкретно 4-ая версия этого протокола на текущий момент является наиболее распространенной. IPv4 определен через RFC 791 .

В рамках OSI это протокол сетевого (3-го) уровня. Этот уровень, напоминаю, предназначен для определения пути передачи данных.

IPv4 использует коммутацию пакетов. При этом, исходное передаваемое сообщение разделяется на части небольшого размера (пакеты), которые передаются по сети независимо.

Кроме того, IPv4 не гарантирует доставку пакетов, или отсутсвие дубликатов. Это так называемая “best effort delivery” (в отличие от гарантированной доставки). Соответственно, эти задачи переходят к протоколам более высокого уровня, например, TCP.

Адресация

IPv4 идентифицирует отправителя и получателя при помощи 32-битного адреса, что ограничивает число возможных адресов 4 294 967 296. Из этого количества IPv4 резервирует специальные диапазоны адресов, называемые частными (~18 млн.) и мультикаст (~270 млн).

Адреса обычно записываются в виде четырех десятичных октетов через точку, например: 198.51.100.25 соответствует числу C6336419 16 .

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

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

Класс Первые биты Длина адреса сети Длина адреса узла
A 0 8 24
B 10 16 16
C 110 24 8
D 1110 N/A N/A
E 1111 N/A N/A
Класс Начало диапазона Конец диапазона
A 0.0.0.0 127.255.255.255
B 128.0.0.0 191.255.255.255
C 192.0.0.0 223.255.255.255
D 224.0.0.0 239.255.255.255
E 240.0.0.0 255.255.255.255

Класс D зарезервирован для мультикаста, класс E – просто зарезервирован “на всякий случай”.

Длина адреса сети и длина адреса узла определялись первыми битами адреса. Примерно с 1985 года от этого тоже отказались. Причины этого в том, что многие организации требовали больше адресов, чем предоставляла сеть класса C и получали сеть класса B. Сеть класса B, однако, превышала требования организации в разы.

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

Например, 192.0.2.0/24 означает, что первые 24 бита (три октета) относятся к адресу сети, а остальные – к адресу узла. /24 эквивалентно маске сети 255.255.255.0.

Использование масок сетей описано в RFC 1517 .

Многочисленные стандарты так же резервируют различные диапазоны адресов для специальных нужд.

Диапазон Описание RFC
0.0.0.0/8 Текущая сеть (адрес источника) 6890
10.0.0.0/8 Частная сеть 1918
100.64.0.0/10 Разделяемое адресное пространство CGN 6598
127.0.0.0/8 Loopback 6890
169.254.0.0/16 Автоконфигурация 3927
172.16.0.0/12 Частная сеть 1918
192.0.0.0/24 IETF Protocol Assignments 6890
192.0.2.0/24 Документация и примеры 1 5737
192.88.99.0/24 Релей ipv6 to ipv4 3068
192.168.0.0/16 Частная сеть 1918
198.18.0.0/15 Тестирование пропускной способности сети 2544
198.51.100.0/24 Документация и примеры 2 5737
203.0.113.0/24 Документация и примеры 3 5737
224.0.0.0/4 Мультикаст 5771
240.0.0.0/4 Зарезервировано 1700
255.255.255.255 Широковещательный запрос 919

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

Например, 203.0.113.0 означает (в тексте) сеть 203.0.113.0/24, а 203.0.113.255 – широковещательный запрос в эту сеть.

Формат пакета

Пакет состоит из заголовка и данных. IP не предполагает никакой проверки целостности. Нижележащий протокол (скажем, Ethernet) уже обеспечивает проверку целостности на канальном уровне, а вышележащий (скажем, TCP)– на уровне данных.

Версия, 4 бита Первое поле заголовка. В IPv4 имеет значение 0010 2 , т.е. 4. Длина заголовка, 4 бита Количество 32-битных слов в заголовке. Минимальное значение 5, что соответствует длине заголовка 20 байт. Максимальное – 15, длина заголовка 60 байт. DSCP или ToS – тип сервиса, 6 бит Определяет приоретизацию, скажем, для VoIP. ECN, 2 бита Флаг явного указания перегруженности сети. Требует поддержки с обеих сторон (принимающей и передающей). При получении этого флага, понижается скорость передачи. Если поддержки флага нет, пакеты просто отбрасываются. Полная длина, 16 бит Полная длина пакета в байтах, включая заголовок и данные. Минимальная длина – 20, максимальная – 65535. Идентификация, 16 бит Служит для уникальной идентификации датаграммы. Поскольку при передачи по различным сетям может быть необходимо разделить пакет на более мелкие части, это поле служит для идентификации частей, принадлежащих одному пакету. Флаги, 3 бита

Битовые флаги:

  1. Зарезервирован, всегда 0
  2. Не фрагментировать. Если дальнейшая передача пакета требует фрагментации, пакет отбрасывается.
  3. Больше фрагментов. Для фрагментированных пакетов, у всех, кроме последнего, этот флаг установлен в 1.
Сдвиг, 13 бит Сдвиг фрагмента относительно начала датаграммы, измеряемый в блоках по 64 бита. Первый фрагмент имеет сдвиг 0. Максимальный сдвиг – 65528 байт, что превышает максимальную длину пакета 65515 (за вычетом 20-байтного заголовка). Время жизни (TTL), 8 бит Когда пакет проходит через маршрутизатор, это поле уменьшается на 1. Если это поле равно нулю, маршрутизатор отбрасывает его. Протокол, 8 бит
  • 1 - ICMP
  • 6 - TCP
  • 17 - UDP
Контрольная сумма заголовка, 16 бит Считается сумма 16-битных слов в заголовке, кроме, собственно, контрольной суммы. Эта сумма так же суммируется блоками по 16 бит, пока не останется один. Затем к результату побитово применяется отрицание. Адрес отправителя, 32 бита Тут все ясно Адрес получателя, 32 бита Тут тоже все ясно. Опции (опциональное поле)

Используется редко. Состоит из блоков заголовок-данные. Заголовок опции имеет длину 8-16 бит и состоит из полей:

  • Тип опции, 8 бит – поле, определяющее, что это за опция. Значение “0” означает окончание списка опций. Всего зарегистрированно 26 кодов.
  • Длина, 8 бит – размер всей опции в битах, включая заголовок. Для некоторых типов опций может отсутствовать.

ARP

IP определяет логические адреса. Однако, чтобы отправить пакет в сети Ethernet, необходимо так же знать физический адрес целевого узла (либо маршрутизатора). Для сопоставления одного с другим используется протокол ARP.

ARP (Протокол резолюции адресов) – это формально протокол сетевого (3-го) уровня в модели OSI, хотя фактически обеспечивает взаимодействие 2-го и 3-го уровней. ARP реализован для различных пар протоколов 2-го и 3-го уровней.

Сам протокол построен на простой схеме запрос-ответ. Рассмотрим на конкретном примере.

Если узел сети, скажем, A с логическим адресом 198.51.100.1 (в сети 198.51.100.0/24) хочет отправить пакет узлу B с логическим адресом 198.51.100.2, он посылает широковещательный запрос протокола второго уровня (в данном случае Ethernet) с инкапсулированным сообщением ARP, спрашивающим узлы сети – какой физический адрес у узла с логическим адресом 198.51.100.2, и содержащим логический и физический адреса узла А. Узел B, увидев собственный логический адрес в запроссе, посылает ответ узлу A по полученным в запросе логическому и физическому адресу. Результаты запросов кешируются.

Сообщения ARP имеют следующую структуру:

Физический протокол (HTYPE), 2 байта Используемый протокол 2 уровня. Ethernet имеет идентификатор 1. Логический протокол (PTYPE), 2 байта Используемый протокол 3 уровня. Соответствует типам EtherType. IPv4 имеет идентификатор 0x0800. Длина физического адреса (HLEN), 1 байт Длина физического адреса в октетах, для Ethernet – 6 Длина логического адреса (PLEN), 1 байт Длина логического адреса в октетах, для IPv4 – 4 Операция (OPER), 2 байта 1 для запроса, 2 для ответа, и множество других вариантов для расширений протокола. Физический адрес отправителя (SHA), HLEN байт В запросе – адрес запрашивающего. В ответе – адрес запрошенного узла. Логический адрес отправителя (SPA), PLEN байт
Физический адрес получателя (THA), HLEN байт В запросе игнорируется. В ответе – адрес запрашиваюшего. Логический адрес получателя (TPA), PLEN байт

Обычно узлы сети так же посылают ARP-сообщения при смене IP-адреса или при включении. Обычно это реализуется как APR-запрос, в котором TPA=SPA , а THA=0. Другой вариант – ARP-ответ, в котором TPA=SPA и THA=SHA.

Кроме того, ARP может быть использован для детектирования конфликта логических адресов (при этом SPA=0).

Существуют расширения протокола, производящие обратные операции, InARP (Inverse ARP), получающий L3-адрес по L2-адресу и RARP, получающий L3-адрес запрашивающего узла.

RARP использовался для автоконфигурирования L3-адресов. Впоследствии заменен протоколом BOOTP, а затем DHCP.

Маршрутизация в сетях IPv4

Основной алгоритм маршрутизации в сетях IPv4 называется алгоритмом пересылки.

Если есть целевой адрес D и префикс сети N, то

  • Если N совпадает с префиксом сети текущего узла, послать данные по локальной связи.
  • Если в таблице маршрутизации есть маршрут для N, послать данные next-hop маршрутизатору.
  • Если есть маршрут по умолчанию, послать данные next-hop маршрутизатору по умолчанию
  • Иначе – ошибка.

Таблица маршрутизации представляет собой таблицу сопоставления адресов сетей и адресов next-hop маршрутизаторов для этих сетей. Так, например узел с адресом 198.51.100.54/24 может иметь такую таблицу маршрутизации: 203.0.113.0/24

Destination Gateway Device
198.51.100.0/24 0.0.0.0 eth0
203.0.113.0/24 198.51.100.1 eth0
0.0.0.0/0 203.0.113.1 eth0

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

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

Например, узел 198.51.100.54/24 имеет таблицу маршрутизации:

Destination Gateway Device
198.51.100.0/24 0.0.0.0 eth0
203.0.113.0/24 198.51.100.1 eth0
203.0.113.224/27 198.51.100.5 eth0
Понравилась статья? Поделитесь с друзьями!