Таблица подсетей различной ёмкости для IPv4
IP-адрес — это массив битов. Принцип IP-адресации — выделение диапазона IP-адресов, в котором некоторые битовые разряды имеют фиксированные значения, а остальные разряды пробегают все возможные значения. Блок адресов задаётся указанием начального адреса и маски подсети. Бесклассовая адресация основывается на переменной длине маски подсети (англ. variable length subnet mask, VLSM), в то время, как в классовой (традиционной) адресации длина маски строго фиксирована 0, 1, 2 или 3 установленными октетами.
Маски и размеры подсетей
Количество адресов подсети не равно количеству возможных узлов. Нулевой IP-адрес резервируется для идентификации подсети, последний — в качестве широковещательного адреса. Таким образом, в реально действующих сетях возможно количество узлов на два меньшее количества адресов.
Зарезервированные адреса
Некоторые адреса IPv4 зарезервированы для специальных целей и не предназначены для глобальной маршрутизации.
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
IP адрес
Оглавление: онлайн книга Компьютерные сети
6. Канальный уровень передачи данных
7. Маршрутизация данных
8. Служебный протокол ICMP
10. Настройка сетевых подключений в командной строке Linux
11. Определение проблем работы сети
12. Туннелизация
Точно также, как обычные почтовые адреса необходимы для доставки посылок и бумажных писем, сетевые узлы, участвующие в передаче данных, полагаются на стандартизированную адресную информацию. Поэтому распределение адресов для хостов и промежуточных устройств, их настройка и управление являются основополагающими для адекватной работы компьютерной сети.
Виды сетевых адресов
Сетевые устройства имеют MAC-адрес и IP адрес (за редким исключением – хабы не имеют ни того ни другого, поскольку являются устройствами физического уровня — они работают как ретрансляторы — данные пришедшие на один порт, пересылают на все остальные порты; свитчи имеют только MAC-адреса (хотя бывают модели и с IP)).
Зачем нужны два вида адресов MAC и IP
В первой части «Как работают компьютерные сети» мы увидели как происходит отправка и получение данных по компьютерной сети.
Для непосредственной отправки сетевого пакета с одного устройства на другое требуется MAC адрес. Передача данных возможна только с MAC адреса исходного пункта на MAC адрес пункта назначения — передача через промежуточный узел на основе MAC невозможна — в заголовках фрейма есть место только для адреса пункта назначения и исходного адреса. По этой причине каждый сетевой интерфейс обязательно имеет MAC адрес, который ещё называют аппаратным адресом — если нет MAC адреса, то этот интерфейс не может принимать участие в сетевом обмене данными. К тому же, если у устройства несколько сетевых интерфейсов (WAN порт, несколько LAN портов, две беспроводных сети на 2.5 и 5 ГГц), то у каждого из этих сетевых интерфейсов есть свой MAC адрес — иначе бы они просто не работали.
Предположим, в нашей небольшой локальной сети три устройства: компьютер_1 (192.168.0.89), компьютер_2 (192.168.0.101) и соединяющий их роутер (192.168.0.1), то есть схема сети такая:
192.168.0.89 → 192.168.0.1 ← 192.168.0.101
Предположим, нужно передать сетевой пакет с компьютер_1 на компьютер_2. Для связи с роутером, компьютер_1 будет использовать MAC адрес роутера. Роутер имеет несколько портов и может переправить полученный пакет по любому из них. Получив пакет для компьютер_2, исходя из IP адреса пункта назначения, роутер определит, на каком порту находится нужное устройство (или нужная сеть, если устройство подключено через дополнительные роутеры) и, указав MAC компьютера_2, отправит пакет для компьютер_2.
То есть без IP адреса роутеры не знали бы, куда нужно перенаправлять (маршрутизировать) сетевые пакеты, а без MAC адреса было бы вообще невозможно отправить пакеты с одного устройства на другое.
Уже было упомянуто, что MAC адрес называется аппаратным, то есть жёстко прописанным на уровне сетевой карты, а IP адрес является логическим и может быть легко изменён в настройках программного обеспечения используемых устройств.
В этом разделе мы рассмотрим IP адреса.
Виды IP адресов по постоянству: временные и постоянные
Сетевые адреса могут быть как временными (или динамичными) или постоянными (статичными). Временные адреса динамически назначаются станции и могут быть забраны и переназначены на другую станцию, если не используются в течении определённого периода времени (например, в течение 24 часов). Такие временные адреса обычно распределяются на пользовательские устройства с помощью DHCP. В то время как постоянный адрес настраивается вручную на компьютерной системе (сетевом устройстве). Обычно компьютерам, выполняющим роль серверов, и промежуточным устройствам (роутерам, например) даётся один или более постоянных IP адресов.
Приватность (публичные или приватные IP)
IP делятся на публичные и приватные адреса. Пакеты, содержащие публичные адреса, могут быть направлены на хост назначения в Интернете. В противоположность этому, приватные (частные) адреса, как следует из их названия, используются только внутри домашней или корпоративной сети. Другими словами, пакеты с приватными адресами могут быть доставлены к узлу назначения только если он размещён в границах той же самой корпоративной или домашней сети, но не за её пределами. Использование приватных адресов обеспечивает повышенную безопасность, поскольку внутренние узлы невидимы снаружи. Многие организации полагаются на частные IP-адреса для защиты своих внутренних сетей. Ещё одним плюсом приватных адресов является то, что они гибки при распределении адресов для внутренних хостов и промежуточных устройств.
IP-адрес является глобальным стандартом, необходимым чтобы сетевой узел мог обмениваться данными с любыми другими узлами. IP-адрес является логическим адресом, поскольку он физически не связан с узлом (в отличии от MAC-адреса, который является физическим адресом, то есть жёстко прописан в самом устройстве).
Одновременно используются два разных стандарта IP: IPv4 (версия 4) и IPv6 (также известный как IP следующего поколения или IPng). Адрес IPv4 состоит из 32 битов, которые преобразуются в комбинацию из 4 десятичных значений (например, 127.232.53.8). IP-адрес состоит из частей идентификатора сети и узла. Например, в 172.232.53.8, 172.232 и 53.8 могут представлять идентификаторы сети и хоста соответственно. Принятие более продвинутой адресации IPv6 с 128 битами для адреса растёт, и будущее явно принадлежит ей.
Кто управляет диапазонами IP (кто выдаёт IP адреса)
IP-адрес состоит из частей:
- идентификации сети — network identification (или сетевого адреса)
- и идентификации хоста — host identification (или адреса хоста).
Идентификация сети указывает конкретную организацию (например, фирму, колледж, интернет-провайдера). Идентификация хоста назначается сетевому узлу. Сетевые адреса назначаются делегированным образом Управлением по присвоению номеров в Интернете (IANA) (http://www.iana.org/). Будучи ответственным за глобальную координацию пространства IP, IANA делегирует доступное пространство сетевых адресов региональным интернет-регистратурам (RIR). В настоящее время в мире существует пять RIR:
- AfriNIC для региона Африки (http://www.afrinic.net/)
- ARIN для Северной Америки (https://www.arin.net/)
- APNIC для Азиатско-Тихоокеанского региона (http://www.apnic.net/)
- LACNIC для Латинской Америки (http://www.lacnic.net/en/)
- RIPE NCC для Европы, Ближнего Востока и Центральной Азии (http://www.ripe.net/)
В прошлом запрос на блок IP-адресов напрямую отправлялся в реестр клиентской организацией. После получения, организация в течение длительного времени сохраняла право собственности на предоставленный блок IP. Все это изменилось, и теперь интернет-провайдеры (ISP) играют центральную роль в управлении пространством IP-адресов и его распределении среди запрашивающих организаций. Для этого крупные интернет-провайдеры (например, AT&T) получают блоки IP от RIR и делят их на более мелкие порции для распределения клиентам (например, мелкие интернет-провайдеры, коммерческие фирмы, школы). Тем временем частные лица и малые предприятия получают сетевой адрес от своих интернет-провайдеров. На рисунке показано делегирование нисходящего пространства IP. На веб-сайтах RIR, таких как http://ws.arin.net/, вы можете найти владельца определённого сетевого адреса.
Делегирование IP адресов:
Двоичное и десятичное написание IP адресов
IPv4 стандарт использует 32-битные адреса (например, 10000000.00000010.00000111.00001001) для уникальной идентификации сетевого узла. Такое длинное написание бинарных битов создаёт неудобство, поэтому обычно используется десятичный формат (например, 129.131.12.10), в котором каждая десятичная цифра отражает 8-битную комбинацию. В 32-битной структуре, всё адресное пространство IPv4 диапазона находится между 0.0.0.0 (все 0 в бинарной записи) и 255.255.255.255 (все 1 в бинарной записи).
Почему в IP адресах нельзя использовать цифры более 255
Каждый октет IP адреса не может быть больше 255. Данное число является максимальным восьми битным двоичным числом 11111111. То есть хотя октеты и обозначаются десятичными числами от 0 до 255, на самом деле в них двоичные числа, и максимальное двоичное число равно 255.
Именно двоичная природа IP адреса позволяет понять суть маски сети и правила выбора маршрута. По этой причине стоит уделить внимание двоичному написанию и полностью разобраться в нём.
Составим небольшую таблицу и будем к ней возвращаться по мере необходимости. В этой таблице показано десятичное значение двоичного бита, находящегося в позициях с 8 по 1), а также кумулятивное десятичное значение, когда стоит одна единица в самой левой части, затем две единицы в самой левой части, затем три единицы и так до конца – это будет нужно для работы с сетевыми масками.
Таблица преобразования двоичных и десятичных значений:
| Положение единицы двоичного числа (8-бит) | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|---|---|---|---|---|---|---|---|---|
| Десятичное значение | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
| Совокупные десятичные значения (кумуляция слева направо) | 128 | 192 | 224 | 240 | 248 | 252 | 254 | 255 |
Структура IP адреса
IP адрес составляется по крайней мере из двух частей: идентификатор сети (или сетевой адрес) и идентификатор хоста (или адрес хоста).
В этой части термин «сеть» используется как идентификатор организации (например, компании, университета). Например, есть идентификатор сети организации 195.112.36.x, где x может быть значением идентификатора хоста, то адрес сети можно выразить как 195.112.36.0. Становится очевидным, что чем больше бит занято идентификатором сети, тем меньше бит доступно для идентификатора хостов.
Как правило, корпоративные сети разбиты на более маленькие сегменты подсетей. Подсети могут создаваться в соответствии с физическими (например, помещения, строения, этажи) и/или логическими (например, отдел или рабочие группы бизнеса, кафедры университета) границами организации. Сегментация сети на подсети требует, чтобы каждая подсеть могла быть уникально идентифицирована. Сетевой идентификатор не может быть изменён, поскольку он представляет официальный публичный адрес организации. Поэтому доступна возможность создания подсетей только разделяя поле идентификатора хоста на две части: одна для идентификаторов хостов и другая для идентификатора подсетей. Часто это разделение считается заимствованием бит из поля идентификатора хоста для создания идентификаторов сетей. Создание подсетей добавляет дальнейшую иерархию к структуре IP адреса.
Классовая адресация IP
Мы не будем рассматривать классовую адресацию IP, поскольку она устарела и больше практически не применяется. У неё были недостатки – она умела делить диапазоны IP адресов только на слишком громоздкие куски сети и поэтому пространства IP адресов использовались неэффективно. Применительно к сегодняшней модели адресации, выражения вроде «сеть класса A», «сеть класса B» и «сеть класса C» не несут особого смысла.
Бесклассовая адресация IP
В настоящее время применяется бесклассовая адресация IP.
Как мы помним, каждый IP адрес состоит из 32 бит. В бесклассовой IP адресации идентификатор сети необязательно кратен октету (то есть 8 битам, 16 битам или 24 битам) как в случае с классовой схемой. Например, первые 13 бит могут представлять идентификатор сети, а оставшиеся 19 бит – идентификатор хостов.
Предположим, нам дан IP адрес 123.45.56.89 для которого известно, что первые 13 бит являются идентификатором сети. Наша задача – найти адрес сети.
Находим количество бит, оставшееся для идентификатора хостов:
Для поиска адреса сети (и для многих других операций связанных с вычислением IP адресов и диапазонов) удобнее использовать бинарную запись IP адреса, когда он разделён на 8-битные блоки.
С помощью ipcalc
или онлайн IP калькулятором преобразуем 123.45.56.89 в бинарную форму. Получаем, что IP 123.45.56.89 в бинарной форме это 01111011.00101101.00111000.01011001.
Поскольку мы уже выяснили, что 19 бит остаются для идентификации хостов, то мы просто заменяем последние 19 цифр нулями и получаем: 01111011.00101000.00000000.00000000 (тринадцать бит идентификатор сети + девятнадцать 0 бит для идентификатора хостов).
Теперь конвертируем обратно в соответствующие десятичные значения (можно сделать здесь). В результате мы получаем адрес сети 123.40.0.0. То есть эту подсеть можно записать как 123.40.0.0/13. Причём, если идентификатор хостов заменить всеми единицами, то мы получим последний IP адрес данного диапазона. В данном случае это будет 01111011.00101111.11111111.11111111. Конвертируем эту запись в привычный вид и получаем 123.47.255.255. То есть для IP адреса 123.45.56.89 с маской сети 13, блок можно записать как 123.40.0.0/13 или в виде диапазона как 123.40.0.0-123.47.255.255
Чтобы понимать, что такое маска сети в нотации СЕТЬ/МАСКА, нужно представить себе IP адрес в виде двоичного числа длиной 32 символа. Так вот, МАСКА — это количество первых чисел, которые не могут меняться для обозначения хостов. Например, при длине маски 15, выделенные полужирным биты не могут меняться для обозначения хостов 01111011.00101101.00111000.01011001.
Следовательно, чем длиннее маска, тем меньший размер блока IP. При максимальной маске /32, в подсети всего один IP адрес. При длине маски /24 в подсети будет 256 адресов. При маске /22 будет 1024 адресов.
Количество адресов в подсети можно посчитать по формуле 2 (32-длина маски) .
Специальные диапазоны IP адресов
Имеются диапазоны, которые выполняют специальную функцию.
| Блок адресов | Диапазон адресов | Количество адресов | Сфера | Описание |
|---|---|---|---|---|
| 0.0.0.0/8 | 0.0.0.0–0.255.255.255 | 16777216 | Программное обеспечение | Текущая сеть (действительно только в качестве адреса источника). |
| 10.0.0.0/8 | 10.0.0.0–10.255.255.255 | 16777216 | Частная сеть | Используется для локальных (частых) сетей. |
| 100.64.0.0/10 | 100.64.0.0–100.127.255.255 | 4194304 | Частная сеть | Совместное адресное пространство для связи между поставщиком услуг и его абонентами при использовании NAT операторского уровня. |
| 127.0.0.0/8 | 127.0.0.0–127.255.255.255 | 16777216 | Сам хост | Используется для петлевых (loopback) адресов к локальному хосту. |
| 169.254.0.0/16 | 169.254.0.0–169.254.255.255 | 65536 | Подсеть | Используется для локальных адресов каналов между двумя хостами в одной ссылке, если не указан другой IP-адрес, такой как обычно получаемый с сервера DHCP. |
| 172.16.0.0/12 | 172.16.0.0–172.31.255.255 | 1048576 | Частная сеть | Используется для локальных (частых) сетей. |
| 192.0.0.0/24 | 192.0.0.0–192.0.0.255 | 256 | Частная сеть | Назначения протокола IETF. |
| 192.0.2.0/24 | 192.0.2.0–192.0.2.255 | 256 | Документация | Назначен как TEST-NET-1, документация и примеры. |
| 192.88.99.0/24 | 192.88.99.0–192.88.99.255 | 256 | Интернет | Зарезервированный. Ранее использовался для ретрансляции IPv6-IPv4 (включая блок адресов IPv6 2002::/16). |
| 192.168.0.0/16 | 192.168.0.0–192.168.255.255 | 65536 | Частная сеть | Используется для локальных (частых) сетей. |
| 198.18.0.0/15 | 198.18.0.0–198.19.255.255 | 131072 | Частная сеть | Используется для тестирования производительности межсетевого взаимодействия между двумя отдельными подсетями. |
| 198.51.100.0/24 | 198.51.100.0–198.51.100.255 | 256 | Документация | Назначен как TEST-NET-2, документация и примеры. |
| 203.0.113.0/24 | 203.0.113.0–203.0.113.255 | 256 | Документация | Назначен как TEST-NET-3, документация и примеры. |
| 224.0.0.0/4 | 224.0.0.0–239.255.255.255 | 268435456 | Интернет | Используется для многоадресной рассылки IP. (Бывшая сеть класса D). |
| 240.0.0.0/4 | 240.0.0.0–255.255.255.254 | 268435455 | Интернет | Зарезервировано для будущего использования. (Бывшая сеть класса E). |
| 255.255.255.255/32 | 255.255.255.255 | 1 | Подсеть | Зарезервировано для адреса назначения с «ограниченной трансляцией». |
IP калькуляторы
Как можно увидеть из примеров выше, для выполнения различных операций с IP адресами, например, с вычислением количество адресов в подсети, либо в конвертации различных способов написания диапазонов, нужно выполнять вычисления и преобразования из одной системы счисления в другую. Для упрощения можно использовать специально для этого предназначенные программы, они называются IP калькуляторы и рассмотрены в данной статье.
Также многие IP калькуляторы с расширенными функциями представлены онлайн:
- IP калькулятор подсетей
- Калькулятор IPv6 подсетей
- Конвертер IP адресов
- Агрегатор IP и IPv6 адресов, масок, подсетей
- Преобразование диапазона IP адресов в список CIDR сетей
- Разбивка сети IP на подсети по маске
- Разбитие диапазона IP на диапазоны с указанным количеством IP
- Конвертация двоичного IP в стандартный вид
Различные способы записи IP адресов
Кроме уже рассмотренного двоичного способа записи IP адресов, который может применяться, например, для вычисления идентификатора сети или последнего IP диапазона. Также различное написание IP адресов может использоваться для обхода фильтров (или правильного написания фильтров IP).
В качестве примера возьмём IP адрес 157.245.118.66, его можно открыть в веб-браузере по ссылке http://157.245.118.66 (хотя там и будет сообщение об ошибке SSL сертификата).
Этот же самый адрес можно записать в виде десятичного числа http://2650109506 и http://3111491919 (ссылки также работает).
Чтобы перевести в Long IP адрес a.b.c.d нужно выполнить следующие вычисления:
a * 256 3 + b * 256 2 + c * 256 1 + d * 256 0
Также можно конвертировать в шестнадцатеричное число (перед числом нужно поставить 0x): http://0x9DF57642
Октеты можно записывать в виде шестнадцатеричных чисел: http://0x9D.0xF5.0x76.0x42, а также в виде восьмеричных чисел (чтобы было понятно, что это восьмеричное число, перед ними стоят нолики): http://0235.0365.0166.0102
Можно смешивать в одном IP адресе сразу несколько вариантов написания: http://157.0365.0×76.0×42
При написании IP адреса можно пропускать нули:
Может ли IP адрес с нулём или 255 на конце быть действительным?
Как мы уже знаем, первый адрес в подсети (обычно он имеет 0 на конце) является идентификатором сети, а последний IP адрес (обычно он имеет 255 на конце) является широковещательным. Соответственно, эти IP адреса не могут быть назначены какому-либо хосту. Означает ли это, что любые IP адреса с нулём или 255 в последнем октете не существуют?
Нет, это неправильное предположение.
Посмотрите на следующий пример:
Аналогично и с IP адресом, имеющим в последнем октете 255:
Не удивляйтесь, это тоже действительные IP адреса и на адресах такого вида также работают сервера. Самый первый IP адрес, например в нашем случае это 138.201.0.0, является идентификатором сети и не может использоваться в качестве IP адреса хостов, но адреса 138.201.1.0, 138.201.2.0 и т. д. являются самыми обычными IP. Если бы диапазон был 138.201.2.0/24 (то есть 138.201.2.0-138.201.2.255), то самый первый IP являлся бы идентификатором сети и не мог бы использоваться для назначению хосту.
С помощью whois можно узнать, что IP адрес 138.201.1.0 входит в диапазон 138.201.0.0/16 (138.201.0.0-138.201.255.255):
В этом диапазоне действительно хостам не могут быть назначены IP адреса 138.201.0.0 (идентификатор сети) и 138.201.255.255 (широковещательный адрес), но адреса вроде 138.201.1.0 и 138.201.13.255 могут быть назначены хостам.
Одноадресная, широковещательная и многоадресная рассылка (Unicast, Broadcast и Multicast)
Unicast (Одноадресный адрес)
В компьютерных сетях одноадресная передача — это передача «один-к-одному» из одной точки сети в другую; то есть один отправитель и один получатель, каждый из которых идентифицируется сетевым адресом.
Одноадресная рассылка отличается от многоадресной (Multicast) и широковещательной (Broadcast) передачи, которые являются передачами «один ко многим».
Обычно используются методы одноадресной доставки по Интернет-протоколу, такими транспортными протоколами как протокол управления передачей (TCP) и протокол пользовательских дейтаграмм (UDP).
Broadcast (Широковещательный адрес)
Широковещательный адрес — это сетевой адрес, используемый для передачи на все устройства, подключённые к сети связи с множественным доступом. Сообщение, отправленное на широковещательный адрес, может быть получено всеми подключёнными к сети хостами.
Напротив, многоадресный (Multicast) адрес используется для адресации определённой группы устройств, а одноадресный (Unicast) адрес используется для адресации одного устройства.
Для связи сетевого уровня широковещательный адрес может быть конкретным IP-адресом. На уровне канала передачи данных в сетях Ethernet это конкретный MAC-адрес.
В сетях Интернет-протокола версии 4 (IPv4) широковещательные адреса являются специальными значениями в части IP-адреса, идентифицирующей хост. Значение «все единицы» было установлено как стандартный широковещательный адрес для сетей, поддерживающих широковещательную рассылку.
Широковещательный адрес для любого хоста IPv4 можно получить, взяв битовое дополнение (побитовое НЕ) маски подсети, а затем выполнив побитовое ИЛИ с IP-адресом хоста. Кратчайший путь к этому процессу — просто взять IP-адрес хоста и установить все биты в части адреса идентификатора хоста (любые битовые позиции, которые содержат 0 в маске подсети) на 1.
Как показано в приведённом ниже примере, для расчёта широковещательного адреса для передачи пакета во всю подсеть IPv4 с использованием пространства частных IP-адресов 172.16.0.0/12, которое имеет маску подсети 255.240.0.0, широковещательный адрес рассчитывается как 172.16.0.0 с побитовым ИЛИ с 0.15.255.255 = 172.31.255.255.
Пример вычисления широковещательного адреса
| Разбивка IP-адреса для сети 172.16.0.0/12 | Двоичная форма | Точечно-десятичная запись |
|---|---|---|
| Ниже полужирным шрифтом показана часть, которая является идентификатором хоста, при этом идентификатор сети — это биты, не выделенные жирным шрифтом слева от него. Чтобы получить широковещательный адрес, биты идентификатора хоста устанавливаются на все единицы, в то время как биты идентификатора сети остаются нетронутыми. | ||
| 1. Сетевой IP адрес | 10101100.00010000.00000000.00000000 | 172.16.0.0 |
| 2. Маска подсети, или просто «Сетевая маска» для краткости ('/12' в IP-адресе в этом случае означает, что только крайние левые 12 бит равны 1, как показано здесь. Это резервирует оставшиеся 12 бит для идентификатора сети и правые 32 — 12 = 20 бит для идентификатора хоста.) | 11111111.11110000.00000000.00000000 | 255.240.0.0 |
| 3. Битовое дополнение (побитовое НЕ) маски подсети | 00000000.00001111.11111111.11111111 | 0.15.255.255 |
| 4. Широковещательный адрес (побитовое ИЛИ сетевого IP-адреса (пункт 1) и битового дополнения маски подсети (пункт 3). | 10101100.00011111.11111111.11111111 | 172.31.255.255 |
Фактически — широковещательный адрес — это последний адрес в диапазоне подсети.
Для IP-адреса 255.255.255.255 существует специальное определение. Это широковещательный адрес нулевой сети или 0.0.0.0, который в стандартах Интернет-протокола означает эту сеть, то есть локальную сеть. Передача по этому адресу ограничена по определению, поскольку он никогда не пересылается маршрутизаторами, соединяющими локальную сеть с другими сетями.
Интернет-протокол версии 6 (IPv6) не реализует этот метод широковещательной передачи и, следовательно, не определяет широковещательные адреса. Вместо этого IPv6 использует многоадресную адресацию для многоадресной группы всех хостов. Однако протоколы IPv6 не определены для использования адреса всех хостов; вместо этого они отправляют и получают по определенным адресам многоадресной рассылки локального канала. Это приводит к более высокой эффективности, поскольку сетевые узлы могут фильтровать трафик на основе адреса многоадресной рассылки и не должны обрабатывать все широковещательные рассылки или многоадресные рассылки для всех узлов.
Multicast (Многоадресный адрес)
Мультивещание, многоадресное вещание (англ. multicast — групповая передача) — форма широковещания, при которой адресом назначения сетевого пакета является мультикастная группа (один ко многим). Существует мультивещание на канальном, сетевом и прикладном уровнях. Мультивещание не следует путать с технологией передачи на физическом уровне точка-многоточка.
В IPv4 для мультивещания зарезервирована подсеть 224.0.0.0/4, то есть это диапазон с 224.0.0.0 по 239.255.255.255.
Диапазон с 224.0.0.0 по 224.0.0.255 является локальной подсетью и является немаршрутизируемым. Все остальные диапазоны являются маршрутизируемыми. Но глобально маршрутизация разрешена только для подсетей 233.0.0.0/8 и 234.0.0.0/8. Но не все провайдеры поддерживают мультикаст-связность.
Основы компьютерных сетей. Тема №5. Понятие IP адресации, масок подсетей и их расчет

Приветствую вас на очередном выпуске. И сегодня речь пойдет о том, какие бывают IP-адреса, и как ими пользоваться. Что такое маска подсети, как она считается, и для чего она нужна. Как делить сети на подсети и суммировать их. Заинтересовавшихся приглашаю к прочтению.
P.S. Возможно, со временем список дополнится.
Начнем, или уже продолжим, с самого популярного, заезженного и больного. Это IP-адреса. На протяжении 4-х статей это понятие встречалось по несколько раз, и скорее всего вы уже либо сами поняли для чего они, либо нагуглили и почитали о них. Но я обязан вам это рассказать, так как без ясного понимания двигаться дальше будет тяжело.
Итак IP-адрес — это адрес, используемый узлом на сетевом уровне. Он имеет иерархическую структуру. Что это значит? Это значит, что каждая цифра в его написании несет определенный смысл. Объясню на очень хорошем примере. Примером будет номер обычного телефона — +74951234567. Первой цифрой идет +7. Это говорит о том, что номер принадлежит зоне РФ. Далее следует 495. Это код Москвы. И последние 7 цифр я взял случайными. Эти цифры закреплены за районной зоной. Как видите здесь наблюдается четкая иерархия. То есть по номеру можно понять какой стране, зоне он принадлежит. IP адреса придерживаются аналогично строгой иерархии. Контролирует их организация IANA(англ. Internet Assigned Numbers Authority). Если на русском, то это «Администрация адресного пространства Интернет». Заметьте, что слово «Интернет» с большой буквы. Мало кто придает этому значение, поэтому объясню разницу. В англоязычной литературе термин «internet» используется для описания нескольких подключённых друг к другу сетей. А термин «Internet» для описания глобальной сети. Так что примите это к сведению.
Несмотря на то, что тема статьи больше теоретическая, нежели практическая, я настоятельно рекомендую отнестись к ней со всей серьезностью, так как от нее зависит понимание дальнейших тем, а особенно маршрутизации. Не для кого, я думаю, не секрет, что мы привыкли воспринимать числовую информацию в десятичном формате (в числах от 0-9). Однако все современные компьютеры воспринимают информацию в двоичном (0 и 1). Не важно при помощи тока или света передается информация. Вся она будет воспринята устройством как есть сигнал (1) или нет (0). Всего 2 значения. Поэтому был придуман алгоритм перевода из двоичной системы в десятичную, и обратно. Начну с простого и расскажу, как выглядят IP адреса в десятичном формате. Вся эта статья посвящена IP адресам версии 4. О версии 6 будет отдельная статья. В предыдущих статьях, лабах, да и вообще в жизни, вы видели что-то вроде этого «193.233.44.12». Это и есть IP адрес в десятичной записи. Состоит он из 4-х чисел, называемых октетами и разделенных между собой точками. Каждое такое число (октет) может принимать значение от 0 до 255. То есть одно из 256 значений. Длина каждого октета равна 8 битам, а суммарная длина IPv4 = 32 битам. Теперь интересный вопрос. Каким образом этот адрес воспримет компьютер, и как будет с ним работать?
Можно конечно набить это в калькулятор, коих навалом в Интернете, и он переведет его в двоичный формат, но я считаю, что переводить вручную должен уметь каждый. Особенно это касается тех, кто планирует сдавать экзамен. У вас не будет под рукой ничего, кроме бумаги и маркера, и полагаться придется только на свои навыки. Поэтому показываю, как это делать вручную. Строится таблица.
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| x | x | x | x | x | x | x | x |
Вместо «x» записывается либо 1, либо 0. Таблица разделена на 8 колонок, каждая из которых несет в себе 1 бит (8 колонок = 8 бит = 1 октет). Расположены они по старшинству слева направо. То есть первый (левый) бит — самый старший и имеет номер 128, а последний (правый) — самый младший и имеет номер 1. Теперь объясню, откуда эти числа взялись. Так как система двоичная, и длина октета равна 8-ми битам, то каждое число получается возведением числа 2 в степень от 0 до 7. И каждая из полученных цифр записывается в таблицу от большего к меньшему. То есть слева направо. От 2 в 7-ой степени до 2 в 0-ой степени. Приведу таблицу степеней 2-ки.
Думаю теперь понятно, каким образом строится таблица. Давайте теперь разберем адрес «193.233.44.12» и посмотрим, как он выглядит в двоичном формате. Разберем каждый октет отдельно. Возьмем число 193 и посмотрим, из каких табличных комбинаций оно получается. 128 + 64 + 1 = 193.
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
Те числа, которые участвовали в формировании комбинации получают 1, а все остальные получают 0.
Берем первый октет 233. 128 + 64 + 32 + 8 + 1.
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
Получаю 128 + 64 + 16 + 4 + 1 = 213.
Вычисляю второй блок.
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 |
Считаю 128 + 32 + 16 + 4 = 180.
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
128 + 64 + 1 = 193.
И напоследок четвертый.
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
Собираем результаты вычислений и получаем адрес 213.180.193.3. Ничего тяжелого, чистая арифметика. Если тяжело и прям невыносимо трудно, то попрактикуйтесь. Сначала может показаться страшным, так как многие закончили учебу лет 10 назад и многое позабыли. Но уверяю, что как только набьете руку, считать будет гораздо легче. Ну а для закрепления дам вам несколько примеров для самостоятельного расчета (под спойлером будут ответы, но открывайте их только когда прорешаете сами).
1) 10.124.56.220
2) 113.72.101.11
3) 173.143.32.194
4) 200.69.139.217
5) 88.212.236.76
6) 01011101.10111011.01001000.00110000
7) 01001000.10100011.00000100.10100001
8) 00001111.11011001.11101000.11110101
9) 01000101.00010100.00111011.01010000
10) 00101011.11110011.10000010.00111101
Теперь IP-адреса не должны быть чем-то страшным, и можно углубиться в их изучение.
Выше мы говорили о структуре телефонных номеров и их иерархии. И вот на заре рождения Интернета в том представлении, в каком мы его привыкли видеть, возник вопрос. Вопрос заключался в том, что IP-адреса нужно как-то сгруппировать и контролировать выдачу. Решением было разделить все пространство IP-адресов на классы. Это решение получило название классовая адресация (от англ. Classful). Она уже давно устарела, но практически в любой книге на нее отводятся целые главы и разделы. Cisco тоже не забывает про это и в своих учебных материалах рассказывает про нее. Поэтому я пробегусь по этой теме и покажу, чем она блистала с 1981 по 1995 год.
Пространство было поделено на 5 классов. Каждому классу был назначен блок адресов.
Начнем с класса A. Если внимательно посмотреть на таблицу, то можно заметить, что этому блоку дан самый большой блок адресов, а если быть точным, то половина всего адресного пространства. Предназначался данный класс для крупных сетей. Структура этого класса выглядит следующим образом.
В чем суть. Первый октет, то есть 8 бит, остаются за адресом сети, а 3 последних октета (то есть оставшиеся 24 бита) назначаются хостам. Вот для того, чтобы показать, какой кусок относится к сети, а какой к хостам, используется маска. По структуре записи она аналогична записи IP-адреса. Отличие маски от IP-адресов в том, что 0 и 1 не могут чередоваться. Сначала идут 1, а потом 0. Таким образом, там где есть единица, значит это участок сети. Чуть ниже, после разбора классов, я покажу, как с ней работать. Сейчас главное знать, что маска класса A — 255.0.0.0. В таблице еще упомянут какой-то первый бит и для класса A он равен 0. Этот бит как раз нужен для того, чтобы сетевое устройство понимало, к какому классу оно принадлежит. Он же еще задает начальный и конечный диапазон адресов. Если в двоичном виде записать на всех октетах единицы, кроме первого бита в первом октете (там всегда 0), то получится 127.255.255.255, что является границей класса A. Например, возьмем адрес 44.58.63.132. Мы знаем, что у класса A первый октет отдается под адрес сети. То есть «44» — это адрес сети, а «58.63.132» — это адрес хоста.
Поговорим про класс B
Этому классу был дан блок поменьше. И адреса из этого блока предназначались для сетей средних масштабов. 2 октета отданы под адрес сети, и 2 — под адрес хостов. Маска у B класса — 255.255.0.0. Первые биты строго 10. А остальные меняются. Перейдем к примеру: 172.16.105.32. Два первых октета под адрес сети — «172.16». А 3-ий и 4-ый под адрес хоста — «105.32».
Этот класс обделили адресами и дали ему самый маленький блок. Он был предназначен для мелких сетей. Зато этот класс отдавал целых 3 октета под адрес сети и только 1 октет — под хосты. Маска у него — 255.255.255.0. Первые биты 110. На примере это выглядит так — 192.168.1.5. Адрес сети «192.168.1», а адрес хоста «5».
Классы D и E. Я неcпроста объединил их в один. Адреса из этих блоков зарезервированы и не могут назначаться сетям и хостам. Класс D предназначен для многоадресной рассылки. Аналогию можно привести с телевидением. Телеканал вещает группе лиц свой эфир. И те, кто подключены, могут смотреть телепередачи. То есть в распоряжение администраторов могут попасть только 3 первых класса.
Напомню, что первые биты у класса D — это 1110. Пример адреса — 224.0.0.5.
А первые биты у класса E — это 1111. Поэтому, если вдруг увидите адрес вида 240.0.0.1, смело говорите, что это адрес E класса.
Про классы обмолвились. Теперь озвучу вопрос, который мне недавно задали. Так зачем тогда маски? У нас итак хосты понимают в каком они классе. Но суть вот в чем. Например, у вас есть маленький офис, и вам нужен блок IP-адресов. Никто не будет вам выдавать все адреса класса C. А дадут только его кусок. Например 192.168.1.0 с маской 255.255.255.0. Так вот эта маска и будет определять вашу границу. Мы уже говорили, что октет варьируется в значении от 0 до 255. Вот этот 4 октет полностью в вашем распоряжении. За исключением первого адреса и последнего, то есть 0 и 255 в данном случае. Первый адрес — это адрес сети (в данном случае 192.168.1.0), а последний адрес — широковещательный адрес (192.168.1.255). Напомню, что широковещательный адрес используется в том случае, когда надо передать информацию всем узлам в сети. Поэтому есть правило. Если вам надо узнать номер сети, то все биты относящиеся к хосту обращаете в 0, а если широковещательный, то все биты — в 1. Поэтому, если из 256 адресов забирается 2 адреса, то на назначение хостам остается 254 адреса (256 — 2). На собеседованиях и экзаменах часто любят спрашивать: «Количество IP-адресов в сети?» и «Сколько доступных IP-адресов в сети для назначения хостам?». Два разных вопроса, которые могут поставить в тупик. Ответом на первый будет — все адреса, включая адрес сети и широковещательный адрес, а на второй вопрос — все адреса, кроме адреса сети и широковещательного адреса.
Теперь углубимся в изучении маски.
Я записал адрес класса C 192.168.1.1 с маской 255.255.255.0 в десятичном и двоичном формате. Обратите внимание на то, как выглядит IP-адрес и маска в двоичном формате. Если в IP-адресе 0 и 1 чередуются, то в маске сначала идут 1, а потом 0. Эти биты фиксируют адрес сети и задают размер. По таблице выше можно сделать вывод, что в двоичном виде маска представлена последовательностью 24 единиц подряд. Это говорит о том, что целых 3 октета выделено под сеть, а 4 октет свободен под адресацию для хостов. Здесь ничего необычного. Это стандартная маска класса C.
Но вот в чем загвоздка. Например, в вашем офисе 100 компьютеров, и расширяться вы не планируете. Зачем плодить сеть из 250+ адресов, которые вам не нужны?! На помощь приходит разделение на подсети. Это очень удобная вещь. Объясню принцип на примере того же класса C. Как бы вы не хотели, но трогать 3 октета нельзя. Они фиксированы. Но вот 4 октет свободен под хосты, поэтому его можно трогать. Заимствуя биты из хостового куска, вы дробите сеть на n-ое количество подсетей и, соответственно, уменьшаете в ней количество адресов для хостов.
Попробуем это воплотить в реальность. Меняю маску. Заимствую первый бит из хостовой части(то есть 1-ый бит 4-ого октета выставляю в единицу). Получается следующая маска.
Данная маска делит сеть на 2 части. Если до дробления у сети было 256 адресов(от 0 до 255), то после дробления у каждого куска будет по 128 адресов(от 0 до 127 и от 128 до 255).
Теперь посмотрю, что изменится в целом с адресами.
Красным цветом я показал те биты, которые зафиксированы и не могут изменяться. То есть маска ей задает границу. Соответственно биты помеченные черным цветом определены для адресации хостов. Теперь вычислю эту границу. Чтобы определить начало, надо все свободные биты(помеченные черным цветом) обратить в ноль, а для определения конца обратить в единицы. Приступаю.
То есть в четвертом октете меняются все биты, кроме первого. Он жестко фиксирован в рамках этой сети.
Теперь посмотрим на вторую половину сети и вычислим ее адреса. Деление у нас производилось заимствованием первого бита в 4-ом октете, значит он является делителем. Первая половина сети получалась, когда этот бит принимал значение 0, а значит вторая сеть образуется, когда этот бит примет значение 1. Обращаю этот бит в 1 и посмотрю на границы.
Приведу в десятичный вид.
Соответственно .128 и .255 назначать хостам нельзя. Значит в доступности 128-2=126 адресов.
Вот таким образом можно при помощи маски управлять размером сети. Каждый заимствованный бит делит сеть на 2 части. Если откусить 1 бит от хостовой части, то поделим на 2 части (по 128 адресов), 2 бита = 4 части (по 64 адреса), 3 бита = 8 (по 32 адреса) и так далее.
Если вы рассчитали количество бит, отдаваемые под хосты, то количество доступных IP-адресов можно вычислить по формуле
В книге У. Одома по подготовке к CCNA R&S приведена хорошая формула для расчета битов, отдаваемых на подсеть и хосты:
N + S + H = 32, где N — кол-во битов сети (класс A — 8 бит, B — 16 бит, C — 24 бита), S — кол-во заимствованных битов на подсеть (это то, что мы делали выше, когда заимствовали 1 бит из хостовой части), H — кол-во бит отводимых хостам.
Внесу ясность и объясню, как и где применять эти формулы.
Нам выдали сеть 172.16.0.0 и попросили создать 120 подсетей со 180 хостами и записать маску. Приступим.
В качестве шпаргалки, и для быстроты вычисления, я ниже подготовил таблицу степеней двойки.
Двигаемся дальше. Первое главное условие, при использовании классовой адресации — это то, что должна использоваться одна маска для всех подсетей. То есть, если у вас для одной подсети маска 255.255.255.0, то для другой подсети она не может быть 255.255.255.128.
Теперь смотрим на выданную сеть. Путем логических размышлений понимаем, что это адрес класса B. А значит его N (кол-во битов сети) = 16. Ок. Значит на хосты выделено тоже 16 бит. Вспоминаем условия задачи. Нужно создать 120 подсетей. «Откусывать» биты от сетевой части запрещено, значит кусаем от хостовой части.
Теперь нужно взять такое кол-во бит, чтобы хватило для 120 подсетей, однако оставляло достаточное кол-во под биты для хоста. Смотрим на таблицу выше. Если взять 7 бит, то получим 128. 128>120, следовательно попадаем под условие. Если возьмем 6 бит, то получим 64. 64<128, поэтому не попадаем под условие и отбрасываем этот вариант.
Ок. Выяснили, что S надо выделить не меньше 7 бит. Теперь посмотрим, что осталось под хосты.
Если N + S + H = 32 => H = 32 — (N + S) => H = 32 — (16 + 7) = 9. Смотрим на таблицу выше (или возводим 2 в 9 степень в уме) и получаем число 512. Отнимаем 2 (адрес сети и широковещательный адрес) и получаем 510 адресов. Нам нужно 180, а значит под условие мы попадаем причем с большим запасом. В таких случаях вам предоставляется право выбора. Сделать больше подсетей или хостов на подсеть. Объясняю, что это значит. У нас есть 9 бит на хосты. Если мы возьмем 8 бит, то получим число 256. 256 — 2 = 254 адреса. Этот вариант нам тоже подходит. Возьмем 7 бит. Получаем 128. Даже не отнимая 2 адреса, становится понятно, что это меньше 180 => данный вариант отбрасывается сразу. Итого получаем, что минимальное количество для подсети — 7 бит, а для хостов — 8 бит. Поэтому свободный бит можно отдать либо на подсеть, либо на хосты. Маска получается сложением N и S. В нашем случае получаем, если под подсеть отдаем 7 бит, то получаем 23. В десятичном виде маска будет выглядеть 255.255.254.0. А если отдадим под подсеть 8 бит, то получим 24 (или в десятичном виде 255.255.255.0). Иногда бывает, что под задачу существует всего одна маска. Ну и, конечно, могут быть случаи, когда маска не попадает не под какие условия. В этих случаях нужно брать сеть другого класса или доказывать заказчику, что это невозможно.
Думаю теперь понятно, как работала классовая адресация, и как ее рассчитывали. Возможно с первого раза голова не переварит этого, поэтому перечитывайте еще раз и повнимательнее. Как только начнет что-то проясняться, потренируйтесь на задачках, которые я оставлю.
1) Записать маску для проекта: сеть 172.16.0.0. 250 подсетей и 220 хостов.
2) Записать маску для проекта: сеть 10.0.0.0. 2000 подсетей и 1500 хостов.
3) Записать маску для проекта: сеть 192.168.0.0. 4 подсети и 60 хостов.
На этом разговор про классовые сети начну закруглять и подведу итоги. Классовая адресация — это зарождение сегодняшнего интернета, и именно с нее все началось. Поэтому плюсов у нее много, и за это создателям спасибо. Но, как вы могли заметить, у нее было жесткая привязка к одной маске. За счет этого IP-адреса использовались не экономно и расточительно. А в связи с бурным ростом Интернета адресов стало не хватать, и срочно нужно было вносить изменения.
Поняли ведущие умы, что использовать классовые сети не удобно и нужно от них отказываться. Это привело к созданию бесклассовой адресации и маскам переменной длины, о чем мы ниже поговорим. Но перед этим пару слов о видах IP-адресов. Несмотря на то, что переход от классовой адресации к бесклассовой предполагал экономию IP-адресов, на деле эта проблема все равно решалась не полностью. Все упиралось в саму технологию IPv4. Объясню почему. Выше я говорил, что длина IP адреса равна 32 бита. Каждый бит может принимать значение 0 или 1, то есть два значения. Соответственно, чтобы вычислить все комбинации, надо возвести 2 в 32-ую степень. Получаем 4294967296 адресов. Если вычесть отсюда зарезервированные для специальных нужд и прочего, то останется примерно 4.2 млрд. адресов, когда на Земле проживает около 7.3 млрд. человек. Поэтому ведущие умы быстро просекли эту фишку и начали искать решение. Они решили выделить некое адресное пространство, которое будет использоваться только в пределах локальной сети и не будет использоваться в Интернете. Это разделило адреса на 2 лагеря: белые или публичные (англ. public) и серые или частные (англ. private).
Привожу диапазон адресов, которые выделены под локальные сети:
1) 10.0.0.0 — 10.255.255.255 с маской 255.0.0.0 (или кратко 10/8).
2) 172.16.0.0 — 172.31.255.255 с маской 255.240.0.0 (или кратко 172.16/12).
3) 192.168.0.0 — 192.168.255.255 (или кратко 192.168/16).
Если честно, я мало где видел применение адресации 172.16.X.X. Обычно в корпоративной среде всегда используется 10.X.X.X, а в домах/квартирах и мелких офисах 192.168.X.X.
Теперь прошу обратить внимание на очень важную вещь, которую многие путают. Не путайте классовую адресацию и диапазон частных адресов. Очень много людей наступают на эти грабли и свято верят, что диапазон частных адресов 10.0.0.0 — 10.255.255.255 — это диапазон A класса.
Разобрались, что такое частные адреса или private адреса. Но это еще не все. Есть еще список зарезервированных адресов, которые не могут светиться в Интернете. По ним написана целая документация на IETF. Привожу ссылку, где можете прочитать оригинал. Я кратко опишу часто встречающиеся.
1) 0.0.0.0/8 — диапазон адресов, используемый хостами для самоидентификации. Обычно это можно увидеть, когда хост пытается получить IP-адрес от DHCP сервера. Так как изначально у него нету IP-адреса, то в поле источника он вставляет адрес из данного диапазона.
2) 127.0.0.0/8 — loopback или localhost адреса. Это IP-адреса, используемые компьютером, чтобы обратиться к самому себе. Очень полезно для проверки работы TCP/IP. Дело в том, что независимо от наличия соединения с Интернетом или локальной сетью, адреса из этого пула должны всегда пинговаться. Если этого не происходит, значит система накрылась или накрывается медным тазом.
3) 169.254.0.0/16 — link-local address или локальные адреса. Автоматически используются хостами при отсутствии DHCP-сервера или его недоступности. Это позволяет быстро организовать локальную сеть и проверить работу узлов. Однако данный пул адресов не маршрутизируется. Следовательно, выйти в Интернет с них не получится.
4) 224.0.0.0/4 — блок адресов, зарезервированный под многоадресную рассылку или multicast. Для тех, кто хочет побольше узнать про multicast, оставляю ссылку.
Бесклассовая адресация (англ. Classless Inter-Domain Routing или CIDR). Описана была в стандарте RFC1519 в 1993 году. Она отказалась от классовых рамок и фиксированной маски. Адреса делятся только на публичные и зарезервированные, о которых написано выше. Если в классовой адресации маска нарезалась единой для всех подсетей, то в бесклассовой — у каждой подсети может быть своя маска. На теории все хорошо и красиво, но нет ничего лучше, чем практика. Поэтому перехожу к ней и объясню, как можно делить на подсети с разным количеством хостов.
В качестве шпаргалки приведу список всех возможных масок.
Представим ситуацию. Вам выдали сеть 192.168.1.0/24 и поставили следующие условия:
1) Подсеть на 10 адресов для гостей.
2) Подсеть на 42 адреса для сотрудников.
3) Подсеть на 2 адреса для соединения 2 маршрутизаторов.
4) Подсеть на 26 адресов для филиала.
Ок. Данная маска показывает, что в нашем распоряжении находятся 256 адресов. По условию эту сеть надо каким-то образом разделить на 4 подсети. Давайте попробуем. 256 очень хорошо делится на 4, давая в ответе 64. Значит один большой блок в 256 адресов можно поделить на 4 равных блока по 64 адреса в каждом. И все было бы прекрасно, но это порождает большое число пустых адресов. Для сотрудников, которым нужно 42 адреса, ладно, может в дальнейшем компания еще наймет. Но вот подсеть для маршрутизаторов, которая требует всего 2 адреса, оставит 60 пустых адресов. Да, вы можете сказать, что это private адреса, и кому дело до них. А теперь представьте, что это публичные адреса, которые маршрутизируются в Интернете. Их и так мало, а тут мы еще будем их отбрасывать. Это не дело, тем более, когда мы можем гибко управлять адресным пространством. Поэтому возвращаемся к примеру и нарежем подсети так, как нам нужно.
Итак, какие подсети должны быть нарезаны, чтобы вместились все адреса, заданные по условию?!
1) Для 10 хостов, наименьшей подсетью будет блок из 16 адресов.
2) Для 42 хостов, наименьшей подсетью будет блок из 64 адресов.
3) Для 2 хостов, наименьшей подсетью будет блок из 4 адресов.
4) Для 26 хостов, наименьшей подсетью будет блок из 32 адресов.
Я понимаю, что не все могут с первого раза в это вникнуть, и в этом нет ничего страшного. Все люди разные и по-разному воспринимают информацию. Для полноты эффекта покажу деление на картинке.
Вот у нас блок, состоящий из 256 адресов.

