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

97

Пример:

IP: 128.42.5.4

В двоичном коде: 10000000 00101010 00000101 00000100

Подсеть: 255.255.248.0

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

user5032
источник

Ответы:

165

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

Преобразуйте десятичное представление маски в точках в двоичное. Затем подсчитайте количество смежных 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.

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

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

Помните, что наш 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

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

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 хостов; Я выбрал / 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 ...

подсеть, 2-й вариант

Расчет номера хоста:

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

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

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

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

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

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

Используя пример подсети 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.17     in binary: 10000000 00101010 00000101 00010001
128.42.5.67     in binary: 10000000 00101010 00000101 01000011
                           ^                           ^     ^
                           |                           |     |
                           +--------- Network ---------+Host-+
                             (All bits are the same)    Bits

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

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

Майк Пеннингтон
источник
15

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

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

Изменить: Согласно предложению 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
Крошечный (почти незначительный) предостережение: формула «Последний используемый адрес» внизу работает для всех подсетей, кроме / 31 ... см. RFC 3021 . Это небольшое, но актуальное исключение, если кто-то пытался использовать ваш алгоритм в коде.
Майк Пеннингтон
11

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


Часть 1 из 2


IPv4 Math

Учитывая IPv4-адрес и сетевую маску IPv4 (сетевая маска также может быть получена из длины сетевой маски или маски хоста), вы можете определить много информации о сети IPv4: сетевой адрес, сетевой широковещательный адрес, общее количество адресов хоста, общее количество используемых Адреса хостов, первый используемый адрес хоста и последний используемый адрес хоста.

Я не могу не подчеркнуть, что вы должны делать IPv4 математику в двоичном формате. Я думаю, что каждый сетевой инженер (или потенциальный сетевой инженер) пытался найти способ сделать все это в десятичном формате, как я уверен, что вы будете *. Проблема в том, что 10 (десятичное) не является степенью 2 (двоичное), поэтому десятичное и двоичное не преобразовываются естественным образом между собой так, как шестнадцатеричное (основание 16) естественным образом преобразуется в двоичное и обратно, потому что 16 является степенью 2 ,

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

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

---------------------------------------------------------
| Bit # |   7 |   6 |   5 |   4 |   3 |   2 |   1 |   0 |
---------------------------------------------------------
| Value | 128 |  64 |  32 |  16 |   8 |   4 |   2 |   1 |
---------------------------------------------------------

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

For our example IPv4 dotted-decimal address of 198.51.100.223:
1st octet: 198 = 128 + 64 +  0 +  0 + 0 + 4 + 2 + 0 = 11000110
2nd octet:  51 =   0 +  0 + 32 + 16 + 0 + 0 + 2 + 1 = 00110011
3rd octet: 100 =   0 + 64 + 32 +  0 + 0 + 4 + 0 + 0 = 01100100
4th octet: 223 = 128 + 64 +  0 + 16 + 8 + 4 + 2 + 1 = 11011111

For our example IPv4 binary address of 11000110001100110110010011011111:
1st octet: 11000110 = 128 + 64 +  0 +  0 + 0 + 4 + 2 + 0 = 198
2nd octet: 00110011 =   0 +  0 + 32 + 16 + 0 + 0 + 2 + 1 =  51
3rd octet: 01100100 =   0 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 100
4th octet: 11011111 = 128 + 64 +  0 + 16 + 8 + 4 + 2 + 1 = 223

Вам также нужно будет запомнить свои Таблицы правды из школы (в двоичной математике 0 - Ложь, а 1 - Истина):

-----------------------------------------
| False AND False = False | 0 AND 0 = 0 |
-----------------------------------------
| False AND True  = False | 0 AND 1 = 0 |
-----------------------------------------
| True  AND False = False | 1 AND 0 = 0 |
-----------------------------------------
| True  AND True  = True  | 1 AND 1 = 1 |
-----------------------------------------

-----------------------------------------
| False OR False = False  | 0 OR 0 = 0  |
-----------------------------------------
| False OR True  = True   | 0 OR 1 = 1  |
-----------------------------------------
| True  OR False = True   | 1 OR 0 = 1  |
-----------------------------------------
| True  OR True  = True   | 1 OR 1 = 1  |
-----------------------------------------

* Если вы выполняете математику IPv4 в течение многих лет, вы можете достичь точки, в которой вы можете выполнять двоичные / десятичные преобразования в своей голове, и тогда вы сможете выполнять математику IPv4 в десятичной форме. Несмотря на то, что я могу сделать это в своей голове, я всегда буду перепроверять с помощью калькулятора IP, или преобразовывать в двоичный файл, выполнять математические вычисления и преобразовывать обратно в десятичную, прежде чем вносить изменения в производственную сеть.


IPv4-адрес

Точечная десятичная запись IPv4, например 198.51.100.223, предназначена для того, чтобы людям было проще читать адрес IPv4. Четыре отдельных раздела, называемые октетами, действительно не имеют никакого значения для IPv4. Не делайте распространенную ошибку, думая, что октеты имеют особое значение. Адрес IPv4 на самом деле представляет собой 32-разрядное двоичное число, и именно так сетевые устройства видят и используют адрес IPv4.

Наш пример IPv4-адреса 198.51.100.223на самом деле относится 11000110001100110110010011011111к устройству в сети, поэтому вы можете видеть, что десятичное представление с точками действительно облегчает людям. Каждый октет представляет собой восемь бит 32-битного адреса (отсюда обычно используется термин «октет»), поэтому существует четыре октета ( 32 address bits / 8 bits per octet = 4 octets). В нашем примере 32-битный двоичный адрес разделен на четыре октета, затем каждый двоичный октет преобразуется в десятичное число *:

