Отправляет email-рассылки с помощью сервиса Sendsay

Записки сисадмина

  Все выпуски  

Записки сисадмина: Сетевые адреса, сети, подсети, маски...


Сетевые адреса, сети, подсети, маски...

Часто спрашивают как перевести запись IP адреса с бесклассовой маршрутизацией типа 192.168.1.0/24 в адрес сети с маской 255.255.255.0. Еще чаще спрашивают как определить количество хостов в сети, зная ее маску. А очень просто :) Но сначала немного теории:

Во-первых формат типа 192.168.1.0/24 называется CIDR (Classless Internet Domain Routing) или "Бесклассовая маршрутизация" и позволяет гибко управлять пространством IP-адресов, не используя жёсткие рамки классовой адресации. Спецификация описывается в документе RFC 1517.
Во-вторых все будем считать в двоичном формате, так что людям, незнакомым с двоичной логикой настоятельно рекомендую почитать какую-нибудь теорию во переводу чисел из десятичной в двоичну систуму и наоборот.
Пара значений IP адреса и маски собственно и определяет подсеть. Рассмотрим на примере:

Пусть имеется IP адрес 192.168.1.0 и маска подсети 255.255.255.0. В двоичном формате это выглядит так:

    IP адрес: 11000000.10101000.00000001.00000000
    маска   : 11111111.11111111.11111111.00000000
    
Суть маски в том чтобы закрыть (поэтому и маска) ту часть адреса, которая неизменна и определяет подсеть. Закрывают неизменную часть единичные биты. То есть, если посмотреть на наши адреса, то получается, что может меняться только последний разряд, а первые 3 определеяют подсеть. А что из этого следует? А то, что в нашей только что определенной подсети "помещается" 254 хоста (уникальных адреса): 192.168.1.1 - первый, 192.168.1.254 - последний;192.168.1.0 - определяет сеть, а 192.168.1.255 - Broadcast (широковещательный) адрес.

С CIDR-ом еще проще: в 192.168.1.0/24 число 24 определяет количество единичных битов в маске, если считать слева направо. Посмотрим в двоичной с/с:

    11111111.11111111.11111111.00000000
что есть собственно 255.255.255.0 :) Как видите все просто - количество хостов можно посчитать очень быстро:
k=2(32-24)-2=254

где 32 - всего битов в маске (4 разряда по 8 в каждом), 24 - понятно что. а 2 отнимается за счет бродкаст адреса и идентификатора сети. 

Кстати, еще есть так называемая "обратная маска" - Wildcard mask, которая используется в списках доступа (ACL) сетевого оборудования Cisco. Но здесь мы ее рассматривать не будем :)

 Постоянный адрес: http://www.sitemonitor.ru/doc/ip.php 


В избранное