13 задача ЕГЭ по информатике 2024 года посвящена IP-адресам и маскам. Я бы мог ограничиться простым шаблоном, чтобы все могли решить 13 задачу, не зная ничего про всемирную сеть. такое IP-адрес?
Обычно для понимания концепции ip-адресов используют аналогию с почтовой системой, но в современном мире такая аналогия будет не очень понятна (часто ли подростки ходят на почту?). Наверное, аналогия с телефонными номерами будет лучше. Представьте, что вы хотите позвонить своему другу по телефону. Для этого вы должны знать его номер - уникальный адрес его SIM-карты, который присвоил ему его оператор связи. Так вот, с выходом в интернет работает похожая система. Любое устройство с выходом в мировую паутину получает от провайдера уникальный IP-адрес (в реальности не совсем уникальный: с помощью динамических адресов и технологии NAT могут существовать одновременно одинаковые IP-адреса, но это отдельная тема, для ЕГЭ условимся, что IP-адрес - уникален).
IP-адреса 4 версии (именно эта версия будет на ЕГЭ) состоят из 32 бит (бит может быть или 0, или 1). Например: 10011011101110101110110011001100. Согласитесь, что для людей такая запись не очень удобна. Поэтому обычно IP-адрес делят на 4 части по 8 бит и каждую часть переводят в десятичную запись. Если перевести в человеческий вид предыдущий пример, у нас получится 155.186.236.204 (проделайте это самостоятельно)
Что такое адрес сети и хост?
Продолжим нашу аналогию с телефонными номерами: если ваш друг живёт в России, то его номер начинается с "+7" - это код нашей страны. То есть мобильная связь имеет внутреннее разделение. IP-адреса тоже было решено разделить для эффективной работы. Первые несколько бит IP-адреса идентифицируют сеть, оставшиеся отведены хостам (номер определяющий ваше устройство в данной сети).
Для данной сети можно посчитать количество хостов. Если на хосты отведено 10 бит, то всего возможных хостов - 2¹⁰=1024. Но 2 из них мы использовать не можем (они хостами НЕ являются):
IP с хостом заполненным 0 называется адресом сети (в примере: 10011011.10111010.11101100.00000000 или 155.186.236.0)
IP с хостом заполненным 1 называется широковещательным адресом, он отправляет сообщение всем устройствам сети (в примере: 10011011.10111010.11101111.11111111 или 155.186.238.255)
Итого: для пользователей остаётся 1024-2=1022 хоста.
Что такое маска сети?
Как я отмечал выше, количество бит, которое отводится на идентификацию сети не нормированно. Из-за этого возникает путаница: компьютер не знает, где заканчивается идентификация сети и начинается идентификация хоста. Эту проблему решает маска сети, которая передаётся вместе с IP адресом:
Маска показывает, сколько бит в IP-адресе идентифицирует сеть. Также маску можно записать в двоичной системе: биты идентифицирующие сеть будут равны 1, остальные 0. В данном примере, маска будет равна: 11111111.11111111.11111100.00000000 или 255.255.252.0.
Как по ip-адресу и маске определить адрес сети?
Мы выяснили, что компьютер посылает запрос со своим IP и маской сети. Как по этим данным определить адрес сети? Для этого нам понадобится поразрядная конъюнкция. Мы пишем маску в двоичном виде под IP в двоичном виде и применяем конъюнкцию поразрядно. То есть, если значение разряда маски равняется 1, то значение разряда IP не изменяется, если значение разряда маски равняется 0, то на выходе получится 0.
Решение задачи
Время применить наши знания на практике. Решим задачу из демоверсии ЕГЭ 2024
Итак: нам дан адрес сети и маска сети. Значит, мы можем узнать сколько бит отводится хостам. Переведём маску в двоичный вид: 11111111.11111111.11111111.11110000. В конце двоичного представления маски мы видим 4 нуля - значит количество IP-адресов данной сети равно 2⁴ = 16.
Нас интересует те, сумма единиц в двоичной записи которых, чётна. Посчитаем сумму единиц в общей части всех ip-адресов - в адресе сети. Переведём 192.168.32.160 в двоичный вид, получим: 11000000.10101000.00100000.10100000 - в нём содержится 8 единиц, их сумма равна 8. Значит в оставшихся 4 битах сумма единиц должна быть чётной.
Да, здесь можно перебрать все варианты и получить ответ, но мы пойдём другим путём. Сколько единиц может быть в оставшихся 4 битах? 0, 2 или 4, иначе сумма станет нечётной. Если единиц 0 или 4, то вариант такой расстановки единственен. Если единицы 2, то количество способов расставить 2 единицы на 4 позиции вычисляется по формуле сочетания:
Итого: 6 + 1 + 1 = 8 вариантов - это и будет нашим ответом.
Примечание: внимательно читайте вопрос задачи. Если бы в задаче спрашивалось про количество пользовательских хостов, то нам нужно было выкинуть из ответа широковещательный адрес (все 1) и адрес сети (все 0), они не могут принадлежать пользователям. Но в данном случае нас спросили про количество IP-адресов, поэтому широковещательный и сетевой адрес нужно включить в ответ.