Binary address: 11000110001100110110010011011111
                ---------------------------------------------
Binary octets:  | 11000110 | 00110011 | 01100100 | 11011111 |
Decimal octets: |      198 |       51 |      100 |      223 |
                ---------------------------------------------
Dotted-decimal: 198.51.100.223

Поскольку каждый октет имеет длину восемь битов, каждый октет будет иметь значение между 0и 255(любые значения больше 255недопустимых). Причина в том, что 2^8 = 256: 2(база двоичных чисел) в степени 8(восемь битов на октет) равна 256количеству различных значений, которые могут быть выражены восьмибитным октетом. Помните, что первое значение равно 0, поэтому 256значение th будет на единицу меньше общего числа значений, которые могут быть выражены ( 256 – 1 = 255).

Чтобы правильно выполнять математику IPv4, вы должны делать это в двоичном формате, в противном случае вы будете делать ошибки, которые вызовут у вас проблемы и разочарование. Это означает, что вы должны преобразовать десятичную запись с точками в двоичную форму, прежде чем пытаться манипулировать ею:

Dotted-decimal: 198.51.100.223
                ---------------------------------------------
Decimal octets: |      198 |       51 |      100 |      223 |
Binary octets:  | 11000110 | 00110011 | 01100100 | 11011111 |
                ---------------------------------------------
Binary address: 11000110001100110110010011011111

* Ведущие нули в точечно-десятичном адресе IPv4 могут интерпретироваться некоторыми приложениями и языками программирования как восьмеричные (основание 8), а не десятичные (основание 10), что приводит к ошибкам и следует избегать начальных нулей для представления IPv4 с точками и десятичными точками, но начальные нули необходимы для двоичных октетов IPv4-адресов, поскольку они представляют позиции битов в полном адресе, а пропуск позиции бита приведет к сокращению адреса и изменению двоичного значения.


Сетевая маска IPv4

Маска сети IPv4 используется для разделения адреса IPv4 на две части: сетевую часть и часть хоста. Деление может быть с любым битовым числом, поэтому оно может находиться в пределах октета, а не на границе октета, как многие люди ошибочно полагают, что это всегда происходит. Маска сети IPv4 имеет тот же размер, что и адрес IPv4 (32 бита), и она выражается в десятично-точечной нотации так же, как если бы вы выражали адрес IPv4 в десятично-точечной нотации (четыре восьмибитных октета, разделенных период). Например, 255.255.248.0.

Маска сети IPv4 состоит из нескольких последовательных 1битов (представляющих сетевую часть адреса), за которыми следует количество 0битов (представляющих хост-часть адреса). Общее количество 1битов и общее количество 0битов складывается до 32количества бит в адресе IPv4 или сетевой маске. Для нашего примера маска сети:

Dotted-decimal: 255.255.248.0
                ------------------------------------------------
Decimal octets: |      255 |      255 |         248 |        0 |
Binary octets:  | 11111111 | 11111111 | 11111 | 000 | 00000000 |
                ------------------------------------------------
                | 21 Network bits             | 11 Host bits   |
                ------------------------------------------------

Как вы можете видеть, разделение между частями сети и хоста адреса IPv4 с использованием этой конкретной маски находится в пределах октета, а не на границе октета.

Маска сети IPv4 часто представляется количеством последовательных 1битов в маске. Это по-разному называется длиной маски сети или длиной префикса, и она представлена ​​как /число последовательных 1битов в маске сети. В нашем примере подсчитывается количество последовательных 1битов 21, которое можно представить как /21.

Учитывая длину маски, вы можете вычислить точечно-десятичное представление маски. Просто запишите количество 1битов для длины маски и добавьте достаточно 0битов в конце к общему количеству 32битов. Преобразуйте полученное двоичное число в десятичное представление с точками:

Mask length:    /21
                ------------------------------------------------
                | 21 Network bits             | 11 Host bits   |
                ------------------------------------------------
Binary octets:  | 11111111 | 11111111 | 11111 | 000 | 00000000 |
Decimal octets: |      255 |      255 |         248 |        0 |
                ------------------------------------------------
Dotted-decimal: 255.255.248.0

Пример может быть представлен традиционно как 198.51.100.223с сетевой маской 255.255.248.0или может быть представлен как более современный CIDR (бесклассовая междоменная маршрутизация) 198.51.100.223/21.


Сетевой адрес IPv4

Сетевой адрес IPv4 - это адрес IPv4 со всеми установленными битами хоста 0. Сетевой адрес IPv4 может быть рассчитан по ANDбитам соответствующих битов в двоичном представлении адреса IPv4 и маски сети IPv4. Выровняйте биты по обоим адресам и выполните поразрядно ANDдля каждой пары соответствующих битов, затем преобразуйте отдельные октеты результата обратно в десятичную.

Для нашего примера IPv4-адрес 198.51.100.223и маска сети 255.255.248.0:

Decimal address:        198.51.100.223/21
Binary address octets:  11000110 00110011 01100100 11011111
Binary mask octets:     11111111 11111111 11111000 00000000 AND
                        -----------------------------------
Binary network octets:  11000110 00110011 01100000 00000000
Decimal network octets:      198       51       96        0
Dotted-decimal network: 198.51.96.0

Как видите, сетевой адрес 198.51.100.223/21есть 198.51.96.0. Обратите внимание, что вы не можете полагаться на то, что октеты сообщают вам, какая часть адреса является сетью, а какая часть адреса для хостов.

