Что такое маска подсети на роутере
Перейти к содержимому

Что такое маска подсети на роутере

  • автор:

Что такое маска подсети на роутере

Нужны новые клиенты? Тогда Вам рекомендуем посмотреть этот раздел нашего сайта
_____

Маска подсети определяет идентификатор сети, являющийся частью IP адреса. Маршрутизаторам необходима эта информация для работы. Каким образом маршрутизатор узнает, как доставить пакет к месту назначения?

В этом разделе описываются, как маршрутизатор использует маски подсети.

Как маршрутизаторы используют маски подсетей

Как маршрутизаторы используют маски подсетей

Хост А определяет, что сеть назначения требует использование шлюза по умолчанию (маршрутизатор А).

У маршрутизатора А есть маршрут к сети назначения 192.168.2.0, через соответствующий интерфейс к маршрутизатору В пересылается пакет.

2.

Так как сеть 192.168.2.32/27 непосредственно присоединена к интерфейсу еО/2 маршрутизатора В, он используя ARP определяет MAC адрес хоста В

У маршрутизатора В два интерфейса с сетью 192.168.2.0, но маска 27 означает, что адреса представляются как две разные сети, 192.168.2.32 и 192.168.2.64

У всех маршрутизаторов есть таблица маршрутизации, зависящая от положения маршрутизатора в сетевой иерархии. Таблица может быть маленькой и простой или большой и сложной. Это обсуждение рассматривает только классовую маршрутизацию являющейся противоположностью более сложному способу, который называется бесклассовой маршрутизацией.

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

Маршрутизатор будет распространять таблицу маршрутизации с идентификаторами всех известных сетей, а также сравнивать со своей таблицей маршрутизации адреса сетей назначения пакетов, которые необходимо переслать. Если сеть не является непосредственно присоединенной к маршрутизатору, то он также хранит адрес следующего узла, к которому пакеты должны быть пересланы.

Чтобы маршрутизатор мог выполнять свои функции без необходимости хранения всех сетей назначения в его таблице, используется маршрут по умолчанию. По этому маршруту пересылаются пакеты с теми адресами назначения, которые не были найдены в таблице маршрутизации.

Что такое IP-адрес и маска подсети и зачем они нужны

Рассказываем, что такое IP-адрес и маска подсети, зачем они нужны и как используются.

Иллюстрация: Оля Ежак для Skillbox Media

Дмитрий Зверев

Дмитрий Зверев

Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.

Компьютерам, серверам и роутерам в интернете нужно понимать, куда отправлять данные, чтобы они не потерялись в паутине проводов и прочих вайфаев по пути с какого-нибудь американского хранилища «Ютуба» в браузер дяди Васи в Череповце. Один из помощников в этом деле — IP-адрес. Он представляет собой что-то вроде дорожного указателя, маяка, который содержит данные о месте конкретного устройства в структуре Глобальной сети.

Чтобы узнать IP-адрес вашего устройства, можно открыть терминал и ввести ipconfig в Windows или ifconfig в macOS и Linux:

Что такое IP-адрес и как он устроен

Чаще всего это четыре числа, которые разделены между собой точками (такой формат поддерживается в протоколе IPv4). Например, вот один из самых популярных IP-адресов — вы могли вводить его, чтобы зайти на свой роутер:

Каждое из чисел в адресе — это восьмизначное двоичное число, или октет. Оно может принимать значения от 0000 0000 до 1111 1111. Или же от 0 до 255 в десятичной системе счисления — то есть 256 разных значений.

Получается, диапазон IP-адресов стартует с 0.0.0.0 и заканчивается 255.255.255.255. Если посчитать количество всех адресов в этом диапазоне, получится 4 294 967 296.

Формат адресов IPv4 — не единственный, хоть и один из самых популярных в интернете. Есть ещё стандарт IPv6 — его адреса состоят уже из 128 битов (в IPv4 — 32 бита). Таким образом, IPv6 позволяет пронумеровать 2 128 устройств (по 300 миллионов на каждого жителя Земли).

Ниже мы будем говорить только об IPv4, однако эти принципы хорошо ложатся и на IPv6.

Из чего состоит IP-адрес

