Пример:
IP: 128.42.5.4
В двоичном коде: 10000000 00101010 00000101 00000100
Подсеть: 255.255.248.0
Как вы можете определить префикс, сеть, подсеть и номера хостов?
источник
Пример:
IP: 128.42.5.4
В двоичном коде: 10000000 00101010 00000101 00000100
Подсеть: 255.255.248.0
Как вы можете определить префикс, сеть, подсеть и номера хостов?
Преобразуйте десятичное представление маски в точках в двоичное. Затем подсчитайте количество смежных 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, мы можем использовать / 23 подсети. Я выбрал / 23, потому что нам нужно 4 подсети ... т.е. дополнительные два бита, добавленные в маску сети.
Это одинаково верный ответ на ограничение, использующий / 23 подсети 128.42.0.0/21 ...
Это то, что мы уже сделали выше ... просто повторно используйте маску хоста из работы, которую мы сделали, когда мы вычислили широковещательный адрес 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-адреса и ожидает, что мы найдем самую длинную маску сети, которая содержит их оба; например, что если бы у нас было:
Самое простое, что нужно сделать - это преобразовать оба в двоичный файл и найти самую длинную строку битов сети в левой части адреса.
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
ПРИМЕЧАНИЕ. Если вы попытаетесь начать с правой стороны, не обманывайте себя только потому, что вы нашли один соответствующий битовый столбец; за этими совпадающими битами могут быть несоответствующие биты. Честно говоря, самое безопасное - начать с левой стороны.
Ответ выше отлично врезается в ноготь на голове. Тем не менее, когда я только начинал, мне потребовалось несколько разных примеров из нескольких источников, чтобы по-настоящему завоевать популярность. Поэтому, если вас интересуют другие примеры, я написал несколько постов в блоге на эту тему - 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 завершена. Для удобства, вот оно снова:
В качестве ярлыка вы также можете использовать эту формулу. Работает в подсетях любого размера:
Я не хочу ничего отнимать от превосходного ответа Майка Пеннингтона , который я неуклонно продвигал, но я продолжаю видеть вопросы, которые непосредственно не затрагиваются его ответом, и я создал что-то, что изначально было основано на ответе Майка, но я имею больше информации для решения вопросов, которые возникли с течением времени. К сожалению, он слишком большой, и мне пришлось разбить его на два ответа.
Часть 1 из 2
IPv4 Math
Учитывая IPv4-адрес и сетевую маску IPv4 (сетевая маска также может быть получена из длины сетевой маски или маски хоста), вы можете определить много информации о сети IPv4: сетевой адрес, сетевой широковещательный адрес, общее количество адресов хоста, общее количество используемых Адреса хостов, первый используемый адрес хоста и последний используемый адрес хоста.
Я не могу не подчеркнуть, что вы должны делать IPv4 математику в двоичном формате. Я думаю, что каждый сетевой инженер (или потенциальный сетевой инженер) пытался найти способ сделать все это в десятичном формате, как я уверен, что вы будете *. Проблема в том, что 10 (десятичное) не является степенью 2 (двоичное), поэтому десятичное и двоичное не преобразовываются естественным образом между собой так, как шестнадцатеричное (основание 16) естественным образом преобразуется в двоичное и обратно, потому что 16 является степенью 2 ,
Похоже, что использование точечно-десятичной нотации для IPv4 было ранней ошибкой, которую сейчас нельзя исправить, но IPv6 с самого начала перенял шестнадцатеричное использование, и его легко преобразовать в шестнадцатеричное и двоичное.
Если у вас нет IP-калькулятора (вероятно, он не разрешен в экзаменах по сетевому обучению или в сертификационных тестах), полезно составить диаграмму значений битов в октете. Поскольку это двоичный код, каждое значение бита в 2 раза превышает одно и то же значение цифры в следующей младшей цифре. Каждая цифра - это число, умноженное на одно и то же значение цифры в следующей младшей цифре. Это также верно для любой другой числовой базы, включая десятичную (основание 10), где каждое цифровое значение в 10 раз превышает значение того же цифрового значения в следующей позиции менее значимого числа. Для двоичных цифр (бит):
Там, где десятичная дробь - это степени 10, двоичная - это степени 2. Обратите внимание, что для каждого номера бита в приведенной выше таблице соответствующее значение равно 2 степени бита.
Вам также нужно будет запомнить свои Таблицы правды из школы (в двоичной математике 0 - Ложь, а 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-битный двоичный адрес разделен на четыре октета, затем каждый двоичный октет преобразуется в десятичное число *:Поскольку каждый октет имеет длину восемь битов, каждый октет будет иметь значение между
0
и255
(любые значения больше255
недопустимых). Причина в том, что2^8 = 256
:2
(база двоичных чисел) в степени8
(восемь битов на октет) равна256
количеству различных значений, которые могут быть выражены восьмибитным октетом. Помните, что первое значение равно0
, поэтому256
значение th будет на единицу меньше общего числа значений, которые могут быть выражены (256 – 1 = 255
).Чтобы правильно выполнять математику IPv4, вы должны делать это в двоичном формате, в противном случае вы будете делать ошибки, которые вызовут у вас проблемы и разочарование. Это означает, что вы должны преобразовать десятичную запись с точками в двоичную форму, прежде чем пытаться манипулировать ею:
* Ведущие нули в точечно-десятичном адресе IPv4 могут интерпретироваться некоторыми приложениями и языками программирования как восьмеричные (основание 8), а не десятичные (основание 10), что приводит к ошибкам и следует избегать начальных нулей для представления IPv4 с точками и десятичными точками, но начальные нули необходимы для двоичных октетов IPv4-адресов, поскольку они представляют позиции битов в полном адресе, а пропуск позиции бита приведет к сокращению адреса и изменению двоичного значения.
Сетевая маска IPv4
Маска сети IPv4 используется для разделения адреса IPv4 на две части: сетевую часть и часть хоста. Деление может быть с любым битовым числом, поэтому оно может находиться в пределах октета, а не на границе октета, как многие люди ошибочно полагают, что это всегда происходит. Маска сети IPv4 имеет тот же размер, что и адрес IPv4 (32 бита), и она выражается в десятично-точечной нотации так же, как если бы вы выражали адрес IPv4 в десятично-точечной нотации (четыре восьмибитных октета, разделенных период). Например,
255.255.248.0
.Маска сети IPv4 состоит из нескольких последовательных
1
битов (представляющих сетевую часть адреса), за которыми следует количество0
битов (представляющих хост-часть адреса). Общее количество1
битов и общее количество0
битов складывается до32
количества бит в адресе IPv4 или сетевой маске. Для нашего примера маска сети:Как вы можете видеть, разделение между частями сети и хоста адреса IPv4 с использованием этой конкретной маски находится в пределах октета, а не на границе октета.
Маска сети IPv4 часто представляется количеством последовательных
1
битов в маске. Это по-разному называется длиной маски сети или длиной префикса, и она представлена как/
число последовательных1
битов в маске сети. В нашем примере подсчитывается количество последовательных1
битов21
, которое можно представить как/21
.Учитывая длину маски, вы можете вычислить точечно-десятичное представление маски. Просто запишите количество
1
битов для длины маски и добавьте достаточно0
битов в конце к общему количеству32
битов. Преобразуйте полученное двоичное число в десятичное представление с точками:Пример может быть представлен традиционно как
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
:Как видите, сетевой адрес
198.51.100.223/21
есть198.51.96.0
. Обратите внимание, что вы не можете полагаться на то, что октеты сообщают вам, какая часть адреса является сетью, а какая часть адреса для хостов.Вы можете использовать этот метод, чтобы определить, находятся ли два адреса в одной или разных сетях *. Например, если вы хотите узнать, находится ли ваш
198.51.100.223/21
адрес в той же сети IPv4, где хосту назначен198.51.102.57
адрес, определите свой сетевой адрес IPv4 (как указано выше). Затем определите сетевой адрес IPv4 рассматриваемого хоста, используя маску сети IPv4 (хосты в той же сети используют ту же маску сети, и у вас может не быть маски, только адрес хоста назначения):Сравните полученный сетевой адрес IPv4 с исходным сетевым адресом IPv4 и обратите внимание, что сетевые адреса равны, поэтому адреса узлов находятся в одной сети.
Теперь, давайте посмотрим, если вы находитесь в той же сети, что и
74.125.69.100
адрес Google:Сравните полученный сетевой адрес IPv4 с исходным сетевым адресом IPv4 и обратите внимание, что сетевые адреса разные, поэтому адреса узлов находятся в разных сетях.
* Это метод, используемый исходным хостом для определения, является ли он хостом назначения в той же сети, что и исходный хост.
IPv4 Host Mask
Одно полезное, часто упускаемое из виду значение, которое полезно при адресации IPv4, - это маска хоста IPv4. Маска хоста IPv4 - это просто обратная маска сети IPv4. Вы можете создать бинарную маску хоста из бинарной маски сети или бинарную маску сети из бинарной маски хоста, просто инвертируя
1
s и0
s начальной маски:Можно математически создать маску хоста из маски сети или маску сети из маски хоста, вычитая начальную маску из самой длинной маски (
/32
или маски «все единицы»).Это можно сделать в двоичном виде:
Это также может быть выполнено в десятичном формате (это октет «все единицы»
255
), но не забудьте преобразовать его в двоичный файл, прежде чем пытаться использовать его для манипулирования адресами:Сетевой широковещательный адрес IPv4
Сетевой широковещательный адрес IPv4 - это сетевой адрес IPv4 со всеми установленными битами хоста
1
. Существует несколько способов вычисления широковещательного адреса IPv4.Для нашего примера IPv4-адрес
198.51.100.223
и маска сети255.255.248.0
.Вы можете выполнить побитовую обработку
OR
с IPv4-адресом или сетевым адресом с маской хоста:Вы можете просто добавить значение маски хоста IPv4 к значению сетевого адреса IPv4:
Это также то, что вы можете сделать в десятичном виде:
Всего сетевых адресов 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
:Последний используемый адрес хоста сети 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
:Объединяем сетевую адресацию IPv4 все вместе
Для нашего примера сетевого адреса
198.51.100.223
и маски IPv4255.255.248.0
(или198.51.100.223/21
) мы можем вычислить много сетевой информации:* Экзамены по сетевому обучению и сертификационные тесты попросят вас быстро вычислить их для сети IPv4, учитывая адрес хоста и маску (или длину маски). Вы можете использовать подсказки ниже для быстрой проверки ваших ответов:
Вышеприведенные советы не относятся к
/31
сетям (маска сети255.255.255.254
) или/32
(маска сети255.255.255.255
).Если у вас достаточно времени на экзамене и проблема с несколькими методами для получения ответа, вам следует использовать несколько методов для двойной проверки ответа.
Продолжение в следующем ответе ...
источник
Продолжение предыдущего ответа ...
Часть 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
округляется до следующего целого значения:В нашем примере нам нужно 14 подсетей одинакового размера в исходной
198.51.96.0/21
сети, начиная со всех0
s * для первой подсети, добавьте1
в подсеть часть, чтобы получить следующую подсеть:* Существует постоянный миф, что для подсетей, как и для адресов хостов, нельзя использовать все нули и все единицы, но этот миф был явно развеян много лет назад стандартом. К сожалению, этот миф распространяется на некоторые сетевые учебные классы, и правильным ответом для этих (неправильных) классов будет использование 2–15-й подсетей.
Можно разделить сеть на подсети различного размера (каждая сеть IPv4 является подсетью
0.0.0.0/0
сетевого адреса), как в нашем примере выше, где неиспользуемая подсеть является/24
подсетью, но это требует тщательного планирования, чтобы начальные подсети начинались с правильный бит.Например, предположим, что нам нужна сеть
/26
и/27
подсеть a198.51.96.0/21
. Есть два способа сделать это: начать с/26
подсети или начать с/27
подсети.Начиная с
/26
подсети:Добавьте
1
в подсеть часть, чтобы получить начальную позицию следующей подсети:Затем расширьте вторую подсеть
/27
:Обратите внимание, что мы на самом деле подсетим вторую
/26
подсеть в/27
подсеть, и это хорошо работает, потому что27
больше, чем26
.Начиная с
/27
подсети:Добавьте
1
в подсеть часть, чтобы получить начальную позицию следующей подсети:Обратите внимание, что в хост-части осталось недостаточно битов (пять битов хоста) для поддержки
/26
сети, для которой требуется шесть бит хоста (32 address bits – 26 network bits = 6 host bits
). Если мы используем это в качестве начальной позиции для/26
подсети, мы фактически перекрываем предыдущую и следующую/26
сети. Нам нужно оставить пробел в размере/27
сети для начальной позиции/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
адреса хостов, которые можно использовать. Такой вопрос может быть хитрым, и правильный ответ будет зависеть от того, вопрос означает общее количество адресов хоста или используемых адресов хостов.)Пример вопроса:
Как мы видели в разделе «Подсети сетей IPv4», самый простой способ сделать это - сначала отсортировать отделы по наибольшему или наименьшему количеству хостов, потому что нам не нужно будет работать с сетевыми пробелами:
Вы можете округлить каждую до следующей большой степени 2, чтобы получить количество требуемых общих адресов хоста для каждой подсети, а затем вывести количество требуемых битов хоста из показателя степени
2
:Вы также можете изменить предыдущую формулу, чтобы найти количество битов, требуемых для определенного числа подсетей одинакового размера, чтобы определить количество битов хоста, требуемых для каждой подсети:,
Log2(X hosts) = Y host bits
округленное до следующего целочисленного значения:Когда у вас есть количество битов хоста, необходимых для каждой подсети, выполните двоичную математику, чтобы получить конкретную подсеть для каждого отдела. Не забудьте добавить
1
в подсеть, чтобы получить начальный адрес следующей подсети:Нахождение конкретной подсети
Вас могут попросить предоставить информацию о сети для конкретной подсети данной сети. Например, вас могут попросить предоставить информацию о сети для 23-й
/26
подсети198.51.96.0/21
сети. Поскольку вам нужна 23-я подсеть, вы можете преобразовать22
(помните,0
это первая подсеть, поэтому 23-я подсеть будет22
*) в двоичную систему: Decimal22
= Binary10110
. Используйте преобразованное двоичное число в части адреса подсети:После того как вы определили 23-й сетевой адрес,
198.51.101.128/26
вы можете рассчитать другую сетевую информацию (как описано в предыдущих разделах):* Существует постоянный миф, что для подсетей, как и для адресов хостов, нельзя использовать все нули и все единицы, но этот миф был явно развеян много лет назад стандартом. К сожалению, этот миф распространяется на некоторые сетевые учебные классы, и правильным ответом для этих (неправильных) классов будет использование 24-й (
23
десятичной,10111
двоичной) подсети в нашем примере подсетей одинакового размера, а не фактической 23-й (22
десятичной,10110
бинарная) подсеть.Поиск конкретного сетевого хоста
Вас могут попросить найти адрес хоста для конкретного хоста данной сети. Например, вас могут попросить дать адрес хоста для 923-го хоста
198.51.96.0/21
сети. Так как вам нужен 923-й хост, вы можете преобразовать923
в двоичный: десятичный923
= двоичный1110011011
. Добавьте преобразованное двоичное число в сетевой адрес:Крупнейшая общая сеть для двух хостов *
Вам может быть дано два (или более) разных адреса хоста, и вам будет предложено создать самую большую сеть (наименьшее количество хостов), которая содержит оба адреса хоста. Например, найти крупнейшую общую сеть
198.51.100.223
и198.51.101.76
.Во-первых, преобразуйте точечные десятичные адреса в двоичные:
Затем, начиная с самого старшего (самого левого) бита, сравнивайте двоичные адреса в каждой битовой позиции, пока биты в той же позиции не совпадают:
Подсчитайте количество совпадающих битов,
23
в этом случае, чтобы получить длину маски. Затем вы можете взять любой адрес и выполнить побитовуюAND
маску сети, чтобы получить общую сеть. Выполнение этого по обоим адресам должно привести к одной и той же сети, и если это не так, то вы либо неправильно сосчитали, либо пропустили непревзойденную битовую позицию.Обратите внимание, что два сетевых адреса совпадают. Это означает, что самой большой общей сетью для двух адресов хоста является
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:
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
Классная сетевая адресация
Первоначально адреса IPv4 были разделены на сетевые классы. Классическая адресация устарела десятилетия назад, и современные сети основаны на CIDR (бесклассовой междоменной маршрутизации), но, к сожалению, многие классы сетевого образования и сертификационные экзамены настаивают на проверке ваших знаний о классовой адресации. Пожалуйста, изучите и ознакомьтесь со всей предыдущей математикой IPv4 в этом документе, прежде чем узнаете о классовой адресации.
Все классы адресов IPv4 основаны на первых битах адреса:
255.0.0.0
(/8
) и маску хоста по умолчанию0.255.255.255
, что дает вам16,777,216
общее количество адресов хостов на сеть.255.255.0.0
(/16
) и маску хоста по умолчанию0.0.255.255
, что дает вам65,536
общее количество адресов хостов на сеть.255.255.255.0
(/24
) и маску хоста по умолчанию0.0.0.255
, что дает вам256
общее количество адресов хостов на сеть.255.255.255.255
, который является отдельным адресом, который каждый хост в сети будет рассматривать как свой собственный. Это означает, что все отправленные сообщения255.255.255.255
будут приниматься и обрабатываться каждым хостом в сети.Поскольку каждый класс имеет размер сети по умолчанию, некоторые вопросы предполагают маску по умолчанию для данного адреса, поэтому любые вычисления должны быть сделаны на основе маски сети по умолчанию. Для нашего примера адреса
198.51.100.223
:Обратите внимание, что первые три адресных бита
110
означают, что это адрес класса C, и при отсутствии какой-либо маски или длины маски, предполагается, что маска сети255.255.255.0
(/24
) представляет собой сетевой адрес198.51.100.0
.* Не делайте распространенную ошибку, думая, что маска сети диктует класс сети, это наоборот. Например, многие люди считают, что любая
/24
сеть является сетью класса C, но это даже отдаленно не верно. Например, учитывая10.11.12.0/24
сеть, многие люди ошибочно называют ее сетью класса C из-за маски сети, хотя первый бит адреса0
и делает ее сетью класса A, хотя и с более длинной маской сети, чем по умолчанию. Маска сети класса A, означающая, что это подсеть сети класса A, а не сеть класса C.источник
(В попытке сохранить все ответы на сетевую маску в одном месте, после других превосходных ответов, я добавил этот о визуальном методе.)
Размер подсети в зависимости от количества хостов
Это для общего вопроса «Как вырезать заданный размер сети в п штук позволяя х 1 хостов в сети 1, х 2 хостов в сети 2, и т.д ...?» может быть решена путем проработки методов, описанных в других превосходных ответах.
Однако некоторым людям может понравиться более наглядный метод и несколько общих советов.
Визуальный метод "Стеклорез"
Я часто преподаю визуальное понимание этого следующим методом:
Сначала представьте бумажную гильотину вот так:
( Изображение из Википедии Натана CC BY-SA 3.0)
Свойства этого типа резака заключаются в том, что он режет только прямые линии, всегда режет по всей бумаге и режет перпендикулярно стороне. Наша особая гильотина суетливая: она будет разрезать бумагу только пополам, и мы не сможем сделать разрез ближе 1 см от края.
Вот иллюстрация процесса. Вы видите, что на срезе 1 и 2 возможен только один вид разреза, но на разрезе 3 мы делаем выбор: вырезать маленький кусок (красный) или большой (синий), предоставляя две разные возможности.
Это то, что часто называют проблемой гильотины , которую я узнал как проблему «стеклореза», так как листовое стекло действительно должно быть разрезано по всей длине, и это специфическое можно назвать «бинарным стеклорезом», поскольку оно всегда разрезается пополам.
Когда я на самом деле делаю это в реальной жизни, я мысленно делю пополам, глядя на сетку вот так. Я помню, что / 26 должно начинаться с 0, .64, 128 или .192; Я мог бы знать, что седьмая арендованная линия нуждается в седьмой / 30 в высшей четверти, но я не буду помнить, что это .216.
Очевидно, что сетка также может использоваться для представления третьего октета, и каждый квадрат представляет / 24. Теперь говорится, что / 18 начинается с 0, 0, 64, 128 или 0,12.
Советы по общей технике
Общая процедура:
источник
Пример:
IP: 128.42.5.4
В двоичном коде: 10000000 00101010 00000101 00000100
Подсеть: 255.255.248.0
Как вы можете определить префикс, сеть, подсеть и номера хостов?
источник