Вы можете использовать этот метод, чтобы определить, находятся ли два адреса в одной или разных сетях *. Например, если вы хотите узнать, находится ли ваш 198.51.100.223/21адрес в той же сети IPv4, где хосту назначен 198.51.102.57адрес, определите свой сетевой адрес IPv4 (как указано выше). Затем определите сетевой адрес IPv4 рассматриваемого хоста, используя маску сети IPv4 (хосты в той же сети используют ту же маску сети, и у вас может не быть маски, только адрес хоста назначения):

Decimal address:        198.51.102.57/21
Binary address octets:  11000110 00110011 01100110 00111001
Binary mask octets:     11111111 11111111 11111000 00000000 AND
                        -----------------------------------
Binary network octets:  11000110 00110011 01100000 00000000
Decimal network octets:      198       51       96        0
Dotted-decimal network: 198.51.96.0

Сравните полученный сетевой адрес IPv4 с исходным сетевым адресом IPv4 и обратите внимание, что сетевые адреса равны, поэтому адреса узлов находятся в одной сети.

Теперь, давайте посмотрим, если вы находитесь в той же сети, что и 74.125.69.100адрес Google:

Decimal address:        74.125.69.100/21
Binary address octets:  01001010 01111101 01000101 01100100
Binary mask octets:     11111111 11111111 11111000 00000000 AND
                        -----------------------------------
Binary network octets:  01001010 01111101 01000000 00000000
Decimal network octets:       74      125       64        0
Dotted-decimal network: 74.125.64.0

Сравните полученный сетевой адрес IPv4 с исходным сетевым адресом IPv4 и обратите внимание, что сетевые адреса разные, поэтому адреса узлов находятся в разных сетях.


* Это метод, используемый исходным хостом для определения, является ли он хостом назначения в той же сети, что и исходный хост.


IPv4 Host Mask

Одно полезное, часто упускаемое из виду значение, которое полезно при адресации IPv4, - это маска хоста IPv4. Маска хоста IPv4 - это просто обратная маска сети IPv4. Вы можете создать бинарную маску хоста из бинарной маски сети или бинарную маску сети из бинарной маски хоста, просто инвертируя 1s и 0s начальной маски:

Dotted-decimal network mask: 255.255.248.0
Decimal network mask octets:      255      255      248        0
Binary network mask octets:  11111111 11111111 11111000 00000000 invert
                             -----------------------------------
Binary host mask octets:     00000000 00000000 00000111 11111111
Decimal host mask octets:           0        0        7      255
Dotted-decimal host mask:    0.0.7.255

Можно математически создать маску хоста из маски сети или маску сети из маски хоста, вычитая начальную маску из самой длинной маски ( /32или маски «все единицы»).

Это можно сделать в двоичном виде:

Binary all-ones mask octets: 11111111 11111111 11111111 11111111
Binary network mask octets:  11111111 11111111 11111000 00000000 -
                             -----------------------------------
Binary host mask octets:     00000000 00000000 00000111 11111111
Decimal host mask octets:           0        0        7      255
Dotted-decimal host mask:    0.0.7.255

Это также может быть выполнено в десятичном формате (это октет «все единицы» 255), но не забудьте преобразовать его в двоичный файл, прежде чем пытаться использовать его для манипулирования адресами:

Decimal all-ones mask octets: 255 255 255 255
Decimal network mask octets:  255 255 248   0 -
                              ---------------
Decimal host mask octets:       0   0   7 255
Dotted-decimal host mask:     0.0.7.255

Сетевой широковещательный адрес IPv4

Сетевой широковещательный адрес IPv4 - это сетевой адрес IPv4 со всеми установленными битами хоста 1. Существует несколько способов вычисления широковещательного адреса IPv4.

Для нашего примера IPv4-адрес 198.51.100.223и маска сети 255.255.248.0.

Вы можете выполнить побитовую обработку ORс IPv4-адресом или сетевым адресом с маской хоста:

Decimal address octets:        198       51      100      223
Binary address octets:    11000110 00110011 01100100 11011111
Binary host mask octets:  00000000 00000000 00000111 11111111 OR
                          -----------------------------------
Binary broadcast octets:  11000110 00110011 01100111 11111111
Decimal broadcast octets:      198       51      103      255
Dotted-decimal broadcast: 198.51.103.255

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

Binary network octets:    11000110 00110011 01100000 00000000
Binary host mask octets:  00000000 00000000 00000111 11111111 +
                          -----------------------------------
Binary broadcast octets:  11000110 00110011 01100111 11111111
Decimal broadcast octets:      198       51      103      255
Dotted-decimal broadcast: 198.51.103.255

Это также то, что вы можете сделать в десятичном виде:

Decimal network octets:   198  51  96   0
Decimal host mask octets:   0   0   7 255 +
                          ---------------
Decimal broadcast octets: 198  51 103 255
Dotted-decimal broadcast: 198.51.103.255

Всего сетевых адресов IPv4

Общее количество адресов хоста IPv4 для сети зависит 2от количества бит хоста, которое 32минус количество бит сети. Для нашего примера /21сети (маска сети 255.255.248.0) есть 11биты хоста ( 32 address bits – 21 network bits = 11 host bits). Это означает, что 2048в /21сети IPv4 имеется общее количество адресов хоста ( 2^11 = 2048).


Всего пригодных сетевых адресов IPv4