На самом деле IP-адрес — это чуть больше, чем просто набор чисел. Он всегда состоит из двух частей: номера хоста (устройства) и номера сети.

Например, IPv4-адрес 192.168.1.34 состоит из таких смысловых частей:

В нём первые три числа означают номер сети, а четвёртое — номер хоста (то есть вашего устройства). Все устройства, идентификаторы которых начинаются с 192.168.1, находятся в одной сети.

Устройство, идентификатор которого начинается, например, с 192.168.2, будет принадлежать к другой сети и не сможет связываться с устройствами из сети 192.168.1. Чтобы это сделать, понадобится роутер, который соединит две сети между собой.

Он будет мостом, по которому данные переходят из одной сети в другую. Если же говорить техническим языком, то роутер — это сеть более высокого уровня, которая объединяет несколько подсетей. Со стороны это будет выглядеть так, будто у роутера есть устройства, которым он передаёт данные и которые могут связываться между собой.

Какими бывают IP-адреса

Номер сети может храниться не только в первых трёх октетах, но и в первых двух или даже в одном. Остальные числа — это номера устройств в сети.

Чтобы компьютер понимал, какие октеты обозначают сеть, а какие — компьютеры и роутеры, используют несложный механизм. Первые несколько битов в двоичном представлении IP-адреса фиксируются, считываются компьютером и автоматически распознаются — это похоже на конструкцию switch в языках программирования:

  • Если первый бит — это 0, значит, компьютер имеет дело с большой сетью, на которую указывает только одно, самое первое число.

При этом первый бит у нас уже зарезервирован под такой «свитч», поэтому всего таких сетей может быть 128 (от нуля до 127), а устройств в них — более 16 миллионов.

  • Если первые два бита — это 10 (то есть 2 в десятичной системе счисления), значит, IP-адрес принадлежит к средней сети и использует два числа как указатель на неё.

У такого адреса уже зарезервировано два первых бита, а значит, для номера сети остаётся только 14 битов — это более 16 тысяч сетей и более 65 тысяч устройств.

  • Если первые три бита — это 110, значит, компьютеру попался IP-адрес из маленькой сети, в качестве указателей на которую используются только три первых числа.

Всего таких сетей существует более двух миллионов, а подключаемых устройств в каждой — 256. Диапазон значений — от 192.0.0.0 и до 223.255.255.0 (223 — потому что у нас зарезервировано три бита).

Все эти виды IP-адресов имеют свои названия: класс A, B и C. Класс А — это большие сети, B и C — средние и маленькие. Кроме них существуют ещё сети класса D и E. В них входят зарезервированные адреса — например, 127.0.0.0 или 192.168.X.X. Первый указывает сам на себя — когда он отправляет данные по этому адресу, они тут же приходят обратно (его ещё называют localhost). А второй — это стандартный идентификатор интернет-модемов и Wi-Fi-роутеров.

Бывает, что хостов в сети больше, чем доступных IP-адресов, — в современном интернете дела обстоят именно так. В этом случае интернет-провайдеры выдают устройствам адреса формата IPv6. При этом адрес IPv4 можно легко переделать в формат IPv6, а вот в обратную сторону это уже не работает.

Однако не все интернет-провайдеры перешли на новую версию IP-адресов, и это создало новую проблему: невозможно напрямую отправлять данные с устройств, поддерживающих IPv4, на устройства с IPv6. Проблему решили с помощью туннелирования — создали специальный канал между двумя устройствами, по которому обмениваются информацией между сетями с разными версиями протокола.

Маска подсети

Маска подсети — это более удобный способ разделить IP-адрес на номер сети и номер хоста. Она пришла на смену алгоритму, который мы описали выше. Маска подсети состоит из тех же четырёх чисел и похожа на IP-адрес:

В двоичном представлении такая маска выглядит как 1111 1111 0000 0000. Нули показывают, где находится номер хоста, а единицы — номер сети.

Чтобы применить маску, нужно воспользоваться логическими операторами «И» и «НЕ». Первый работает по следующим правилам:

Оператор «НЕ» просто меняет все нули на единицы, а единицы на нули. И делает он это справа налево:

Давайте применим к IP-адресу 192.168.1.34 маску подсети 255.255.255.0:

