К содержанию

Подтема 2 из 6

Адрес сети и границы сети

Как найти адрес сети, её края и адреса компьютеров — и ответ задачи темы.

Адрес сети

Какой адрес сети у узла 172.20.77.140 с маской 255.255.252.0?

Адрес сети — поразрядное «И» адреса и маски: под единицами маски биты адреса сохраняются, под нулями становятся нулями. «Поразрядное» — отдельно в каждой позиции, «И» (конъюнкция) даёт 1, только если оба бита — единицы.

Поразрядное «И» адреса 172.20.77.140 и маски /22: под единицами маски биты адреса сохраняются, под нулями становятся нулями. Получается адрес сети 172.20.76.0.
Вручную

Октеты маски 255 сохраняют октеты адреса: 172 и 20. Октет 0 обнуляет: четвёртый октет сети — 0. Считать нужно только смешанный октет: 77 = 01001101, 252 = 11111100, «И» — 01001100 = 76. Адрес сети — 172.20.76.0.

Python

Поразрядное «И» в Python — . Октет за октетом:

print(172 & 255, 20 & 255, 77 & 252, 140 & 0)
172 20 76 0

Адрес сети не обязан заканчиваться на .0: у узла 192.168.10.173 с маской /26 адрес сети 192.168.10.128. Нулями заполнена вся часть узла, а сколько её битов — решает маска.

Размер блока

Быстрая ручная проверка: смешанный октет маски m делит значения этого октета адреса на блоки по 256 − m. Октет сети — начало блока, в котором лежит октет адреса.

Октет маски 252 делит значения третьего октета на блоки по 4. Число 77 лежит в блоке 76–79: начало блока — ближайшее кратное 4, не большее 77.
  1. Найди первый слева октет маски, меньший 255: здесь 252.
  2. Размер блока d = 256 − 252 = 4.
  3. Начало блока — ближайшее кратное d, не большее октета адреса: 77 = 19 · 4 + 1, начало 76, конец 79.
  4. Октеты правее в адресе сети — 0, в широковещательном адресе — 255.
Обоснование · необязательноПочему размер блока равен 256 − m

Если в октете маски r нулей, то m = 256 − 2ʳ: например, 252 = 256 − 4. Значит, 256 − m = 2ʳ — ровно столько значений у свободной части этого октета.

Границы сети

Сеть — все адреса от адреса сети (часть узла — нули) до широковещательного адреса (часть узла — единицы). Эти два адреса компьютерам не назначают.

В нашей сети часть узла — десять битов. Все нули — 172.20.76.0, все единицы — 172.20.79.255. Компьютерам достаются адреса между ними: наименьший 172.20.76.1, наибольший 172.20.79.254. Ответ задачи темы — сумма октетов: 172 + 20 + 79 + 254 = 525.

Вручную

Блок третьего октета — 76–79. Широковещательный адрес: конец блока 79 и 255 в последнем октете. Наибольший адрес компьютера — на единицу меньше: 172.20.79.254.

Python

ip_network со strict=False строит сеть по адресу узла: адрес узла не обязан быть адресом сети. Свойства network_address и broadcast_address — края сети, к адресу можно прибавить или вычесть число. Сумму октетов даёт , адрес без точек — :

from ipaddress import ip_networknet = ip_network('172.20.77.140/255.255.252.0', strict=False)print(net.network_address, net.broadcast_address)last = net.broadcast_address - 1print(last, sum(int(x) for x in str(last).split('.')))print(str(last).replace('.', ''))
172.20.76.0 172.20.79.255 172.20.79.254 525 1722079254

Адреса на .0 и .255 не обязательно особые: в нашей сети 172.20.77.0 и 172.20.76.255 — обычные адреса компьютеров. Особый адрес — тот, у которого вся часть узла из нулей или из единиц, а не только последний октет.

Тонкости:strict и сети /31, /32

Без strict=False функция ip_network требует, чтобы ей дали именно адрес сети, и для 172.20.77.140 остановится с ошибкой. Но если по условию нужно проверить, что запись — адрес сети, ошибка как раз полезна: strict=False молча исправил бы запись.

Правило «два адреса не назначают» относится к обычным сетям: в сети /31 оба адреса — узлы, в /32 адрес один.

Форма ответа

Найденный адрес записывают в той форме, которую требует условие. Выбери форму, чтобы увидеть ответ для адреса 172.20.79.254:

сумма октетов
525
без точек
1722079254
буквы по таблице
буква каждого октета слева направосначала найди числовой адрес, потом замени октеты
один октет
третий октет — 79

Итого

  • Адрес сетиадрес И маска; считать только смешанный октет
  • Блокd = 256 − m; начало — кратное d
  • Края сетичасть узла из нулей и из единиц
  • Компьютерыnetwork_address + 1 … broadcast_address - 1
  • Ответсумма октетов, без точек или буквами

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

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

Вопрос 1
Чему равно 173 И 192 (поразрядное «И»)?
ОтветСкрыть ответ
Ответ
128: 10101101 И 11000000 = 10000000 — сохраняются только два старших бита.
Вопрос 2
Найди адрес сети для узла 10.8.45.200 и маски 255.255.255.224.
ОтветСкрыть ответ
Ответ
10.8.45.192: блок 256 − 224 = 32, ближайшее кратное 32, не большее 200, — 192.
Вопрос 3
Найди широковещательный адрес сети узла 192.168.5.77 с маской /27.
ОтветСкрыть ответ
Ответ
192.168.5.95: блок 32, сеть начинается с 64, последний адрес — 64 + 32 − 1 = 95.
Вопрос 4
Может ли адрес 172.20.77.0 быть адресом компьютера в сети задачи темы?
ОтветСкрыть ответ
Ответ
Да: часть узла — десять битов, и у 172.20.77.0 они не все нули. Адрес сети — только 172.20.76.0.
Вопрос 5
Запиши наименьший адрес компьютера сети задачи темы без точек.
ОтветСкрыть ответ
Ответ
17220761 — это адрес 172.20.76.1.

Практика

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

Сумма октетов адреса сети

Узел имеет IP-адрес 157.230.96.214, маска сети равна 255.255.255.248. Определи адрес сети и в ответе запиши сумму значений его октетов.

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

Адрес сети через размер блока

Найди адрес сети для адреса 10.8.45.200 и маски 255.255.255.224 вручную, через размер блока.

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

Граница в третьем октете

Найди адрес сети для адреса 81.200.130.9 и маски 255.255.192.0.

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

Широковещательный адрес

Для адреса 46.31.250.17 и маски 255.255.240.0 найди широковещательный адрес.

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

Наибольший адрес компьютера

Для адреса 192.168.5.77 и маски /27 найди наибольший адрес, который можно назначить компьютеру.

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

Наибольший адрес компьютера

Сеть задана IP-адресом одного из входящих в неё узлов 64.137.205.18 и маской 255.255.252.0. Найди наибольший IP-адрес, который может быть назначен компьютеру. В ответе запиши сумму значений октетов этого адреса.

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

Ответ буквами

По адресу узла 211.47.155.3 и маске 255.255.248.0 определи адрес сети. Запиши ответ буквами по таблице, без точек: A — 0, B — 3, C — 47, D — 152, E — 155, F — 211, G — 248, H — 255.

Введите четыре буквы без точек.