За исключением /31сетей (маска сети 255.255.255.254) и /32(маска сети 255.255.255.255), количество используемых адресов узлов в сети IPv4 равно общему числу адресов узлов сети минус 2(так как сеть и широковещательные адреса IPv4 непригодны для адресов узлов в сети, вы необходимо вычесть их из числа доступных адресов хоста). Для нашего примера сети /21( 255.255.248.0) есть доступные 2046адреса хоста ( 2^11 - 2 = 2046).


Первый используемый адрес хоста сети IPv4

За исключением /31сетей (маска сети 255.255.255.254) и /32(маска сети 255.255.255.255), первым используемым адресом сетевого узла IPv4 является сетевой адрес IPv4 плюс 1(сетевой адрес IPv4 не может использоваться для адреса сетевого узла). В нашем примере сети 198.51.96.0/21первым используемым адресом сетевого узла является 198.51.96.1( 198.51.96.0 + 1 = 198.51.96.1). Просто установите младший бит двоичного сетевого адреса IPv4 на 1:

Decimal network octets:      198       51       96        0
Binary network octets:  11000110 00110011 01100000 00000000
                        -----------------------------------
Binary address octets:  11000110 00110011 01100000 00000001
Decimal address octets:      198       51       96        1
Dotted-decimal address: 198.51.96.1

Последний используемый адрес хоста сети IPv4

За исключением /31сетей (маска сети 255.255.255.254) и /32(маска сети 255.255.255.255), последний используемый адрес узла сети IPv4 - это адрес широковещания сети IPv4 минус 1(адрес широковещания сети IPv4 не может использоваться для адреса узла сети). Для нашего примера сети 198.61.96.0/21последний используемый адрес узла сети 198.51.103.254( 198.51.103.255 - 1 = 198.51.103.254). Просто установите младший бит двоичного сетевого широковещательного адреса IPv4 на 0:

Decimal broadcast octets:      198       51      103      255
Binary broadcast octets:  11000110 00110011 01100111 11111111
                          -----------------------------------
Binary address octets:    11000110 00110011 01100111 11111110
Decimal address octets:        198       51      103      254
Dotted-decimal address:   198.51.103.254

Объединяем сетевую адресацию IPv4 все вместе

Для нашего примера сетевого адреса 198.51.100.223и маски IPv4 255.255.248.0(или 198.51.100.223/21) мы можем вычислить много сетевой информации:

Host address:                       198.51.100.223
Network mask:                       255.255.248.0
Network mask length:                21
Host mask:                          0.0.7.255
Host mask length:                   11
*Network address:                   198.51.96.0
*First usable network host address: 198.51.100.1
*Last usable network host address:  198.51.103.254
*Network Broadcast address:         198.51.103.255
Total network host addresses:       2048
Usable network host addresses:      2046

* Экзамены по сетевому обучению и сертификационные тесты попросят вас быстро вычислить их для сети IPv4, учитывая адрес хоста и маску (или длину маски). Вы можете использовать подсказки ниже для быстрой проверки ваших ответов:

  • Сетевой адрес (подсказка: четное число)
  • Первый доступный адрес хоста (подсказка: сетевой адрес плюс 1, нечетное число)
  • Последний используемый адрес хоста (подсказка: широковещательный адрес минус 1, четное число)
  • Широковещательный адрес (подсказка: сетевой адрес плюс маска хоста, нечетное число)

Вышеприведенные советы не относятся к /31сетям (маска сети 255.255.255.254) или /32(маска сети 255.255.255.255).

Если у вас достаточно времени на экзамене и проблема с несколькими методами для получения ответа, вам следует использовать несколько методов для двойной проверки ответа.


Продолжение в следующем ответе ...

Рон Мопин
источник
9

Продолжение предыдущего ответа ...


Часть 2 из 2


Выбор адреса сетевого шлюза (маршрутизатора) IPv4

Шлюз - это узел в сети, который знает, как пересылать пакеты в другие сети, и ему может быть назначен любой используемый адрес узла сети. Некоторые люди просто случайным образом назначают адреса шлюза любому используемому адресу сетевого узла, некоторые люди всегда назначают шлюз первому используемому адресу сетевого узла, а некоторые всегда назначают последний доступный адрес сетевого узла шлюзу. На самом деле не имеет значения, какой используемый сетевой адрес хоста вы назначаете шлюзу, но вы должны стараться быть последовательными.


IPv4 /31(маска сети 255.255.255.254) Сети

Первоначально /31сети (маска сети 255.255.255.254) были непригодны, поскольку имеется только один бит узла, что дает вам всего два сетевых адреса узлов, но количество используемых адресов сетевых узлов - это общее количество адресов сетевых узлов минус 2( 2 total host addresses - 2 = 0 usable host addresses).

Для двухточечных ссылок требуется только два адреса хоста (по одному для каждого конца ссылки). Традиционный способ назначения сетей IPv4 требовал использования /30сетей (маски сети 255.255.255.252) для соединений точка-точка, но это напрасно тратит половину адресов сетевых узлов, поскольку в /30сети всего четыре сетевых адреса узлов, но только два являются пригодными для использования адресами сетевых узлов. ( 2^2 – 2 = 2).

В связи с нехваткой критических IPv4-адресов был создан стандарт, позволяющий использовать /31сети для соединений точка-точка. Это имеет смысл, поскольку нет необходимости в широковещательной передаче в таких сетях: любые пакеты, отправляемые узлом в сети, предназначены для единственного другого узла в сети, эффективно вещающего. В /31сети сетевой адрес является первым используемым адресом хоста, а широковещательный адрес является последним используемым адресом хоста.

