Для чего нужны сетевые маски
Маска подсети — что это такое в деталях
Наверное, каждый, кто хоть раз сталкивался с настройкой интернет соединения слышал о таком понятии — Маска подсети, но не все знают, что это такое, да и информация в интернете по этому запросу довольно устарела и сложна в понимании.
Давайте закроем этот пробел знаний в работе сети и интернета в целом и выясним, что это такое и зачем она в принципе нужна. Информация будет изложена самым доступным и понятным языком.
Итак, вот мы и отметили день программиста, продолжим обучение компьютерной грамотности и разберем по полочкам, что такое маска подсети, для чего она нужна и как вообще это работает.
Что такое маска подсети
Маска подсети (network mask, subnet mask) — это битовая маска (bitmask), которая используется для определения к какой подсети принадлежит определенный ИП адрес. Она не отправляется в заголовках IP-пакетов, т.е. не является ее частью, поэтому по айпи узнать ее просто никак нельзя.
Как и IP-адрес в IPv4 имеет размер в 32-бита. В двоичном формате, ноли и единицы не должны в ней чередоваться, так вначале всегда идут единички, а уже потом ноли.
Чаще всего пишется префиксом, например, 192.168.11.4/19. Посчитать префикс довольно легко, например, у 255.255.224.000, префикс будет — 19. Посчитайте просто все первые единички в двоичном формате.
Также, можно посчитать и в обратную сторону. Напишите столько единичек и сколько нужно, например, 15, потом допишите 17 нолей, чтобы получилось 32 и переведите это в десятичный формат, получится: 255.254.000.000. Не забывайте, после каждой 8 цифры ставить точку.
Интересно! Как и протокол IPv4 маска сети состоит тоже из 32 бит. И для запоминания, протокол IPv6 состоит из 128 бит.
Сам префикс означает вот что, например, возьмем префикс 20, это означает, что из 32 бит, 20 будут хранить информацию о самой сети, а 12 уже информацию о хосте. Посчитаем сколько это возможных IP адресов. 2^12 = 4 096. Убираем два адреса, т.к. они всегда зарезервированы под свои цели и получаем 4 094.
Для чего нужна маска сети
Она позволяет определить, кто находится с вами в одной (под)сети, а кто не в ней. Компьютеры, находящиеся внутри одной сети, обмениваются данными между собой напрямую, например, в локальной. Но если нужно выйти в глобальную паутину, то запрос идет уже через роутер — шлюз по умолчанию.
Она позволяет понять сеть нахождения IP-адреса, к примеру, адрес 193.150.14.87 и с маской 255.255.255.0 располагается в сети 193.150.14.0/24.
Рассчитывается это так: Используется функция поразрядной конъюнкции (побитовое И). Это просто, переводим все в бинарную/двоичную систему счисления. Ставим ИП-адрес и маску подсети друг над другом и считаем поочередно сверху и снизу. Если единички совпадают — то ставим 1, если есть хотя бы один ноль, то ставим 0. Потом переводим назад в десятичную и смотрим результат. Вот пример.
193.150.14.0/24 предполагает 256 айпи и как мы помним 2 мы от них убираем, т.к. они зарезервированы, остается 254.
Важно! Главное не ошибиться в расчетах и вообще указать ее правильно, так, например, если вы укажите 0.0.0.0 — то компьютер будет считать абсолютно все адреса локальными и даже не будет пытаться соединится с внешним интернетом. Это же работает и в обратную сторону — укажите не правильный префикс, то компьютер будет считать другой хост, который по сути находится с ним же в связке — внешним, и будет пытаться подключиться к нему через сетевой шлюз.
Как вычислить маску подсети для определенного количества ПК
При ее выборе, также стоит учитывать и класс сети, вот наглядная картинка с диапазонами IP-адресов:
Например, нам нужно выделить 30 IP-адресов для компьютеров в определенной фирме. Вычисляется все так: 28 — 30 — 2 = 256 — 30 — 2 = 224. Т.е. у нас получается: 255.255.255.224. Естественно для этих целей мы берем сеть класса C. Так, вы можете рассчитать ее для любого количества компьютеров.
Интересно! Также, с помощью нее можно разбивать большие сетки на несколько более маленьких. Это очень удобно, особенно в больших корпорациях.
В заключение
Надеюсь все объяснил, как можно в более понятном виде, чтобы вы точно усвоили материал. В дальнейших публикациях продолжим тему работы с глобальной паутиной, так что приходите еще.
Для чего нужны сетевые маски
понедельник, сентября 24, 2012
Ох уж эти маски подсети.
38 коммент.:
Отлично, все правильно!
Не пойму, почему во втором вопросе ответ 62? Адреса с 192.168.0.1 по 192.168.0.191 могут быть присвоены хостам. Получается 191. Или я что-то неправильно понял?
«Получается 2^8-2=64-2=62.» (с)
тут получается ошибка, вводящая в заблуждение. согласно написанному ранее должно быть 2^6-2=.
Спасибо, за то что заметили ошибку. Расчет верный, но вместо 6 в степени опечатался и написал 8. Прошу у всех прощение за неточность.
Спасибо! Статья мне очень помогла. Написано доступным языком.
Все доступно и понятно, спасибо. Еще бы статью о том как и зачем применять подсети.
Добрый день.
Не совсем понял деление на подсети.
Даже если маска будет 255.255.255.128, адрес подсети останется 172.20.20.0, изменится только адрес хоста 0.0.0.128
Я так понимаю данный комментарий относится к фразе: «С помощью данной операции, подсеть 172.20.20.0 с маской 255.255.255.0 была разделена на две подсети: 172.20.20.0 с маской 255.255.255.128 и 172.20.20.128 с маской 255.255.255.128.»
В данном случае все верно. Если у нас есть сеть 172.20.20.0 с маской 255.255.255.0 то в ее последнем октете все 8 битов относятся к адресу хоста, а вот если мы используем маску 255.255.255.128 то в этом случае получается что уже не все биты последнего октета адреса относятся к адресу хоста. В данном случае первый бит относится к адресу подсети, а остальные 7 к адресу хоста.
Если я гдето не прав, то прошу меня поправить.
Еще раз про 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 можно встретить довольно часто. Именно префиксами оперируют маршрутизаторы, прокладывая маршруты передачи трафика по сети. Про местонахождение хостов внутри подсетей знает только шлюз по умолчанию данной подсети (посредством той или иной технологии канального уровня), но не транзитные маршрутизаторы. А вот адрес хоста в отрыве от подсети не употребляется совсем.
Из данного обстоятельства в частности следует, что максимальной длиной маски для подсети с хостами является 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+) и маршрутизатор (точнее файрвол, но в данном контексте можно считать эти слова синонимами), маршрутизирующий и контролирующий трафик между подсетями.
Обстоятельство пятое. Как и любому приличному 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 зарезервирован для мультикаста и т. д. Но все это лишь конвенции, призванные облегчить административное взаимодействие. И хотя лично я крайне не рекомендую вам их нарушать (за исключением надежно изолированных лабораторных тестов), технически никто не запрещает использовать любые адреса для любых целей, покуда вы не стыкуетесь с внешним миром.
Как узнать маску сети: что это такое и зачем она нужна
С понятием «маска подсети» сталкивался каждый, кто хоть раз делал настройки интернета на телефоне или компьютере. Объяснить же суть определения, сможет не каждый. Эта статья поможет ответить на все основные вопросы по данной теме.
Определение
Всего существует пять категорий маршрутизации. В соответствии с нуждами потребителя могут быть зарезервированы адреса классов A, B, C, D, E. Например, адреса категории В могут отдавать только организациям и фирмам, которые имеют большое количество вычислительной техники. Предоставлять их потребителям домашнего интернета нецелесообразно. Это слишком дорого и нерентабельно.
Классическому пользователю вряд ли понадобится более 65000 адресов, именно столько хостов может объединять адрес типа В. В этом случае и понадобится распределить их по подразделам.
«Маска подсети – это битовая маска, которая используется для отслеживания принадлежности конкретного IP-адреса к определенной подсети».
Этот параметр необходим для определения девайсом его локации по отношению к другим устройствам, принадлежности к определенной сети. Сам процесс осуществляется путем перевода IP и маски в двоичный код и побитовым поочередным перемножением двух этих чисел.
Для лучшего понимания возьмем маску 255.255.248.0 и переведем ее в двоичный код, получится 11111111.11111111.11111000.00000000. Обратите внимание, что первыми в списке идут единицы, а потом нули, эти цифры не должны чередоваться. Для примера будем использовать IP-адрес 192.168.11.10, его двоичный код выглядит так – 11000000.10101000.00001011.00001010. Компьютер выполняет поочередное побитовое перемножение, считать просто (1*1=1; 1*0=0; 0*0=0), и в резуультате получается следующее число – 11000000.10101000.00001000.00000000 – 192.168.8.0/21, это и есть айпи подсети (21 – количество бит, выделенное для подсети).
Назначение маски подсети, IP-адреса, шлюза
Любой девайс, который имеет возможность выхода в сеть, должен быть обозначен своим уникальным кодом, IP-адресом. Встречаются и локальные (внутрисетевые) IP-адреса, не предназначенные для выхода в интернет, но в данном случае нас интересуют устройства с присутствием этой функции. Это может быть не только компьютер, но и роутер, принтер и любое другое устройство, которое имеет возможность выйти в интернет.
Каждая единица такой техники в сети называется хостом. Лучше объединить несколько IP-адресов, которые смогут использовать сеть в рамках определенной подсети. Локация или местоположение хоста определяется при помощи протокола сетевого взаимодействия. Наиболее распространенным является протокол версии CP/IPv4.
Сама маска содержит 4 раздела, каждый из которых может быть числом от 0 до 255. У хостов, находящихся в одной подсети, первые октеты одинаковые (та часть, где в двоичной системе стоят единицы), отличаться могут лишь концовки. Например:
В данном случае, число в четвертом разделе – это идентификатор хоста. Как адрес дома состоит из названия улицы и номера дома, так и IP-адрес в своем числовом значении имеет адрес сети и адрес хоста. Подробное описание и расчет IP-адресов даны в следующем видео:
Если объяснить доступным для чайников языком, получится следующее сравнение: двум живущим в одном дворе людям проще передать пакет друг другу, для передачи в другой город понадобятся, например, услуги почты. В сети все устроено аналогично. Два устройства в одной сети получают пакеты данных напрямую, а зарегистрированные в разных сетях устройства для передачи данных используют шлюз.
Это практично с точки зрения безопасности. В отдельных случаях в разных сетях необходимо осуществлять подключение разного количества девайсов, в одном месте 40 компьютеров, в другом 5. Для этого и создаются подсети, обобщенные одним маршрутизатором.
Приведем пример: в доме есть один маршрутизатор, который предоставляет трафик другим девайсам (компьютер, ноутбук, планшет или телефон). Провайдер выделяет статический IP-адрес, а сам маршрутизатор использует подсеть для ограничения доступа извне. Так вы можете выходить в интернет с разных устройств при использовании роутером функции трансляции сигнала.
Префикс
«Префикс создан для удобства графического отображения сетевой маски, он определяет количество бит порции сети».
Выглядит он следующим образом: 252.154.130.150/5. Ниже представлена таблица, которая наглядно отображает принцип формирования значений префикса. Количество единиц в двоичном коде маски и есть значение префикса.
Если известны IP-адрес сети и префикс, можно без труда определить маску подсети (или взять ее значение из таблицы), далее на основе этих данных можно узнать адрес сети и адрес хоста. Все математически легко высчитывается. Сам префикс показывает, сколько бит выделено в рамках одной сети. Провайдер может сокращать или расширять хостовую часть, тем самым контролируя количество возможных подключений дополнительных IP-адресов.
Число адресов
Маска подсети дает информацию о количестве доступных хостов, которые можно использовать. Выделяемое число адресов зависит от потребностей пользователя.
Рассчитать количество хостов или подсетей в пределах одной сети несложно. Для этого возьмем сеть в десятичной записи 232.154.120.4/26. Префикс равен 26, значит формат двоичных чисел будет следующим:
В последнем разделе 11000000 первые 2 бита – единицы, значит вычисление числа подсетей будет выглядеть так:
В этом же разделе считаем нули, их 6, вычисляем количество хостов:
Следовательно, число IP-адресов первой подсети – 62 (0 – подсеть, 61 – broadcast)
Таким образом можно вычислить диапазон IP для каждой из шести подсетей.
Обратная маска
«Обратная маска – это инверсия маски подсети, образ, где единицы заменяются нулями, а нули единицами».
Допустим, у нас есть прямая маска (subnet mask)
Ее инверсия (wildcard mask) будет выглядеть так:
Для чего же нужна маска сети в обратном виде? Она позволяет отфильтровать узлы или группы в разных подсетях, а также реализовать другие задачи. Такая технология отображения удобна, например, для выявления хостов с определенными адресами и объединения их в одну систему с целью предоставления общего доступа.
Вычисление маски подсети
Иногда возникает потребность определить маску подсети, нужно это, как правило, для определения количества IP-адресов в пределах одной подсети или для настройки оборудования, например, роутера.
Числовое значение маски подсети в двоичной системе счисления определяет количество бит. Всего по умолчанию имеется 32 бита в значении, это стандартный размер, в его составе есть единицы и нули. Биты со значением единицы представляют адрес сети, а биты с нулями относятся к адресу хоста. Если в коде 8 единиц, тогда перед нами восьмибитная маска.
Для определения значения маски на компьютере с ОС Windows используем следующую технологию: вводим «ipconfig» в командной строке и жмем Enter. Также эту информацию можно получить в разделе «Сетевые подключения». Выбираем действующее подключение, вызываем диалоговое меню и выбираем «Состояние».
В появившемся окне кликаем «Сведения», откроется вкладка с нужными данными. Эти способы подойдут, если необходимо определить маску подсети для внутреннего IP. Для определения маски внешнего айпи, можно воспользоваться онлайн калькулятором.
Необходимо ввести нужный айпи и нажать «Подсчитать», система выведет результат. Такие онлайн-калькуляторы присутствуют на тематических сайтах.
Для удобства и экономии времени можно использовать и другие утилиты, которые быстро рассчитают и проанализируют числовые данные.