Использование масок в IP-адресации
Традиционная схема деления IР-адреса на номер сети и номер узла основана на понятии класса, который определяется значениями нескольких первых бит адреса. Именно потому, что первый байт адреса 185.23.44.206 попадает в диапазон 128-191, мы можем сказать, что этот адрес относится к классу В, а значит, номером сети являются первые два байта, дополненные двумя нулевыми байтами — 185.23.0.0, а номером узла — 0.0.44.206.
Можно использовать также другой признак, с помощью которого можно было бы более гибко устанавливать границу между номером сети и номером узла. В качестве такого признака сейчас получили широкое распространение маски. Маска — это число, которое используется в паре с IР-адресом; двоичная запись маски содержит единицы в тех разрядах, которые должны в IР-адресе интерпретироваться как номер сети. Поскольку номер сети является цельной частью адреса, единицы в маске также должны представлять непрерывную последовательность.
Для стандартных классов сетей маски имеют следующие значения:
• класс А - 11111111. 00000000. 00000000. 00000000 (255.0.0.0);
• класс В - 11111111. 11111111. 00000000. 00000000 (255.255.0.0);
• класс С -11111111. 11111111.11111111. 00000000(255.255.255.0).
Снабжая каждый IР-адрес маской, можно отказаться от понятий классов адресов и сделать более гибкой систему адресации. Например, если рассмотренный выше адрес 185.23.44.206 ассоциировать с маской 255,255.255.0, то номером сети будет 185.23.44.0, а не 185.23.0.0, как это определено системой классов.
В масках количество единиц в последовательности, определяющей границу номера сети, не обязятельно должно быть кратным 8, чтобы повторять деление адреса на байты. Пусть, например, для IР-адреса 129.64.134.5 указана маска 255.255.128.0, то есть в двоичном виде:
IP-адрес 129.64.134.5 - 10000001. 01000000.10000110. 00000101;
маска 255.255.128.0 - 11111111.11111111.10000000.00000000.
Если игнорировать маску, то в соответствии с системой классов адрес 129.64.134.5относится к классу В, а значит, номером сети являются первые 2 байта — 129.64.0.0, а номером узла – 0.0.134.5.
Если использовать для определения границы номера сети маску, то 17 последовательных единиц в маске, «наложенные» на IР-адрес, определяют в качестве номера сети в двоичном выражении число:10000001.01000000. 10000000. 00000000 или в десятичной форме записи — номер сети 129.64.128.0, а номер узла 0.0.6.5.
Механизм масок широко распространен в IР-маршрутизации, причем маски используются для самых разных целей, в-частности, для смягчения проблемы дефицита адресов, которая сравнительно давно наблюдается в сети Internet. Очень трудно получить адрес класса В и практически невозможно стать обладателем адреса класса А.
Существует ряд современных технологий, направленных на более экономное расходование IР-адресов. Одной из таких технологий является технология масок и ее развитие — технология безклассовой междоменной маршрутизации. Эта технология отказывается от традиционной концепции разделения адресов протокола IР на классы, что позволяет получать в пользование столько адресов, сколько реально необходимо. Благодаря этому поставщик услуг получает возможность «нарезать» блоки из выделенного ему адресного пространства в точном соответствии с требованиями каждого клиента, при этом у него остается пространство для маневра на случай его будущего роста.
Другая технология, которая может быть использована для снятия дефицита адресов, - это трансляция адресов. Узлам внутренней сети адреса назначаются произвольно (естественно, в соответствий с общими правилами, определенными в стандарте), так, как будто эта сеть работает автономно. Внутренняя сеть соединяется с Internet через некоторое промежуточное устройство (маршрутизатор, межсетевой экран). Это промежуточное устройство получает в свое распоряжение некоторое количество внешних «нормальных» IР-адресов, согласованных с поставщиком услуг или другой организацией, распределяющей IР-адреса. Промежуточное устройство, называемое прокси–сервер (proxy-server), способно преобразовывать внутренние адреса во внешние, используя для этого некие таблицы соответствия. Для внешних пользователей все многочисленные узлы внутренней сети выступают под несколькими внешними IР-адресами. При получении внешнего запроса это устройство анализирует его содержимое и при необходимости пересылает его во внутреннюю сеть, заменяя IР-адрес на внутренний адрес этого узла. Процедура трансляции
адресов определена в соглашении RFC 1631.
Для разделения трафика сетей с большим количеством узлов применяется разделение на подсети (Subnet) требуемого размера. Адрес подсети использует несколько старших бит хост-части IP-адреса, оставшиеся младшие биты — нулевые.
Внутренний трафик подсети изолируется от остальной сети маршрутизатором. Область адресов подсети определяется значением маски подсети. Маска является 32-битным числом, представляемым по общим правилам записи IP-адреса, у которого старшие биты, соответствующие сетевой и подсетевои части адреса, имеют единичное значение, младшие (локальная хост-часть) — нулевые.
При посылке IP-дейтаграммы узел сравнивает IP-адрес назначения со своим IP-адресом и накладывает на результат маску подсети. Ненулевое значение результата этой операции является указанием на передачу пакета из подсети во внешнюю сеть. Термин маршрутизация означает передачу дейтаграммы от одного узла к другому.
Прямая маршрутизация (Direct Routing) — осуществляется между узлами одной подсети. В этом случае источник знает конкретный физический адрес получателя и инкапсулирует IP-дейтаграмму во фрейм сети, содержащий этот адрес и непосредственно передающийся по сети получателю.
Непрямая маршрутизация (Indirect Routing) — передача дейтаграмм между узлами различных подсетей. Обнаружив расхождение немаскированной (сетевой) части IP-адресов, источник посылает фрейм с IP-дейтаграммой по физическому адресу маршрутизатора. Маршрутизатор анализирует IP-адрес назначения полученной дейтаграммы и, в зависимости от адресов прямо подключенных к нему (под)сетей, посылает дейтаграмму либо прямо по адресу назначения, либо к следующему маршрутизатору. Для обеспечения межсетевого обмена все узлы сети (включая и маршрутизаторы) должны иметь списки IP-адресов доступных маршрутизаторов.
Информация в TCP/IP передается пакетами со стандартизованной структурой, называемыми IP-дейтаграммами (IP Datagram), имеющими поле заголовка (IP Datagram Header) и поле данных (IP Datagram Data). Поле заголовка содержит собственно заголовок, IP-адреса источника и приемника. Длина дейтаграммы определяется сетевым ПО так, чтобы она умещалась в поле данных сетевого фрейма, осуществляющего ее транспортировку. Поскольку по пути следования к адресату могут встречаться сети с меньшим размером поля данных фрейма, IP специфицирует единый для всех маршрутизаторов метод разбивки дейтаграммы на фрагменты (тоже IP-дейтаграммы) и обратной ее сборки приемником. Фрагментированная дейтаграмма собирается только ее окончательным приемником, поскольку отдельные фрагменты могут добираться до него различными путями.