К сожалению, не все поставщики (в частности, Microsoft) поддерживают стандарт использования /31сетей в двухточечных каналах связи, и вы чаще всего будете видеть двухточечные ссылки, используя /30сети.


IPv4 /32(маска сети 255.255.255.255) Сети

/32(Сетевая маска 255.255.255.255) сеть как сеть, без адресов узлов, а также адрес хоста, сам по себе. В сети есть только один адрес, и это сетевой адрес. Поскольку в сети нет других хостов, трафик должен перенаправляться на сетевой адрес и с него.

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


Подсети сетей IPv4

Подсеть сети создает несколько более длинных сетей из сетевого адреса и маски. Основная идея заключается в том, что вы заимствуете старшие биты из основной части исходной сети. Предположим, вы хотите создать 14 равных по размеру подсетей из нашей исходной 198.51.96.0/21сети. Поскольку вы заимствуете биты старшего разряда из основной части исходной сети, вы получите число, которое является степенью 2, но 14не степенью 2, поэтому вы должны получить следующую более высокую степень 2, которая оказывается 16( 16 = 2^4). В 2данном случае мощность 4- это число битов хоста старшего разряда, которое необходимо заимствовать для количества создаваемых подсетей. Вы также можете использовать математическую формулу для определения необходимого количества бит:Log2(X subnets) = Y borrowed bitsокругляется до следующего целого значения:

Log2(14 subnets) = 3.807354922, rounded up = 4 borrowed bits

В нашем примере нам нужно 14 подсетей одинакового размера в исходной 198.51.96.0/21сети, начиная со всех 0s * для первой подсети, добавьте 1в подсеть часть, чтобы получить следующую подсеть:

           ----------------------------------------------
Original:  | 21 network bits       | 11 host bits       |
           ----------------------------------------------
Network:   | 110001100011001101100 | 0000 |  0000000    | = 198.51.96.0/21
Subnet 1:  | 110001100011001101100 | 0000 |  0000000    | = 198.51.96.0/25
Subnet 2:  | 110001100011001101100 | 0001 |  0000000    | = 198.51.96.128/25
Subnet 3:  | 110001100011001101100 | 0010 |  0000000    | = 198.51.97.0/25
Subnet 4:  | 110001100011001101100 | 0011 |  0000000    | = 198.51.97.128/25
Subnet 5:  | 110001100011001101100 | 0100 |  0000000    | = 198.51.97.128/25
Subnet 6:  | 110001100011001101100 | 0101 |  0000000    | = 198.51.98.128/25
Subnet 7:  | 110001100011001101100 | 0110 |  0000000    | = 198.51.99.0/25
Subnet 8:  | 110001100011001101100 | 0111 |  0000000    | = 198.51.99.128/25
Subnet 9:  | 110001100011001101100 | 1000 |  0000000    | = 198.51.100.0/25
Subnet 10: | 110001100011001101100 | 1001 |  0000000    | = 198.51.100.128/25
Subnet 11: | 110001100011001101100 | 1010 |  0000000    | = 198.51.101.0/25
Subnet 12: | 110001100011001101100 | 1011 |  0000000    | = 198.51.101.128/25
Subnet 13: | 110001100011001101100 | 1100 |  0000000    | = 198.51.102.0/25
Subnet 14: | 110001100011001101100 | 1101 |  0000000    | = 198.51.102.128/25
           ----------------------------------------------
Subnetted: | 25 network bits              | 7 host bits |
           ----------------------------------------------

           ----------------------------------------------
Unused:    | 110001100011001101100 | 111  | 00000000    | = 198.51.103.0/24
           ----------------------------------------------

* Существует постоянный миф, что для подсетей, как и для адресов хостов, нельзя использовать все нули и все единицы, но этот миф был явно развеян много лет назад стандартом. К сожалению, этот миф распространяется на некоторые сетевые учебные классы, и правильным ответом для этих (неправильных) классов будет использование 2–15-й подсетей.


Можно разделить сеть на подсети различного размера (каждая сеть IPv4 является подсетью 0.0.0.0/0сетевого адреса), как в нашем примере выше, где неиспользуемая подсеть является /24подсетью, но это требует тщательного планирования, чтобы начальные подсети начинались с правильный бит.

Например, предположим, что нам нужна сеть /26и /27подсеть a 198.51.96.0/21. Есть два способа сделать это: начать с /26подсети или начать с /27подсети.

Начиная с /26подсети:

Original: | 110001100011001101100 | 00000000000    | /21
Subnet 1: | 110001100011001101100 | 00000 | 000000 | /26

Добавьте 1в подсеть часть, чтобы получить начальную позицию следующей подсети:

Subnet 2: | 110001100011001101100 | 00001 | 000000 | /26

Затем расширьте вторую подсеть /27:

Subnet 2: | 110001100011001101100 | 000010 | 00000 | /27

Обратите внимание, что мы на самом деле подсетим вторую /26подсеть в /27подсеть, и это хорошо работает, потому что 27больше, чем 26.

Начиная с /27подсети:

Original: | 110001100011001101100 | 00000000000    | /21
Subnet 1: | 110001100011001101100 | 000000 | 00000 | /27

Добавьте 1в подсеть часть, чтобы получить начальную позицию следующей подсети:

Subnet 2: | 110001100011001101100 | 000001 | 00000 | /27

Обратите внимание, что в хост-части осталось недостаточно битов (пять битов хоста) для поддержки /26сети, для которой требуется шесть бит хоста ( 32 address bits – 26 network bits = 6 host bits). Если мы используем это в качестве начальной позиции для /26подсети, мы фактически перекрываем предыдущую и следующую /26сети. Нам нужно оставить пробел в размере /27сети для начальной позиции /26сети:

