понедельник, 26 ноября 2012 г.

CIDR для чайников.

Как то пришлось мне столкнуться с CIDR, очень хотелось понять эту технологию, т.к очень смутно представлял я ее себе, в отличие от традиционного деления на сети (A, B,C) и традиционные маски вида 255.255.0.0. Облазив пол интернета, и прочитав статьи нескольких источников, через пару дней я понял суть технологии.
Итак начнем.
В традиционной технологий масок и ip мы имеем:
192.168.0.0 - сеть
255.255.255.0 - маска
11111111.11111111.11111111.00000000 - маска в двоичном виде.
Т..е маска состоит их 4-х байт либо 32 бит по 8 бит на каждый кусок до. Заполнив его весь 11111111111 мы получим число 255 по правилам перевода двоичных в десятичные 2*0+2*1+2*2 ...=255 (знак * - это возведение в степень). Например число 192 это 11000000 т.е
2*7+2*6=128+64=192. Вообщем в выше приведенном примере 3 байта или 24 бита отводится на адрес сети а 1 байт или 8 бит на адрес сети. В итоге мы получим адрес сети 192.168.0 остальная часть для адреса хоста, сколько в такой сети хостов определяется так:
2*8=256 ( но 256 - это диапазон 0-255), т.е 255 хостов, при этом вычтем 0 и 255 т.к это служебные адреса получим 253 хоста.
Вообщем адреса 192.168.0.1-192.168.0.254 и маской сети 255.255.255.0 будут иметь сеть 192.168.0.0 и при этом прекрасно пинговаться и работать в одной сети.

Тогда WTF 192.168.0.30/26.
Итак посмотрим как будет выглядеть это в традиционной записи.
Что такое 26? Это количество бит заполненных единицами. Как мы помним всего имеем 32 бита на весь адрес, посмотрим пример выше
192.168.0.0 - сеть
255.255.255.0 - маска
11111111.11111111.11111111.00000000 - маска в двоичном виде.
последние 8 бит нули, значит 192.168.0.0 в сокращенной нотации будет иметь такой вид
192.168.0.0./24 т.к 32-8=24 т.е у нас 8 бит на адрес хоста.
Переведем 26 в двоичный вид
11111111.11111111.11111111.11000000
Т.е как види мы добавили еще 2 единицы слева к последнему биту, что за число мы получим в последнем бите: 2*7+2*6=128+64=192.
Т.е маска в традиционной записи будет иметь вид:
255.255.255.192
Сколько хостов будем иметь в такой сети 32-26=6. Т.е остается 6 бит на адрес хоста 2*6=64 (отнимем 2 служебных)=62.
Вы наверное подумаете что мы получим сеть хостов от 192.168.0.192 до 192.168.0.255.
Нет, на самом же деле в с такой маской мы получим 256/64 (кол-во хостов в сети) = 4 подсети в сети 192.168.0.0 и эти подсети будут
Диапазон                                    Сеть
192.168.0.1-192.168.0.62             192.168.0.0
192.168.0.65-192.168.0.126         192.168.0.64
192.168.0.129-192.168.0.190        192.168.0.128
192.168.0.193-192.168.0.254        192.168.0.192

Т.е машины с адресом 192.168.0.10/26 (255.255.255.192) и 192.168.0.70/26 (255.255.255.192) не будет видеть друг друга т.к первая находится в сети 192.168.0.0, вторая в 192.168.0.64. Но 192.168.0.10 и 192.168.0.30 будут в одной сети 192.168.0.0 и будут видеть друг друга.

Вот еще такой пример
172.18.0.0/17
255.255.255.128
11111111.11111111.10000000.00000000 
Здесь мы получим такие диапазоны
Диапазон                                             Сеть
172.18.1.1 -172.18.127.255           172.18.0.0
172.18.128.1 -172.18.255.255           172.18.128.0 

Хостов в такой сети 32-17=15 и 2*15=32768 (-2 служебные)
Т.е хосты с адресами 172.18.1.120 и 172.18.90.220 будут видеть друг друга, а
172.18.1.120 и 172.18.160.220 нет.

Что дает CIDR?
CIDR позволяет отойти от традиционного деления на классы а также более гибко виделять диапазоны.
Например провайдеру требуется обслуживать сеть из 16 тысяч хостов, раньше бы ему пришлось выделять целую сеть B т.к С мала для таких целей, но B это более 65 тысяч хостов, что очень неэкномно. Более рационально выделить ему сеть в диапазоне
128.13.1.0 -128.13.64.255 т.е 128.13.0.0/18.




Комментариев нет:

Отправить комментарий