На картинке показано, как мы сначала перевели IP-адрес и маску подсети в двоичную систему счисления. А затем побитово справа налево применили операцию логического «И». Маска помогла удалить ненужную часть адреса, и мы выделили номер сети — 192.168.1.0.

Чтобы выделить номер хоста, нужно сначала применить операцию логического «НЕ» к маске подсети, а затем — операцию логического «И» к IP-адресу и полученной маске:

Так мы получили маску для выделения номера устройства. А теперь применим операцию логического «И»:

У нас получился адрес 0.0.0.34. Это и есть номер хоста.

Как выбрать маску подсети

Обычно маска задаётся программистами в настройках серверов или пользователями в настройках системы. Например, на MacBook маску подсети можно посмотреть в разделе «Сеть» → «Дополнительные настройки»:

Маска показывает, сколько битов включает в себя номер сети. Например, у большой сети номером будет только первое число (8 битов), а маска будет состоять из восьми единиц и 24 нулей: 255.0.0.0.

Если IP-адрес принадлежит к маленькой сети, то первые три числа в нём будут представлять номер сети. Значит, маска будет выглядеть так: 255.255.255.0.

Есть и слегка необычные маски подсетей — например, 255.255.254.0. Они тоже означают, сколько битов используется в номере сети. Только в данном случае их будет 23 — по 8 в первых двух числах и 7 в третьем. Остальные биты будут принадлежать номеру хоста.

Как ещё используют маски подсети

Выделять номера хостов и сетей удобно, но это не самая интересная часть использования масок. Их главная суперсила — умение разделять большие сети на несколько маленьких.

Допустим, у нас есть номер сети 185.12.0.0 с маской 255.255.0.0. В такой сети может быть более 65 тысяч устройств, чего вполне хватит, чтобы вместить все компьютеры в одном большом офисе.

Но что если у нас есть несколько маленьких офисов в одном здании, и мы хотим их все подключить к сети? Создавать новую сеть с 65 тысячами IP-адресов для каждого офиса нерационально. Поэтому мы можем разбить сеть 185.12.0.0 на подсети.

Для этого вместо маски 255.255.0.0 мы возьмём маску 255.255.255.0. Так у нас появится 256 новых подсетей внутри одной большой. При этом в каждой подсети будет по 256 устройств.

Если в офисе понадобится больше устройств, мы можем взять другую маску — например, 255.255.254.0. И теперь нам будет доступно 512 устройств, а количество подсетей сократится до 128.

Резюме

IP-адреса нужны, чтобы передавать данные внутри сетей. Их делят на классы A, B и C — для больших, средних и маленьких сетей. Ещё есть классы D и E, но они нужны для служебных задач.

Логически IP-адрес поделён на номер сети и номер хоста (устройства). Эти части позволяют определить, к какой сети подключено устройство и какой у него номер.

Маска подсети помогает удобно выделять из IP-адреса номер сети и номер хоста. Она выглядит как обычный IP-адрес, но на самом деле представляет собой набор последовательных единиц и нулей. Первые показывают, сколько битов занимает номер сети в IP-адресе, а второй — сколько битов принадлежит номеру хоста.

Ещё маски позволяют создавать подсети внутри одной сети. В этом случае подсети будут соединены одним компьютером, который похож на роутер. Он помогает хостам из разных сетей общаться между собой.

Читайте также:

  • Создаём первое мобильное приложение на Xamarin
  • Тест: угадай, где реальная хакерская атака, а где — нет
  • Типы данных в Java: какие бывают, чем различаются и что такое ссылки и примитивы

Что такое маска сети (Netmask)

Маска сети — это 32-разрядная «маска», используемая для разделения IP-адреса на подсети и указания доступных сетевых узлов. В сетевой маске два бита всегда присваиваются автоматически. Например, в 255.255.225.0 «0» — это назначенный сетевой адрес. В 255.255.255.255 «255» является назначенным широковещательным адресом. 0 и 255 всегда назначаются и не могут быть использованы.

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

