Информатика · тема 10 из 13 · ОГЭ № 7 · ЕГЭ № 13

IP-адрес, маска и адрес сети

Как устроен IPv4-адрес, зачем нужна маска и как поразрядным «И» получить адрес сети — основа задания ЕГЭ-13.

15 мин чтенияОГЭЕГЭ17 заданий

Коротко

главное за 30 секунд
  1. IPv4-адрес — 32 бита, записывают четырьмя числами 0–255 через точки
  2. Маска — сначала подряд единицы, затем подряд нули: например 255.255.240.0
  3. Адрес сети = IP-адрес ∧ маска (поразрядное И, побайтно)
  4. Число адресов сети 232−k, где k — число единиц в маске; для узлов на 2 меньше
  5. Байты маски бывают только 0, 128, 192, 224, 240, 248, 252, 254, 255

IP-адрес: четыре байта

IP-адрес компьютера в сети — 32-битное двоичное число. Его записывают четырьмя байтами (числами от 0 до 255) через точки: 192.168.14.37. Каждое число — это 8 бит.

Адрес состоит из двух частей: номер сети (левая часть) и номер узла (правая часть). Все компьютеры одной сети имеют одинаковый номер сети.

Пример. $200 = 128 + 64 + 8 = 11001000_2$. Чтобы получить двоичную запись байта, разложите число на степени двойки: 128, 64, 32, 16, 8, 4, 2, 1.

Проверь себя. Запишите число 200 в двоичной системе (8 разрядов).

Ответ: 11001000

192110000001681010100014000011103700100101номер сети (24 бита)номер узламаска 255.255.255.0 = 11111111.11111111.11111111.00000000 (/24)
Рис. 1. IP-адрес 192.168.14.37: четыре байта; при маске 255.255.255.0 три левых байта — номер сети, последний — номер узла

Маска подсети и адрес сети

Маска показывает, какая часть адреса — номер сети. В двоичной записи маски сначала идут единицы (номер сети), потом нули (номер узла). Например, 255.255.240.0 = 11111111.11111111.11110000.00000000.

Адрес сети получают поразрядной конъюнкцией: IP-адрес ∧ маска. Там, где в маске 1, биты адреса сохраняются, там, где 0, — обнуляются.

3-й байт
IP: 19110111111
Маска: 24011110000
Адрес сети: 17610110000
Ловушка. Байты, равные 255 и 0, при «И» дают соответственно тот же байт и ноль. Считайте побитово только тот байт, где стоит «неполное» значение маски (например, 240).
IP: 19110111111маска: 24011110000сеть: 17610110000И= 176= 191= 240единицы маски сохраняют биты адреса, нули — обнуляют
Рис. 2. Адрес сети = IP ∧ маска: где в маске 0, бит обнуляется. Здесь 191 ∧ 240 = 176

Сколько адресов в сети

Если в маске $k$ единиц (префикс /k), то под номер узла остаётся $32-k$ бит, а всего адресов в сети $2^{32-k}$. Два адреса особые: адрес сети (все биты узла — нули) и широковещательный (все биты узла — единицы). Компьютерам достаются $2^{32-k}-2$ адресов.

МаскаПрефиксБит узлаАдресов для узлов
255.255.255.0/248254
255.255.255.192/26662
255.255.255.240/28414
255.255.240.0/20124094
Проверь себя. Сколько IP-адресов можно выдать узлам сети с маской 255.255.255.192?

Ответ: 62

.0.6362 адреса узлов: .1 … .62адрес сетишироковещательный26 бит — сеть, 6 бит — узел; всего 2⁶ = 64 адреса
Рис. 3. Сеть с маской /26: 64 адреса; крайние — адрес сети и широковещательный, 62 адреса остаются узлам

ЕГЭ-13: типовые задачи и Python

Три постоянных сюжета задания 13: (1) по IP и маске найти адрес сети или один из его байтов; (2) по IP и адресу сети найти подходящие маски (наибольшее или наименьшее значение байта, число масок); (3) подсчитать адреса сети с заданным свойством (например, чётное число единиц).

Пример. Узел 98.162.71.123, адрес сети 98.162.64.0. Третий байт: IP 71 = 01000111, сеть 64 = 01000000. Маска должна обнулять три младших бита (в IP они единицы, а в сети нули) и сохранять шестой бит. Значит, третий байт маски — от 11000000 = 192 до 11111000 = 248.

import ipaddress

net = ipaddress.ip_network('192.168.32.160/27')
print(net.num_addresses)                     # 32
n = 0
for ip in net:
    if bin(int(ip)).count('1') % 2 == 0:     # чётное число единиц
        n += 1
print(n)                                     # 16
байт128192224240248252254255двоично1000000011000000111000001111000011111000111111001111111011111111единиц12345678например, 253 = 11111101 не годится: после нуля снова единица
Рис. 4. Допустимые значения «неполного» байта маски: единицы идут подряд слева
Практика

Закрепите тему: 17 заданий для ОГЭ и ЕГЭ

От простых к сложным: базовый уровень — 5, повышенный — 7, высокий — 5. Мгновенная проверка, подсказки, подробные решения и тренажёр ошибок.

Решать задания по теме Флеш-карточки