Функционирование протокола IP
Адресация узлов в IP-сетях
В сетях TCP/IP принято различать адреса сетевых узлов трех уровней
физический (или локальный) адрес узла (МАС-адрес сетевого адаптера или порта маршрутизатора); эти адреса назначаются производителями сетевого оборудования; IP-адрес узла (например, 192.168.0.1),
данные адреса назначаются сетевыми администраторами или Интернет-провайдерами; символьное имя (например, www. *****); эти имена назначаются сетевыми администраторами компаний или Интернет-провайдерами.
Компьютеры или другие сложные сетевые устройства, подсоединенные к нескольким физическим сетям, имеют несколько IP-адресов — по одному на каждый сетевой интерфейс. Схема адресации позволяет проводить единичную, широковещательную и групповую адресацию. Таким образом, выделяют 3 типа IP-адресов.
Unicast-адрес (единичная адресация конкретному узлу) — используется в коммуникациях “один-к-одному”. Broadcast-адрес (широковещательный адрес, относящийся ко всем адресам подсети) — используется в коммуникациях “один-ко-всем”. Multicast-адрес (групповой адрес для многоадресной отправки пакетов) — используется в коммуникациях “один-ко-многим”.
Классовая адресация. Unicast-адреса.
Каждый сетевой интерфейс на каждом узле сети должен иметь уникальный unicast-адрес. IP-адрес имеет длину 4 байта (или 32 бита). Для удобства чтения адресов 32-битные числа разбивают на октеты по 8 бит, каждый октет переводят в десятичную систему счисления и при записи разделяют точками. Например, адрес
записывается как
… = 160.81.5.131.
IP-адрес состоит из двух частей — идентификатор сети (префикс сети, Network ID) и идентификатор узла (номер устройства, Host ID). Такая схема приводит к двухуровневой адресной иерархии. Структура IP-адреса изображена на рис.1.
Идентификатор сети идентифицирует все узлы, расположенные на одном физическом или логическом сегменте сети, ограниченном IP-маршрутизаторами. Все узлы, находящиеся в одном сегменте должны иметь одинаковый идентификатор сети.
Идентификатор узла идентифицирует конкретный сетевой узел (сетевой адаптер рабочей станции или сервера, порт маршрутизатора). Идентификатор узла должен быть уникален для каждого узла внутри IP-сети, имеющей один идентификатор сети.
Таким образом, IP-адрес будет уникален для каждого сетевого интерфейса всей сети TCP/IP.
Соотношение между идентификатором сети и идентификатором узла в IP-адресе определяется с помощью маски подсети (Network mask), которая имеет длину также 4 байта и также записывается в десятичной форме по 4 октета, разделенных точками. Старшие биты маски подсети, состоящие из 1, определяют, какие разряды IP-адреса относятся к идентификатору сети. Младшие биты маски, состоящие из 0, определяют, какие разряды IP-адреса относятся к идентификатору узла.
IP-адрес и маска подсети — минимальный набор параметров для конфигурирования протокола TCP/IP на сетевом узле.
Для обеспечения гибкости в присваивании адресов компьютерным сетям разработчики протокола определили, что адресное пространство IP должно быть разделено на три различных класса — А, В и С.
В дополнение к этим трем классам выделяют еще два класса. D — этот класс используется для групповой передачи данных. Е — класс, зарезервированный для проведения экспериментов.
IP-адреса класса А. Старший бит адреса равен нулю. Размер сетевой части равен 8 битам. Таким образом, может существовать 27 сетей класса А, но каждая сеть обладает адресным пространством на 224 хостов. IP-адреса этого класса имеют значение старшего октета в диапазоне 0 — 127. В классе А выделены две особые сети, их номера 0 и 127. Сеть 0 используется при маршрутизации как указание на маршрут по умолчанию и в других особых случаях. IP-интерфейс с адресом в сети 127 используется для адресации узлом себя самого (loopback, интерфейс обратной связи). Интерфейс обратной связи не обязательно имеет адрес в сети 127 (особенно у маршрутизаторов), но если узел имеет IP-интерфейс с адресом 127.0.0.1, то это – интерфейс обратной связи. Обращение по адресу loopback-интерфейса означает связь с самим собой (без выхода пакетов данных на уровень доступа к среде передачи); для протоколов на транспортном уровне и выше такое соединение неотличимо от соединения с удаленным узлом, что удобно использовать, например, для тестирования сетевого программного обеспечения.
Структура IP-адресов класса А и B приведена на рис.2.
IP-адреса класса B. Два старших бита адреса равны 10. Размер сетевой части равен 16 битам. Таким образом, может существовать всего примерно 214 сетей класса В, каждая сеть обладает адресным пространством на 216 хостов. Значения старшего октета IP-адреса лежат в диапазоне 128 — 191.
IP-адреса класса C. Три старших бита адреса равны 110. Размер сетевой части равен 24 битам. Количество сетей класса С примерно 221, адресное пространство каждой сети рассчитано на 254 хоста. Значения старшего октета IP-адреса лежат в диапазоне 192 – 223, а номером сети являются три старших октета. Структура IP-адресов класса C приведена на рис.3.
Класс D. IP-адреса класса D используются для групповых адресов (multicast-адреса). Четыре старших разряда любого IP-адреса в сети класса D всегда равны 1110. Оставшиеся 28 бит используются для назначения группового адреса. Некоторые адреса используются для мультикастинга – передачи дейтаграмм группе узлов сети, например:
224.0.0.1 – всем хостам данной сети;
224.0.0.2 – всем маршрутизаторам данной сети;
224.0.0.5 – всем OSPF-маршрутизаторам;
224.0.0.6 – всем выделенным (designated) OSPF-маршрутизаторам.
Класс E
Пять старших разрядов любого IP-адреса в сети класса E равны 11110. Адреса данного класса зарезервированы для будущего использования (и не поддерживаются системой Windows Server).
В любой сети (это справедливо и для бесклассовой модели, все нули в номере хоста обозначают саму сеть, все единицы – адрес широковещательной передачи (broadcast).
Бесклассовая адресация
Для более эффективного использования пространства адресов IP-сети использеутся бесклассовая междоменная маршрутизация (Classless Inter-Domain Routing, CIDR).
Предположим, в локальной сети, подключаемой к Интернет, находится 2003 компьютеров. Каждому из них требуется выдать IP-адрес. Для получения необходимого адресного пространства нужны либо 8 сетей класса C, либо одна сеть класса В. Сеть класса В вмещает 65534 адреса, что много больше требуемого количества. При общем дефиците IP-адресов такое использование сетей класса В расточительно. Однако, если использовать 8 сетей класса С, возникнает следующая проблема: каждая такая IP-сеть должна быть представлена отдельной строкой в таблицах маршрутов на маршрутизаторах, потому что с точки зрения маршрутизаторов — это 8 абсолютно никак не связанных между собой сетей, маршрутизация дейтаграмм в которые осуществляется независимо, хотя фактически эти IP-сети и расположены в одной физической локальной сети и маршруты к ним идентичны. Таким образом, при экономии адресного пространства многократно увеличивается служебный трафик в сети и затраты по поддержанию и обработке маршрутных таблиц.
С другой стороны, нет никаких формальных причин проводить границу сеть-хост в IP-адресе именно по границе октета. Это было сделано исключительно для удобства представления IP-адресов и разбиения их на классы. Если выбрать длину сетевой части в 21 бит, а на номер хоста отвести, соответственно, 11 бит, мы получим сеть, адресное пространство которой содержит 2046 IP-адресов, что максимально точно соответствует поставленному требованию. Это будет одна сеть, определяемая своим уникальным 21-битным номером, следовательно, для ее обслуживания потребуется только одна запись в таблице маршрутов.
Для удобства записи IP-адрес в модели CIDR часто представляется в виде a. b.c. d / n, где a. b.c. d — IP адрес, n — количество бит в сетевой части.
Пример: 137.158.128.0/17.
Маска сети для этого адреса: 17 единиц (сетевая часть), за ними 15 нулей (хостовая часть), что в октетном представлении равно
… = 255.255.128.0.
Представив IP-адрес в двоичном виде и побитно умножив его на маску сети, мы получим номер сети (все нули в хостовой части). Номер хоста в этой сети мы можем получить, побитно умножив IP-адрес на инвертированную маску сети.
Пример: IP = 205.37.193.134/26 или, что то же,
IP = 205.37.193.134 netmask = 255.255.255.192.
Распишем в двоичном виде:
IP = 1100100
маска = 1111111
Умножив побитно, получаем номер сети (в хостовой части – нули):
network = 10000000
или, в октетном представлении, 205.37.193.128/26, или, что то же, 205.37.193.128 netmask 255.255.255.192.
Хостовая часть рассматриваемого IP адреса равна или 6. Таким образом, 205.37.193.134/26 адресует хост номер 6 в сети 205.37.193.128/26. В классовой модели адрес 205.37.193.134 определял бы хост 134 в сети класса С 205.37.193.0, однако указание маски сети (или количества бит в сетевой части) однозначно определяет принадлежность адреса к бесклассовой модели.
Очевидно, что сети классов А, В, С в бесклассовой модели представляются при помощи масок, соответственно, 255.0.0.0 (или /8), 255.255.0.0 (или /16) и 255.255.255.0 (или /24).
Публичные и приватные (частные) IP-адреса
Все пространство IP-адресов разделено на 2 части: публичные адреса, которые распределяются между Интернет-провайдерами и компаниями международной организацией Internet Assigned Numbers Authority (сокращенно IANA), и приватные адреса, которые не контролируются IANA и могут назначаться внутрикорпоративным узлам по усмотрению сетевых администраторов. Если какая-либо компания приобрела IP-адреса в публичной сети, то ее сетевые узлы могут напрямую маршрутизировать сетевой трафик в сеть Интернет и могут быть прозрачно доступны из Интернета. Если внутрикорпоративные узлы имеют адреса из приватной сети, то они могут получать доступ в Интернет с помощью протокола трансляции сетевых адресов (NAT, Network Address Translation) или с помощью прокси-сервера. В простейшем случае с помощью NAT возможно организовать работу всей компании с использованием единственного зарегистрированного IP-адреса.
Механизм трансляции адресов NAT преобразует IP-адреса из частного адресного пространства IP (эти адреса еще называют “внутренние”, или “серые IP”) в зарегистрированное открытое адресное пространство IP. Обычно эти функции (NAT) выполняет либо маршрутизатор, либо межсетевой экран (firewall) — эти устройства подменяют адреса в заголовках проходящих через них IP-пакетов.
На практике обычно компании получают через Интернет-провайдеров небольшие сети в пространстве публичных адресов для размещения своих внешних ресурсов — web-сайтов или почтовых серверов. А для внутрикорпоративных узлов используют приватные IP-сети.
Кроме данных блоков имеется еще блок адресов, используемых для автоматической IP-адресации (APIPA, Automatic Private IP Addressing). Автоматическая IP-адресация применяется в том случае, когда сетевой интерфейс настраивается для автоматической настройки IP-конфигурации, но при этом в сети отсутствует сервер DHCP.
Отображение IP-адресов на физические адреса
Каждый сетевой адаптер имеет свой уникальный физический адрес (или MAC-адрес). За отображение IP-адресов адаптеров на их физические адреса отвечает протокол ARP (Address Resolution Protocol). Необходимость протокола ARP продиктована тем обстоятельством, что IP-адреса устройств в сети назначаются независимо от их физических адресов. Поэтому для доставки сообщений по сети необходимо определить соответствие между физическим адресом устройства и его IP-адресом — это называется разрешением адресов. В большинстве случаев прикладные программы используют именно IP-адреса. А так как схемы физической адресации устройств весьма разнообразны, то необходим специальный, универсальный протокол. Протокол разрешения адресов ARP был разработан таким образом, чтобы его можно было использовать для разрешения адресов в различных сетях. Фактически ARP можно использовать с произвольными физическими адресами и сетевыми протоколами. Протокол ARP предполагает, что каждое устройство знает как свой IP-адрес, так и свой физический адрес. ARP динамически связывает их и заносит в специальную таблицу, где хранятся пары “IP-адрес — физический адрес” (обычно каждая запись в ARP-таблице имеет время жизни 10 мин.). Эта таблица хранится в памяти компьютера и называется кэш протокола ARP (ARP-cache).
Основным предложением по модернизации протокола IP является предложение, разработанное группой IETF. Сейчас принято называть ее предложение версией 6 – IPv6, а все остальные предложения группируются под названием IP Next Generation, IPng.
В предложении IETF протокол IPv6 оставляет основные принципы IPv4 неизменными. К ним относятся дейтаграммный метод работы, фрагментация пакетов, разрешение отправителю задавать максимальное число хопов для своих пакетов. Однако в деталях реализации протокола IPv6 имеются существенные отличия от IPv4. Эти отличия коротко можно описать следующим образом.
Использование более длинных адресов. Новый размер адреса – наиболее заметное отличие IPv6 от IPv4. Версия 6 использует 128-битные адреса (16 байт).
Гибкий формат заголовка. Вместо заголовка с фиксированными полями фиксированного размера (за исключением поля Резерв), IPv6 использует базовый заголовок фиксированного формата плюс набор необязательных заголовков различного формата. Дополнительные заголовки дают возможность передать информацию, обеспечивающую безопасность, приоритетность и т.п.
Поддержка резервирования пропускной способности. В IPv6 механизм резервирования пропускной способности заменяет механизм классов сервиса версии IPv4.
Поддержка расширяемости протокола. Это одно из наиболее значительных изменений в подходе к построению протокола – от полностью детализированного описания протокола к протоколу, который разрешает поддержку дополнительных функций.
Адресация в IPv6
Адреса назначения и источника в IPv6 имеют длину 128 бит или 16 байт. Версия 6 обобщает специальные типы адресов версии 4 в следующих типах адресов:
Unicast – индивидуальный адрес. Определяет отдельный узел – компьютер или порт маршрутизатора. Пакет должен быть доставлен узлу по кратчайшему маршруту.
Cluster – адрес кластера. Обозначает группу узлов, которые имеют общий адресный префикс (например, присоединенных к одной физической сети). Пакет должен быть маршрутизирован группе узлов по кратчайшему пути, а затем доставлен только одному из членов группы (например, ближайшему узлу).
Multicast – адрес набора узлов, возможно в различных физических сетях. Копии пакета должны быть доставлены каждому узлу набора, используя аппаратные возможности групповой или широковещательной доставки, если это возможно.
Как и в версии IPv4, адреса в версии IPv6 делятся на классы, в зависимости от значения нескольких старших бит адреса.
Большая часть классов зарезервирована для будущего применения. Наиболее интересным для практического использования является класс, предназначенный для провайдеров услуг Internet, названный Provider-Assigned Unicast.
Адрес этого класса имеет следующую структуру:
Каждому провайдеру услуг Internet назначается уникальный идентификатор, которым помечаются все поддерживаемые им сети. Далее провайдер назначает своим абонентам уникальные идентификаторы, и использует оба идентификатора при назначении блока адресов абонента. Абонент сам назначает уникальные идентификаторы своим подсетям и узлам этих сетей.
Абонент может использовать технику подсетей, применяемую в версии IPv4, для дальнейшего деления поля идентификатора подсети на более мелкие поля.
Описанная схема приближает схему адресации IPv6 к схемам, используемым в территориальных сетях, таких как телефонные сети или сети Х.25. Иерархия адресных полей позволит магистральным маршрутизаторам работать только со старшими частями адреса, оставляя обработку менее значимых полей маршрутизаторам абонентов.
Под поле идентификатора узла требуется выделения не менее 6 байт, для того чтобы можно было использовать в IP-адресах МАС-адреса локальных сетей непосредственно.
Для обеспечения совместимости со схемой адресации версии IPv4, в версии IPv6 имеется класс адресов, имеющих 0000 0000 в старших битах адреса. Младшие 4 байта адреса этого класса должны содержать адрес IPv4. Маршрутизаторы, поддерживающие обе версии адресов, должны обеспечивать трансляцию при передаче пакета из сети, поддерживающей адресацию IPv4, в сеть, поддерживающую адресацию IPv6, и наоборот.