TCP/IP: Структура IPv4 адреса, сети и подсети, разделение сети на подсети

Автор: | 24/12/2014

ip_logoСтруктура IP-адреса

IP-адрес представляет собой число размером 32 бита (или 4 байта), которое может быть записано в любой системе счисления (тут речь про адрес протокола IP version 4, в IPv6 он имеет размер 128 бит).

Например, адрес в десятичной системе 127.0.0.1 можно записать так:

01111111.00000000.00000000.00000001

Адрес делится на 4 октета, по 8 бит каждый, которые могут иметь значение от 0 (00000000) до 255 (11111111):

750px-Ipv4_address.svg

IP-адрес содержит в себе две основных части – адрес сети и адрес хоста в этой сети.

К примеру, адрес 77.120.120.20 представляет собой сеть 77.120.120.0, в которой находится хост с адресом 20.

Сети и маска сети

Помимо указания самого IP-адреса, на сетевом интерфейсе так же указывается его маска сети. Маска не передаётся в заголовках TCP/IP пакетов, но используется сетевой картой для определения дальнейшего маршрута пакета – если адрес назначения находится в одной сети с адресом отправителя – он будет отправлен напрямую, если же в отдельной сети – пакет будет передан маршрутизатору, согласно таблице маршрутизации пакетов.

Рассмотрим адрес 77.120.120.20 с маской 255.255.255.0.

В двоичном представлении этот адрес можно записать так:

адрес:

01001101.01111000.01111000.00010100

маска:

11111111.11111111.11111111.00000000

Для первых трёх октетов в 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 бита можно “вместить” 24 адресов – 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 бит 224 – 2 16777214
16 бит 255.255.0.0 16 бит 216 – 2 65534
24 бит 255.255.255.0 8 бит 28 – 2 254
29 бит 255.255.255.248 3 бит 23 – 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.

Представим эту сеть и её маску в двоичном виде:

адрес сети:

1001101.1111000.1111000.00000000

маска:

11111111.11111111.11111111.00000000

Займём на один бит больше в последнем октете маски сети – 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 бит под адреса: 27 = 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.

Ссылки по теме

http://www.adminsub.net

http://www.shunsoft.net

https://en.wikipedia.org

http://habrahabr.ru

http://planetcalc.ru

http://zyxel.ua