Как вы вычисляете префикс, сеть, подсеть и номера хостов?

Пример:

IP: 128.42.5.4

В двоичном формате: 10000000 00101010 00000101 00000100

Подсеть: 255.255.248.0

Как вы можете определить префикс, сеть, подсеть и номера хостов?

80 голосов | спросил user5032 31 MaramMon, 31 Mar 2014 05:06:08 +04002014-03-31T05:06:08+04:0005 2014, 05:06:08

3 ответа


130

Вычисление длины сетевой маски (также называемой префиксом):

Преобразуйте десятичное представление сетевой маски в двоичную. Затем подсчитайте количество смежных 1 бит, начиная с самого значащего бита в первом октете (т. Е. Левая сторона двоичного числа).

255.255.248.0   in binary: 11111111 11111111 11111000 00000000
                           -----------------------------------
                           I counted twenty-one 1s             -------> /21

Префикс 128.42.5.4 с сетевой маской 255.255.248.0 равен /21.

Вычисление сетевого адреса:

Сетевой адрес является логическим И соответствующих битов в двоичном представлении IP-адреса и сетевой маски. Выровняйте биты в обоих адресах и выполните логическое И на каждой паре соответствующих битов. Затем преобразуйте отдельные октеты результата обратно в десятичную.

Логическая таблица истинности:

Логическое И

128.42.5.4      in binary: 10000000 00101010 00000101 00000100
255.255.248.0   in binary: 11111111 11111111 11111000 00000000
                           ----------------------------------- [Logical AND]
                           10000000 00101010 00000000 00000000 ------> 128.42.0.0

Как вы можете видеть, сетевой адрес 128.42.5.4/21 равен 128.42.0.0

Вычисление широковещательного адреса:

Широковещательный адрес преобразует все биты хоста в 1s ...

Помните, что наш IP-адрес в десятичном формате:

128.42.5.4      in binary: 10000000 00101010 00000101 00000100

Маска сети:

255.255.248.0   in binary: 11111111 11111111 11111000 00000000

Это означает, что наши биты хоста - это последние 11 бит IP-адреса, потому что мы находим маску хоста путем инверсии сетевой маски:

Host bit mask            : 00000000 00000000 00000hhh hhhhhhhh

Чтобы вычислить широковещательный адрес, мы вынуждаем все биты хоста 1s:

128.42.5.4      in binary: 10000000 00101010 00000101 00000100
Host bit mask            : 00000000 00000000 00000hhh hhhhhhhh
                           ----------------------------------- [Force host bits]
                           10000000 00101010 00000111 11111111 ----> 128.42.7.255

Расчет подсети:

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

Предположим, что мы разделим 128.42.0.0/21 на 4 подсети, которые должны содержать не менее 100 хостов каждый ...

подсеть

В этом примере мы знаем, что вам нужен хотя бы префикс /25, содержащий 100 хостов; Я выбрал a /24, потому что он попадает на границу октета. Обратите внимание, что сетевой адрес для каждой подсети берет биты хоста из родительского сетевого блока.

Поиск требуемой длины маски подсети или сетевой маски:

Как я узнал, что мне нужно, по крайней мере, 25 маску для 100 хостов? Вычислите префикс, обратившись к числу хост-бит, который должен содержать 100 хостов. Нужно 7 хостов, чтобы содержать 100 хостов. Официально это рассчитывается с помощью:

Биты хоста = Журнал 2 (Число хостов) = Журнал 2 (100) = 6.643

Так как адреса IPv4 имеют ширину 32 бита, и мы используем биты хоста (т.е. младшие значащие биты), просто вычитаем 7 из 32 для вычисления минимального префикса подсети для каждой подсети ... 32 - 7 = 25.

Ленточный способ разбить 128.42.0.0/21 на четыре равные подсети:

Поскольку нам нужно всего четыре подсети из всего блока 128.42.0.0/21, мы могли бы использовать /23 подсети. Я выбрал /23, потому что нам нужны 4 подсети ... т. Е. Добавлены еще два бита в маску сети.

Это равноправный ответ на ограничение, используя /23 подсети из 128.42.0.0/21 ...

подсеть, вторая опция

Вычисление номера хоста:

Это то, что мы уже сделали выше ... просто повторно используем маску хозяина из работы, которую мы сделали, когда вычисляли широковещательный адрес 128.42.5.4/21 ... На этот раз я буду использовать 1s вместо h, потому что нам нужно снова выполнить логическое И на сетевом адресе.

h

Вычисление максимально возможного количества хостов в подсети:

Чтобы найти максимальное количествохосты, посмотрите количество бинарных битов в указанном выше номере узла. Самый простой способ сделать это - вычесть длину сетевой маски от 32 (количество бит в адресе IPv4). Это дает вам количество бит хоста в адресе. В этот момент ...

Максимальное количество хостов = 2 ** (32 - netmask_length) - 2

Причина, по которой мы вычитаем 2 выше, заключается в том, что зарезервированы номера хостов all-ones и all-zeros. Номер хоста all-zeros - это номер сети; номер хоста all-ones - широковещательный адрес.

Используя пример подсети 128.42.0.0/21 выше, количество хостов ...

Максимальное количество хостов = 2 ** (32 - 21) - 2 = 2048 - 2 = 2046

Поиск минимальной сетевой маски, которая содержит два IP-адреса:

Предположим, кто-то дает нам два IP-адреса и ожидает, что мы найдем самую длинную сетевую маску, содержащую их оба; например, что, если бы у нас было:

  • 128.42.5.17
  • 128.42.5.67

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

128.42.5.4      in binary: 10000000 00101010 00000101 00000100
Host bit mask            : 00000000 00000000 00000111 11111111
                           ----------------------------------- [Logical AND]
                           00000000 00000000 00000101 00000100 -----> 0.0.5.4

В этом случае минимальная сетевая маска будет /25

ПРИМЕЧАНИЕ. Если вы попытаетесь начать с правой стороны, не обманывайте себя только потому, что вы найдете один соответствующий столбец бит; могут существовать несогласованные биты за пределами этих совпадающих битов. Честно говоря, самым безопасным делом является запуск с левой стороны.

ответил Mike Pennington 31 MarpmMon, 31 Mar 2014 14:38:08 +04002014-03-31T14:38:08+04:0002 2014, 14:38:08
12

Ответ выше отлично подходит для ногтей на голове. Однако, когда я впервые начал, мне потребовалось несколько разных примеров из нескольких источников, чтобы он действительно ударил по дому. Поэтому, если вас интересуют другие примеры, я написал несколько сообщений в блогах по этому вопросу - http: //www.oznetnerd. ком /категории /подсеть /

Администраторы, если этот пост считается спамом, не стесняйтесь его удалять.

Изменить: согласно предложению YLearn, я попытаюсь захватить соответствующие части из первой части моей серии, не вставив сюда всю запись.

В качестве примера воспользуемся примером 195.70.16.159/30.

Поскольку это /30, мы знаем, что часть хоста будет находиться в четвертом октете. Давайте преобразуем это в двоичный:

128 64 32 16  8  4 2 1
SN  SN SN SN SN SN H H
 1   0  0  1  1  1 1 1

Теперь, чтобы узнать сетевой адрес, все, что мы делаем, это добавить бит SN, у которых есть 1 под ними вместе. (128 + 16 + 8 + 4 = 156).

Когда вы добавите этот 156 в первые три октета адреса, мы остаемся с Сетевым адресом 195.70.16.156.

Теперь, поскольку мы знаем, что первый полезный адрес всегда является сетевым адресом плюс один, , нам нужно выполнить следующий расчет: (156 + 1 = 157).

Это дает нам первый полезный адрес 195.70.16.157.

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

Это дает нам широковещательный адрес 195.70.16.159.

И, наконец, давайте рассмотрим последний полезный адрес. Этот процесс похож на поиск первого полезного адреса, однако вместо того, чтобы добавлять его к сетевому адресу, мы фактически вычитаем его из широковещательного адреса. (159 - 1 = 158).

Это дает нам Последний полезный адрес 195.70.16.158.

И у нас это есть! Наш temaplte закончен. Для удобства, здесь это снова:

  • Сетевой адрес: 195.70.16.156
  • Первый полезный адрес: 195.70.16.157
  • Последний полезный адрес: 195.70.16.158
  • Адрес широковещания: 195.70.16.159

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

  • Первый полезный адрес = Сетевой адрес + 1
  • Широковещательный адрес = Следующий сетевой адрес - 1
  • Последний полезный адрес = широковещательный адрес - 1
ответил OzNetNerd 4 J0000006Europe/Moscow 2015, 02:19:46
2

Пример:

IP: 128.42.5.4

В двоичном формате: 10000000 00101010 00000101 00000100

Подсеть: 255.255.248.0

Как вы можете определить префикс, сеть, подсеть и номера хостов?

      32768     16384  8192  4096  2048  1024   512   256  ----> Binary
        128       192   224   240   248   252   254   255  ----> Sunet Mask
        /17       /18   /19   /20   /21   /22   /23   /24  ----> CIDR  
      32766     16382  8190  3094  2046  1022   510   254  ----> Host


      128     64    32     16     8     4    2     1   ----> Binary
      128    192   224    240   248   252   254   255  ----> Sunet Mask
      /25    /26   /27    /28   /29   /30   /31   /32  ----> CIDR  
      126     62    30     14     6     2    *     -   ----> Host 

     128        64        32       16        8         4         2        1
  10000000   01000000  00100000 00010000  00001000  00000100  00000010   00000001

   Example 
   Network=192.168.1.0 /24;  
   Network Address with Subnet mask =  192.168.1.0 subnet 255.255.255.0 
   Ip address range 192.168.1.0----192.168.1.255
   Fist available ip address  192.168.1.1; 
   Last available ip address  192.168.1.254; 
   Broadcast address = 192.168.1.255;
   254 Host

   Network=192.168.1.0 /25;
   Network Address with Subnet mask =  192.168.1.0 subnet 255.255.255.128
   Ip address range 192.168.1.0----192.168.1.128
   Fist available ip address  192.168.1.1; 
   Last available ip address  192.168.1.126;
   Broadcast address = 192.168.1.127;  
   126 Hosts

   When the CIDR increased ex. /24. /25.  the network will divided by the 
   binary number.
   /25  increase network   0-128| 128- 256 |                   you will have 2 Networks 
   /26  increase network   0-64 | 64 - 128 | 128-192 | 192-256 you will have 4 Networks 
    .
    .
    .
   /32......
ответил bkpxfdifo 1 32017vEurope/Moscow11bEurope/MoscowWed, 01 Nov 2017 07:59:14 +0300 2017, 07:59:14

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132