Разбиение IP сети на подсети

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

Третий уровень, получивший название «уровень подсети», был выделен в пространстве адресов хостов. При этом поля адреса сети и адреса подсети в совокупности называют расширенным сетевым префиксом. Отрицательным следствием введения подсетей стало усложнение процедуры определения адреса хоста. Для определения адреса подсети и адреса хоста потребовалось ввести сетевую маску -32-битный адрес, в котором все биты, соответствующие битам расширенного сетевого префикса, установлены в 1, а соответствующие битам адреса хоста - в 0. Так, например, пусть необходимо в сети класса В132.10 выделить подсеть, содержащую не более 100 хостов. Для адресации такого числа сетевых устройств достаточно располагать 7 битами (27 =128), которые и отводятся для адреса хоста; оставшиеся 9 бит отводятся для номера подсети (их можно организовать 29 -2=510) а старшие 16 бит - это адрес сети.

Таким образом, маска подсети, в которой находятся хосты с адресами:

132.10.12.129, 132.10.12.130,....,132.10.12.254

будет иметь вид

11111111 11111111 11111111 10000000 (255.255.255.128). Если маршрутизатор получит пакет с адресом назначения 10000100 00001010 00001100 10110000 (132.10.12.176)

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

В данном случае получаем: 10000100 00001010 00001100 10000000, что соответствует адресу подсети 132.10.12.128.

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

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

Пример:

Возьмём сеть с адресом 192.168.1.0/24.

В ней максимальное число хостов 254(28-2зарезервированных)

24-маска, означает что первые 24 бита отведены под адрес сети, оставшиеся 8 под адреса хостов (всего адрес состоит из 32 бит).

Возьмём ту же сеть но с маской 25(192.168.1.0/25) – это означает, что первые 25 бит отведены под адрес сети, а оставшиеся под адреса хостов. Рассмотрим структуру последних 8 бит адреса :

.0 0000000 - старший бит этой группы отвечает за адрес подсети. В данном случае возможна организация двух подсетей:

.0 0000000 и .1 0000000, в каждой из которых допустимо 27-2=126 хостов.

И так получили две подсети:

Подсеть0: 192.168.1.0 – 192.168.1.127

Подсеть1: 192.168.128 – 192.168.1.255

Максимальная маска -30, т.к. при этом останется доступно лишь 22-2=2 хоста(при маске 31 в сети не будет ни одного хоста 21-2=0).

IP маршрутизация

Каждый хост (станция, маршрутизатор) ведет свои маршрутные таблицы, которые и определяют порядок обработки IP-пакетов. Если в таблице маршрутизации станции-отправителя указано, что станция назначения является непосредственно присоединенной к той же ЛВС, то из таблицы физических адресов, которая ведется на каждой сетевой станции, извлекается физический адрес узла назначения, пакет инкансулируется в кадр канального протокола и передается к станции назначения. Если таблица маршрутизации станции-отправителя не содержит искомый сетевой адрес, то пакет отправляется по адресу маршрутизатора, который был указан при конфигурировании станции в качестве шлюза по умолчанию (default router, default gateway). Этот шлюз обязательно имеет физический интерфейс в той же ЛВС, что и станция-отправитель. При получении пакета маршрутизатор проверяет, не совпадает ли адрес назначения этого пакета с его собственным IP-адресом. Если это так, то пакет передается модулю протокола, указанного в поле «Протокол» заголовка пакета. В противном случае, маршрутизатор посредством своей таблицы определяет адрес следующего хоста, которому он должен передать этот пакет, и свой интерфейс, на который следует его направить. Каждая строка в таблице маршрутизации содержит следующую информацию: IP-адрес сети (узла) назначения, IP-адрес следующего маршрутизатора, способного обеспечить передачу пакета в эту сеть (этому узлу), имя выходного интерфейса и некоторые флаги. Флаги содержат уточняющую информацию о каждой записи в таблице. Так например, флаг Hопределяет, является ли данная строка таблицы маршрутом к хосту (Н=1), или к сети (Н=0); флаг Gуточняет, является ли она маршрутом к другому маршрутизатору (G=1), или определяет путь к непосредственно подключенной станции (G=0).

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

Протокол ARP

Для доставки IP-пакета к станции назначения, или от одного маршрутизатора к другому, необходимо передать его протоколу канального уровня, который «умеет» передавать кадры только по физическим адресам устройств. В IP-сетях задачу преобразования сетевых адресов в физические решает протокол ARP (Address Resolution Protocol).

