← Все вопросы

Задание 13 КЕГЭ: маски подсети — как считать на пальцах и кодом?

Задан 10 месяцев назад413 просмотров3 ответа
11

Тринадцатое про сети: дают IP-адрес и маску, спрашивают адрес сети, или наоборот по диапазону хостов подобрать маску. С битами путаюсь. Есть понятный способ и можно ли проверить на Python?

3 ответа

24
✓ Принятый ответ — помог автору

Адрес сети = IP AND маска (побитовое И по каждому октету). Маска — это N единиц подряд, потом нули; число единиц = длина префикса.

ip   = [192, 168, 14, 200]
mask = [255, 255, 255, 192]
net  = [a & b for a, b in zip(ip, mask)]
print(net)   # [192, 168, 14, 192]

Для задач «сколько адресов в подсети» считай нули в маске: k нулей → 2**k адресов (минус 2 на адрес сети и широковещательный, если спрашивают именно хосты). Маску 255 запоминай как 11111111, а «странные» октеты раскладывай: 192 = 11000000 (две единицы), 224 = 11100000 (три), 248 = 11111000 (пять). Удобно держать в голове таблицу 128/192/224/240/248/252/254/255.

Санчо Панчо AND по октетам через zip — наглядно, спасибо · 9 месяцев назад
Дмитрий Цмыг Таблица 192/224/240/248 — маст-хэв, выучил наизусть и щёлкаю · 9 месяцев назад
7

Адрес сети = IP and маска побитово. На Python — a & b по каждому октету через zip.

6

192 = 11000000. Запомни раскладку октетов маски, и половина задания решается устно.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект