К содержанию

Подтема 3 из 6

Количество адресов и номер узла

Сколько адресов в сети, какую маску выбрать под нужное число компьютеров и какой номер у узла.

Количество адресов

Сколько адресов в сети задачи темы и сколько из них можно назначить компьютерам?

h свободных битов дают 2ʰ адресов; без адреса сети и широковещательного — 2ʰ − 2. Каждый свободный бит — 0 или 1, и каждый новый бит удваивает число вариантов. В нашей сети h = 10: 2¹⁰ = 1024 адреса, компьютерам — 1022.

Вручную

Проверка через октеты: третий октет пробегает четыре значения 76–79, при каждом последний октет — 256 значений: 4 · 256 = 1024. Каждая лишняя единица маски уменьшает сеть вдвое: /23 — 512 адресов, /24 — 256.

Python
from ipaddress import ip_networkfor p in [22, 23, 24]:    net = ip_network(f'172.20.77.140/{p}', strict=False)    print(p, 32 - p, net.num_addresses, net.num_addresses - 2)
22 10 1024 1022 23 9 512 510 24 8 256 254

Вычитать два можно только из всех адресов сети. Если адреса считают по дополнительному условию, специальные адреса проверяют отдельно (подтема 5).

Сеть под компьютеры

Маску под число компьютеров подбирают по наименьшему h, при котором 2ʰ − 2 не меньше нужного. Для 1000 компьютеров: 2⁹ − 2 = 510 мало, 2¹⁰ − 2 = 1022 хватает. Значит, h = 10, p = 22 — маска нашей сети. В сети ровно 1000 адресов быть не может: размер сети — всегда степень двойки.

Программа увеличивает h, пока адресов ещё мало ():

need = 1000h = 0while 2 ** h - 2 < need:    h += 1print(h, 32 - h)
10 22
Тонкости:деление на подсети

Сеть /24 делят на подсети /26: граница сдвигается на 2 бита, 2² = 4 подсети по 2⁶ = 64 адреса, 4 · 64 = 256. Из числа подсетей два не вычитают — «минус два» относится к адресам внутри сети.

Номер узла

Какой порядковый номер у компьютера 172.20.77.140 в его сети?

Номер узла — его расстояние от адреса сети: номер = I − N. У адреса сети номер 0, у следующего — 1 и так далее. I и N — адреса узла и сети как целые числа.

Сеть 172.20.76.0/22 — четыре строки по 256 адресов. Адрес 172.20.77.140 стоит во второй строке: перед ним одна полная строка и ещё 140 адресов, поэтому его номер 256 + 140 = 396.
Вручную

(77 − 76) · 256 + 140 = 396: между соседними значениями третьего октета последний проходит все 256 значений. Обратно: узел с номером 650 = 2 · 256 + 138 — это 172.20.78.138.

Python
from ipaddress import ip_address, ip_networkaddress = ip_address('172.20.77.140')net = ip_network('172.20.77.140/22', strict=False)print(int(address) - int(net.network_address))print(net.network_address + 650)
396 172.20.78.138

Единицу здесь не добавляют: номер — расстояние, а не количество адресов от начала до узла.

Итого

  • Все адреса2ʰ, h = 32 − p
  • Компьютеры2ʰ − 2: без адреса сети и широковещательного
  • Под N компьютеровнаименьшее h с 2ʰ − 2 ≥ N
  • Номер узлаI − N; int(address) - int(net.network_address)

Проверьте себя

Ответь сначала сам, потом открой ответ.

Вопрос 1
Сколько всего адресов в сети с маской /19?
ОтветСкрыть ответ
Ответ
8192: свободных битов 32 − 19 = 13, 2¹³ = 8192.
Вопрос 2
Сколько адресов можно назначить компьютерам в сети с маской 255.255.255.240?
ОтветСкрыть ответ
Ответ
14: свободных битов 4, 2⁴ − 2 = 14.
Вопрос 3
Какая самая маленькая сеть вместит 200 компьютеров? Назови длину префикса.
ОтветСкрыть ответ
Ответ
/24: 2⁷ − 2 = 126 мало, 2⁸ − 2 = 254 достаточно, p = 32 − 8.
Вопрос 4
Какой номер у узла 192.168.10.173 в сети с маской /26?
ОтветСкрыть ответ
Ответ
45: адрес сети 192.168.10.128, номер — расстояние от него: 173 − 128.

Практика

Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.

Адреса компьютеров при маске /21

Сколько адресов можно назначить компьютерам в сети с маской 255.255.248.0?

Введите число.

Адреса для компьютеров

Сколько адресов можно назначить компьютерам в сети с маской 255.255.255.240?

Введите число.

Адреса сети /19

Сколько всего адресов в сети с маской /19?

Введите число.

Адреса компьютеров при маске /25

Для некоторой подсети используется маска 255.255.255.128. Сколько различных адресов компьютеров допускает эта маска, если адрес сети и широковещательный адрес не используют?

Введите число.

Сеть на 1000 компьютеров

Нужно разместить не менее 1000 компьютеров, два специальных адреса использовать нельзя. Найди маску самой маленькой подходящей сети.

Введите маску: четыре числа через точку.

Подсети /26 в сети /24

Сеть /24 делят на подсети /26. Сколько получится подсетей?

Введите число.

Номер узла

Какой номер у узла 192.168.4.207 в сети с маской /27?

Введите число.

Номер узла в нескольких октетах

Какой номер у узла 10.5.142.77 в сети с маской /21?

Введите число.

Порядковый номер компьютера

Маска сети 255.255.240.0, IP-адрес компьютера в сети 118.64.201.90. Чему равен порядковый номер компьютера в сети?

Введите число.

Узел с номером 1000

В сети 10.40.16.0/20 найди адрес узла с номером 1000.

Введите IP-адрес: четыре числа через точку.