Original: | 110001100011001101100 | 00000000000     | /21
Subnet 1: | 110001100011001101100 | 000000 |  00000 | /27
Unused:   | 110001100011001101100 | 000001 |  00000 | /27
Subnet 2: | 110001100011001101100 | 00001  | 000000 | /26

/26Подсети всегда должна начинаться на /26границе: каждая вторая /27граница подсети, каждая четвёртая /28граница, каждая восьмая /29граница, и т.д. Это правило для любого размера подсети: подсеть должна начинаться на границе более подсети , которая равна 2силе более длинного размера подсети минус размер подсети. Например, /23подсеть должна запускаться в каждой 4-й /25сети ( 2^(25 - 23) = 2^2 = 4).

Попытка настроить устройство с сетевым адресом, который начинается с неправильной битовой границы, приведет либо к странным, трудным для устранения проблем проблемам, либо к устройству выдаст ошибку об перекрывающихся сетях. Некоторые люди пытаются сделать это с помощью десятичного числа с точками, и это может привести к ошибкам. Например, 198.51.96.0/27адреса хоста сети являются 198.51.96.0сквозными 198.51.96.31. Если вы знаете это и пытаетесь использовать 198.51.96.32/26сеть, у вас возникнут проблемы, поскольку эта сеть начинается с неправильной границы бита и перекрывает /27сеть (проверьте с помощью побитового ввода ANDс адресами и сетевыми масками). Это очевидно в двоичном коде, но не так очевидно в точечно-десятичном. Вы можете узнать, что /26сети должны начинаться с кратного десятичного числа64 границу, но видя ее в двоичном формате, можно точно сказать, допустили ли вы ошибку.


Размер подсети в зависимости от количества хостов

Обычные экзаменационные вопросы дадут вам сеть и предложат вам создать несколько подсетей различного размера в зависимости от количества хостов для каждой подсети. Если вы можете, вам необходимо уточнить, основано ли количество хостов на общем количестве адресов хостов в сети или на количестве используемых хостов в сети. (Например, если вопрос требует подсети с 256или 255хостами, /24сеть выдаст вам 256общие адреса хостов, но только 254адреса хостов, которые можно использовать. Такой вопрос может быть хитрым, и правильный ответ будет зависеть от того, вопрос означает общее количество адресов хоста или используемых адресов хостов.)

Пример вопроса:

Given the 198.51.96.0/21 network, subnet it for the following departments:
    Department 1:  500 hosts
    Department 2:  100 hosts
    Department 3:  200 hosts
    Department 4: 1000 hosts

Как мы видели в разделе «Подсети сетей IPv4», самый простой способ сделать это - сначала отсортировать отделы по наибольшему или наименьшему количеству хостов, потому что нам не нужно будет работать с сетевыми пробелами:

Department 4: 1000 hosts
Department 1:  500 hosts
Department 3:  200 hosts
Department 2:  100 hosts

Вы можете округлить каждую до следующей большой степени 2, чтобы получить количество требуемых общих адресов хоста для каждой подсети, а затем вывести количество требуемых битов хоста из показателя степени 2:

Department 4: 1024 total host addresses = 2^10 = 10 host bits
Department 1:  512 total host addresses = 2^9  =  9 host bits
Department 3:  256 total host addresses = 2^8  =  8 host bits
Department 2:  128 total host addresses = 2^7  =  7 host bits

Вы также можете изменить предыдущую формулу, чтобы найти количество битов, требуемых для определенного числа подсетей одинакового размера, чтобы определить количество битов хоста, требуемых для каждой подсети:, Log2(X hosts) = Y host bitsокругленное до следующего целочисленного значения:

Department 4: Log2(1000 hosts) = 9.96578428466209, rounded up = 10 host bits
Department 1: Log2( 500 hosts) = 8.96578428466209, rounded up =  9 host bits
Department 3: Log2( 200 hosts) = 7.64385618977472, rounded up =  8 host bits
Department 2: Log2( 100 hosts) = 6.64385618977473, rounded up =  7 host bits

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

Original:     | 110001100011001101100 |    00000000000 | = 198.51.96.0/21
Department 4: | 110001100011001101100 | 0 | 0000000000 | = 198.51.96.0/22
Department 1: | 110001100011001101100 | 10 | 000000000 | = 198.51.100.0/23
Department 3: | 110001100011001101100 | 110 | 00000000 | = 198.51.102.0/24
Department 2: | 110001100011001101100 | 1110 | 0000000 | = 198.51.103.0/25
Unused:       | 110001100011001101100 | 1111 | 0000000 | = 198.51.103.128/25

Нахождение конкретной подсети

Вас могут попросить предоставить информацию о сети для конкретной подсети данной сети. Например, вас могут попросить предоставить информацию о сети для 23-й /26подсети 198.51.96.0/21сети. Поскольку вам нужна 23-я подсеть, вы можете преобразовать 22(помните, 0это первая подсеть, поэтому 23-я подсеть будет 22*) в двоичную систему: Decimal 22= Binary 10110. Используйте преобразованное двоичное число в части адреса подсети:

Original:  | 110001100011001101100 |    00000000000 | = 198.51.96.0/21
Subnet 23: | 110001100011001101100 | 10110 | 000000 | = 198.51.101.128/26

После того как вы определили 23-й сетевой адрес, 198.51.101.128/26вы можете рассчитать другую сетевую информацию (как описано в предыдущих разделах):