IP Маска сети Описание
192.168.55.161 255.255.255.255 Только адрес 192.168.55.161
192.168.55.0 255.255.255.0 Применимо к IP 192.168.55.0 — 192.168.55.255
192.168.55.240 255.255.255.240 192.168.55.240 — 192.168.55.255
192.168.55.161 255.255.255.0 192.168.55.0 — 192.168.55.255
192.168.0.0 255.255.0.0 192.168.0.0 — 192.168.255.255

Иногда вы увидите, что маска сети определяется одним числом, например, 24. Это число — длина маски сети в битах:

Маска сети 255. 255. 255. 255
Длина маски 8 16 24 32

Так, например, маска сети длиной 24 бита имеет длину 255.255.255.0:

Маска сети 255. 255. 255. 0
Длина маски 8 16 24

Сетевая маска длиной 16 бит имеет длину 255.255.0.0:

Маска сети 255. 255. 0. 0
Длина маски 8 16

И так далее по аналогии.

Еще раз про IP-адреса, маски подсетей и вообще

Чуточку ликбеза. Навеяно предшествующими копипастами разной чепухи на данную тему. Уж простите, носинг персонал.

IP-адрес (v4) состоит из 32-бит. Любой уважающий себя админ, да и вообще айтишник (про сетевых инженеров молчу) должен уметь, будучи разбуженным среди ночи или находясь в состоянии сильного алкогольного опьянения, правильно отвечать на вопрос «из скольки бит состоит IP-адрес». Желательно вообще-то и про IPv6 тоже: 128 бит.

Обстоятельство первое. Всего теоретически IPv4-адресов может быть:
2 32 = 2 10 *2 10 *2 10 *2 2 = 1024*1024*1024*4 ≈ 1000*1000*1000*4 = 4 млрд.
Ниже мы увидим, что довольно много из них «съедается» под всякую фигню.

Записывают IPv4-адрес, думаю, все знают, как. Четыре октета (то же, что байта, но если вы хотите блеснуть, то говорите «октет» — сразу сойдете за своего) в десятичном представлении без начальных нулей, разделенные точками: «192.168.11.10».

В заголовке IP-пакета есть поля source IP и destination IP: адреса источника (кто посылает) и назначения (кому). Как на почтовом конверте. Внутри пакетов у IP-адресов нет никаких масок. Разделителей между октетами тоже нет. Просто 32-бита на адрес назначения и еще 32 на адрес источника.

Однако, когда IP-адрес присваивается интерфейсу (сетевому адаптеру или как там его еще называют) компьютера или маршрутизатора, то кроме самого адреса данного устройства ему назначают еще и маску подсети. Еще раз: маска не передается в заголовках IP-пакетов.

Компьютерам маска подсети нужна для определения границ — ни за что не угадаете чего — подсети. Чтоб каждый мог определить, кто находится с ним в одной [под]сети, а кто — за ее пределами. (Вообще-то можно говорить просто «сети», часто этот термин используют именно в значении «IP-подсеть».) Дело в том, что внутри одной сети компьютеры обмениваются пакетами «напрямую», а когда нужно послать пакет в другую сеть — шлют их шлюзу по умолчанию (третий настраиваемый в сетевых свойствах параметр, если вы помните). Разберемся, как это происходит.

Маска подсети — это тоже 32-бита. Но в отличии от IP-адреса, нули и единицы в ней не могут чередоваться. Всегда сначала идет сколько-то единиц, потом сколько-то нулей. Не может быть маски

Но может быть маска

Сначала N единиц, потом 32-N нулей. Несложно догадаться, что такая форма записи является избыточной. Вполне достаточно числа N, называемого длиной маски. Так и делают: пишут 192.168.11.10/21 вместо 192.168.11.10 255.255.248.0. Обе формы несут один и тот же смысл, но первая заметно удобнее.

Чтобы определить границы подсети, компьютер делает побитовое умножение (логическое И) между IP-адресом и маской, получая на выходе адрес с обнуленными битами в позициях нулей маски. Рассмотрим пример 192.168.11.10/21:

11000000.10101000.00001011.00001010
11111111.11111111.11111000.00000000
———————————————-
11000000.10101000.00001000.00000000 = 192.168.8.0

Обстоятельство второе. Любой уважающий себя администратор обязан уметь переводить IP-адреса из десятичной формы в двоичную и обратно в уме или на бумажке, а также хорошо владеть двоичной арифметикой.

