[Гайд] Адресация IPv4 для самых маленьких (VLSM) | Деление сети на подсети

nelit.dev

Участник
Автор темы
43
20
Всем привет. Решил написать гайд для начинающих DevOps инженеров и администраторов сетей. Пишу гайд в раздел общения по совету модератора. Адресация айпи очень важна. От неё зависит работа каждого устройства в сети. В данном гайде адресация IPv6 упоминаться не будет.

В ЭТОМ ГАЙДЕ МЫ ИСПОЛЬЗУЕМ ТОЛЬКО ТЕХНОЛОГИЮ VLSM


Из чего состоит IP адрес?


IPv4 состоит из 4-х чисел разделённых между собой точками.

Пример IPv4:
192.168.0.100

Каждое такое число до точки называем октетом (от латинского octo — восемь). IPv4 (далее как - IP) — это 32-х битный адрес, который мы даём сетевому интерфейсу узла (хоста — устройству в сети). Каждый октет состоит из 8 битов. Каждый бит может иметь значение 0 либо 1. Если все 8 битов будут иметь значение 1, то число которое мы получим будет являться
Код:
255.255.255.255

Маска сети — что это? Как разделить сеть на подсети? Двоичный вариант


Часто около адреса можно увидеть что-то, что называется "маской". Маска сети записывается рядом с адресом IP через слеш (/). Обычно это десятичное число, (16, 24, ..) но запись может быть и в виде адреса 255.255.255.0. Что это означает? Маска сети (возьмём в пример маску 24) делит айпи адрес на две части — сеть и хосты. Она прямо указывает, что первые 24 бита по левой стороне адреса будут являться сетью, оставшиеся биты — узлы.

1709915755938.png


Пример:
Представим адрес 192.168.0.100 / 24
Адрес в двоичной системе: 11000000.10101000.00000000.01100100
Число 24 — является маской сети. Это количество битов, которые выделены на адрес сети. Всего битов в адресе IP 32. 32 - 24 = 8. 8 битов (то есть — целый октет) выделено на адрес хоста.
192.168.0 — является сетью, а 100 — хост. В данной сети у нас есть 256 - 2 = 254 свободных адреса. Почему -2? Первый адрес — адрес сети — 192.168.0.0. Второй адрес — 192.168.0.255 — широковещательный (broadcast) адрес, который нужен коммутатору (свитчу).Эти адреса не могут быть даны сетевому интерфейсу узла. В данном гайде объяснять что такое broadcast адрес не буду. Просто знайте, что такой адрес есть в сети.

Таким образом, мы можем сказать, что адрес 192.168.0.100 — является адресом хоста. В сети доступно 254 устройства (узла) — первый узел будет иметь адрес 192.168.0.1, последний будет иметь адрес 192.168.0.254. Если в сети присутствует роутер, то ему обычно даём либо последний адрес из пула, или первый (на последнем октете будет 1 или 254).

Маска может быть больше чем 24. В пример возьмём тот же самый адрес, но с маской 29 и ещё раз посмотрим на бинарный его вид
11000000.10101000.00000000.01100100

На хосты осталось всего 3 бита, а соответственно меньше IP адресов для хостов доступно. Если вы посмотрите на IP, который даёт вам провайдер, то вероятно увидите маску 32 (или же её аналогичный вариант 255.255.255.255) — в такой сети не может быть подсетей. И это неудивительно, адресов в мире очень мало.

1709916439839.png



Такой лёгкий способ расчёта количества хостов, адреса сети, первый и последний адрес в сети — работает с масками 8, 16, 24, 32 — то есть когда на хосты выделен один октет. Рассмотрим пример сложнее.

Адрес/маска:
84.13.26.213 / 27
Адрес в двоичной системе: 01010100.00001101.00011010.11010101
Маска в двоичной системе: 11111111.11111111.11111111.11100000

5 нулей на последнем октете — это наши доступные хосты. Показываю фокус как легко рассчитать адрес сети.

Берём известный IP и адрес маски. Делаем операцию AND:
01010100.00001101.00011010.11010101
11111111.11111111.11111111.11100000

Результат: 01010100.00001101.00011010.11000000

1709916643901.png


Переведём результат в десятичную систему.
Получаем адрес: 84.13.26.192 — адрес сети. Вернёмся к двоичному варианту нашей маски и сделаем инверсию (заменим все нули на единицы и наоборот):

Маска после инверсии: 00000000.00000000.00000000.00011111

Проведем операцию OR над инверсией маски и адресом сети:
01010100.00001101.00011010.11000000
00000000.00000000.00000000.00011111
Результат: 01010100.00001101.00011010.11011111


1709916722019.png


Результат этой операции переведём в десятичный вариант и получим широковещательный адрес: 84.13.26.223. Что мы получили проведя все эти операции? Нам стал известен адрес сети — 84.13.26.192; широковещательный (broadcast) адрес этой сети — 84.13.26.223; количество устройств (узлов/хостов) в сети — 223 - 192 = 31 (запомните этот момент), а также можем узнать адреса ближайших подсетей.

Для этого от 192 отнимем 1 и получим 191 (84.13.26.191) — широковещательный адрес другой подсети. Мы узнали, что 31 — количество хостов в сети с маской 27. Поэтому от 191 отнимем 31 и получим 160 (84.13.26.160) — адрес подсети.
Результат: 84.13.26.160 — 84.13.26.191

Помните про количество устройств в сети? Их было 31, но это не значит что мы сможем разместить 31 устройство. 2 адреса уходит на адрес сети и на широковещательный адрес. То есть по факту доступные адреса будут от 84.13.26.161 - 84.13.26.190 — то есть 29 устройств.

Деление сети на подсети в десятичной системе счисления

Разберём метод раздела сети на подсети используя лишь десятичную систему счисления.

Адрес/маска: 94.132.65.81 /29
Нам нужно узнать количество хостов, пул доступных адресов, адрес сети и broadcast адрес. В данном способе мы не сможем увидеть сами биты, но нужно в голове понимать где заканчивается сеть и начинаются хосты. Первые 29 битов с левой стороны — это сеть. берём ближайшую наименьшую маску такую, чтобы октет имел 8 битов (8, 16, 24, 32). В нашем случае нужно взять 24.
29 - 24 = 5;
2^5 = 32 — общее количество подсетей
256 / 32 = 8 - каждый 8-й адрес — новая сеть.

Мы подставили 256. Что это? Байт состоит из 8-ми битов. Соответственно 2 в степени 8 = 256. Байт может принимать значение от 0 до 255 — то есть 256 значений.
Результатом этого деления является цифра 8. То есть каждый 8-й адрес подсети является адресом новой сети. Теперь напишем что у нас получилось.

Каждый адрес новой сети будет иметь на последнем бите одну из следующих цифр/чисел: 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88 и так далее до 255. У нас адрес заканчивается на 81, поэтому адресом нашей сети будет 94.132.65.80, а broadcast адресом будет 94.132.65.87
, так как 88 — это уже адрес следующей сети. Итого: адрес сети и широковещатльный адреса нам известны, количество узлов в сети = 8 - 2 = 6 и диапазон адресов для устройств в сети это — 94.132.65.8194.132.65.86

Вот так выглядят другие подсети:
94.132.65.0 - 94.132.65.7 — первая сеть
94.132.65.8 - 94.132.65.15 — вторая сеть
94.132.65.16 - 94.132.65.23 — третья сеть

И так далее.
Мы разделили сеть на подсети используя маску.

Даже если вы не шарите в этой теме, но вам понравилось — жду ваши комментарии/вопросы на эту тему. Можете придумывать айпи адреса в комментах и сами считать всю эту дичь.

P.S: да, я тот чел, который называет интернет кабель ПАТЧКОРДОМ!
 
Последнее редактирование:

nelit.dev

Участник
Автор темы
43
20
всем привет с вами 13 задание егэ информатика
не знал, что на информатике или на егэ есть VLSM) я это изучал перед практикой на 3м курсе колледжа)

всем привет с вами 13 задание егэ информатика
найдёшь для меня листочек с заданием с информатики такой?)
 

Rice.

https://t.me/riceoff
Модератор
1,686
1,416
не знал, что на информатике или на егэ есть VLSM) я это изучал перед практикой на 3м курсе колледжа)


найдёшь для меня листочек с заданием с информатики такой?)
 

Vintik

Мечтатель
Проверенный
1,467
916
жду ваши комментарии/вопросы на эту тему
1711372940046.png

Ты доступно объясняешь. А можешь как пример решить задачу?

Нам стал известен адрес сети — 84.13.26.192; широковещательный (broadcast) адрес этой сети — 84.13.26.223; количество устройств (узлов/хостов) в сети — 223 - 192 = 31
Мы узнали, что 31 — количество хостов в сети с маской 27.
Помните про количество устройств в сети? Их было 31, но это не значит что мы сможем разместить 31 устройство. 2 адреса уходит на адрес сети и на широковещательный адрес. То есть по факту доступные адреса будут от 84.13.26.161 - 84.13.26.190 — то есть 29 устройств.
Ты вычел широковещательный адрес два раза. У тебя доступны октеты от 192 до 223, где 223 — это broadcast. Итого 223 - 192 = 31 (это от 192 до 223 НЕ включительно, т.е. широковещательный ты уже вычел). По примеру: 5 - 2 = 3 (т.е. 2, 3, 4; где 5 в эту тройку не входит). Итого надо вычесть еще адрес сети (192), т.е. 31 - 1 = 30. Не 29.
Или я неправ?
 
Последнее редактирование:

nelit.dev

Участник
Автор темы
43
20
Посмотреть вложение 235493
Ты доступно объясняешь. А можешь как пример решить задачу?




Ты вычел широковещательный адрес два раза. У тебя доступны октеты от 192 до 223, где 223 — это broadcast. Итого 223 - 192 = 31 (это от 192 до 223 НЕ включительно, т.е. широковещательный ты уже вычел). По примеру: 5 - 2 = 3 (т.е. 2, 3, 4; где 5 в эту тройку не входит). Итого надо вычесть еще адрес сети (192), т.е. 31 - 1 = 30. Не 29.
Или я неправ?
ты прав. будет 30 доступных адресов. ошибся. по свободе решу задачку твою. скину сюда ответ. надеюсь вечером смогу
 
  • Нравится
Реакции: Vintik

nelit.dev

Участник
Автор темы
43
20
Посмотреть вложение 235493
Ты доступно объясняешь. А можешь как пример решить задачу?

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

98.162.71.151: 01100010.10100010.01000111.10010111
98.162.71.155: 01100010.10100010.01000111.10011011

отличаться биты начинают после четвёртого бита с начала последнего откета. минимальная маска, которая нам подходит будет иметь единицы во всех битах, кроме последних четырёх: 11111111.11111111.11111111.11110000 или в десятичном варианте 255.255.255.240

Вопрос: Чему равно наименьшее количество возможных единиц в масках этих сетей?
Ответ: 28 единиц
 
Последнее редактирование:
  • Нравится
Реакции: Vintik и cord