Network address:                   198.51.101.128
Network mask length:               26
Network mask:                      255.255.255.192
Host mask length:                  6
Host mask:                         0.0.0.63
First usable network host address: 198.51.101.1
Last usable network host address:  198.51.101.62
Broadcast address:                 198.51.101.63
Total network host addresses:      64
Usable network host addresses:     62

* Существует постоянный миф, что для подсетей, как и для адресов хостов, нельзя использовать все нули и все единицы, но этот миф был явно развеян много лет назад стандартом. К сожалению, этот миф распространяется на некоторые сетевые учебные классы, и правильным ответом для этих (неправильных) классов будет использование 24-й ( 23десятичной, 10111двоичной) подсети в нашем примере подсетей одинакового размера, а не фактической 23-й ( 22десятичной, 10110бинарная) подсеть.


Поиск конкретного сетевого хоста

Вас могут попросить найти адрес хоста для конкретного хоста данной сети. Например, вас могут попросить дать адрес хоста для 923-го хоста 198.51.96.0/21сети. Так как вам нужен 923-й хост, вы можете преобразовать 923в двоичный: десятичный 923= двоичный 1110011011. Добавьте преобразованное двоичное число в сетевой адрес:

Binary network: | 110001100011001101100 | 00000000000 |
Binary 923:     | 000000000000000000000 | 01110011011 | +
                  -----------------------------------
Host address:   | 110001100011001101100 | 01110011011 | = 198.51.99.155

Крупнейшая общая сеть для двух хостов *

Вам может быть дано два (или более) разных адреса хоста, и вам будет предложено создать самую большую сеть (наименьшее количество хостов), которая содержит оба адреса хоста. Например, найти крупнейшую общую сеть 198.51.100.223и 198.51.101.76.

Во-первых, преобразуйте точечные десятичные адреса в двоичные:

198.51.100.223 = 11000110001100110110010011011111
198.51.101.76  = 11000110001100110110010101001100

Затем, начиная с самого старшего (самого левого) бита, сравнивайте двоичные адреса в каждой битовой позиции, пока биты в той же позиции не совпадают:

198.51.100.223 = | 11000110001100110110010 | 011011111 |
198.51.101.76  = | 11000110001100110110010 | 101001100 |

Подсчитайте количество совпадающих битов, 23в этом случае, чтобы получить длину маски. Затем вы можете взять любой адрес и выполнить побитовую ANDмаску сети, чтобы получить общую сеть. Выполнение этого по обоим адресам должно привести к одной и той же сети, и если это не так, то вы либо неправильно сосчитали, либо пропустили непревзойденную битовую позицию.

198.51.100.223  = 11000110001100110110010011011111
/23 mask length = 11111111111111111111111000000000 AND
                  --------------------------------
Binary network:   11000110001100110110010000000000 = 198.51.100.0/23

198.51.101.76   = 11000110001100110110010111011111
/23 mask length = 11111111111111111111111000000000 AND
                  --------------------------------
Binary network:   11000110001100110110010000000000 = 198.51.100.0/23

Обратите внимание, что два сетевых адреса совпадают. Это означает, что самой большой общей сетью для двух адресов хоста является 198.51.100.0/23(нотация CIDR) или (традиционная) 198.51.100.0с маской 255.255.254.0.


* Вы можете увидеть, что это называется наименьшей общей сетью (или некоторым вариантом, например, минимальной сетью или маской). На самом деле самая маленькая сеть 0.0.0.0/0( 0биты сети) является общей сетью для всех адресов IPv4, поэтому это наименьшая общая сеть среди любых адресов IPv4. Путаница возникает из-за того, что многие люди смотрят на хост-часть адреса и видят его размер как размер сети, а не размер сетевой части адреса.


Публичная и частная адресация

Сам по себе IPv4 не имеет ни понятия, ни различия между публичной и частной адресацией. Частная адресация IPv4 была выбрана произвольно, и интернет-провайдеры по соглашению не будут пересылать пакеты в общедоступном Интернете, используя адреса в частном адресном пространстве, но сетевые устройства и хосты не имеют представления, является ли адрес общедоступным или частным.

Существует три диапазона адресов, определяемых частной адресацией IPv4:

  1. 10.0.0.0/8
  2. 172.16.0.0/12
  3. 192.168.0.0/16

Классная сетевая адресация

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

Все классы адресов IPv4 основаны на первых битах адреса:

Class   Address Starts With      Address Range                 Default Size*
  A     First one bit    = 0       0.0.0.0 to 127.255.255.255        /8
  B     First two bits   = 10    128.0.0.0 to 191.255.255.255       /16
  C     First three bits = 110   192.0.0.0 to 223.255.255.255       /24
  D     First four bits  = 1110  224.0.0.0 to 239.255.255.255       N/A
  E     First four bits  = 1111  240.0.0.0 to 255.255.255.255       N/A
  • Сети класса A имеют сетевую маску по умолчанию 255.0.0.0( /8) и маску хоста по умолчанию 0.255.255.255, что дает вам 16,777,216общее количество адресов хостов на сеть.
  • Сети класса B имеют сетевую маску по умолчанию 255.255.0.0( /16) и маску хоста по умолчанию 0.0.255.255, что дает вам 65,536общее количество адресов хостов на сеть.
  • Сети класса C имеют сетевую маску по умолчанию 255.255.255.0( /24) и маску хоста по умолчанию 0.0.0.255, что дает вам 256общее количество адресов хостов на сеть.
  • Адреса класса D используются для многоадресной рассылки, где каждый адрес используется индивидуально для представления группы хостов, которые подписываются на многоадресный адрес. Это означает, что адреса класса D обычно не имеют понятия сетевой маски.
  • Адреса класса E зарезервированы и не могут быть использованы ни для чего. Есть одно исключение, это адрес ограниченной широковещательной рассылки 255.255.255.255, который является отдельным адресом, который каждый хост в сети будет рассматривать как свой собственный. Это означает, что все отправленные сообщения 255.255.255.255будут приниматься и обрабатываться каждым хостом в сети.

