Учебник MAXIMUM Education

Интернет-энциклопедия по школьным предметам от Maximum Education. Учебник поможет решить домашнее задание, подготовиться к контрольной и вспомнить прошлые темы.

10 класс
Информатика

Адресация в сети

Недооценить важность интернета на сегодняшний день, пожалуй, невозможно. Неудивительно, что данная тема вошла в курс по информатике.

Представьте, что вам надо отправить письмо вашему другу из Америки. Обычное письмо. Вы идете в почтовое отделение, покупаете конверт, запечатываете его, наклеиваете марки и отправляете. Как почтовая служба узнает, куда именно нужно доставить письмо? Через адрес. Если он будет неправильным, письмо не попадет в руки вашему другу. Тот же самый принцип работает и в интернете — чтобы отправить или получить какие-то данные из сети, вам нужно знать адрес того устройства, к которому вы обращаетесь. Разумеется, у вас тоже должен быть такой адрес, иначе никакие данные к вам просто не придут — будет неясно, куда отправлять. Когда компьютеров в сети два, три, да даже если их сто — раздать каждому адреса — не проблема. А что, если подключенных устройств 15 миллиардов? Да, именно столько различных устройств было подключено к интернету по статистике на 2017 год. А к 2021 ожидается число в 46 миллиардов. В этом случае необходимо использовать специальные методы адресации.

IP-адрес

Для адресации в интернете используют IP-адреса. Да, те самые, про которые шутят «я тебя по айпи вычислю». У каждого физического устройства (в том числе у того, с которого вы читаете этот текст), есть свой уникальный IP-адрес.

IP-адрес — это двоичное 32-битное число (посчитайте, сколько всего адресов можно раздать с помощью такого числа).

Вот, например, IP-адрес:

11000000101010000000000000000001

Для удобства IP-адрес делят на байты:

11000000 10101000 00000000 00000001

переводят в десятичную систему счисления:

192 168 0 1

и разделяют точками:

192.168.0.1

Маска сети

IP-адрес — это не просто адрес устройства. Он содержит в себе информацию как о самом устройстве (их еще называют хостами), так и о так называемой подсети (или просто сети), в которой это устройство находится. Логика здесь такая же, как у адресации домов на какой-то улице: в адресе всех домов присутствует название улицы, при этом каждый дом имеет свой уникальный номер. Аналогично, IP-адрес указывает как на адрес сети, в которой находится устройство (Network ID), так и на адрес хоста в этой сети (Host ID). IP-адрес, Host ID и Network ID придумывали связывать между собой через специальную дополнительную последовательность — маску сети.

Маска сети — это тоже двоичное 32-битное число, но оно имеет необычный формат: в маске сети в начале идут все единицы, а потом — все нули.

Иначе говоря, если где-то в маске стоит ноль, то все разряды дальше тоже будут нулями.

Например, вот это маска:

11111111 11111111 11110000 00000000

и вот это маска:

11111111 11100000 00000000 00000000

а вот это — нет:

11111111 1100100 11111100 00000000

Маску сети, по аналогии с IP-адресом, для удобства делят на байты, переводят в десятичную систему счисления и записывают через точку. Например, маску:

11111111 11111111 11110000 00000000

записывают как:

255.255.240.0

Получение Network ID и Host ID через IP-адрес и маску

Такой формат числа — сначала единицы, а потом нули — не случаен. С помощью этой записи можно выделить в IP-адресе только те разряды, которые относятся к адресу сети. Остальные, соответственно, будут относиться к адресу хоста в сети. Делается это с помощью операции поразрядной конъюнкции (о том, что такое поразрядная конъюнкция и как ее считать, см. раздел теории к уроку «Логические высказывания»). Ниже приведен алгоритм нахождения адреса сети по IP-адресу и маске:

  1. Выписать IP-адрес и маску друг под другом;

  2. Перевести каждый байт IP-адреса и маски в двоичную систему счисления;

  3. Выполнить поразрядную конъюнкцию;

  4. Перевести результат обратно в десятичную систему счисления

Результат поразрядной конъюнкции и будет являться адресом сети. А те разряды, которые «уничтожились» нулями в маске, будут указывать на адрес хоста в сети. Ниже приведен пример вычисления Network ID и Host ID по IP-адресу и маске.

Пример.

Пускай дан IP-адрес 149.131.130.125 и маска 255.255.192.0 и требуется определить адреса сети и хоста.

Выписываем IP-адрес и маску друг под другом:

149.131.130.125

255.255.192.0

переводим в двоичную систему:

10010101.10000011.10000010.01111101

11111111.11111111.11000000.00000000

выполняем поразрядную конъюнкцию для каждого разряда IP-адреса и маски. Получим:

10010101.10000011.10000000.00000000

переводим обратно в десятичную:

149.131.128.0 — это адрес сети (Network ID).

Все, что было в IP-адресе, но не попало в Network ID — это адрес хоста:

00000000.00000000.00000010.01111101 или 0.0.2.125

Сообразительный читатель уже заметил, что не обязательно каждый раз переводить все байты адреса и маски в двоичную систему счисления. Чтобы понять, где адрес сети будет в точности повторять IP-адрес, достаточно посмотреть на те байты в маске, которые имеют значение 255 (это как раз восемь единиц). В примере выше первые два байта маски равны 255, следовательно, первые два байта IP-адреса просто перенесутся в адрес сети без изменений. Последний байт маски — это 0, значит и последний байт адреса сети тоже будет равен 0. Остается выполнить операцию поразрядной конъюнкции только над третьим байтом IP-адреса и маски, чтобы найти третий байт адреса сети, и задача решена.