Адрес 192.168.8.0, со всеми обнуленными битами на позициях, соответствующих нулям в маске, называется адресом подсети. Его (обычно) нельзя использовать в качестве адреса для интерфейса того или иного хоста. Если же эти биты наоборот, установить в единицы, то получится адрес 192.168.15.255. Этот адрес называется направленным бродкастом (широковещательным) для данной сети. Смысл его по нынешним временам весьма невелик: когда-то было поверье, что все хосты в подсети должны на него откликаться, но это было давно и неправда. Тем не менее этот адрес также нельзя (обычно) использовать в качестве адреса хоста. Итого два адреса в каждой подсети — на помойку. Все остальные адреса в диапазоне от 192.168.8.1 до 192.168.15.254 включительно являются полноправными адресами хостов внутри подсети 192.168.8.0/21, их можно использовать для назначения на компьютерах.

Таким образом, та часть адреса, которой соответствуют единицы в маске, является адресом (идентификатором) подсети. Ее еще часто называют словом префикс. А часть, которой соответствуют нули в маске, — идентификатором хоста внутри подсети. Адрес подсети в виде 192.168.8.0/21 или 192.168.8.0 255.255.248.0 можно встретить довольно часто. Именно префиксами оперируют маршрутизаторы, прокладывая маршруты передачи трафика по сети. Про местонахождение хостов внутри подсетей знает только шлюз по умолчанию данной подсети (посредством той или иной технологии канального уровня), но не транзитные маршрутизаторы. А вот адрес хоста в отрыве от подсети не употребляется совсем.

Обстоятельство третье. Количество хостов в подсети определяется как 2 32-N -2, где N — длина маски. Чем длиннее маска, тем меньше в ней хостов.

Из данного обстоятельства в частности следует, что максимальной длиной маски для подсети с хостами является N=30. Именно сети /30 чаще всего используются для адресации на point-to-point-линках между маршрутизаторами.

И хотя большинство современных маршрутизаторов отлично работают и с масками /31, используя адрес подсети (нуль в однобитовой хоствой части) и бродкаст (единица) в качестве адресов интерфейсов, администраторы и сетевые инженеры часто попросту боятся такого подхода, предпочитая руководствоваться принципом «мало ли что».

А вот маска /32 используется достаточно часто. Во-первых, для всяких служебных надобностей при адресации т. н. loopback-интерфейсов, во-вторых, от криворукости: /32 — это подсеть, состоящая из одного хоста, то есть никакая и не сеть, в сущности. Чем чаще администратор сети оперирует не с группами хостов, а с индивидуальными машинами, тем менее сеть масштабируема, тем больше в ней соплей, бардака и никому непонятных правил. Исключением, пожалуй, является написание файрвольных правил для серверов, где специфичность — хорошее дело. А вот с пользователями лучше обращаться не индивидуально, а скопом, целыми подсетями, иначе сеть быстро станет неуправляемой.

Интерфейс, на котором настроен IP-адрес, иногда называют IP-интерфейсом или L3-интерфейсом («эл-три», см. Модель OSI).

Прежде чем посылать IP-пакет, компьютер определяет, попадает ли адрес назначения в «свою» подсеть. Если попадает, то шлет пакет «напрямую», если же нет — отсылает его шлюзу по умолчанию (маршрутизатору). Как правило, хотя это вовсе необязательно, шлюзу по умолчанию назначают первый адрес хоста в подсети: в нашем случае 192.168.8.1 — для красоты.

Обстоятельство четвертое. Из сказанного в частности следует, что маршрутизатор (шлюз и маршрутизатор — это одно и то же) с адресом интерфейса 192.168.8.1 ничего не знает о трафике, передаваемом между, например, хостами 192.168.8.5 и 192.168.8.7. Очень частой ошибкой начинающих администраторов является желание заблокировать или как-то еще контролировать с помощью шлюза трафик между хостами в рамках одной подсети. Чтобы трафик проходил через маршрутизатор, адресат и отправитель должны находиться в разных подсетях.