Пусть хост Н1 хочет отослать пакет хосту Н3, MAC-адрес которого не известен. Хост Н1 генерирует так называемый ARP-запрос - специальный пакет, имеющий широковещательный адрес назначения. В теле этого запроса находится IP-адрес хоста, MAC-адрес которого необходимо узнать. Каждый хост сети, получив такой пакет, сравнивает находящийся в нем IP-адрес со своим. Если совпадение обнаружено, то этот хост посылает запрашивающей станции ответный пакет (ARP-ответ), содержащий его физический адрес, в противном случае пакет уничтожается. Для того, чтобы уменьшить количество ARP-запросов, каждое сетевое устройство имеет специальную буферную память, в которой хранится ARP-таблица, пополняемая каждый раз, когда хост получает ARP-ответ. В ARP-таблице могут быть как статические, так и динамические записи. Статические записи добавляются администратором и сохраняются в таблице до перезагрузки устройства. Кроме того, в таблице всегда содержится широковещательный адрес (FF FF FF FF FF FF), который позволяет принимать широковещательные запросы. Динамические записи добавляются и удаляются автоматически.

Протокол ICMP

Если маршрутизатор не может по каким-то причинам отправить пакет к узлу назначения, то он отсылает соответствующее сообщение узлу-отправителю. Эти функции выполняет протокол ICMP - Internet Control Message Protocol. Хотя его сообщения инкапсулируются в IP-пакет, протокол ICMP является протоколом сетевого уровня. Протокол не способен информировать промежуточные узлы о возникших ошибках, поскольку в IP-пакете нет поля для записи маршрута. Соответственно, когда пакет пришел на некий маршрутизатор и в ходе его обработки обнаружилась необходимость отправки сообщения ICMP, то единственным получателем такого сообщения будет узел - отправитель исходного пакета.

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

Протокол UDP

Протокол IP «умеет» доставлять пакеты данных взаимодействующим хостам, но не «знает» как обеспечить взаимосвязь приложений и не имеет почти никаких средств обеспечения надежности доставки сообщений - он проверяет лишь целостность заголовка пакета. Два протокола транспортного уровня, UDP и TCP, обеспечивают IP-сетям механизмы взаимодействия прикладных процессов, выполняющихся на конечных станциях. Протокол UDP (User Datagram Protocol) ориентирован на сервис без установления соединений и не обеспечивает надежную передачу сегментов между сетевыми приложениями. Взаимодействие между прикладными процессами UDP реализует посредством механизма протокольных портов.Протокольный порт можно определить как абстрактную точку присутствия конкретной прикладной программы, выполняющейся на конкретном хосте. Когда рабочая станция получает пакет, в котором указан ее IP-адрес, она может направить его определенной программе, используя уникальный номер порта, назначенный этой программе в ходе выполнения процедуры установления соединения. Таким образом, в стеке протоколов TCP/IP порт является механизмом поддержания рабочей станцией одновременного выполнения нескольких прикладных процессов. Каждый порт (прикладной процесс) идентифицируется целым положительным числом (номером порта). Номера портов приложения, выполняющегося на разных станциях, указываются в заголовке UDP-сегмента. Эта информация дополняется на сетевом уровне IP-адресами взаимодействующих станций. Благодаря этому, создается видимость непосредственного обмена данными между процессами. Сегмент данных протокола UDP состоит из двух частей: заголовка и области данных. Заголовок имеет четыре 16-битных поля, определяющих порт отправителя, порт получателя, длину сегмента и контрольную сумму(вычисление опционально, при работе в надежных локальных сетях она не вычисляется и тогда это поле заполняется нулями).

Протокол TCP

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

Аналогично UDP, каждый прикладной процесс для TCP-модуля представляется номером порта. Структура из пары переменных (порт, IP-адрес) называется сокетом.Соединение между отправителем и получателем однозначно определяется двумя сокетами. Для хранения всей информации, необходимой для установления и поддержания соединения, определена специальная структура данных - блок управления передачей (Transmission Control Block - TCB).В эту структуру, кроме двух сокетов, входят флаги безопасности и приоритета соединения, указатели буферов отправителя и получателя, указатели номеров очередного сегмента и сегмента повторной посылки, а также ряд других переменных.

ТСР не сохраняет границы сообщений и рассматривает данные, которые поступают ему от приложения, как поток байтов. Свои сегменты он формирует так, как считает необходимым, но с учетом свойств протокола сетевого уровня (сегмент должен полностью поместиться в IP-пакет). Таким образом, если приложение отсылает сообщение, размер которого составляет 1000 байтов, то на приемной стороне оно может быть представлено двумя частями по 500 байт, тремя частями по 300, 300 и 400 байт и.т.д.

Наши рекомендации