Ах, IP-адреса и маски подсети – звучит как начало анекдота: «Заходит IP-адрес в бар и спрашивает у маски подсети…» Но не будем забегать вперёд! В прошлой статье мы уже познакомились с моделью OSI и поняли, что данные в сети путешествуют куда активнее туристов на майские праздники. Каждый гаджет в этой сети имеет свой уникальный IP-адрес, который можно сравнить с паспортом – без него никуда. А маска подсети – это словно шлагбаум на дороге: она решает, кто пойдёт направо (в сеть), а кто налево (вузел).
Теперь пришло время перейти от теории к практике. Представьте себе ЕГЭ по информатике как квест для настоящих гиков.
Задание 13 требует от вас не просто знать, что такое IP-адресация, а уметь ловко вычислять адрес сети, широковещательный адрес и количество хостов. Кто-то скажет: «Зачем всё это вручную? Есть же Python!» И будет абсолютно прав – модуль ipaddress спасёт вас от бессонных ночей.
Но сначала немного теории для тех, кто любит покопаться в деталях. Маска подсети – это 32-битное число, записанное в привычном формате четырёх чисел от 0 до 255 через точки.
Например, классическая маска 255.255.255.0 выглядит так же скучно и строго, как учитель математики на первом уроке: никаких сюрпризов! В двоичном виде это просто ряд из двадцати четырёх единиц подряд и восьми нулей после них – словно солдатский строй без единого нарушителя дисциплины.
Почему важно соблюдать порядок? Потому что если вдруг единицы начнут прыгать туда-сюда между нулями – получится такая мешанина, что даже самый опытный сетевой админ запутается.
Представьте себе маску 255.255.0.255 – это как если бы вы пытались надеть носок поверх ботинка… ну вы поняли.
Чтобы не писать каждый раз эту длинную цепочку цифр, придумали CIDR-нотацию – компактный способ записи через косую черту и число префикса, например /24 для нашей любимой маски 255.255.255.0. Чем выше число после косой черты, тем меньше устройств поместится в вашей сети; это как размер комнаты: больше префикс — меньше гостей.
Количество адресов вычисляется формулой N = 2^(32 — префикс).
Если подумать о компьютерах как о гостях на вечеринке, то при префиксе /24 у вас есть целых 256 мест — но два из них всегда заняты хозяином дома (адрес сети) и охранником на входе (широковещательный адрес). Так что для гостей остаётся всего 254 места.
Ну а теперь представьте ситуацию: у вас есть устройство с IP-адресом 192.168.1.67 и маской 255.255.255.0 — классика жанра! Чтобы понять адрес сети, нужно выполнить побитовую операцию AND между IP и маской — звучит страшно?
На самом деле это похоже на проверку списка гостей по списку приглашённых: совпадает — проходи!
Переводим числа в двоичный вид (это как читать мысли компьютера) и применяем операцию И к каждому биту:
IP-адрес: 11000000.10101000.00000001.01000011
Маска: 11111111.11111111.11111111.00000000
Результат: 11000000.10101000.00000001.00000000
Итоговый адрес сети – 192.168.1.0 — место встречи всех устройств этой локальной тусовки.
А чтобы узнать номер конкретного устройства (узла), нужно инвертировать маску (заменить все единицы на нули и наоборот) и снова сделать AND с IP-адресом — словно искать своего друга по бейджику среди толпы:
Инверсия маски: 00000000.00000000.00000000.11111111
IP-адрес: 11000000.10101000.00000001.01000011
Результат: 00000000.00000000.00000000.01000011
Вот оно! Устройство номер 67 в сети.
Знаете, эта операция напоминает мне старый анекдот про программиста:…