ГлавнаяЕГЭ ИнформатикаТеорияIP-адресация и маски подсети: разбор задания 13 ЕГЭ

IP-адресация и маски подсети: разбор задания 13 ЕГЭ

Коротко о главном

IP-адрес — это 32-битное число, которое делится на номер сети и номер узла (хоста). Маска подсети показывает, где заканчивается номер сети и начинается номер узла: единицы маски соответствуют биту сети, нули — биту узла. Номер сети получают операцией поразрядной конъюнкции (AND) IP-адреса и маски. Задача №13 ЕГЭ обычно требует найти неизвестную часть адреса, маску или диапазон адресов узлов сети по остальным данным.

Определения и формулы/правила

Понятие Пояснение
IP-адрес 4 байта (октета), записывается как A.B.C.DA.B.C.D, каждый октет 0−2550-255
Маска подсети 4 байта, слева единицы (сеть), справа нули (узел), например 255.255.255.0255.255.255.0
Номер сети N=IP AND MN = IP \ \text{AND} \ M (поразрядно, побитово)
Номер узла H=IP AND M‾H = IP \ \text{AND} \ \overline{M} (инверсия маски)
Короткая запись маски A.B.C.D/nA.B.C.D/n, где nn — число единичных битов маски
Число адресов в сети 232−n2^{32-n}, из них узлов обычно 232−n−22^{32-n}-2 (минус адрес сети и широковещательный)
Правило AND 1 AND 1=11 \ \text{AND} \ 1 = 1; 1 AND 0=01 \ \text{AND} \ 0 = 0; 0 AND x=00 \ \text{AND} \ x = 0
Признак одной сети Два узла в одной сети, если номера сетей совпадают: IP1 AND M=IP2 AND MIP_1 \ \text{AND} \ M = IP_2 \ \text{AND} \ M

Перевод октета в двоичный вид: каждый октет — 8 бит, диапазон 0−2550-255. Например, 192=110000002192 = 11000000_2, 255=111111112255 = 11111111_2, 0=0000000020 = 00000000_2.

Правило совпадения бит: если в маске стоит 1, соответствующий бит IP-адреса должен совпадать у всех узлов одной сети; если 0 — бит может быть любым (это часть адреса узла).

Как применять (примеры)

Пример 1. Найти номер сети. IP-адрес: 192.168.10.130192.168.10.130, маска: 255.255.255.192255.255.255.192. Последний октет маски: 192=110000002192 = 11000000_2. Последний октет IP: 130=100000102130 = 10000010_2. AND: 11000000 AND 10000010=100000002=12811000000 \ \text{AND} \ 10000010 = 10000000_2 = 128. Остальные октеты совпадают с маской (255), значит остаются без изменений. Номер сети: 192.168.10.128192.168.10.128.

Пример 2. Определить, в одной ли сети два узла. Узел А: 10.0.5.2010.0.5.20, узел Б: 10.0.6.2010.0.6.20, маска: 255.255.254.0255.255.254.0. Третий октет маски: 254=111111102254 = 11111110_2. Третьи октеты адресов: 5=0000010125 = 00000101_2, 6=0000011026 = 00000110_2. AND с маской: 00000101 AND 11111110=000001002=400000101 \ \text{AND} \ 11111110 = 00000100_2=4; 00000110 AND 11111110=000001102=600000110 \ \text{AND} \ 11111110 = 00000110_2=6. Результаты не совпадают (4≠64 \ne 6) — узлы в разных сетях.

Пример 3. Найти диапазон адресов узлов сети. Сеть: 172.16.32.0/24172.16.32.0/24 (маска 255.255.255.0255.255.255.0). Первый адрес сети: 172.16.32.0172.16.32.0 (адрес сети, не используется как адрес узла). Последний адрес: 172.16.32.255172.16.32.255 (широковещательный, не используется как адрес узла). Адреса узлов: от 172.16.32.1172.16.32.1 до 172.16.32.254172.16.32.254.

Типичные ошибки

  • Путают операцию AND с обычным сложением или сравнением октетов «по числам» без перевода в двоичный вид — при неполных октетах маски (не 0 и не 255) это даёт неверный результат.
  • Забывают перевести число в двоичную систему при неоднородных октетах маски (когда октет маски не равен 0 или 255, например 192,224,240192, 224, 240).
  • Путают номер сети и номер узла: номер сети — результат AND с маской, номер узла — оставшиеся биты (там, где в маске нули).
  • Включают адрес сети и широковещательный адрес в диапазон «адресов узлов» — их нужно исключать.
  • Ошибаются в переводе десятичного числа в двоичное представление байта (забывают дополнять нулями до 8 бит).
  • Неверно определяют границу сети при маске вида /n/n, где nn не кратно 8 (например, /26/26, /27/27) — нужно точно считать биты внутри октета.

Где встречается на экзамене

Это классическое задание №13 ЕГЭ по информатике. Формулировки:

  • дан IP-адрес и маска — найти адрес сети или диапазон адресов узлов;
  • дана маска и часть IP-адреса с неизвестными числами — восстановить пропущенные значения, зная что адрес принадлежит определённой сети;
  • даны два IP-адреса одной сети — найти маску, удовлетворяющую условию (обычно ищут маску с наибольшим числом единиц, при которой оба узла остаются в одной сети);
  • определить, сколько узлов может быть в сети с заданной маской.

Для успешного решения важно уверенно переводить числа между двоичной и десятичной системами и чётко выполнять поразрядную конъюнкцию.

Частые вопросы

Как быстро перевести десятичное число в двоичный октет?

Раскладывайте число по степеням двойки от 128 до 1: 128,64,32,16,8,4,2,1128,64,32,16,8,4,2,1. Например, 192=128+64=110000002192 = 128+64 = 11000000_2. Всегда дополняйте до 8 знаков нулями слева.

Как понять, сколько адресов доступно для узлов в сети?

Число всех адресов равно 2k2^{k}, где kk — количество нулевых бит маски (бит узла). Для узлов вычитают 2 адреса (сети и широковещательный): 2k−22^{k}-2.

Что делать, если маска не оканчивается на 0 или 255 в октете?

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

Как найти маску, если известны два IP-адреса одной сети и требуется максимум единиц?

Сравните биты обоих адресов слева. Все совпадающие старшие биты — это единицы маски, до первого несовпадающего бита. С этого места и далее в маске нули.

В чём разница между номером сети и адресом узла?

Номер сети — результат AND IP-адреса с маской (биты, где в маске 1). Номер узла — оставшиеся биты (где в маске 0), они определяют конкретный компьютер в сети.

Почему первый и последний адрес сети не используют для узлов?

Первый адрес (все нули в поле узла) обозначает саму сеть, последний (все единицы в поле узла) — широковещательный адрес для рассылки всем узлам сети. Их резервируют, поэтому они не назначаются конкретным устройствам.

Потренироваться: задание 13