Поскольку каждый класс имеет размер сети по умолчанию, некоторые вопросы предполагают маску по умолчанию для данного адреса, поэтому любые вычисления должны быть сделаны на основе маски сети по умолчанию. Для нашего примера адреса 198.51.100.223:

Binary: 11000110 00110011 01100100 11011111

Обратите внимание, что первые три адресных бита 110означают, что это адрес класса C, и при отсутствии какой-либо маски или длины маски, предполагается, что маска сети 255.255.255.0( /24) представляет собой сетевой адрес 198.51.100.0.


* Не делайте распространенную ошибку, думая, что маска сети диктует класс сети, это наоборот. Например, многие люди считают, что любая /24сеть является сетью класса C, но это даже отдаленно не верно. Например, учитывая 10.11.12.0/24сеть, многие люди ошибочно называют ее сетью класса C из-за маски сети, хотя первый бит адреса 0и делает ее сетью класса A, хотя и с более длинной маской сети, чем по умолчанию. Маска сети класса A, означающая, что это подсеть сети класса A, а не сеть класса C.

Рон Мопин
источник
6

(В попытке сохранить все ответы на сетевую маску в одном месте, после других превосходных ответов, я добавил этот о визуальном методе.)

Размер подсети в зависимости от количества хостов

Это для общего вопроса «Как вырезать заданный размер сети в п штук позволяя х 1 хостов в сети 1, х 2 хостов в сети 2, и т.д ...?» может быть решена путем проработки методов, описанных в других превосходных ответах.

Однако некоторым людям может понравиться более наглядный метод и несколько общих советов.

Визуальный метод "Стеклорез"

Я часто преподаю визуальное понимание этого следующим методом:

Сначала представьте бумажную гильотину вот так:

выдвижная гильотина

( Изображение из Википедии Натана CC BY-SA 3.0)

Свойства этого типа резака заключаются в том, что он режет только прямые линии, всегда режет по всей бумаге и режет перпендикулярно стороне. Наша особая гильотина суетливая: она будет разрезать бумагу только пополам, и мы не сможем сделать разрез ближе 1 см от края.

  • Сколько адресов доступно всего для вашего стартового блока?
  • Предположим, что разделение / 22 имеет 1024 адреса
  • Получите лист бумаги с таким количеством квадратных сантиметров (и квадрат или отношение 2x1)
  • Поэтому я получаю кусок 32 см на 32 см, который имеет 1024 кв. См.
  • Несколько раз
    1. Выберите кусок (если их больше одного)
    2. Разрежьте его пополам (в пределах ограничений: только прямоугольные разрезы, пополам, ничего не ниже 1 см)
  • Часто вы можете сделать различные надрезы, и вы должны сделать выбор
  • Чтобы получить n сетей, нужно сделать n-1 срезы
  • Иногда вы получаете дополнительные куски (в зависимости от того, как вы хотите распределить «отходы»)

Вот иллюстрация процесса. Вы видите, что на срезе 1 и 2 возможен только один вид разреза, но на разрезе 3 мы делаем выбор: вырезать маленький кусок (красный) или большой (синий), предоставляя две разные возможности.

мой собственный рисунок

Это то, что часто называют проблемой гильотины , которую я узнал как проблему «стеклореза», так как листовое стекло действительно должно быть разрезано по всей длине, и это специфическое можно назвать «бинарным стеклорезом», поскольку оно всегда разрезается пополам.

Когда я на самом деле делаю это в реальной жизни, я мысленно делю пополам, глядя на сетку вот так. Я помню, что / 26 должно начинаться с 0, .64, 128 или .192; Я мог бы знать, что седьмая арендованная линия нуждается в седьмой / 30 в высшей четверти, но я не буду помнить, что это .216.

Очевидно, что сетка также может использоваться для представления третьего октета, и каждый квадрат представляет / 24. Теперь говорится, что / 18 начинается с 0, 0, 64, 128 или 0,12.

введите описание изображения здесь

Советы по общей технике

Общая процедура:

  • округлить каждый требуемый размер в наименьший блок, который является достаточно большим
  • убедитесь, что вы следуете любым глобальным правилам (часто «максимизируйте доступную адресацию», иногда «разрешите удвоение для роста» или «упростите маршрутизацию»)
  • распределите подсети по адресам, НАЧИНАЮЩИМ С НАИБОЛЕЕ БОЛЬШИМИ и спускающимся до самых маленьких ( это та часть, которую они обычно забывают вам сказать )
  • следуйте определенным правилам (тестовые вопросы часто содержат дополнительные правила, иногда такие аббревиатуры, как «Ни один сетевой адрес не может содержать 7»)
  • проверьте, есть ли место для любых подразумеваемых адресов (трансляции, маршрутизаторы)
  • если какая-либо сеть небольшого размера (/ 30, / 31 или / 32), обратите особое внимание, поскольку существуют некоторые крайние случаи для сетей с 4, 2 и 1 хостом, и детали зависят от того, какую именно проблему вы решаете
jonathanjo
источник
5

Пример:

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
источник