- •6. Сети tcp/ip
- •6.1. Архитектура стека протоколов tcp/ip
- •6.2.1. Структура ip-пакета
- •6.2.2. Адресация в сетях ip
- •6.2.3. Разрешение ip-адресов в физические адреса сетевых устройств. Протокол arp
- •6.2.5. Icmp-протокол обмена управляющей информацией
- •6.2.5. Ip маршрутизация
- •6.2.6. Обработка ip-пакетов маршрутизатором
6.2.2. Адресация в сетях ip
Для идентификации каждого компьютера в IP-сети необходима система их адресации. Но главное, необходима возможность адресации логической совокупности компьютеров, называемой далее сетью. При этом учитывается, что сетевые устройства (компьютер, маршрутизатор и т.д.) могут иметь несколько интерфейсов, и каждый из них должен иметь уникальный адрес. Принятая в протоколк IP система адресации описана в документах RFC 990 и RFC 997.
Каждое сетевое устройство имеет адреса трех типов:
Физический адрес узла, формат которого определяется используемой технологией канального уровня. Для Ethernet и Token Ring – это 6-ти байтовый MAC-адрес сетевой карты, назначаемый ей фирмой-производителем.
Уникальный сетевой адрес (IP-адрес), имеющий размер 4 байта.
Символьный адрес – имя, назначаемое по определенным правилам и являющееся полным эквивалентом IP-адреса.
Первоначально IP-адрес имел двухуровневую структуру, т.е. он объединял в себе адрес сети и адрес хоста. Разделение сетевого адреса на 2 части имеет большой практический смысл, ибо позволяет маршрутизаторам существенно сократить размер своих таблиц, формируя их на основании только адресов сетей назначения. Для удовлетворения потребностей адресации сетей различного масштаба были введены несколько классов сетей, отличающиеся размером полей, отводимых для указания адреса сети и номера хоста. При этом, размер поля полного адреса всегда равен 32 битам. Структура адресов сетей разных классов приведена на рис. 6.4.
IP-адрес обычно записывается в форме 4-х трехразрядных десятичных чисел, разделяемых точкой. Каждое из этих десятичных чисел является представлением двоичного числа каждого байта адреса. Так, например, адрес 10000000 10000111 01000100 00000101 в десятичном представлении имеет вид 128.135.68.5. Поскольку первые два бита адреса суть 10, то это адрес хоста, принадлежащего сети класса B, и, следовательно, левые 16 бит являются адресом сети, а правые16 бит – адресом хоста.
Некоторые адреса являются зарезервированными и не могут присваиваться хостам. Так, адрес 127.х.х.х (х – означает любое число, обычно 0) зарезервирован для обратной связи, используемой при тестировании взаимодействия процессов на одной сетевой станции. Когда приложение использует этот адрес в качестве адреса назначения, стек TCP/IP данного хоста копирует данные из передающего буфера в приемный и ничего не передает на физический интерфейс. Поэтому адреса, начинающиеся на 127, запрещается присваивать сетевым устройствам. Другим зарезервированным адресом является, так называемый, широковещательный адрес, содержащий 1 во всех своих битах. Пакет с адресом назначения 255.255.255.255 будет доставлен всем устройствам сети, к которой принадлежит узел-отправитель, но маршрутизаторы такие пакеты не обрабатывают и в другие сети не передают. Вместе с тем, существует и направленное широковещание – способ адресации, при котором один пакет, отосланный в определенную сеть, будет доставлен всем ее хостам. Такой пакет должен содержать корректный адрес сети и иметь все биты адреса хоста установленными в 1. Так, например, пакет с адресом 184.90.255.255 будет доставлен всем станциям сети класса В, имеющей адрес 184.90.0.0.
Из рис. 6.4. хорошо видно, что значения первых четырех битов адреса однозначно определяют обе границы его сетевой части. Нетрудно сосчитать, что максимальное число сетей класса А равно 26+25+ ….+20 –1 =126 (сетевой префикс, состоящий из одних нулей недопустим). Каждая сеть класса А может содержать 224-2 = 16 777 214 устройств. В целом, адресный блок сетей класса А занимает около 50% общего адресного пространства. Таблица 6.2. содержит аналогичные показатели для сетей класса B и C.
Таблица6.2.
Класс сетей |
Значение первого байта адреса |
Количество сетей |
Количество хостов в сети класса |
Удельный вес класса в IP-адресном пространстве (%) |
А |
001 – 126 |
126 |
16 777 214 |
50 |
В |
128 – 191 |
16 384 |
65 534 |
25 |
С |
192 - 223 |
2 097 152 |
254 |
12,5 |
Для обеспечения уникальности сетевых адресов их распределение ведется специальными центрами, представляющими сеть взаимосвязанных структур, руководимых профильной организацией Интернет - Internet Assigned Numbers Authority (IANA). IANA делегирует свои полномочия по распределению IP-адресов региональным регистраторам (LIR), выделяя им определенные диапазоны сетей. Региональные регистраторы, в свою очередь, выделяют более мелкие диапазоны интернет-провайдерам и организациям.
Разбиение IP-сети на подсети
Рассмотренная выше двухуровневая схема адресации оказалась недостаточно гибкой в части как расходования адресного пространства, так и в части группировки сетей в логические подмножества. Для устранения этих недостатков в 1985 году была определена трехуровневая схема адресации (RFC 950). Необходимость перехода к ней можно проиллюстрировать следующим примером. Организация получила сеть класса В, позволяющую адресовать 65000 хостов. Пока в сети работало относительно немного станций, она функционировала благополучно. Но с ростом числа активных хостов неизбежно растет и широковещательный трафик, поскольку этот тип пакетов активно используется в служебных целях многими протоколами. Это обстоятельство неизбежно ведет к снижению эффективной производительности сети. Кроме того, управление несколькими десятками тысяч подключений из единого административного центра является очень трудной задачей. К этим проблемам следует добавить и то, что развитие любой организации сопровождается ростом самостоятельности ее подразделений, что также неизбежно должно отражаться и в структуре сети. Возможность же структурирования сети организации за счет получения дополнительных сетей была быстро исчерпана и резкая нехватка адресного пространства стала реальностью еще во второй половине 80-х годов. Кроме того, рост числа используемых малых сетей (класса С) вел к росту таблиц маршрутизации магистральных (межсетевых) маршрутизаторов и, следовательно, к снижению их производительности.
Перечисленные проблемы ограничивали масштабируемость сети; они, в значительной степени, были разрешены посредством введения в иерархию адресации третьего уровня. Этот уровень, получивший название «уровень подсети», был выделен в пространстве адресов хоста (рис. 6.5).
Поля адреса сети и адреса подсети в совокупности называют расширенным сетевым префиксом. В рассмотренном выше примере, выделение в пространстве адреса хоста 6 разрядов для адреса подсети позволяет организовать 62 подсети, содержащих по 1022 адресов хостов каждая. Такое разбиение на подсети не требует согласования со специальным органом Интернет, регулирующим распределение адресного пространства, и может выполняться администратором сети самостоятельно.
Отрицательным следствием введения подсетей стало усложнение процедуры определения адреса хоста. Действительно, сетевые устройства на основании анализа четырех старших битов сетевого адреса легко определяют класс сети, после чего, в случае двухуровневой иерархии, находится и граница между битами сетевого адреса и адреса хоста. В трехуровневой системе адресации этот прием работать не сможет. Для определения адреса подсети и адреса хоста потребовалось ввести сетевую маску – дополнительный 32-битный адрес, в котором все биты, соответствующие битам расширенного сетевого префикса, устанавливаются в 1, а биты, соответствующие битам адреса хоста – в 0. Так, например, пусть в сети класса В 132.10.0.0 необходимо выделить подсети, самая большая из которых содержит не более 100 хостов. Для адресации такого числа сетевых устройств достаточно располагать 7 битами (27 =128), которые и отводятся в нижней части битового пространства поля адреса. Оставшиеся 9 бит, из числа 16, предназначенных в сетях класса B для адресации хостов, будут использованы для задания номера подсети (их можно организовать 29-2=510). Старшие 16 бит, как и в двухуровневой иерархии, адресуют сеть. Таким образом, подсеть 132.10.12.128, в которой находятся хосты с адресами:
132.10.12.129, 132.10.12.130,….,132.10.12.254
будет иметь маску вида
11111111 11111111 11111111 10000000 (255.255.255.128).
Если маршрутизатор получит пакет с адресом назначения 132.10.12.176, в двоичной нотации имеющий вид
10000100 00001010 00001100 10110000,
и ему будет известна маска сети назначения (255.255.255.128), то выполнение по отношению к адресу и сетевой маске операции логического И даст адрес подсети. В данном случае получаем:
10000100 00001010 00001100 10000000,
что действительно соответствует адресу подсети 132.10.12.128. Далее, по таблице маршрутизации будет найден следующий узел на пути к этой подсети, и пакет будет отправлен на соответствующий интерфейс.
Заметим, что информация о маске подсети IP-пакетом не переносится (хост-источник о структуре сети, в которой находится получатель, ничего не знает). Передача информации о сетях (подсетях) является задачей протоколов маршрутизации, а все непосредственно присоединенные к маршрутизатору подсети вместе с их масками указываются администратором при конфигурировании маршрутизатора. Очевидно, что необходимость кроме адреса сети передавать и ее маску ведет к росту объема служебного трафика.
В документах, описывающих современные протоколы маршрутизации, часто делается ссылка на длину расширенного сетевого префикса, а не на маску подсети. В такой нотации сетевой адрес устройства в рассмотренном выше примере имеет вид 132.10.12.176/25. В качестве примера нумерации подсетей в таблице 6.3. приведено разбиение сети класса С на подсети. Указанное в таблице число хостов в каждой из подсетей на два меньше возможного числа адресов, поскольку адреса, в которых все биты поля адреса хоста установлены в ноль и в единицу, являются зарезервированными и используются как адрес подсети и ее широковещательный адрес, соответственно. Так при подсетях, приведенных в табл. 6.3., адрес 193.10.1.0 является адресом подсети 193.10.1.0/25, а не всей сети 193.10.1.0. Аналогично, адрес 193.10.1.255 является широковещательным только для подсети 193.10.1.224/27.
Таблица 6.3.
|
Адрес |
Маска |
Эквивалентный адрес подсети |
Число хостов в подсети
|
Исходная сеть |
193.10.1.0 |
255.255.255.0 |
193.10.1.0/24 |
254 |
Подсеть 1 |
193.10.1.0 |
255.255.255. 192 |
193.10.1.0/26 |
62 |
Подсеть 2 |
193.10.1.64 |
255.255.255. 192 |
193.10.1.64/26 |
62 |
Подсеть 3 |
193.10.1.128 |
255.255.255. 192 |
193.10.1.128/26 |
62 |
Подсеть 4 |
193.10.1.192 |
255.255.255. 192 |
193.10.1.192/26 |
62 |
Исходным документом (RFC
950) о подсетях предусматривалось, что
"классовая" сеть может быть
разделена на подсети фиксированного
размера (подсети с общей маской). Однако
это существенно ограничивало возможности
рационального использования адресного
пространства. Поэтому, дальнейшим
развитием трехуровневой модели адресации
стало снятие ограничения на постоянство
длины расширенного сетевого префикса
во всех подсетях. Использование масок
переменной длины (Variable Length Subnet Mask, VLSM)
явилось полным отказом от «классовой»
иерархии в адресном пространстве. Для
этой технологии адресное пространство
любой сети может содержать 2n
адресов (
).
При этом отпадает необходимость в
использовании крайних левых битов для
определения класса сети, что дает
дополнительные возможности расширения
адресного пространства. Ниже в таблице
6.4 представлены возможные блоки сетевых
адресов, сформированные на основе
иерархии VLSM.
Таблица 6.4
Длина сетевого префикса |
Количество адресов |
Максимальное количество хостов |
Маска сети |
Количество "классовых" сетей |
1 |
2 147 483 648 |
2 147 483 646 |
128.0.0.0 |
128 A |
2 |
1 073 741 824 |
1 073 741 822 |
192.0.0.0 |
64 A |
3 |
536 870 912 |
536 870 910 |
224.0.0.0 |
32 A |
4 |
268 435 456 |
268 435 454 |
240.0.0.0 |
16 A |
5 |
134 217 728 |
134 217 726 |
248.0.0.0 |
8 A |
6 |
67 108 864 |
67 108 862 |
252.0.0.0 |
4 A |
7 |
33 554 432 |
33 554 430 |
254.0.0.0 |
2 A |
8 |
16 777 216 |
16 777 214 |
255.0.0.0 |
1 A (256 B) |
9 |
8 388 608 |
8 388 606 |
255.128.0.0 |
(1/2 A) 128 B |
10 |
4 194 304 |
4 194 302 |
255.192.0.0 |
(1/4 A) 64 B |
11 |
2 097 152 |
2 097 150 |
255.224.0.0 |
(1/8 A) 32 B |
12 |
1 048 576 |
1 048 574 |
255.240.0.0 |
16 B |
13 |
524 288 |
524 286 |
255.248.0.0 |
8 B |
14 |
262 144 |
262 142 |
255.252.0.0 |
4 B |
15 |
131 072 |
13 107 |
255.254.0.0 |
2 B |
16 |
65 536 |
65 534 |
255.255.0.0 |
1 B (256 C) |
17 |
32 768 |
32 766 |
255.255.128.0 |
(1/2 B) 128 C |
18 |
16 384 |
16 382 |
255.255.192.0 |
(1/4 B) 64 C |
19 |
8 192 |
819 |
255.255.224.0 |
(1/8 B) 32 C |
20 |
4 096 |
4 094 |
255.255.240.0 |
16 C |
21 |
2 048 |
2 046 |
255.255.248.0 |
8 C |
22 |
1 024 |
1 022 |
255.255.252.0 |
4 C |
23 |
512 |
510 |
255.255.254.0 |
2 C |
24 |
256 |
254 |
255.255.255.0 |
1 C |
25 |
128 |
126 |
255.255.255.128 |
1/2 C |
26 |
64 |
62 |
255.255.255.192 |
1/4 C |
27 |
32 |
30 |
255.255.255.224 |
1/8 C |
28 |
16 |
14 |
255.255.255.240 |
1/16 C |
29 |
8 |
6 |
255.255.255.248 |
1/32 C |
30 |
4 |
2 |
255.255.255.252 |
1/64 C |
31 |
2 |
0 |
255.255.255.254 |
1/128 C |
32 |
1 |
1 |
255.255.255.255 |
1/256 C |
Из приведенного примера видно, что адресная иерархия стала, по существу, двухуровневой (сетевой префикс и адрес хоста), но число битов, отводимых для их представления, могут принимать любое значение из допустимого пространства в 32 бита.
Введение подсетей, решив проблемы масштабирования адресного пространства, потребовало определенного усложнения протоколов маршрутизации, которые должны переносить не только адрес сети (подсети), но и ее маску. В настоящее время все широко используемые протоколы маршрутизации (RIP-2, IS-IS, OSPF) переносят эту информацию.
