Classless InterDomain Routing - Бесклассовая адресация

  Как выяснить маску подсети исходя из CIDR ? 
  Как по CIDR определить адрес сети, широковещательный адрес (broadcast), число хостов в сети ? 
  Как по хосту и маске подсети определить адрес сети, широковещательный адрес (broadcast), число хостов в сети ? 
  Скрипты (функции) Perl и PHP для проверки вхождения IP-адреса в подсеть 
IPv4 CIDR Subnet Table
Subnet MaskCIDR PrefixTotal IP's Usable IP'sNumber of
Class C networks
255.255.255.255/32111/256
255.255.255.254/31201/128
255.255.255.252/30421/64
255.255.255.248/29861/32
255.255.255.240/2816141/16
255.255.255.224/2732301/8
255.255.255.192/2664621/4
255.255.255.128/251281261/2
255.255.255.0/242562541
255.255.254.0/235125102
255.255.252.0/22102410224
255.255.248.0/21204820468
255.255.240.0/204096409416
255.255.224.0/198192819032
255.255.192.0/1816,38416,38264
255.255.128.0/1732,76832,766128
255.255.0.0/1665,53665,534256
255.254.0.0/15131,072131,070512
255.252.0.0/14262,144262,1421024
255.248.0.0/13524,288524,2862048
255.240.0.0/121,048,5761,048,5744096
255.224.0.0/112,097,1522,097,1508192
255.192.0.0/104,194,3044,194,30216,384
255.128.0.0/98,388,6088,388,60632,768
255.0.0.0/816,777,21616,777,21465,536
254.0.0.0/733,554,43233,554,430131,072
252.0.0.0/667,108,86467,108,862262,144
248.0.0.0/5134,217,728134,217,7261,048,576
240.0.0.0/4268,435,456268,435,4542,097,152
224.0.0.0/3536,870,912536,870,9104,194,304
192.0.0.0/21,073,741,8241,073,741,8228,388,608
128.0.0.0/12,147,483,6482,147,483,64616,777,216
0.0.0.0/04,294,967,2964,294,967,29433,554,432


Как выяснить маску подсети исходя из CIDR ?

    В кач-ве примера будем использовать IP-адрес 213.45.64.123 с CIDR /27:

    Необходимо взять кол-во бит из CIDR (в бинарном виде), разбить на 4-ре октета и перевести в десятичные.

    1. запишем первые 27 бит как 1-цу, а остальные 5-ть (т.к. их всего 32 бита) как 0-ль
   
	11111111111111111111111111100000
       
    2. Разделим на 4-ре октета

	11111111.11111111.11111111.11100000

    3. Переведем в десятичную систему

	255.255.255.224
		     
    Вот и все. Получили что /27 равен маске 255.255.255.224
		     
    Так же полезно просто помнить что:
	сети класса A - это CIDR /8
	сети класса B - это CIDR /16
	сети класса С - это CIDR /24

    
Как по CIDR определить адрес сети, широковещательный адрес (broadcast), число хостов в сети ?

    В кач-ве примера будем использовать тот же IP-адрес 213.45.64.123 с CIDR /27:
    
    1. 32-27=5 бит
    
    2. 2-ка в пятой степени = 32, а значит получается что рабочих IP-адресов в этой сети 30-ть (т.к. 1-ый адрес это адрес сети, а последний это broadcast)     

    3. Смотрим последний октет IP-адреса (213.45.64.123), в 123-х целых 32-ек укладывается 3 раза, а значит адрес сети 213.45.64.96 - это 32 умножить на 3 (32х3=96)

    4. Широковещательным адресом (broadcast) будет 213.45.64.127 - это 32 умножить на 4 и отнять 1 (32х4-1=127)


Как по хосту и маске подсети определить адрес сети, широковещательный адрес (broadcast), число хостов в сети ?

    В кач-ве примера будем использовать IP-адрес 192.168.32.48  с маской подсети 255.255.255.192:

    1. 256-192=64, где 192 это последний октет из маски (255.255.255.192), а 64 это общее кол-во хостов в сети, 
	т.к. 1-ый адрес это адрес сети, а последний это broadcast получаем 62 рабочих хоста в сети.

    2. Смотрим последний октет IP-адреса (192.168.32.48), в 48 целых 64-рок укладывается ноль получаем адрес сети 192.168.32.0 (0x64=0)
    
    3. Широковещательным адресом (broadcast) будет 192.168.32.63 (64x1-1=63)