Как найти адрес узла сети по маске

Время на прочтение
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.

IPv4 CIDR

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).

Выбор маски для подсети[править | править код]

Если n — количество компьютеров в подсети, округлённое до ближайшей большей степени двойки, и {displaystyle nleqslant 254} (для сетей класса C), то маска подсети вычисляется по следующей формуле: {displaystyle 2^{8}-n-2}, где двойка вычитается, так как один IP-адрес (первый в задаваемом маской диапазоне) является IP-адресом подсети и ещё один IP-адрес (последний в задаваемом маской диапазоне) является широковещательным адресом (для отправки данных всем узлам подсети). Для {displaystyle n>254} будет другая формула.

Пример: в некой подсети класса 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-адрес. Как правило, вместе с информацией об адресе узла можно узнать и маску сети (или префикс). Маска сети указывает на количество бит в IP-адресе, отведенных под номер сети. Соответственно оставшиеся биты используются под номер узла. Маска и префикс — это разные записи одного и того же значения. Записывается только одно из них. В операционных системах Windows обычно используется маска, в операционных системах на основе Linux могут применяться оба варианта записи. Приведем пример.

Определение адресных параметров сети по IP-адресу и префиксу

Запись в левом столбце идентична записи в правом. Используется один из приведенных вариантов.

По информации об IP-адресе и префиксу можно определить параметры сети, а именно, IP-адрес сети, маску сети, широковещательный адрес сети, диапазон IP-адресов, предназначенных для адресации узлов (с первого адреса до последнего и их количество). Рассчитанные параметры могут понадобиться для добавления узла в существующую локальную сеть. Другие параметры, необходимые для работы в сети, такие как адрес шлюза и DNS-сервера (серверов) можно узнать из настроек сетевого адаптера.

Рассмотрим два примера для решения подобных задач.

Ⅰ Пример. IP-адрес узла и префикс:

10.0.0.10/25

Необходимо определить номер сети, маску сети, широковещательный адрес сети, диапазон и количество адресов.

Ход решения:

1. Переведем IP-адрес и префикс сети в двоичную систему счисления. Двоичный код адреса запишем первым, ниже запишем префикс. Число, обозначающее префикс показывает количество бит, отведенных под номер сети. В данном случае это 25 единиц, остальное нули (так как IP-адрес четвертой версии протокола IP состоит из 32 бит). В данном виде записывается маска в двоичной системе счисления. Биты адреса и префикса записываем на одной вертикальной линии.

Принимаем нумерацию бит справа налево. То есть самый правый бит нумеруем как первый, а самый левый как тридцать второй. Затем определим границу сети в соответствии с маской (по правую сторону от границы должны быть только нули, по левую сторону – только единицы), в данном случае граница сети проходит между восьмым и седьмым битами (под номер сети отводится 25 бит).

Определение адресных параметров сети по IP-адресу и префиксу

2. Определяем номер сети и маску сети. Для этого все биты, принадлежащие IP-адресу узла и находящиеся справа от границы сети, заменяем нулями, а те биты, что слева, – переписываем без изменений:

Определение адресных параметров сети по IP-адресу и префиксу

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

10.0.0.0.

Префикс записанный в первом пункте в двоичном коде также переводим в десятичную систему счисления и вычисляем маску сети:

255.255.255.128

3. Находим широковещательный адрес данной сети. Для этого все, что в номере сети находится слева от границы, записываем без изменений, а все, что справа, – заполняем единицами:

Определение адресных параметров сети по IP-адресу и префиксу

Переводим широковещательный адрес в десятичную систему счисления:

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).

Пример записи решения:

Определение адресных параметров сети по IP-адресу и префиксу

(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 бит):

Определение адресных параметров сети по IP-адресу и префиксу

2. Определяем номер сети. Для этого все биты, что находятся справа от границы сети, заменяем нулями, а те биты, что слева, – переписываем без изменений:

Определение адресных параметров сети по IP-адресу и префиксу

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

3.0.0.0

Префикс записанный в первом пункте в двоичном коде также переводим в десятичную систему счисления и вычисляем маску сети:

255.255.240.0

3. Определим широковещательный адрес данной сети. Для этого все, что слева от границы, записываем без изменений, как в номере сети, а все, что справа, – заполняем единицами:

Определение адресных параметров сети по IP-адресу и префиксу

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

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.

Пример записи решения:

Определение адресных параметров сети по IP-адресу и префиксу

(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 Калькулятор сети онлайн

Для вычисления номера сети по заданному
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)

Адрес
1:

11000011.10101000.01001010.01000000

(192.168.74.64)

Адрес
2:

11000011.10101000.01001010.01000001

(192.168.74.65)

Адрес
3:

11000011.10101000.01001010.01000010

(192.168.74.66)

……………………

Адрес
63:

11000011.10101000.01001010.01111110

(192.168.74.126)

Адрес
64:

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
(255.255.254.0)

Н.c:

11000011.10101000.01001010.00000000
(192.168.74.0)

Адрес
1:

11000011.10101000.01001010.00000000
(192.168.74.0)

Адрес
2:

11000011.10101000.01001010.00000001
(192.168.74.1)

Адрес
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

Замечание: размер блока адресов,
соответствующий некоторой маске, всегда
равен степени
двойки.

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