Таким образом в сети (даже самого маленького предприятия) обычно должно быть несколько IP-подсетей (2+) и маршрутизатор (точнее файрвол, но в данном контексте можно считать эти слова синонимами), маршрутизирующий и контролирующий трафик между подсетями.

Следующий шаг — разбиение подсетей на более мелкие подсети. Полюбившуюся нам сеть 192.168.8.0/21 можно разбить на 2 подсети /22, четыре подсети /23, восемь /24 и т. д. Общее правило, как не сложно догадаться, такое: K=2 X-Y , где K — количество подсетей с длиной маски Y, умещающихся в подсеть с длиной маски X.

Обстоятельство пятое. Как и любому приличному IT-шнику, администратору сети, если только он получает зарплату не за красивые глаза, положено знать наизусть степени двойки от 0 до 16.

Процесс объединения мелких префиксов (с длинной маской, в которых мало хостов) в крупные (с короткой маской, в которых много хостов) называется агрегацией или суммаризацией (вот не суммированием!). Это очень важный процесс, позволяющий минимизировать количество информации, необходимой маршрутизатору для поиска пути передачи в сети. Так, скажем, провайдеры выдают клиентам тысячи маленьких блоков типа /29, но весь интернет даже не знает об их существовании. Вместо этого за каждым провайдером закрепляются крупные префиксы типа /19 и крупнее. Это позволяет на порядки сократить количество записей в глобальной таблице интернет-маршрутизации.

Обстоятельство шестое. Чем больше длина маски, тем меньше в подсети может быть хостов, и тем большую долю занимает «съедение» адресов на адреса подсети, направленного бродкаста и шлюза по умолчанию. В частности в подсети с маской /29 (2 32-29 = 8 комбинаций) останется всего 5 доступных для реального использования адресов (62,5%). Теперь представьте, что вы провайдер, выдающий корпоративным клиентам тысячи блоков /29. Таким образом, грамотное разбиение IP-пространства на подсети (составление адресного плана) — это целая маленькая наука, включающая поиск компромиссов между разными сложными факторами.

При наличии достаточно большого диапазона адресов, как правило из блоков для частного использования 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16, конечно, удобно использовать маски, совпадающие по длине с границами октетов: /8, /16, /24 или, соответственно, 255.0.0.0, 255.255.0.0 и 255.255.255.0. При их использовании можно облегчить работу мозгу и калькулятору, избавившись от необходимости работать с двоичной системой и битами. Это правильный подход, но не стоит забывать, что злоупотребление расслабухой редко доводит до добра.

И последнее. Пресловутые классы адресов. Дорогие товарищи, забудьте это слово вообще! Совсем. Вот уже скоро 20 лет (!), как нет никаких классов. Ровно с тех пор, как стало понятно, что длина префикса может быть любой, а если раздавать адреса блоками по /8, то никакого интернета не получится.

Иногда «матерые специалисты» любят блеснуть словами «сеть класса такого-то» по отношению к подсети с той или иной длиной маски. Скажем, часто можно услышать слово «сеть класса C» про что-нибудь вроде 10.1.2.0/24. Класс сети (когда он был) не имел никакого отношения к длине маски и определялся совсем другими факторами (комбинациями битов в адресе). В свою очередь классовая адресация обязывала иметь маски только предписанной для данного класса длины. Поэтому указанная подсеть 10.1.2.0/24 никогда не принадлежала и не будет принадлежать к классу C.

Но обо всем этом лучше и не вспоминать. Единственное, что нужно знать — что существуют разные глобальные конвенции, собранные под одной крышей в RFC3330, о специальных значениях тех или иных блоков адресов. Так, например, упомянутые блоки 10/8, 172.16/12 и 192.168/16 (да, можно и так записывать префиксы, полностью откидывая хостовую часть) определены как диапазоны для частного использования, запрещенные к маршрутизации в интернете. Каждый может использовать их в частных целях по своему усмотрению. Блок 224.0.0.0/4 зарезервирован для мультикаста и т. д. Но все это лишь конвенции, призванные облегчить административное взаимодействие. И хотя лично я крайне не рекомендую вам их нарушать (за исключением надежно изолированных лабораторных тестов), технически никто не запрещает использовать любые адреса для любых целей, покуда вы не стыкуетесь с внешним миром.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *