Разбиение сети на подсети одинакового размера
Сети необходимо разбивать на подсети меньшего размера для увеличения производительности сетей и обеспечения безопасности. Подробнее об этом можно прочесть в соответствующей статье. Существует два способа такого разбиения: простой и более гибкий (с использованием VLSM) в данной статье речь пойдёт о более простом способе — разбиение сети на подсети одинакового размера. Перед прочтением этого материала я рекомендую посмотреть информацию о структуре IP адреса (сетевой и хостовой частях).
Пример 1
Рассмотрим для начала самый простой пример: имеется сеть 10.10.0.0/16 и стоит задача получить несколько десятков сетей поменьше. В исходной сети два октета (10.10) являются сетевой частью IP адреса и два (0.0) — хостовой. Простейшим вариантом разбиения будет увеличение префикса с /16 до /24. Таким образом, мы получаем в наше распоряжение весть третий октет, теперь мы можем в нём менять значения и получать 256 разных сетей, в каждой из которых будет по 254 хоста. А именно:
10.10.0.0/24 10.10.1.0/24 10.10.2.0/24 ... ещё 252 сети ... 10.10.255.0/24
Важно что эти подсети в сумме образуют нашу исходную сеть 10.10.0.0/16 и не один адрес не выходит за её пределы. Как же произошло такое разбиение? Исходный адрес выглядел в двоичном виде так: 00001010. 00001010.|00000000.00000000 (вертикальная черта означает границу между сетевой и хостовой частями). После изменения префикса с /16 на /24 адрес стал выглядеть так: 00001010. 00001010.|00000000.|00000000 мы меняем третий октет (между двумя вертикальными чертами на любые значения и при этом гарантированно не вылезаем за пределы предоставленной нами сети (для того чтобы вылезти за её пределы надо поменять первые два октета). Сколько подсетей мы получили? Для того чтобы жто посчитать — надо узнать сколько бит мы добваили к префиксу (выделили на подсети): 24-16=8. 8 бит позволяют разместить 28=256 различных подсетей.
Пример 2
Возьмём более сложный пример. У нас есть сеть 192.168.128.128/25 и нам надо во что бы то ни стало получить 10 подсетей. Посчитаем, сколько бит нам надо выделить, чтобы в них влезло 10 подсетей. Для этого найдём минимальную степень двойки, которая была бы больше или равна 10 — это 16, то есть 24. Таким образом, мы можем выделить 4 бита и получим 16 подсетей. Префикс был 25, а стал 25+4=29. Какого же размера окажутся полученные подсети? В хостовой части останется 32-29=3 бита, то есть сети будут на 23-2=8-2=6 IP адресов. Если нас устраивают такие маленькие сети, то давайте вычислим их.
Исходный адрес имеет вид 11000000.10101000.10000000.1|0000000, после выделения подсетей получим адрес 11000000.10101000.10000000.1|0000|000 в котором мы можем расписать все комбинации для выделенных четырёх бит. Получаются сети:
11000000.10101000.10000000.1|0000|000 – 192.168.128.128/29 11000000.10101000.10000000.1|0001|000 – 192.168.128.136/29 11000000.10101000.10000000.1|0010|000 – 192.168.128.144/29 11000000.10101000.10000000.1|0011|000 – 192.168.128.152/29 11000000.10101000.10000000.1|0100|000 – 192.168.128.160/29 11000000.10101000.10000000.1|0101|000 – 192.168.128.168/29 11000000.10101000.10000000.1|0110|000 – 192.168.128.176/29 11000000.10101000.10000000.1|0111|000 – 192.168.128.184/29 11000000.10101000.10000000.1|1000|000 – 192.168.128.192/29 11000000.10101000.10000000.1|1001|000 – 192.168.128.200/29 11000000.10101000.10000000.1|1010|000 – 192.168.128.208/29 11000000.10101000.10000000.1|1011|000 – 192.168.128.216/29 11000000.10101000.10000000.1|1100|000 – 192.168.128.224/29 11000000.10101000.10000000.1|1101|000 – 192.168.128.232/29 11000000.10101000.10000000.1|1110|000 – 192.168.128.240/29 11000000.10101000.10000000.1|1111|000 – 192.168.128.248/29
Благодаря тому что мы нигде не меняли ни одного бита левее первой вертикальной черты (исходного префикса) мы точно не вылезли за пределы предоставленной нам исходной сети. Как видно, этот пример, в отличие от предыдущего не так просто посчитать в уме, надо смотреть на адреса в двоичном виде.
Алгоритм разбиения сети на подсети одинакового размера
Подытожим в общем виде алгоритм резбиения сети на подсети одинакового размера. Сначала нам надо понять сколько бит выделить на подсети. Если у нас стоит задача получить n подсетей, то мы ищем минимальную степень двойки k такую что 2k≥n и делаем новый префикс m (исходный префикс + k). Другая задача, если у нас не задано количество подсетей, но есть требования к их размеру (чтобы в них вмещалось как минимум n хостов), то мы опять же ищем минимальную степень двойки k Такую что 2k≥n+2 (два адреса добавляется потому что сеть ещё должна вместить адрес сети и брудкастовый адрес). И устанавливаем новый префикс m=32-k (чтобы в хостовой части у нас осталось k бит для адресации устройств).
Как бы ни формулировалось исходное требование, после первого шага алгоритма мы получаем новый префикс m. На втором шаге алгоритма мы должны выделить место на подсети. Оно будет находиться в адресе в промежутке между исходным префиксом и новым префиксом m. Далее надо просто в двоичном виде заполнить эти биты (выделенные для подсетей) всеми возможными комбинациями единиц и нулей, перевести адреса в десятичный вид. Разбиение готово.
Рекомендации по разбиению сетей
Если вы не чувствуете в себе силы справиться с этой задачей легко и не имеете достаточного опыта, то у меня есть рекомендация: делайте всё всегда в двоичном виде по приведённому выше алгоритму. Моя практика показывает, что большая часть ошибок возникает, когда студент пытается разбивать сети на глаз, интуитивно, прямо в десятичном виде, считая, что он уже постиг все принципы. Делайте все вычисления в двоичном виде. Со временем вы накопите опыт, поймёте закономерности и сможете решать большую часть таких задач в уме. Но для начала — переводите в двоичный вид и рисуйте вертикальные чёрточки. Всё что получилось между двумя вертикальными чертами (старым и новыми префиксами) — это и есть ваши подсети.
Комментарии
Alexander (не проверено)
чт, 08/23/2018 - 15:33
Постоянная ссылка (Permalink)
10.10.256.0/24 . WAAAAT?
bacek
вс, 08/26/2018 - 12:03
Постоянная ссылка (Permalink)
кебальт (не проверено)
пн, 11/09/2020 - 04:26
Постоянная ссылка (Permalink)
ХАХААХХА))
Данил (не проверено)
пн, 03/02/2020 - 04:05
Постоянная ссылка (Permalink)
нужно каждое число ip адреса разделить на 24
пупкин (не проверено)
пт, 09/28/2018 - 06:52
Постоянная ссылка (Permalink)
как разделить 192.168.0.0/24 на 4 подсети?
bacek
пт, 09/28/2018 - 09:46
Постоянная ссылка (Permalink)
На 4 равные подсети - значит надо выделить из хостовой части два бита, потому что два во второй степени даёт 4.
То есть префикс будет 24+2=26
Подсети соответственно получатся
Кинжагулов Нурдаулет (не проверено)
вт, 05/07/2019 - 18:42
Постоянная ссылка (Permalink)
привет можно вопрос откуда взялся 192.168.0.64 192.168.0.128 ну если разделить сеть на 4 что надо знать сперва наверное хость и патом на сеть то есть ты на первом 192.168.0.64 64 хост подключил
bacek
пн, 05/13/2019 - 09:52
Постоянная ссылка (Permalink)
192.168.0.0/24 - исходная сеть имеет вид 11000000.10101000.00000000.|00000000 — тут вертикальная черта — граница хостовой и сетевой частей
Мы поняли, что надо выделить два бита для разбиения на 4 подсети 11000000.10101000.00000000.|00|000000 — вот я выделили эти два бита из хостовой части, теперь они будут относиться к сетевой. Два бита могут принимать 4 разных значения: 00, 01, 10, 11. Запишем 4 сети с этими 4мя вариантами:
Переводим их в десятичный вид:
Вот мы получили 4 адреса сетей (подсетей исходной сети) теперь в каждой из них можно смотреть диапазоны хостов:
Что тут не понятно? :-)
Абдукодир (не проверено)
пт, 09/28/2018 - 08:29
Постоянная ссылка (Permalink)
Самая интуитивно понятная статья по разбиению . прочел. понял алгоритм. дерзай.
Автору добра!
VivaLaVida (не проверено)
вт, 10/16/2018 - 11:38
Постоянная ссылка (Permalink)
Как разделить 192.168.102.0/24 на 3 подсети
bacek
вт, 11/06/2018 - 16:13
Постоянная ссылка (Permalink)
Глеб (не проверено)
пн, 01/28/2019 - 22:53
Постоянная ссылка (Permalink)
Здравствуйте, почему в примере 2 сеть в десятичном представлении такая 192.168.128.0/25, а в двоичном уже такая 11000000.10101000.10000000.1|0000000, откуда в последнем октете 1, если они должны быть все 0?
Спасибо
bacek
чт, 01/31/2019 - 13:46
Постоянная ссылка (Permalink)
Олег (не проверено)
ср, 03/27/2019 - 14:32
Постоянная ссылка (Permalink)
Привет! Спасибо за статью. Есть похожая задача, но туплю.
С помощью какой маски подсети можно разделить сеть 172.33.49.112/28 на 4 подсети?
Судя по комментам, это нужно 28+4=32. А что дальше? Просят ответ в точечно-десятичной нотации. Это как? Что должно получиться? Как учат, так и получают :(
bacek
пт, 04/19/2019 - 09:43
Постоянная ссылка (Permalink)
крис (не проверено)
сб, 10/12/2019 - 05:58
Постоянная ссылка (Permalink)
192.168.0.0/24 как разделить 1 сеть на 15 сетевых узлов
bacek
пн, 10/14/2019 - 10:38
Постоянная ссылка (Permalink)
Не самый корректный вопрос - что значит разделить сеть на 15 узлов - в неё и так входит 254 узла, то есть она их вместит без разбиения. Если вопрос звучит иначе — как разделить сети на подсети равного размера, каждая из которых вмещала бы по 15 хостов, то тогда ответ в данной статье есть :) Новые подсети должны вмещать себя по 30 хостов, потому что исходя из степеней двойки мы можем делать 2^n-2 хостов. 2, 6, 14, 30, 62, ... 14 нам не подходит, а 30 - минимально возможная сеть на 15 хостов. 30 - это 2^5-2, то есть в хостовой части нам надо оставить 5 бит. Значит полученые сети будут обладать префиксом 32-5 - то есть /27 сами эти сети считаются аналогично тому что есть в данной статье выше.
Valger
вт, 11/08/2022 - 16:54
Постоянная ссылка (Permalink)
Здравствуйте. Можете пожалуйста включить опцию редактирования собственных комментариев?
convdevalares (не проверено)
ср, 10/16/2019 - 19:26
Постоянная ссылка (Permalink)
Интересно как будет решение разделить под сеть с данным адресом 10.15.35.64/22 по 64 ип адреса - сколько же сетей будет ? и почему
Valger
вт, 11/08/2022 - 16:50
Постоянная ссылка (Permalink)
Если я не ошибаюсь, то при префиксе /22 будет доступно 1024 IP-адресов в хостовой части. Следовательно, если нужно что бы в каждой подсети было по 64 IP-адреса (включая идентификатор сети и броадкаст), то нужно сначала определить сколько битов из хостовой части будет использовано для разделения на подсети.
64=2^6 Значит из хостовой части (справа-налево) 6 бит будет использовано под диапазоны IP-адресов подсетей, а левая часть до сетевой части будет использована для разделения на подсети. Для разделения на подсети имеем 4 бита. 2^4=16. Получаем 16 подсетей по 64 IP-адреса в каждой.
https://docs.google.com/spreadsheets/d/1WBYZec-jFAJboCA0qXazjCrB1EThYwwMELQ9P9lN6kg/edit?usp=sharing вот тут можно посмотреть, как я это сделал. Надеюсь, что правильно. Таблица с именем "10.15.35.64/22"
Михаил (не проверено)
пн, 10/21/2019 - 10:09
Постоянная ссылка (Permalink)
Помогите, пожалуйста, с задачкой. Нужно 1) 101.0.0.0/8 разбить на 3 подсети; 2) написать широковещательный адрес первой подсети
Записал исходный адрес в двоичной СС: 01100101.00000000.00000000.00000000. Определил, что степень двойки будет 4, т.е. 2^2 = 4. Новый префикс, соответственно, 10 (8 + 2 = 10). А дальше все, завис.
Буду очень благодарен за помощь. Спасибо.
Гость (не проверено)
пт, 01/17/2020 - 00:32
Постоянная ссылка (Permalink)
01100101.|00|111111.11111111.11111111 - 101.63.255.255/10
01100101.|01|111111.11111111.11111111 - 101.127.255.255/10
01100101.|10|111111.11111111.11111111 -101.191.255.255/10
01100101.|11|111111.11111111.11111111 -101.255.255.255/10
Педрито Гомес (не проверено)
пн, 02/20/2023 - 13:34
Постоянная ссылка (Permalink)
Тут надо заметить, что это броудкасты сетей)
Илья (не проверено)
чт, 11/28/2019 - 19:21
Постоянная ссылка (Permalink)
"Благодаря тому что мы нигде не меняли ни одного бита левее первой вертикальной черты (исходного префикса) мы точно не вылезли за пределы предоставленной нам исходной сети. " - предпоследнее предложение примера 2
Возможно тут ошибка. Вы написали, что мы не меняли ни одного байта левее ПРАВОЙ вертикальной черты, но вы имели ввиду, по идее ЛЕВУЮ вертикальную черту, левее от которой как раз и находится адрес исходной сети. Левее правой черты находятся адреса подсетей
bacek
ср, 12/18/2019 - 10:10
Постоянная ссылка (Permalink)
Ошибки вроде бы нет — у меня написано левее первой а не левее правой. Но по логике вы пишете совершенно правильно — левая (первая) вертикальная черта определяет границу исходной сети и если мы поменяли что-то левее неё, значит мы разбиваем 100% не правильно. Спасибо вам за вопрос и внимательность.
elesiskill
ср, 04/08/2020 - 12:00
Постоянная ссылка (Permalink)
Помогите, пожалуйста разделить сеть172.16.0.0 /18 на 4 подсети.
Максим (Новичок) (не проверено)
пт, 05/01/2020 - 21:43
Постоянная ссылка (Permalink)
Добрый день.
Отдаём два бита (19 и 20) под наши подсети и получаем их адреса
10101100.00010000.00|00|0000.00000000 - 172.16.0.0/20
10101100.00010000.00|01|0000.00000000 - 172.16.16.0/20
10101100.00010000.00|10|0000.00000000 - 172.16.32.0/20
10101100.00010000.00|11|0000.00000000 - 172.16.48.0/20
Анон (не проверено)
ср, 12/21/2022 - 03:56
Постоянная ссылка (Permalink)
В итоге то правильно или не?
Тип а как тогда можно разбить сеть 128.67.0.0/16 на 16 подсетей?
Miga (не проверено)
ср, 09/02/2020 - 09:56
Постоянная ссылка (Permalink)
Добрый день,
Помогите разобраться плиз. Есть такая задача:
"Дано адресное пространство следующего вида - "10.10.18.х/?". Длину маски рассчитайте исходя из того, чтобы в каждой образовавшейся подсети можно было разместить ровно 36 клиентов. Для адресации в домене Pest.com используйте пятую по счету подсеть. В качестве адреса DC1 используйте первый возможный адрес из этой подсети."
Из того, что я проштудировал в инете (в т.ч. на Вашем сайте), возникают следующие вопросы:
1) Правильно ли я понимаю задание, что нам отдан на "съедение" весь последний октет (тот самый икс в условии), т.е. все 8 его бит, откуда максимум клиентов, которым мы можем предоставить адреса, составляет: 2^8-2=256-2=254 (без разделения на подсети)?
2) Правильно ли я понимаю, что формулировка задачи в части "...РОВНО 36 клиентов..." некорректна? Ведь 36+2=38 не яляется степенью двойки, и можно лишь взять с запасом, а именно - 6 бит на подсеть, т.е. 2^6=64-2=62>=36...
3) Но в таком случае (см. вопрос 2) выше) из наших 8ми бит остается 8-6=2, что означает, что мы может создать только 2^2=4 подсети; как же это тогда соотносится с заданием "...используйте ПЯТУЮ по счету подсеть..."??
...Теоретически это вроде как возможно: 36 клиентов + номер подсети + бродкаст = 38 узлов в подсети; общее пространство - 2^8-2=256; делим 256 на 38, получаем 6 целых с "хвостиком", т.е., типа, всего "влезает" 6 подсетей, а значит мы можем использовать пятую, но ведь все это не степени двойки...?
Борис148 (не проверено)
вс, 10/04/2020 - 13:09
Постоянная ссылка (Permalink)
Здравствуйте, тут ошибка "В хостовой части останется 32-29=3 бита, то есть сети будут на 2^(3-2)=8-2=6 IP адресов." 2^(3-2)=8-2=2. И почему вы вычитаем (3-2) откуда эта два взялась?
Ukesha (не проверено)
вт, 12/22/2020 - 15:09
Постоянная ссылка (Permalink)
Дана сеть 200.210.220.0/27. Разделить на 4 подсети.
ukulele (не проверено)
чт, 04/29/2021 - 11:05
Постоянная ссылка (Permalink)
Ребят помогите, пожалуйста. Задача: разделить сеть 10.16.0.0/25, на 5 подсетей по 2, 4, 45, 13 и 25 хостов в каждой.
Макс (не проверено)
ср, 06/09/2021 - 13:29
Постоянная ссылка (Permalink)
Дана сеть 192.168.1.0/24. Выполните разбиение, если это возможно, данной сети на 4 подсети: две на 50 узлов и две на 30 узлов. Каждую из подсетей при разбиении следует выбирать минимального размера, подходящего для размещения требуемого количества узлов. После выполнения разбиения укажите:
а) Адреса каждой из подсетей и их маски в десятичной точечной нотации;
б) Точное количество адресов в каждой из подсетей, которые можно назначить узлам сети;
в) Широковещательные адреса по каждой из подсетей.
ANDREY NECHITAYLO (не проверено)
пт, 10/15/2021 - 01:48
Постоянная ссылка (Permalink)
А как разбить 10.2.2.64/26 на 8 под¬сетей с маской /29 каждая
Hmur (не проверено)
вт, 03/07/2023 - 15:11
Постоянная ссылка (Permalink)
Во втором примере опечатка? 2^(3-2) вместо (2^3)-2.
2 не должна быть в степени.
Добавить комментарий