TCP/IP: Структура IPv4 адреса, сети и подсети, разделение сети на подсети
IP-адрес представляет собой число размером 32 бита (или 4 байта), которое может быть записано в любой системе счисления (тут речь про адрес протокола IP version 4, в IPv6 он имеет размер 128 бит).
Например, адрес в десятичной системе 127.0.0.1 можно записать так:
Адрес делится на 4 октета, по 8 бит каждый, которые могут иметь значение от 0 (00000000) до 255 (11111111):
IP-адрес содержит в себе две основных части – адрес сети и адрес хоста в этой сети.
К примеру, адрес 77.120.120.20 представляет собой сеть 77.120.120.0, в которой находится хост с адресом 20.
Сети и маска сетиПомимо указания самого IP-адреса, на сетевом интерфейсе так же указывается его маска сети. Маска не передаётся в заголовках TCP/IP пакетов, но используется сетевой картой для определения дальнейшего маршрута пакета – если адрес назначения находится в одной сети с адресом отправителя – он будет отправлен напрямую, если же в отдельной сети – пакет будет передан маршрутизатору, согласно таблице маршрутизации пакетов.
Рассмотрим адрес 77.120.120.20 с маской 255.255.255.0.
В двоичном представлении этот адрес можно записать так:
Для первых трёх октетов в IP-адресе установлен (или “включён“) “бит маски” (иначе – “битовая маска“), следовательно – первые три октета адреса являются адресом сети, а последние 8 бит – адресом хоста.
Таким образом, адрес 77.120.120.20 с маской 255.255.255.0 является в сетью 77.120.120.0, которая является классом С (которая, в свою очередь, является подсетью сети 77.120.0.0 класса В, которая является подсетью сети 77.0.0.0, которая является сетью верхнего уровня – А, хотя с появлением CIDR (см. ниже) понятие “классы сети” фактически потеряло актуальность).
Что бы сократить запись о сети 77.120.120.0 с маской 255.255.255.0 – можно использовать сокращённую форму: 77.120.120.0/24.
“/24” называется “префикс сети“, и указывает на количество “битов маски“. Таким образом, из 32 бит адреса 24 указаны как адрес сети, а 8 – остаются для адресов хостов в этой сети.
Если взять, к примеру, сеть 77.120.120.0/28 – мы получим только 4 бита, выделенных для адресов, т.е. маска сети будет выглядеть как 11111111.11111111.11111111.11110000, или 255.255.255.240.
Такое описание сетей и подсетей называется “бесклассовой классификацией” (Classless Inter-Domain Routing – CIDR).
Использование CIDR даёт возможность отказаться от традиционного разбиения на сети различных классов (А, B, C и т.д.) , и создавать подсети необходимого размера.
К примеру, подсеть 77.120.120.0/28 (которую можно перевести в маску сети 11111111.11111111.11111111.11110000 в двоичном виде (4 последних бита “сброшены”)или 255.255.255.240 в десятичном) содержит 4 бита адресов хостов. В 4 бита можно “вместить” 2 4 адресов – 16. Из этих 16 стоит вычесть первый (сам адрес 77.120.120.0, так он является адресом самой сети) и последний (77.120.120.255, так как он является широковещательным, или broadcast, адресом сети, на который в теории должны отвечать все хосты сети), таким образом – из 16 адресов сети для хостов остаётся 14 адресов.
Маска подсети Альтернативный формат записи Последний октет (в двоичном виде) Последний октет (в десятичном виде) 255.255.255.0 /24 0000 0000 0 255.255.255.128 /25 1000 0000 128 255.255.255.192 /26 1100 0000 192 255.255.255.224 /27 1110 0000 224 255.255.255.240 /28 1111 0000 240 255.255.255.248 /29 1111 1000 248 255.255.255.252 /30 1111 1100 252
Маска подсети Размер идентификатора хоста Максимальное количество хостов 8 бит 255.0.0.0 24 бит 2 24 – 2 16777214 16 бит 255.255.0.0 16 бит 2 16 – 2 65534 24 бит 255.255.255.0 8 бит 2 8 – 2 254 29 бит 255.255.255.248 3 бит 2 3 – 2 6
Более полные таблицы сетей можно найти в статье Сети, подсети, классы подсетей. Таблица подсетей.
Разделение сети на подсетиДопустим, имеется сеть 77.120.120.0/24, или сеть 77.120.120.0 с маской 255.255.255.0 – из которой необходимо выделить две различные сети. Сеть 77.120.120.0/24 включает в себя адреса от 77.120.120.0 до 77.120.120.255.
Представим эту сеть и её маску в двоичном виде:
Займём на один бит больше в последнем октете маски сети – 11111111.11111111.11111111.10000000 (или 255.255.255.128 в десятичном виде). У нас осталось (32 бита IP-адреса – 7 бит под адреса хостов) = 25 бит – под маску. Следовательно, первая сеть в десятичном виде будет выглядеть как 77.120.120.0/25, и включает в себя адреса от 77.120.120.0 до 77.120.120.127 (7 бит под адреса: 2 7 = 128 адресов, включая первый адрес 0 – получаем 127 всего), а вторая сеть получит адреса от 77.120.120.128 до 77.120.120.255, или 77.120.120.128/25.
Ещё один способ рассчитать максимальное значение (последний адрес для сети): в 25-ти битной маске мы имеем 7 бит под адреса; следовательно – адрес первой сети в двоичном виде будет выглядеть так: 1001101.1111000.1111000.00000000 – где жирным выделен адрес сети, а курсивом – “свободные” биты под адреса хостов. Максимальное значение, которое можно вместить в семь бит – 01111111 = 127.
Для второй сети мы имеем вид 77.120.120.128, или 1001101.1111000.1111000.10000000, а максимальное значение последнего октета будет 11111111 = 255.