IP-адрес – это уникальный числовой адрес, однозначно идентифицирующий узел, группу узлов или сеть. IP-адрес имеет длину 4 байта и обычно записывается в виде четырех чисел (так называемых «октетов»), разделенных точками – W.X.Y.Z , каждое из которых может принимать значения в диапазоне от 0 до 255, например, 213.128.193.154.
Классы IP-адресов
Существует 5 классов IP-адресов – A, B, C, D, E. Принадлежность IP-адреса к тому или иному классу определяется значением первого октета (W). Ниже показано соответствие значений первого октета и классов адресов.
Класс IP-адреса |
A |
B |
C |
D |
E |
Диапазон первого октета |
1-126 |
128-191 |
192-223 |
224-239 |
240-247 |
IP-адреса первых трех классов предназначены для адресации отдельных узлов и отдельных сетей. Такие адреса состоят из двух частей – номера сети и номера узла. Такая схема аналогична схеме почтовых индексов – первые три цифры кодируют регион, а остальные – почтовое отделение внутри региона.
Преимущества двухуровневой схемы очевидны: она позволяет, во-первых, адресовать целиком отдельные сети внутри составной сети, что необходимо для обеспечения маршрутизации, а во-вторых – присваивать узлам номера внутри одной сети независимо от других сетей. Естественно, что компьютеры, входящие в одну и ту же сеть должны иметь IP-адреса с одинаковым номером сети. IP-адреса разных классов отличаются разрядностью номеров сети и узла, что определяет их возможный диапазон значений. Следующая таблица отображает основные характеристики IP-адресов классов A,B и C.
Характеристика |
Класс |
||
A |
B |
C |
|
Номер сети |
W |
W.X |
W.X.Y |
Номер узла |
X.Y.Z |
Y.Z |
Z |
Возможное количество сетей |
126 |
16 384 |
2 097 151 |
Возможное количество узлов |
16 777 214 |
65 534 |
254 |
Особые адреса |
|||
Запись адреса сети в целом |
W.0.0.0 |
W.X.0.0 |
W.X.Y.0 |
Широковещательный адрес в сети |
W.255.255.255 |
W.X.255.255 |
W.X.Y.255 |
Например, IP-адрес 213.128.193.154 является адресом класса C, и принадлежит узлу с номером 154, расположенному в сети 213.128.193.0.
Схема адресации, определяемая классами A, B, и C, позволяет пересылать данные либо отдельному узлу, либо всем компьютерам отдельной сети (широковещательная рассылка). Однако существует сетевое программное обеспечение, которому требуется рассылать данные определенной группе узлов, необязательно входящих в одну сеть. Для того, чтобы программы такого рода могли успешно функционировать, система адресации должна предусматривать так называемые групповые адреса. Для этих целей используются IP-адреса класса D.
Диапазон адресов класса E зарезервирован и в настоящее время не используется.
Диапазоны:
Класс |
С |
По |
A |
0.0.0.0 |
127.255.255.255 |
B |
128.0.0.0 |
191.255.255.255 |
C |
192.0.0.0 |
223.255.255.255 |
D |
224.0.0.0 |
239.255.255.255 |
Двоичная форма записи IP-адресов
Наряду с традиционной десятичной формой записи IP-адресов, может использоваться и двоичная форма, отражающая непосредственно способ представления адреса в памяти компьютера. Поскольку IP-адрес имеет длину 4 байта, то в двоичной форме он представляется как 32-разрядное двоичное число (т.е. последовательность из 32 нулей и единиц). Например, адрес 213.128.193.154 в двоичной форме имеет вид 11010101 1000000 11000001 10011010. Используя двоичную форму записи IP-адреса, легко определить схемы классов IP адресов:
|
|
|
|
|
|
Особые IP-адреса
Протокол IP предполагает наличие адресов, которые трактуются особым образом. К ним относятся следующие:
1. Адреса, значение первого октета которых равно 127.
Пакеты, направленные по такому адресу, реально не передаются в сеть, а
обрабатываются программным обеспечением узла-отправителя. Таким образом, узел
может направить данные самому себе. Этот подход очень удобен для тестирования
сетевого программного обеспечения в условиях, когда нет возможности
подключиться к сети.
2. Адрес 255.255.255.255. Пакет, в назначении которого стоит адрес
255.255.255.255, должен рассылаться всем узлам сети, в которой находится
источник. Такой вид рассылки называется ограниченным широковещанием. В двоичной
форме этот адрес имеет вид 11111111 11111111 11111111 11111111.
3. Адрес 0.0.0.0. Он используется в служебных целях и трактуется как адрес того
узла, который сгенерировал пакет. Двоичное представление этого адреса 00000000
00000000 00000000 00000000
Бесклассовая адресация (англ. Classless InterDomain Routing, англ. CIDR) — метод IP-адресации,
позволяющий гибко управлять пространством IP-адресов, не используя жёсткие рамки классовой
адресации. Использование
этого метода позволяет экономно использовать ограниченный ресурс IP-адресов,
поскольку возможно применение различных масок подсетей к различным подсетям.
IP-адрес является массивом битов. Принцип IP-адресации — выделение множества (диапазона, блока, подсети) IP-адресов, в котором некоторые битовые разряды имеют фиксированные значения, а остальные разряды пробегают все возможные значения. Блок адресов задаётся указанием начального адреса и маски подсети. Бесклассовая адресация основывается на переменной длине маски подсети (англ. Variable Length Subnet Mask— VLSM), в то время, как в классовой (традиционной) адресации длина маски строго фиксирована 0, 1, 2 или 3 установленными октетами.
Вот пример записи IP-адреса с применением бесклассовой адресации: 192.0.2.32/27. Число 27 означает количество единиц в маске:11111111.11111111.11111111.11100000 = 255.255.255.224. Другие примеры: множество всех адресов обозначается как /0, а конкретный адрес IPv4 — как /32.
Для упрощения таблиц маршрутизации можно объединять блоки адресов, указывая один большой блок вместо ряда мелких. Например, 4 смежные сети класса C (4 × 255 адресов, маска 255.255.255.0 или /24) могут быть объединены, с точки зрения далёких от них маршрутизаторов, в одну сеть /22. И напротив, сети можно разбивать на более мелкие подсети, и так далее.
В Интернете используются только маски вида «n единиц, дальше все нули». Для таких (и только для таких) масок получающиеся множества IP-адресов будут смежными.
Доменная Система Имен. Преобразование имен в адреса.
Доменное имя содержит, как минимум, две части (обычно
называются метками), разделённые точкой. Самая правая метка является доменом верхнего уровня (например,
для адреса ru.wikipedia.org домен верхнего уровня — org).
Каждая следующая метка справа налево является поддоменом (например, wikipedia.org —
поддомен домена org, аru.wikipedia.org — домена wikipedia.org).
Теоретически такое деление может достигать глубины 127 уровней, а каждая метка
может содержать до 63 символов, пока общая длина вместе с точками не достигнет
254 символов. Но на практике регистраторы
доменных имён используют более строгие ограничения. Система DNS
содержит иерархию серверов DNS. Каждый домен или поддомен поддерживается как
минимум одним авторитетным сервером DNS (от англ. authoritative — авторитетный,
заслуживающий доверия; в Рунете применительно
к DNS и серверам имен часто употребляют и другие варианты перевода:
авторизированный, авторитативный), на котором расположена информация о домене.
Иерархия серверов DNS совпадает с иерархией доменов. Рассмотрим на примере
работу всей системы. Предположим, мы набрали в браузере адрес ru.wikipedia.org. Браузер знает
только IP-адрес сервера DNS, обычно это один из серверов
интернет-провайдера (DNS
по умолчанию в настройках соединения). Браузер спрашивает у сервера DNS: «какой
IP-адрес у ru.wikipedia.org?». Сервер DNS обращается к корневому
серверу — например, 198.41.0.4. Этот сервер сообщает — «У
меня нет информации о данном адресе, но я знаю, что 204.74.112.1 поддерживает
доменную зону org.» Тогда сервер DNS направляет свой запрос к
204.74.112.1, но тот отвечает «У меня нет информации о данном сервере, но я
знаю, что 207.142.131.234 поддерживает доменную зону wikipedia.org.»
Наконец, тот же запрос отправляется к третьему DNS-серверу (который является
авторитетным сервером для зоны wikipedia.org), и получает ответ —
IP-адрес, который и возвращает клиенту — браузеру. В данном случае при
разрешении имени, то есть в процессе поиска IP по имени, между хостом и
серверами передавались запросы двух типов:
браузер отправил известному ему DNS-серверу т. н. рекурсивный запрос — в ответ на такой тип запроса сервер обязан вернуть «готовый результат», то есть IP-адрес, либо сообщить об ошибке
Замечание: встроенные dns-клиенты браузеров умеют давать только такие типы запросов, иначе их код пришлось бы неоправданно усложнять и значительно возрос бы трафик у конечного пользователя, а сам DNS-сервер, получивший запрос от клиента, выполнял последовательно итеративные запросы, на которые получал от других DNS-серверов уточняющие ответы, пока не получил авторитетный ответ от сервера, ответственного за запрошенную зону
Замечание: сервер провайдера, будучи лентяем, мог бы передать рекурсивный запрос следующему DNS-серверу и дождаться готового ответа, но в данном примере он добросовестно выполнил свою задачу.
Имя хоста и IP-адрес не тождественны —
хост с одним IP-адресом может иметь множество имён, что позволяет поддерживать
на одном компьютере множество
веб-сайтов (это называется виртуальный хостинг).
Обратное тоже справедливо — одному имени может быть сопоставлено множество
хостов: это позволяет создавать балансировку
нагрузки. Запрос на определение имени обычно не идёт дальше кэша DNS,
который помнит (ограниченное время) ответы на запросы, проходившие через него
ранее. Организации или провайдеры могут по
своему усмотрению организовывать кэш DNS. Вместе с ответом приходит информация
о том, сколько времени следует хранить эту запись в кэше. Для повышения
устойчивости системы используется множество серверов, содержащих идентичную
информацию. Существует 13 корневых серверов, расположенных по всему миру и
привязанных к своему региону, их адреса никогда не меняются, а информация о них
есть в любой операционной системе. Протокол DNS использует
для работы TCP- или UDP-порт 53 для
ответов на запросы. Традиционно запросы и ответы отправляются в виде одной
UDP датаграммы. TCP
используется в случае, если ответ больше 512 байт, или в случае AXFR-запроса.
Обратный DNS-запрос
DNS
используется в первую очередь для преобразования символьных имён в IP-адреса,
но он также может выполнять обратный процесс. Для этого используются уже
имеющиеся средства DNS. Дело в том, что с записью DNS могут быть сопоставлены
различные данные, в том числе и какое-либо символьное имя. Существует
специальный домен in-addr.arpa, записи в котором используются для
преобразования IP-адресов в символьные имена. Например, для получения DNS-имени
для адреса 11.22.33.44 можно запросить у DNS-сервера
запись 44.33.22.11.in-addr.arpa, и тот вернёт соответствующее символьное
имя. Обратный порядок записи частей IP-адреса объясняется тем, что в
IP-адресах старшие биты расположены в начале, а в символьных DNS-именах старшие
(находящиеся ближе к корню) части расположены в конце.