Время на прочтение
1 мин
Количество просмотров 59K
В процессе вычисления сетей, при подготовке к CCNA, я выявил интересную закономерность, на основе которой можно быстро вычислять адрес сети, а так же ее широковещательный адрес без особых усилий. Этот метод я ранее в литературе не встречал.
Итак, мы имеем произвольный IP адрес – 192.170.175.83/13 и наша 1 задача вычислить адрес сети, для этого мы посмотрим на второй октет, так как именно он содержит как сетевую так и хостовую часть. На хостовую часть во втором октете отводится 3 бита, что дает нам 8 (2^3) изменяемых хостовых адресов в данном октете, т.е. каждая подсеть в данном октете будет содержать 8 изменяемых адресов. Теперь мы разделим представленное в третьем октете число на количество изменяемых адресов – 170/8 = 21.25, в результате деления мы получили номер искомой подсети – 21 (дробная часть нас ясное дело не интересует). Зная номер подсети, и количество изменяемых адресов в ней мы можем вычислить ее адрес, для этого 21 * 8 = 168. Итого – адрес сети будет 192.168.0.0.
Задача №2 – вычислить широковещательный адрес, для этого мы к 168 прибавим количество изменяющихся адресов и вычтем единицу: 168 + 8 – 1 = 175, следовательно, широковещательный адрес данной подсети 192.175.255.255.
И по поводу последних двух октетов в моем примере – если маска в октете нулевая, то в адресе сети он всегда будет равен 0, и широковещательный адрес всегда будет равен 255.
PS: Если данный метод ранее кому то встречался – просьба дать ссылку.
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 8 сентября 2022 года; проверки требуют 6 правок.
Маска подсети — битовая маска для определения по IP-адресу адреса подсети и адреса узла (хоста, компьютера, устройства) этой подсети. В отличие от IP-адреса маска подсети не является частью IP-пакета.
Благодаря маске можно узнать, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети.
Например, узел с IP-адресом 12.34.56.78 и маской подсети 255.255.255.0, с длиной префикса 24 бита (/24), находится в сети 12.34.56.0.
В случае адресации IPv6 адрес 2001:0DB8:1:0:6C1F:A78A:3CB5:1ADD с длиной префикса 32 бита (/32) находится в сети 2001:0DB8::/32.
Другой вариант определения — это определение подсети IP-адресов. Например, с помощью маски подсети можно сказать, что один диапазон IP-адресов будет в одной подсети, а другой диапазон соответственно в другой подсети.
Чтобы получить адрес сети, зная IP-адрес и маску подсети, необходимо применить к ним операцию поразрядной конъюнкции (побитовое И). Например, в случае более сложной маски:
IP-адрес: 11000000 10101000 00000001 00000010 (192.168.1.2) Маска подсети: 11111111 11111111 11111110 00000000 (255.255.254.0) Адрес сети: 11000000 10101000 00000000 00000000 (192.168.0.0)
Легенда:
- часть маски, определяющая адрес сети и состоящая из единиц;
- адрес сети, который определяется маской подсети;
- диапазон адресов устройств в этой сети.
Разбиение одной большой сети на несколько маленьких подсетей позволяет упростить маршрутизацию. Например, пусть таблица маршрутизации некоторого маршрутизатора содержит следующую запись:
Сеть назначения | Маска сети | Адрес шлюза |
---|---|---|
192.168.1.0 | 255.255.255.0 | 10.20.30.1 |
Пусть теперь маршрутизатор получает пакет данных с адресом назначения 192.168.1.2. Обрабатывая построчно таблицу маршрутизации, он обнаруживает, что при наложении (применении операции «побитовое И») на адрес 192.168.1.2 маски 255.255.255.0 получается адрес сети 192.168.1.0. В таблице маршрутизации этой сети соответствует шлюз 10.20.30.1, которому и отправляется пакет.
Битовые операции при расчёте адреса сети в IPv6 выглядят аналогично. Но в IPv6 можно просто рассчитать адрес сети по длине префикса, применив формулу: «длина префикса в битах» / 4 = «кол-во 0xF у адреса сети». Взяв полученное количество 0xF из адреса узла, получаем адрес сети.
Маски при бесклассовой маршрутизации (CIDR)[править | править код]
Маски подсети являются основой метода бесклассовой маршрутизации (англ. CIDR). При этом подходе маску подсети записывают вместе с IP-адресом в формате «IP-адрес/количество единичных бит в маске». Число после знака дроби ( длина префикса сети) означает количество единичных разрядов (бит) в маске подсети.
Рассмотрим пример записи диапазона IP-адресов в виде 10.96.0.0/11. В этом случае маска подсети будет иметь двоичный вид 1111_1111.1110_0000.0000_0000.0000_0000, или то же самое в десятичном виде: 255.224.0.0. 11 разрядов IP-адреса отводятся под адрес сети, а остальной 32-11=21 разряд полного адреса (1111_1111.1110_0000.0000_0000.0000_0000) — под локальный адрес в этой сети. Итого, 10.96.0.0/11 означает диапазон адресов от 10.96.0.0 до 10.127.255.255.
CIDR | Последний IP-адрес в подсети | Маска подсети | Количество адресов в подсети | Количество хостов в подсети | Класс подсети |
---|---|---|---|---|---|
a.b.c.d/32 | 0.0.0.0 | 255.255.255.255 | 1 | 1* | 1/256 C |
a.b.c.d/31 | 0.0.0.1 | 255.255.255.254 | 2 | 2* | 1/128 C |
a.b.c.d/30 | 0.0.0.3 | 255.255.255.252 | 4 | 2 | 1/64 C |
a.b.c.d/29 | 0.0.0.7 | 255.255.255.248 | 8 | 6 | 1/32 C |
a.b.c.d/28 | 0.0.0.15 | 255.255.255.240 | 16 | 14 | 1/16 C |
a.b.c.d/27 | 0.0.0.31 | 255.255.255.224 | 32 | 30 | 1/8 C |
a.b.c.d/26 | 0.0.0.63 | 255.255.255.192 | 64 | 62 | 1/4 C |
a.b.c.d/25 | 0.0.0.127 | 255.255.255.128 | 128 | 126 | 1/2 C |
a.b.c.0/24 | 0.0.0.255 | 255.255.255.000 | 256 | 254 | 1 C |
a.b.c.0/23 | 0.0.1.255 | 255.255.254.000 | 512 | 510 | 2 C |
a.b.c.0/22 | 0.0.3.255 | 255.255.252.000 | 1024 | 1022 | 4 C |
a.b.c.0/21 | 0.0.7.255 | 255.255.248.000 | 2048 | 2046 | 8 C |
a.b.c.0/20 | 0.0.15.255 | 255.255.240.000 | 4096 | 4094 | 16 C |
a.b.c.0/19 | 0.0.31.255 | 255.255.224.000 | 8192 | 8190 | 32 C |
a.b.c.0/18 | 0.0.63.255 | 255.255.192.000 | 16 384 | 16 382 | 64 C |
a.b.c.0/17 | 0.0.127.255 | 255.255.128.000 | 32 768 | 32 766 | 128 C |
a.b.0.0/16 | 0.0.255.255 | 255.255.000.000 | 65 536 | 65 534 | 256 C = 1 B |
a.b.0.0/15 | 0.1.255.255 | 255.254.000.000 | 131 072 | 131 070 | 2 B |
a.b.0.0/14 | 0.3.255.255 | 255.252.000.000 | 262 144 | 262 142 | 4 B |
a.b.0.0/13 | 0.7.255.255 | 255.248.000.000 | 524 288 | 524 286 | 8 B |
a.b.0.0/12 | 0.15.255.255 | 255.240.000.000 | 1 048 576 | 1 048 574 | 16 B |
a.b.0.0/11 | 0.31.255.255 | 255.224.000.000 | 2 097 152 | 2 097 150 | 32 B |
a.b.0.0/10 | 0.63.255.255 | 255.192.000.000 | 4 194 304 | 4 194 302 | 64 B |
a.b.0.0/9 | 0.127.255.255 | 255.128.000.000 | 8 388 608 | 8 388 606 | 128 B |
a.0.0.0/8 | 0.255.255.255 | 255.000.000.000 | 16 777 216 | 16 777 214 | 256 B = 1 A |
a.0.0.0/7 | 1.255.255.255 | 254.000.000.000 | 33 554 432 | 33 554 430 | 2 A |
a.0.0.0/6 | 3.255.255.255 | 252.000.000.000 | 67 108 864 | 67 108 862 | 4 A |
a.0.0.0/5 | 7.255.255.255 | 248.000.000.000 | 134 217 728 | 134 217 726 | 8 A |
a.0.0.0/4 | 15.255.255.255 | 240.000.000.000 | 268 435 456 | 268 435 454 | 16 A |
a.0.0.0/3 | 31.255.255.255 | 224.000.000.000 | 536 870 912 | 536 870 910 | 32 A |
a.0.0.0/2 | 63.255.255.255 | 192.000.000.000 | 1 073 741 824 | 1 073 741 822 | 64 A |
a.0.0.0/1 | 127.255.255.255 | 128.000.000.000 | 2 147 483 648 | 2 147 483 646 | 128 A |
0.0.0.0/0 | 255.255.255.255 | 000.000.000.000 | 4 294 967 296 | 4 294 967 294 | 256 A |
* Чтобы в сетях с такой размерностью маски возможно было разместить хосты, отступают от правил, принятых для работы в остальных сетях.
Возможных узлов подсети меньше количества адресов на два: начальный адрес сети резервируется для идентификации подсети, последний адрес используется в качестве широковещательного адреса (возможны исключения в виде адресации в IPv4 сетей /32 и /31).
Выбор маски для подсети[править | править код]
Если — количество компьютеров в подсети, округлённое до ближайшей большей степени двойки, и (для сетей класса C), то маска подсети вычисляется по следующей формуле: , где двойка вычитается, так как один IP-адрес (первый в задаваемом маской диапазоне) является IP-адресом подсети и ещё один IP-адрес (последний в задаваемом маской диапазоне) является широковещательным адресом (для отправки данных всем узлам подсети). Для будет другая формула.
Пример: в некой подсети класса C есть 30 компьютеров; маска для такой сети вычисляется следующим образом:
28 - 30 - 2 = 224 = E0h; маска: 255.255.255.224 = 0xFF.FF.FF.E0.
См. также[править | править код]
- Бесклассовая адресация
Примечания[править | править код]
Литература[править | править код]
- Олифер В. Г., Олифер Н. А. Компьютерные сети. Принципы, технологии, протоколы: Учебник для вузов = Computer Networks. Principles, Technologies and Protocols for Network Design. — 3-е изд. — СПб.: Издательский дом «Питер», 2006. — С. 572—576. — 958 с. — ISBN 5-469-00504-6.
Ссылки[править | править код]
- Ivan Pascal. «Вычисление сетевой маски для подсети». OpenNet.ru (3 июня 2002). Дата обращения: 21 февраля 2011.
- Сергей Верещагин. «Wildcard Mask (шаблонная маска)» (30 мая 2009). Дата обращения: 21 февраля 2011. Архивировано 25 августа 2011 года.
Для работы компьютера (ноутбука, смартфона и т.п.) в сети устройству присваивается IP-адрес. Как правило, вместе с информацией об адресе узла можно узнать и маску сети (или префикс). Маска сети указывает на количество бит в IP-адресе, отведенных под номер сети. Соответственно оставшиеся биты используются под номер узла. Маска и префикс — это разные записи одного и того же значения. Записывается только одно из них. В операционных системах Windows обычно используется маска, в операционных системах на основе Linux могут применяться оба варианта записи. Приведем пример.
Запись в левом столбце идентична записи в правом. Используется один из приведенных вариантов.
По информации об IP-адресе и префиксу можно определить параметры сети, а именно, IP-адрес сети, маску сети, широковещательный адрес сети, диапазон IP-адресов, предназначенных для адресации узлов (с первого адреса до последнего и их количество). Рассчитанные параметры могут понадобиться для добавления узла в существующую локальную сеть. Другие параметры, необходимые для работы в сети, такие как адрес шлюза и DNS-сервера (серверов) можно узнать из настроек сетевого адаптера.
Рассмотрим два примера для решения подобных задач.
Ⅰ Пример. IP-адрес узла и префикс:
10.0.0.10/25
Необходимо определить номер сети, маску сети, широковещательный адрес сети, диапазон и количество адресов.
Ход решения:
1. Переведем IP-адрес и префикс сети в двоичную систему счисления. Двоичный код адреса запишем первым, ниже запишем префикс. Число, обозначающее префикс показывает количество бит, отведенных под номер сети. В данном случае это 25 единиц, остальное нули (так как IP-адрес четвертой версии протокола IP состоит из 32 бит). В данном виде записывается маска в двоичной системе счисления. Биты адреса и префикса записываем на одной вертикальной линии.
Принимаем нумерацию бит справа налево. То есть самый правый бит нумеруем как первый, а самый левый как тридцать второй. Затем определим границу сети в соответствии с маской (по правую сторону от границы должны быть только нули, по левую сторону – только единицы), в данном случае граница сети проходит между восьмым и седьмым битами (под номер сети отводится 25 бит).
2. Определяем номер сети и маску сети. Для этого все биты, принадлежащие IP-адресу узла и находящиеся справа от границы сети, заменяем нулями, а те биты, что слева, – переписываем без изменений:
Переводим номер сети в десятичную систему счисления:
10.0.0.0.
Префикс записанный в первом пункте в двоичном коде также переводим в десятичную систему счисления и вычисляем маску сети:
255.255.255.128
3. Находим широковещательный адрес данной сети. Для этого все, что в номере сети находится слева от границы, записываем без изменений, а все, что справа, – заполняем единицами:
Переводим широковещательный адрес в десятичную систему счисления:
10.0.0.127.
4. Теперь необходимо определить диапазон и количество адресов узлов в сети. Нужно понимать, что нумерация сети состоит из непрерывного диапазона адресов. При этом самый первый адрес (не обязательно заканчивающийся на ноль) – это адрес сети, а самый последний – это широковещательный адрес сети (для групповой рассылки всем узлам сети). Соответственно адресация узлов каждой сети находится между этими двумя значениями. Таким образом, для того чтобы вычислить адрес первого узла в сети, необходимо к номеру сети прибавить единицу (10.0.0.1), а для того чтобы определить адрес последнего узла, – от широковещательного адреса сети отнять единицу (10.0.0.126). Получаем следующий диапазон адресов узлов:
10.0.0.1 – 10.0.0.126.
Таким образом, максимальное количество адресов в сети 10.0.0.0/25 составляет 126 (от 10.0.0.1 до 10.0.0.126).
Пример записи решения:
(1 строка – IP-адрес узла, 2 – номер сети, 3 – маска сети, 4 – широковещательный адрес сети)
Преобразуем все записи из двоичной системы счисления в десятичную:
Номер сети: 10.0.0.0
Маска: 255.255.255.128
Широковещательный IP-адрес: 10.0.0.127
Адрес первого узла в сети: 10.0.0.1
Адрес последнего узла в сети: 10.0.0.126
Количество адресов (максимально возможное количество узлов в данной сети) составляет 126 единиц.
Ⅱ Пример. IP-адрес узла и префикс:
3.0.3.110/20
Необходимо определить номер сети, маску сети, широковещательный адрес сети, диапазон и количество адресов.
Ход решения практически такой же, как и в первом примере. Но из-за того, что префикс сети менее 24, то могут возникнуть определенные сложности при вычислении, поэтому рассмотрим пример более подробно.
1. Переведем IP-адрес и префикс сети в двоичную систему счисления, Граница сети в соответствии с маской (по правую сторону от границы должны быть только нули, по левую сторону – только единицы) проходит между тринадцатым (13) и двенадцатым (12) битами (под номер сети отводится 20 бит):
2. Определяем номер сети. Для этого все биты, что находятся справа от границы сети, заменяем нулями, а те биты, что слева, – переписываем без изменений:
Переведём номер сети в десятичную систему счисления:
3.0.0.0
Префикс записанный в первом пункте в двоичном коде также переводим в десятичную систему счисления и вычисляем маску сети:
255.255.240.0
3. Определим широковещательный адрес данной сети. Для этого все, что слева от границы, записываем без изменений, как в номере сети, а все, что справа, – заполняем единицами:
Переводим в десятичную систему:
3.0.15.255
4. Определяем диапазон адресов узлов в сети. Для того чтобы вычислить адрес первого узла в сети, необходимо к номеру сети прибавить единицу (3.0.0.1), а для того чтобы определить адрес последнего узла, – от широковещательного адреса сети отнять единицу (3.0.15.254). Получаем следующий диапазон адресов узлов: 3.0.0.1 – 3.0.15.254. Таким образом, максимальное количество адресов в сети 3.0.0.0/20 составляет 4094.
Пример записи решения:
(1 – IP-адрес узла, 2 – номер сети, 3 – маска сети, 4 – номер адреса широкого вещания)
Номер сети: 3.0.0.0
Маска: 255.255.240.0
Номер адреса широкого вещания: 3.0.15.255
1-ый узел в сети: 3.0.0.1
Последний узел в сети: 3.0.15.254
Количество адресов (максимально возможное количество узлов в данной сети) составляет 4094 единиц.
Теперь более подробно об определении количества IP-адресов. Как видим в данном случае изменяется содержимое не только четвертого, но также и третьего байта. Распишем изменения чисел, когда третий байт равен нулю
3.0.0.1 – 3.0.0.255 (то есть 255 адресов)
При дальнейшем прибавлении единицы четвертый байт станет равным нулю и изменится третий байт, то есть
3.0.1.0
При третьем байте равным единицы, четвертый байт будет изменяться следующим образом
3.0.1.0 – 3.0.1.255 (то есть 256 адресов)
далее
3.0.2.0 – 3.0.2.255 (256 адресов)
и так далее
…
3.0.14.0 – 3.0.14.255 (256 адресов)
последний байт
3.0.15.0. – 3.0.15.254 (255 адресов)
Рассчитывая подобным образом получим общее число адресов
255+256*14+255=4094
То есть два диапазона – первый и последний (3.0.0.* и 3.0.15.*) имеют по 255 адресов.
Четырнадцать диапазонов (3.0.1.*, 3.0.2.*, 3.0.3.*, 3.0.4.*, 3.0.5.*, 3.0.6.*, 3.0.7.*, 3.0.8.*, 3.0.9.*, 3.0.10.*, 3.0.11.*, 3.0.12.*, 3.0.13.* и 3.0.14.*) по 256 адресов.
Распределение IP-сети на подсети описано в статье
С помощью нашего IP калькулятора вы можете вычислить ip адрес сети, широковещательный адрес, ip адрес первого узла (хоста), ip адрес последнего узла (хоста), количество рабочих узлов (хостов) в заданной сети, маску сети, обратную маску (wildcard mask) и сетевой префикс.
Все вычисления будут представлены в трёх системах счисления – десятичной, двоичной и шестнадцатеричной.
✓ Новый IP калькулятор подсетей
IP адрес:
Сетевая маска:
Удобный калькулятор подсетей с дополнительными функциями (добавляйте в закладки и делитесь с друзьями):
Для вычисления номера сети по заданному
IP-адресу и маске необходимо применить
побитовую операцию “И” к адресу и
маске. Такая операция называется
наложением маски на
адрес.
На
рисунке 3
представлено
табличное
побитовой
операции “И”.
-
1-ый
операнд2-ой
операндЗначение
“И”0
0
0
1
0
0
0
1
0
1
1
1
Рис.
3.
Определение
побитовой
операции
“И”
Для вычисления номера узла по заданному
IP-адресу и маске
необходимо применить
побитовую операцию “И” к адресу и
результату применения побитовой операции
“НЕ” к маске.
На
рисунке 4
представлено
табличное
определение
унарной операции
побитового
отрицания
“НЕ”
(побитового
дополнения).
-
Операнд
Значение
“НЕ”0
1
1
0
Пример
7
Рис.
4.
Определение
побитовой
операции
“НЕ”
Применим побитовую
операцию “И”
к однобайтовым
числам 185
и 221.
Представим
числа в
двоичной форме:
185 =
10111001, 221
= 11011101.
10111001
11011101
И
10011001
Применим побитовую
операцию “НЕ”
к числу
185.
10111001
НЕ
01000110
Пример
8
Вычислим
номер сети
и номер
узла для
адреса 215.17.125.177
и маски
255.255.255.240.
IP-адрес:
215.17.125.177
(11010111.00010001.01111101.10110001)
Маска: 255.255.255.240
(11111111.11111111.11111111.11110000)
В этом
случае номер
сети (Н.с.)
и номер
узла (Н.у.)
будут следующими:
Н.с.: |
215.17.125.176 |
(11010111.00010001.01111101.10110000) |
Н.у.: |
0.0.0.1 |
(00000000.00000000.00000000.00000001) |
Пример
9
Вычислим
номер сети
и номер
узла для
адреса
67.38.173.245 и
маски 255.255.240.0.
IP-адрес:
67.38.173.245
(01000011.00100110.10101101.11110101)
Маска: 255.255.240.0
(11111111.11111111.11110000.00000000)
Н.с.: 67.38.160.0 (01000011.00100110.10100000.00000000)
Н.у.: 0.0.13.245 (00000000.00000000.00001101.11110101)
Соответствие блоков адресов номерам сетей на основе масок
При использовании маски, так же, как и
в случае адресации на основе классов,
номер сети определяет
блок адресов
с одинаковым префиксом.
Пример
10
В маске
255.255.255.192 (11111111.11111111.11111111.11000000) выделено
26 разрядов под
номер сети и
6 разрядов под
номер узла.
Номеру
сети 192.168.74.64
с данной
маской
соответствует
блок адресов:
Маска: |
11111111.11111111.11111111.11000000 |
(255.255.255.192) |
Н.с: |
11000011.10101000.01001010.01000000 |
(192.168.74.64) |
Адрес |
11000011.10101000.01001010.01000000 |
(192.168.74.64) |
Адрес |
11000011.10101000.01001010.01000001 |
(192.168.74.65) |
Адрес |
11000011.10101000.01001010.01000010 |
(192.168.74.66) |
…………………… |
||
Адрес |
11000011.10101000.01001010.01111110 |
(192.168.74.126) |
Адрес |
11000011.10101000.01001010.01111111 |
(192.168.74.127) |
Всего в этом блоке 26 = 64
адресов (192.168.74.64 – 192.168.74.127). Все
адреса имеют
одинаковый
префикс (первые 26 разрядов):
11000011.10101000.01001010.01
Пример
11
В маске 255.255.254.0 (1111111.11111111.11111110.00000000)
выделено 23
разряда под номер
сети и
9 разрядов под
номер узла.
Номеру
сети 192.168.74.0
c данной
маской
соответствует
блок адресов:
Маска: |
11111111.11111111.11111110.00000000 |
Н.c: |
11000011.10101000.01001010.00000000 |
Адрес |
11000011.10101000.01001010.00000000 |
Адрес |
11000011.10101000.01001010.00000001 |
Адрес
3: 11000011.10101000.01001010.00000010
(192.168.74.2)
……………………
Адрес
511:
11000011.10101000.01001011.11111110
(192.168.75.254)
Адрес
512:
11000011.10101000.01001011.11111111
(192.168.75.255)
Всего в этом блоке 29 = 512
адресов (192.168.74.0 – 192.168.75.255). Все адреса
имеют одинаковый
префикс (первые 23 разряда):
11000011.10101000.0100101
Замечание: размер блока адресов,
соответствующий некоторой маске, всегда
равен степени
двойки.