Мне очень сложно понять IP-подсети.
То, что я уже умею делать: Зная IP-адрес и маску подсети, я могу найти все IP-адреса в подсети. Зная IP-адрес типа 145.244.0.0/14, я могу найти маску подсети.
То, что я не знаю, как сделать, это упражнение типа этого: Разделение сети, скажем, 192.168.0/24 на подсети. Каждая подсеть должна содержать не менее 10 хостов. Каковы первые семь подсетей?
Как бы я нашел решение для такого упражнения? Мне нужно найти адрес подсети, маску подсети, первый IP-адрес хоста, последний IP-адрес хоста и широковещательный адрес.
Обратите внимание, что это не какое-то домашнее задание, решение есть в моей книге, но я не знаю, откуда оно взялось.
Спасибо, что помогли мне.
решение1
В таком случае вы начинаете с выяснения того, сколько бит вам нужно для покрытия такого количества хостов:
10 хостов 2^4 = 16
(минус 2 для идентификатора и широковещательной рассылки), 32-4 = 28
поэтому вы собираетесь использовать подсеть /28.
Используя свои знания о том, как найти IP-адреса в подсети, вы можете работать в обратном направлении отсюда. Вы также можете перечислить все подсети, добавив 16, или работая в обратном направлении от IP-адресов снова:
192.168.0/24 (given supernet)
192.168.0/28
192.168.16/28
192.168.32/28
192.168.48/28
192.168.64/28
...
Предостережение: большинство этих учебных упражнений считают первую и последнюю подсети непригодными для использования, а также первый и последний IP в каждой подсети. Однако есть немногонестандартный методразрешая их использование.
решение2
Разделение сети, скажем, 192.168.0/24 на подсети. Каждая подсеть должна содержать не менее 10 хостов. Каковы первые семь подсетей?
Сначала выберите размер подсети, который позволит создать подсети, достаточно большие для 12 адресов (сеть + 10 хостов + широковещательная рассылка), но достаточно маленькие, чтобы вместить 7 подсетей в ваш текущий префикс /24.
- Для 12 адресов хостов вам понадобится не менее 4 бит (2 · 3 = 8 < 12, но 2 · 4 = 16 > 12).
- Для 7 подсетей вам понадобится не менее 3 бит (2 ·2 = 4 < 7, но 2 ·3 = 8 > 7).
Поскольку у вас есть /24, то есть осталось 8 бит (из 32), у вас есть только два варианта:
- 3 бита подсети + 5 бит хоста
- 4 бита подсети + 4 бита хоста
Эти параметры означают /(24 + 3) = /27 и /(24 + 4) = /28 подсетей соответственно.
Обычно я бы выбрал /28 длянемногоболее простые вычисления, поскольку он делит последний октет ровно пополам. (Это не имеет большого значения в IPv4, но немного упрощает жизнь в IPv6, где адреса записываются в виде 4-битных шестнадцатеричных цифр.)
Теперь перечислите все подсети /27 (или /28) в заданной сети /24. Если у вас есть 3 бита подсети и 5 бит хоста, продолжайте увеличивать адрес на 2 5 , так что 4-й октет будет:
- 000x хххх → 0000 0000 → 0 → 192.168.0.0/27
- 001x хххх → 0010 0000 → 32 → 192.168.0.32/27
- 010x хххх → 0100 0000 → 64 → 192.168.0.64/27
- …
- 111x хххх → 1110 0000 → 224 → 192.168.0.224/27
Это адреса (под)сетей.
решение3
Хотя предыдущие ответы все точны, я подумал, что стоит указать на неявное предположение, которое мы здесь делаем. Оба ответа Grawity и BowlesCR предполагают маску подсети фиксированной длины, что не обязательно должно быть правдой. Например, следующее расположение подсетей также будет соответствовать вашим требованиям:
192.168.0.0/28 <-- NOT /27
192.168.0.16/27
192.168.0.48/27
192.168.0.80/27
192.168.0.112/27
192.168.0.144/27
192.168.0.176/27
Вот еще:
192.168.0.0/28
192.168.0.16/28
192.168.0.32/28
192.168.0.48/26 <-- Oops, /26?!
192.168.0.112/27 <-- How about 27 instead...
192.168.0.144/28
192.168.0.160/28
Они, как правило, гораздо более запутанны и сложны для вычисления, поэтому мы, как и следовало ожидать, предпочитаем использовать везде одну и ту же маску подсети. Чтобы сделать это еще проще, мы можем просто придерживаться границ октетов и считать это днем. Например, разделяем 10.0.0.0/8 на 7 подсетей:
10.0.1.0/24
10.0.2.0/24
10.0.3.0/24
10.0.4.0/24
10.0.5.0/24
10.0.6.0/24
10.0.7.0/24
И наконец, еще один фактор, который следует учитывать, — ищем ли мы НАИМЕНЬШУЮ или НАИБОЛЬШУЮ маску подсети, содержащую указанное количество хостов. Ответ grawity намекает на это (/27 против /28).