Маска, номер сети, количество хостов
Пару слов о том, зачем нужна маска сети.
Локальная сеть имеет ip адресацию:
- 192.168.0.1 – 192.168.254.254
- 10.0.0.1 – 10.254.254.254
- 172.16.0.1 – 172.31.254.254
Маска в них определяет, что относится к сети, а что к хосту. Зачастую ip адрес в домашней сети, начинается с 192.168.0.1 - адреса роутера, с маской 255.255.255.0, первые 255.255.255 говорят о том, что это номер сети, а 0 (его диапазон 0-255) в конце указывает на кол-во хостов. Здесь может быть 256 хостов (0 - тоже считается), но по факту 2 адреса съедаются на номер сети (здесь он 192.168.0.0) и на широковещательный адрес (здесь он 192.168.0.255 - нужен для служебного трафика, опроса хостов, например когда нужно узнать кто находится с нами в одной сети), остаются доступные 254 адреса для хостов.
К примеру имеется задание: к какой из сетей можно больше подключить хостов: 172.16.0.15/16 или 192.168.0.11/24 (цифры /16 и /24 указывают маску, а именно кол-во бит = 1 в каждом из 4-х октетов, которые идут друг за другом)
01 Переведем сначала адреса 172.0.0.1 и 192.0.0.1 в двоичную систему счисления, по таблице ниже:
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Указанные биты с 0-7 это 8 бит в октете ip адреса (их 4), которые состоят из 0 или 1. Чтобы получить число 172 или 192, либо любое другое из ip адреса, нужно складывать из таблицы числа. К примеру, чтобы получить первый октет 172 нужно сложить 128+32+8+4 и соответственно поставить в таблице 1 там где эти значения присутствуют, в других поставить 0:
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |
02 Так мы перевели первый октет 172 в двоичную систему, последовательно переводим каждый октет всего ip адреса и получаем:
10101100.00000000.00000000.00000001
03 Маску /16 так же переводим, но здесь 1 должны идти всегда друг за другом, всего в этой маске 16 единиц, а остальные 0:
11111111.11111111.00000000.00000000
04 Ip адрес и маску в двоичную систему мы перевели, нужно узнать номер сети, перемножаем столбиком ip адрес на маску:
10101100.00010000.00000000.00001111 |
11111111.11111111.00000000.00000000 |
10101100.00010000.00000000.00000000 |
Теперь полученное значение переводим 10-теричную систему, складывая единицы:
10101100 | .00010000 | .00000000 | .00000000 |
172 | .16 | .0 | .0 |
05 Получили номер сети 172.16.0.0. Теперь узнаем сколько может быть хостов в этой сети основываясь на маске, ее тоже переводим в 10-теричную систему:
11111111 | .11111111 | .00000000 | .00000000 |
255 | .255 | .0 | .0 |
Кстати из двоичной маски, можно сразу подсчитать сколько будет хостов, нужно кол-во последних нулей возвести в степень 2-ки, к примеру у маски 255.255.0.0 = 11111111.11111111.00000000.00000000 последних нулей 16 шт. после единиц, поэтому 216 = 65536 хостов минус 2 хоста = 65534.
06 Аналогичным образом подсчитаем ip 192.168.0.11/24 = маска в двоичной системе будет 24 единицы и 8 нулей = 11111111.11111111.11111111.00000000 = 28 = 256 хостов минус 2 = 254.
В итоге получаем, что сеть 172.16.0.0/16 имеет на 65280 больше хостов, чем 192.168.0.0/24
07 Если к примеру маска указана в ip 192.168.0.0/25, переведем ее в 2-ичную систему, где 25 единиц = 11111111.11111111.11111111.10000000 с помощью все той же таблицы:
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
7 свободных нулей - это 27 = 128 хостов будет в сети. Получаем маску:
11111111 | .11111111 | .11111111 | .10000000 |
255 | .255 | .255 | .128 |
Получили 3 октета под сеть 192.168.0 (указывает маска 255.255.255) и последний октет под хосты (указывает маска в октете .128), которые начинаются с 1 до 126.