После деления на 4 части получается следующая картинка.

Выше мы выяснили, что при таком раскладе адреса используются не рационально. Теперь обратите внимание, как стало выглядеть адресное пространство после нарезки подсетей разной длины.

Как видите, в свободном доступе осталось куча адресов, которые мы в дальнейшем сможем использовать. Можно посчитать точную цифру. 256 — (64 + 32 + 16 + 4) = 140 адресов.
Вот столько адресов мы сэкономили. Двигаемся дальше и ответим на следующие вопросы:
— Какими будут сетевые и широковещательные адреса?
— Какие адреса можно будет назначить хостам?
— Как буду выглядеть маски?
Механизм деления на подсети с разной маской получил название VLSM (от англ. Variable Length Subnet Mask) или маска подсети переменной длины. Дам важный совет! Начинайте адресацию с самой большой подсети. Иначе вы можете попасть на то, что адреса начнут перекрываться. Поэтому сначала планируйте сеть на бумаге. Нарисуйте ее, изобразите в виде фигур, просчитайте вручную или на калькуляторе и только потом переходите настройке в боевых условиях.
Итак, самая большая подсеть состоит из 64 адресов. С нее и начнем. Первый пул адресов будет следующий:
Адрес подсети — 192.168.1.0.
Широковещательный адрес — 192.168.1.63.
Пул адресов для назначения хостам от 192.168.1.1 до 192.168.1.62.
Теперь выбор маски. Тут все просто. Отнимаем от целой сети нужный кусок и полученное число записываем в октет маски. То есть 256 — 64 = 192 => маска 255.255.255.192 или /26.
Дальше идет подсеть поменьше. Состоит она из 32 адресов. Если первая заканчивалась на .63, то эта будет начинаться с .64:
Адрес подсети — 192.168.1.64.
Широковещательный адрес — 192.168.1.95.
Пул адресов для назначения хостам будет от 192.168.1.65 до 192.168.1.94.
Маска: 256 — 32 = 224 => 255.255.255.224 или /27.
3-я подсеть, которая предназначена для филиала, начнет старт с .96:
Адрес подсети — 192.168.1.96.
Широковещательный адрес — 192.168.1.111.
Пул адресов для назначения хостам будет от 192.168.1.97 до 192.168.1.110.
Маска: 256 — 16 = 240 => 255.255.255.240 или /28.
Ну и для последней подсети, которая уйдет под интерфейсы, соединяющие роутеры, будет начинаться с .112:
Адрес подсети — 192.168.1.112.
Широковещательный адрес — 192.168.1.115.
Разрешенными адресами будут 192.168.1.113 и 192.168.1.114.
Маска: 256 — 4 = 252 => 255.255.255.252 или /30.
Замечу, что адрес 192.168.1.115 является последним используемым адресом. Начиная с 192.168.1.116 и до .255 свободны.
Вот таким образом, при помощи VLSM или масок переменной длины, мы экономно создали 4 подсети с нужным количеством адресов в каждой. Думаю это стоит закрепить задачкой для самостоятельного решения.
Разделите сеть 192.168.1.0/24 на 3 разные подсети. Найдите и запишите в каждой подсети ее адреса, широковещательный адрес, пул разрешенных к выдаче адресов и маску. Указываю требуемые размеры подсетей:
1) Подсеть на 120 адресов.
2) Подсеть на 12 адресов.
3) Подсеть на 5 адресов.
1) Адрес подсети — 192.168.1.0.
Широковещательный адрес — 192.168.1.127.
Пул адресов для назначения хостам будет от 192.168.1.1 до 192.168.1.126.
Маска: 256 — 128 = 128 => 255.255.255.128 или /25.
2) Адрес подсети — 192.168.1.128.
Широковещательный адрес — 192.168.1.143.
Пул адресов для назначения хостам будет от 192.168.1.129 до 192.168.1.142.
Маска: 256 — 16 = 240 => 255.255.255.240 или /28.
3) Адрес подсети — 192.168.1.144.
Широковещательный адрес — 192.168.1.151.
Пул адресов для назначения хостам будет от 192.168.1.145 до 192.168.1.150.
Маска: 256 — 8 = 248 => 255.255.255.248 или /29.
Теперь, когда вы знаете, как делить сети на подсети, самое время научиться собирать подсети в одну общую подсеть. Иначе это называется суммированием или summarization. Суммирование чаще всего используется в маршрутизации. Когда у вас в таблице маршрутизатора несколько соседних подсетей, маршрутизация которых проходит через один и тот же интерфейс или адрес. Скорее всего этот процесс лучше объяснять при разборе маршрутизации, но учитывая то, что тема маршрутизации и так большая, то я объясню процесс суммирования в этой статье. Тем более, что суммирование это сплошная математика, а в этой статье мы ею и занимаемся. Ну что же, приступлю.
Представим, что у меня компания состоящая из главного здания и корпусов. Я работаю в главном здании, а в корпусах коллеги. Хоть у меня и главное здание, но в нем всего 4 подсети:
— 192.168.0.0/24
— 192.168.1.0/24
— 192.168.2.0/24
— 192.168.3.0/24
Тут коллеги с соседнего здания очухались и поняли, что у них слетела конфигурация на маршрутизаторе, а бекапов нет. Наизусть они не помнят, какие в главном здании подсети, но помнят, что они находятся рядом друг с другом, и просят прислать одну суммированную. Теперь у меня возникает задача, как их суммировать. Для начала я переведу все подсети в двоичный вид.
Посмотрите внимательно на таблицу. Как видите, у 4 подсетей первые 22 бита одинаковые. Соответственно, если я возьму 192.168.0.0 с маской /22 или 255.255.252.0, то покрою свои 4 подсети. Но обратите внимание на 5 подсеть, которую я специально ввел. Это подсеть 192.168.4.0. 22-ой бит у нее отличается от предыдущих 4-х, а значит выше выбранное не покроет эту подсеть.
Ок. Теперь я отправлю коллегам суммированную подсеть, и, если они все правильно пропишут, то маршрутизация до моих подсетей будет работать без проблем.
Возьмем тот же пример и немного изменим условия. Нас попросили прислать суммарный маршрут для подсетей 192.168.0.0 и 192.168.1.0. Я не поленюсь и создам еще одну таблицу.
Обратите внимание, что у 2 первых подсетей одинаковые не 22 бита, а 23 бита. Это значит, что их можно просуммировать еще компактнее. В принципе работать будет и так, и так. Но как говорилось в одной рекламе: «Если нет разницы — зачем платить больше?». Поэтому старайтесь суммировать, не задевая при этом соседние подсети.
Таким образом, переводя подсети в двоичный формат и находя одинаковые биты, можно их суммировать.
Вообще суммирование полезно применять, когда надо объединить несколько подсетей, расположенных вблизи друг с другом. Это позволит сэкономить ресурсы маршрутизаторов. Однако это не всегда возможно. Просуммировать, например, подсеть 192.168.1.0 и 192.168.15.0, не захватив при этом соседние подсети, невозможно. Поэтому перед суммированием стоит подумать над ее целесообразностью. Поэтому повторюсь еще раз, что начинать какую-либо революцию надо на бумажке. Ну и для закрепления материала оставлю небольшую задачу.
1) 10.3.128.0
2) 10.3.129.0
3) 10.3.130.0
4) 10.3.131.0
Просуммируйте подсети и найдите маску, которая сможет покрыть их, не задевая при этом соседние подсети.
Исходя из этого, ответом будет 10.3.128.0/22 (255.255.252.0)
Что такое /24 /16 в ip-адресах?
Подскажите пожалуйста как правильно? И что означают /16 /24 ?
/16 , /24 — это обозначение классов сетей.
Переписывать матчасть не буду, поэтому почитайте здесь.
Поэкспериментировать и наглядно понять правильность понимания можно вот тут.
Что касается упомянутого «109.207.13.X то есть от 109.207.13.0 до 109.207.13.255», то это сеть класса C, т.е. 109.207.13.0/24 с маской подсети 255.255.255.0 (где /24 означает представление маски в десятичной форме, а именно с ее двоичной формы записи 11111111.11111111.11111111.00000000 , т.е. маска 24 бит из возможных 32 -х, и количество возможных хостов в этой подсети, как в твоем случае, как раз 256 , т.е. от 0 до 255 включительно).
Эх.. Раз пошла такая пьянка — режь последний огурец..
Итак, что такое /24 : IP адрес (IPv4) представляет собой адрес, состоящий из 4 байтов (32-х бит, т.е. 4х8 бит, разделенных точкой), где его формат записи в двоичной форме выглядит как 11000000.10101000.00000000.00000001 . А десятичной форме аналогичная запись выглядит как запись из 4-х чисел от 0 до 255 включительно, где 255 — это максимальное число, которое можно выразить в 8-ми битах, т.е. 255 в двоичном формате будет выглядеть так: 11111111 . Т.е. некоторый IP, скажем 192.168.0.1 , будет выглядеть в двоичной форме так: 11000000.10101000.00000000.00000001 . Если взять сеть 192.168.0.0/24 и выбрать любой IP адрес из диапазона 192.168.0.0 — 192.168.0.255 , то для конкретного IP адреса любого из этих 256 возможных хостов (теоретически от 0 до 255 включительно) маска подсети будет выглядеть следующим образом: 11111111.11111111.11111111.00000000 ( 255.255.255.0 в десятичной форме), что означает что 3х8=24 бита (слева направо) в адресе — это биты, указывающие на адрес подсети, а последние 8 битов отведены на IP адреса хостов в подсети, т.е. от 0 до 255 (что равняется 256 -ти, и 256 — это число всех возможных комбинаций от 00000000 до 11111111 ).
Теперь дальше и глубже: допустим, что не требуется все 256 хостов в одной подсети, а хочется разделить пространство на еще 2 подсети (по 128 хостов в каждой). Тогда можно разделить эту сеть так: маска подсети будет 255.255.255.128 (т.е. 11111111.11111111.11111111.10000000 или же /25 — по количеству битов слева направо) и получаем сети с 128 хостами в каждой: 0-127 в одной (Network 192.168.0.0 с Broadcast Address 192.168.0.127 ) и 128-255 (Network 192.168.0.128 с Broadcast Address 192.168.0.255 ) в другой.
Добавлю еще для понимания (не вдаваясь в подробности операций с двоичными данными), выражаясь простыми словами для быстрой калькуляции в уме: раз IPv4 адрес состоит всегда из 4х8=32 бит, и если маска подсети в каком-то конкретном случае занимает, скажем, 24 бит (те, что слева направо), то 32-24=8 бит идут под диапазон для IP адресов хостов (читай компьютеров, сетевых принтеров, прочих устройств, имеющих свой IPv4). И для того, чтобы посчитать в данном случае каково количество возможных хостов для каждой подсети с данной маской, то надо 2 возвести в степень 8 (где 8 — количество нулей в маске), т.е. результатом будет 256 . Если взять сеть 192.168.0.0/26 , то само собой количество нулей будет равняться 6 -ти ( 32-26 ), то количество хостов будет 2^6=64 , маска — 255.255.255.192 , а количество подсетей будет в данном диапазоне будет равняться 4 -м ( 4х64 в каждой).
Внимательный заметит, даже не вдаваясь в подробности, что сумма количества возможных хостов в подсети и последнее число в маске в сумме дают 256 , а количество подсетей — это 256 , разделенное на 64 (количество хостов в каждой подсети, где 256 и 64 — только для данного примера! — почему, надо понять самому, хотя бы по аналогии с /16 , приведенным ниже) и сделает логические выводы.
Ну и исходя из вышеперечисленного нетрудно разложить следующее: /16 (так называемый Class B ) — это когда возможны 65536 ( 2^16 ) хостов в одной подсети, т.е. маска выглядит так: 11111111.11111111.00000000.00000000 , т.е. адрес сети занимает 8х2=16 бит (слева), а под IP адреса хостов выделено тоже 8х2=16 (все возможные комбинации от 00000000.00000000 до 11111111.11111111 , т.е. как раз 65536 штук) значения бит из адреса (справа). Т.е. диапазон IP адресов хостов в десятичной форме выглядит так: от 192.168.0.0 до 192.168.255.255 , где маска подсети /16 , т.е. 255.255.0.0
Что касается «Подскажите пожалуйста как правильно?» — если речь идет о .htaccess , то смело можете использовать Deny и указывать 109.207.13.0/24 .
Если речь идет о блокировке в каких-нибудь Cisco или Juniper — то это тогда в их документацию и на РутКод 🙂