TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
Шрифт:
Организации с адресами сетей класса А или В, как правило, имеют очень большие сети, состоящие из множества локальных и нескольких региональных сетей. В этом случае имеет смысл разделить адресное пространство так, чтобы оно отражало структуру сети в виде нескольких подсетей. Для этого локальная часть адреса разделяется на часть для подсети (subnet part) и системную часть (system part) любым выбранным организацией способом (см. рис. 5.6).
Рис. 5.6. Деление локального адреса на подсеть и системную часть
Определение размера части адреса для подсети и присваивание номеров подсетям производится организацией, владеющей данной частью адресного пространства.
Адреса подсети часто создаются в соответствии с байтовой границей. Организация с адресом класса
128.121.1
128.121.2
128.121.3
Четвертый байт будет использоваться для идентификации отдельных хостов в подсети.
Организация с адресом класса С имеет только однобайтовое адресное пространство. Она может вообще не проводить деления на подсети или использовать первые 4 бита для адреса подсети и 4 бита для адресов хостов (см. рис. 5.7). На рисунке видно, что локальный адрес (61) имеет двоичное представление 0011 1101. Первые 4 бита идентифицируют подсеть, а последние 4 бита определяют системы.
Рис. 5.7. Четырехбитовая часть для подсети в адресе класса С
5.17 Маска подсети
Маршрутизация трафика на хост выполняется посредством анализа сетевой части и части для подсети IP-адреса. Сетевые части адресов классов А, В и С имеют фиксированный размер. Однако организация может указать собственный размер для поля подсети, и тут возникает вопрос о распознавании этой части в хостах и маршрутизаторах. На рис. 5.8 показано меню программы Chameleon для ввода размера поля подсети.
Рис. 5.8. Конфигурирование маски подсети
Размер поля подсети реально хранится в конфигурационном параметре, называемом маской подсети (subnet mask). Маска подсети имеет длину в 32 бита. Эти биты отражают для заданной сети длину поля подсети в адресе: для поля подсети в маске располагаются единицы, а для системного поля — нули.
Например, если для идентификации подсети используется третий байт, а сеть имеет адрес 128.121, то маска подсети будет:
11111111 11111111 11111111 00000000
Часто маска подсети записывается десятичной нотацией с точками: 255.255.255.0
Иногда применяется шестнадцатеричный формат:
X'FF-FF-FF-00
Подключенные к подсети хосты и маршрутизаторы конфигурируются с маской подсети. Общепринятым способом является использование одной маски подсети для всей интернет-сети организации. Однако из этого правила есть исключения, и некоторые организации применяют несколько размеров для различных подсетей.
Например, если сеть содержит большое количество линий "точка-точка", то номера подсети будут использованы очень неэкономно, поскольку в коммуникации участвуют только две системы в каждой из подсетей "точка-точка". Организация может решить использовать 14-битовую маску (255.255.255.252) для соединений "точка-точка".
Таблица 5.2 Подсети в сети класса В
Биты подсети | Количество подсетей | Биты для хостов | Количество хостов | Маска подсети |
---|---|---|---|---|
0 | 0 | 16 | 65534 | 255.255.0.0 |
1 | – | 15 | – | Недопустимая комбинация |
2 | 2 | 14 | 16382 | 255.255.192.0 |
3 | 6 | 13 | 8190 | 255.255.224.0 |
4 | 14 | 12 | 4094 | 255.255.240.0 |
5 | 30 | 11 | 2046 | 255.255.248.0 |
6 | 62 | 10 | 1022 | 255.255.252.0 |
7 | 126 | 9 | 510 | 255.255.254.0 |
8 | 254 | 8 | 254 | 255.255.255.0 |
9 | 510 | 7 | 126 | 255.255.255.128 |
10 | 1022 | 6 | 62 | 255.255.255.192 |
11 | 2046 | 5 | 30 | 255.255.255.224 |
12 | 4096 | 4 | 14 | 255.255.255.240 |
13 | 8190 | 3 | 6 | 255.255.255.248 |
14 | 16382 | 2 | 2 | 255.255.255.252 |
15 | – | 1 | – | Недопустимая комбинация |
В таблице 5.2 показаны способы разделения локального адреса для сети класса B. В ней также приведено количество подсетей и хостов в разделах. Это количество на 2 меньше, чем можно было предположить, поскольку существуют некоторые ограничения, которые будут рассмотрены ниже. Например, если подсеть использует 6 бит, шаблон маски подсети будет:
11111111 11111111 11111100 00000000,
что можно записать как 255.255.252.0. Далее мы рассмотрим, почему нельзя использовать комбинации 1/15 (1 бит для подсети и 15 бит для адресов хостов) и 15/1.
В приложении D представлены примеры использования в одной сети нескольких различных масок подсетей, что позволяет эффективно присваивать адреса.
5.18 Специальные зарезервированные адреса
Для номера подсети или хоста нельзя использовать любое число. Например, некоторые адреса служат для широковещательных рассылок, а другие — резервируются для таблиц маршрутизации. Следует руководствоваться правилом: никогда не применять блоки из одних нулей или единиц — как в поле подсети, так и в поле хостов. Также не существует сетевых номеров, состоящих из одних нулей или единиц.
5.18.1 Идентификация сети и подсети
Для указания сети удобно использовать формат адреса с точками. По соглашению, это делается при заполнении локальной части адреса нулями. Например, 5.0.0.0 указывает на сеть класса А, 131.18.0.0 — на сеть класса В, а 201.49.16.0 — на сеть класса С.
Аналогичным образом указываются подсети. Например, если сеть 131.18.0.0 использует 8-битовую маску подсети, то 131.18.5.0 и 131.18.6.0 будут определять подсети. Эта же нотация применяется для записи сети или подсети назначения в таблице маршрутизации IP. Данное соглашение приводит к тому, что такие адреса нельзя присваивать хостам и маршрутизаторам. Кроме того, использование нуля как номера подсети делает некоторые адреса неоднозначными, например 130.15.0.0. По этой причине применение нулей в поле подсети запрещено в стандарте (см. RFC 1122). Сайты, использующие ноль как маску подсети, тем самым нарушают соглашение.
5.18.2 Широковещательная рассылка в локальной подсети
Несколько IP-адресов используется для указания на широковещательную рассылку. В такой рассылке датаграммы можно направить на заданный набор систем в пределах ограниченной области.
IP-адрес 255.255.255.255 (т.е. адрес, содержащий 32 единицы) рассылает датаграмму всем системам локальной связи. (Некоторые продукты, и в частности BSD 2.4 TCP/IP, используют для широковещательных рассылок нули вместо единиц. Это нестандартизованный способ, и с течением времени такие операционные системы должны быть заменены на правильные.) Такие широковещательные рассылки применяются, например, в протоколах BOOTP и DHCP, когда при загрузке система запрашивает для себя IP-адрес и инициализационные данные у загрузочного сервера. Клиент посылает boot-запрос по адресу 255.255.255.255 и использует зарезервированный адрес 0.0.0.0 как IP-адрес источника.
Широковещательные рассылки в локальных сетях реализуются путем обрамления IP-датаграммы кадром, заголовок которого содержит в поле адреса назначения все единицы, что соответствует физическому адресу широковещательной рассылки.
5.18.3 Широковещательные рассылки к подсети
Широковещательную рассылку можно направить к заданной подсети, которая непосредственно подключена к подсети-источнику или может быть удаленной подсетью для хоста источника. Например, если 131.18.7.0 является подсетью сети класса В, то для широковещательного сообщения ко всем узлам этой подсети нужно использовать адрес 131.18.7.255.