Перейти к содержимому

маска в диапазоне IP адресов (Например: ***.***.***.*** / 23 и т.д.)

доп информация

Например Блоки IP адресов:

00.206.4.0/23

00.206.4.0 — Это начальный IP адрес.

23 — это маска. Это значит что используется маска №23.

Вот весть список масок.

№маски - маска 
1 - 128.0.0.0
2 - 192.0.0.0
3 - 224.0.0.0
4 - 240.0.0.0
5 - 248.0.0.0
6 - 252.0.0.0
7 - 254.0.0.0
8 - 255.0.0.0
9 - 255.128.0.0
10 - 255.192.0.0
11 - 255.224.0.0
12 - 255.240.0.0
13 - 255.248.0.0
14 - 255.252.0.0
15 - 255.254.0.0
16 - 255.255.0.0
17 - 255.255.128.0
18 - 255.255.192.0
19 - 255.255.224.0
20 - 255.255.240.0
21 - 255.255.248.0
22 - 255.255.252.0
23 - 255.255.254.0
24 - 255.255.255.0
25 - 255.255.255.128
26 - 255.255.255.192
27 - 255.255.255.224
28 - 255.255.255.240
29 - 255.255.255.248
30 - 255.255.255.252
31 - 255.255.255.254
32 - 255.255.255.255

24 это № этой 255.255.255.0 маски. Что это значит.

число 255 это в 2 битной системе 1 в каждом из 8 бит, т.е. 1111 1111

число 0 это в 2 битной системе 0 в каждом из 8 бит, т.е. 0000 0000

в 2 битной системе это 255.255.255.0 = 1111 1111. 1111 1111. 1111 1111. 0000 0000

Для того чтобы лучше понимать нужно инвертировать маску в 2 битной системе, т.е. 0 заменить на 1 и наоборот, т.е. получим

0000 0000. 0000 0000. 0000 0000. 1111 1111

Получается что если в блоке нет не одной единицы то этот блок остается неизменным, т.е менять мы можем только в последнем блоке.

Например если маску представить в виде такого шаблона #.#.#.*, то меняться цифры будут только там где стоит *

и поскольку число в 2 битной системе 1111 1111 в 10ричной системе будет 255, это значит что в изначальному IP адресу мы можем изменять только последний блок прибавляя к числу +1, 255 раз

Поскольку мы взяли для примера 00.206.4.0 IP, то при маске №24 мы получим такой список IP

00.206.4.0
00.206.4.1
00.206.4.2
и т.д. до
00.206.4.255
всего 256 (от 0 до 255)

Если для выбранного нами в качестве примера IP 00.206.4.0 возьмем например маску № 15 которая выглядит так

255.254.0.0, то в 2 битной системе это будет выглядеть уже так

1111 1111. 1111 1110 . 0000 0000 . 0000 0000

после инвертирования мы получим

0000 0000. 0000 0001. 1111 1111. 1111 1111

Значит выделенный диапазон IP равен 131’072 шт (2 в 17 степени)

Пример № 1 на Python 3

#!/usr/bin/env python3
nm = 17 # введем номер маски
print(2**nm) #131 072

Пример № 2 на Python 3

#!/usr/bin/env python3
#вариант 3 (Другой вариант решения)
nm = int(input("Введите число от 0 до 32 с номером маски: "))
print(f'Вы ввели маску № {nm}')
print(f'{2**(32-nm)}   к-во IP адрес(а/ов) для данной маски')
s = bin(int("1"*nm, 2))[2:]
s += '0'*(32-len(s))
print(f'{s[0:8]},{s[8:16]},{s[16:24]},{s[24:32]}  маска в двухричной системе исчисления')
print(f'{int(s[0:8],2)},{int(s[8:16],2)},{int(s[16:24],2)},{int(s[24:32],2)}  маска в десятиричной системе исчисления')

Добавить комментарий