PHP скрипты, MySQL, Java, документация Unix, Linux, FreeBSD, Apache, Оптимизация сайта
Библиотека компании MNWhost.RU

Web-development
Shell
PHP
Perl
Java
ASP
VB Script
HTML
XML
WML
Cookies

Документация
FreeBSD
Linux
Apache
Язык UML
Поисковые системы
Модель OSI
CGI
Технология VPN
ADSL
SSI
DNS
Протоколы
Шифрование дисков
Обжим витой пары
Маски сети/подсети

Хостинг MNW.RU
Услуги
Хостинг
Регистрация доменов
Размещение серверов
Аренда серверов


Hosted by MNW

Яндекс цитирования

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

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

Часто спрашивают как перевести запись 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. Но здесь мы ее рассматривать не будем :)

Автор: Юферев Денис.
размещение сервера