Как и в любой сложной системе, в сети Internet время от времени проявляются мелкие недоработки. Особенно остро на настоящий момент стоит проблема дефицита адресного пространства.
СХЕМА АДРЕСАЦИЯ
А ЕСЛИ КЛАССЫ СПРЯТАТЬ ПОД МАСКОЙ?
Как и в любой сложной системе, в сети Internet время от времени проявляются мелкие недоработки. Особенно остро на настоящий момент стоит проблема дефицита адресного пространства.
Межсетевая схема адресации протокола IP описана в документах RFC 990 и RFC 997. При разработке стека протоколов TCP/IP рассматривался целый ряд методов идентификации конечных устройств в сети. Окончательным стало решение присваивать адреса как сети, так и устройствам в этой сети. Основными доводами в пользу такого подхода стали: широкий диапазон назначений номеров сетей и устройств в них, а также возможность реализации маршрутизации. При этом, в целях повышения эффективности маршрутизации, адреса должны назначаться упорядоченным образом.
СХЕМА АДРЕСАЦИЯ
В сети на базе протокола TCP/IP конечные устройства получают уникальные адреса. Эти устройства могут быть персональными компьютерами, коммуникационными серверами, маршрутизаторами и т. д. При этом если некоторое устройство, например маршрутизатор, имеет несколько физических интерфейсов, то каждый его интерфейс должен иметь уникальный адрес. Исходя из схемы адресации и возможного наличия нескольких адресов у некоторых устройств в сети можно сделать вывод, что такая схема адресации описывает не само устройство в сети, а определенное соединение данного устройства с сетью. В связи с этим возникает ряд неудобств, одним из которых является необходимость замены адреса устройства при перемещении его в другую сеть. Основной же недостаток в том, что для работы с устройствами, имеющими несколько подключений в распределенной сети, требуется знать все его адреса, идентифицирующие данные подключения. Незнание хотя бы одного адреса может привести к тому, что этим устройством информация не будет получена при отказе (по каким-либо причинам) других соединений.
Каждый компьютер в сетях, построенных на базе протокола IP, имеет адреса трех уровней:
- физический адрес узла, определяемый технологией, с помощью которой
построена данная сеть. Для узлов, работающих в локальных сетях Ethernet,
— это MAC-адрес сетевой платы или порта маршрутизатора. Данные адреса назначаются
производителями оборудования. Формат физического адреса имеет шесть байтов:
старшие три байта — идентификатор компании-производителя, младшие три байта
уникальны и назначаются самим производителем; - четырехбайтный IP-адрес. Этот адрес используется на сетевом уровне
эталонной модели OSI; - символьный идентификатор — имя. Данный идентификатор может назначаться
администратором произвольно и служить, например, для упрощения взаимодействия
с удаленным хостом.
Когда протокол IP был стандартизирован в сентябре 1981 года, его спецификация требовала, чтобы каждое устройство сети имело уникальный 32-разрядный адрес. Данный адрес разбивается на две части. Первая часть адреса идентифицирует сеть, в которой располагается устройство; вторая — само устройство. Такая схема соответствует двухуровневой адресной иерархии, показанной на Рисунке 1.
Рисунок 1.
Двухуровневая адресная иерархия.
В последнее время поле номера сети в адресе стало называться сетевым префиксом, так как первая порция каждого IP-адреса идентифицирует номер сети. Все хосты в определенной сети имеют один и тот же сетевой префикс, но при этом они должны иметь уникальные номера хостов. Аналогично, два любых расположенных в разных сетях хоста должны иметь различные сетевые префиксы, но они могут иметь одинаковые номера хостов.
Для обеспечения гибкости в назначении адресов компьютерным сетям разработчики определили, что адресное пространство протокола IP должно быть разделено на три основных класса — A, B и C. Каждый из этих основных классов фиксирует границу между сетевым префиксом и номером хоста в разных точках 32-разрядного адреса. Форматы этих основных классов приведены на Рисунке 2.
(1×1)
Рисунок 2.
Основные классы IP-адресов.
Одно из основных достоинств использования классов в том, что каждый адрес содержит ключ для идентификации границы между сетевым префиксом и номером хоста. Например, если старшие два бита адреса равны «10», то точка раздела находится между 15 и 16 битом.
Недостатком такого метода является необходимость изменения адреса сети при превышении в сетях класса С числа устройств в 255, например на адреса класса B. Изменение сетевых адресов может отнять много времени и усилий у администратора по отладке сети. Однако, из-за наличия четких границ между классами адресов, администраторы сетей оказываются не в состоянии спланировать плавный переход на случай необходимости изменения адресов. Вместо этого в какой-то момент сетевой адрес отменяется, одновременно изменяются все адреса устройств в данной сети, а затем сеть вновь включается в работу. Кроме того, введение классов адресов ограничивает число реально используемых индивидуальных адресов по сравнению с теоретически возможным. В текущей версии протокола IP (версия 4) общее число адресов составляет теоретически 232 (4 294 967 296), так как протокол предусматривает использование 32 бит для задания адреса. Использование части бит в служебных целях уменьшает доступное количество индивидуальных адресов.
Адрес класса A предназначен для идентификации устройств в крупных сетях. Каждый адрес класса A имеет 8-разрядный префикс сети, в котором старший бит равен «0», а следующие семь бит используются для определения номера сети. Для задания номера хоста служат оставшиеся 24 бит. В настоящий момент все адреса класса А уже выделены, так что получить его вряд ли возможно. Сети класса А так же обозначаются, как «/8», поскольку адреса этого класса имеют 8-разрядный сетевой префикс. Максимальное число сетей класса A составляет 126 (27-2). Каждая сеть данного класса поддерживает
максимум 16 777 214 (224-2) хостов. Так как адресный блок класса
A может содержать максимум 231 (2 147 483 648) индивидуальных
адреса, а в протоколе IP версии 4 может поддерживаться максимум 232 адреса, то адресное пространство класса A занимает 50% общего адресного пространства в протоколе IP.
Адрес класса B предназначен для сетей среднего размера, например в институте или крупной организации. Каждая сеть класса B имеет 16-разрядный префикс сети, в котором два старших бита равны «10», а следующие 14 бит используются для определения номера сети. Для задания номера хоста служат оставшиеся 16 бит. Сети класса В так же обозначаются, как «/16», поскольку адреса этого класса имеют 16-раз-рядный сетевой префикс. Максимально возможное число сетей класса B составляет 16 384 (214). Каждая
сеть этого класса поддерживает максимум 65 534 (216-2) хостов.
Так как весь адресный блок класса B содержит максимум 230 (1 073 741 824) индивидуальных адресов, он занимает 25% общего адресного пространства в протоколе IP.
Адреса класса C предназначены для сети с небольшим числом компьютеров. Каждая сеть класса C имеет 24-разрядный префикс сети, в котором три старших бита равны «110», а следующие 21 бит используются для определения номера сети. Для задания номера хоста служат оставшиеся 8 бит. Сети класса C так же обозначаются, как «/24», поскольку адреса этого класса имеют 24-разрядный сетевой префикс. Максимально возможное число сетей класса С составляет 2 097 152 (221). Каждая сеть этого класса поддерживает
максимум 254 (28-2) хоста. Так как весь адресный блок класса
С может содержать максимум 229 (536 870 912) индивидуальных адреса, он занимает 12,5% общего адресного пространства в протоколе IP.
Помимо этих трех наиболее популярных классов адресов существует еще два дополнительных класса — D и E. В классе D старшие четыре бита равны «1110»; этот класс используется для поддержки многоадресной передачи данных. В классе E старшие четыре бита равны «1111», и этот класс зарезервирован для экспериментального использования.
Для удобства восприятия адресов в технической литературе, в прикладных программах и т. д., IP-адреса обычно записываются в виде четырех десятичных чисел, разделенных точками, причем каждое из этих чисел представляет значение одного октета IP-адреса. (один октет соответствует 8 бит адреса, т. е. можно сказать, что весь IP-адрес состоит из четырех октетов.) На Рисунке 3 показано, как адрес класса B записывается в точечно-десятичной нотации.
Рисунок 3.
Пример записи IP-адреса в точечно-десятичной нотации.
Ниже приведены диапазоны десятичных значений трех классов адресов, где запись XXX представляет поле адреса хоста.
Диапазоны значений адресов трех классов:
- для класса А: 1.XXX.XXX.XXX — 126.XXX.XXX.XXX
- для класса B: 128.0.XXX.XXX — 191.255.XXX.XXX
- для класса C: 192.0.0.XXX — 223.255.255.XXX
Некоторые IP-адреса зарезервированы для определенных целей и не могут присваиваться конечным устройствам в сети. В Таблице 1 приведены зарезервированные IP-адреса.
Таблица 1 — ЗАРЕЗЕРВИРОВАННЫЕ IP-АДРЕСА | ||
Префикс сети | Номер хоста | Что означает |
Все биты установлены в «0» | Данное устройство | |
Номер сети | Все биты номера равны 0 | Данная IP-сеть |
Все биты равны 0 | Номер хоста | Устройство в данной IP-сети |
Все биты установлены в «1» | Все устройства в данной IP-сети | |
Номер сети | Все биты номера равны 1 | Все устройства в указанной сети |
127 (десятичное) | Что-нибудь (обычно 1) | Адрес обратной связи |
Как видно из таблицы 1, они характеризуют данное устройство, если все биты равны нулю, или данную сеть, если все биты номера хоста равны нулю. Адреса, все биты которых равны «1», используются при широковещательной передаче информации. Сетевой адрес класса A — 127.0.0.0 — зарезервирован для обратной связи (lookback) и введен для тестирования взаимодействия между процессами на одной машине. Когда приложение использует адрес обратной связи, стек TCP/IP возвращает эти данные приложению, ничего не посылая по сети. Данный адрес можно к тому же используется для взаимодействия отдельных приложений в пределах одной машины, поэтому в сетях, построенных на базе протокола IP, запрещается присваивать устройствам IP-адреса, начинающиеся с 127.
Помимо возможности направленной передачи информации определенному хосту отправитель может передать информацию всем хостам в указанной сети. В протоколе IP существует два типа широковещания: направленное и ограниченное. Направленное широковещание позволяет хосту в удаленной сети передать одну датаграмму, причем она будет доставлена всем хостам в адресованной сети. Датаграмма с направленным широковещательным адресом может проходить через маршрутизаторы в распределенной сети, при этом исходная датаграмма будет доставлена всем хостам только в нужной сети, но не в промежуточных сетях.
При направленном широковещании адрес получателя содержит корректный номер сети и номер хоста, все биты которого установлены в нули или единицы. Например, адреса 185.100.255.255 и 185.100.0.0 будут рассматриваться как адреса направленного широковещания для сети 185.100.ххх.ххх класса B. Таким образом, направленные широковещательные адреса обеспечивают мощный механизм, позволяющий удаленному устройству посылать одну IP-датаграмму, которая будет распространена в режиме широковещания в указанной сети.
Рисунок 4.
Пример широковещания в сети.
С точки зрения адресации главный недостаток направленного широковещания в том, что необходимо знание номера целевой сети. Вторая форма широковещания обеспечивает широковещательную передачу в пределах сети отправителя, независимо от указанного IP-адреса. Датаграмма с ограниченным широковещательным адресом никогда не будет проходить через маршрутизаторы.
При ограниченном широковещании биты номера сети и номера хоста состоят из всех нулей или единиц. Таким образом, датаграмма с адресом получателя 255.255.255.255 или 0.0.0.0 будет рассылаться в пределах данной сети. На Рисунке 4 показан пример сетей, связанных маршрутизаторами. В Таблице 2 приведен список получателей широковещательных датаграмм, отправляемых хостом A.
Таблица 2 — ПОЛУЧАТЕЛИ ШИРОКОВЕЩАТЕЛЬНОЙ ДАТАГРАММЫ, ПОСЫЛАЕМОЙ ХОСТОМ А | ||
Отправитель | IP-адрес получателя | Получатели |
Хост А | 255.255.255.255 | Хост А, Б и интерфейс 1 (И1) маршрутизатора М1 |
Хост А | 128.1.255.255 | Хост А, Б и И1 М1 |
Хост А | 128.2.255.255 | Хост С, В, Г, И2 М1 и И1 М2 |
Хост А | 128.3.255.255 | Хост Д, Е и И2 М2 |
Прежде чем использовать в сети протокол TCP/IP, необходимо получить один или несколько официальных сетевых номеров. Чтобы гарантировать их уникальность, все адреса назначаются одной организацией — Internet Network Information Center (InterNIC). До апреля 1993 года назначение IP-адресов осуществлялось организацией Network Information Center (NIC), которая в настоящее время выполняет запросы только для сетей Defense Data Network (DDN), иначе говоря, для военных целей. InterNIC назначает только сетевую часть адреса или сетевой префикс, оставляя ответственность за назначения номеров хостов в этой сети организации, запросившей данный адрес.
А ЕСЛИ КЛАССЫ СПРЯТАТЬ ПОД МАСКОЙ?
В 1985 году документом RFC 950 определен стандартный процесс поддержки формирования подсетей или разделения единственного номера сети классов А, B и C на меньшие части. Формирование подсетей было введено для разрешения следующих проблем:
- разбухания таблиц маршрутизации в маршрутизаторов Internet;
- дефицита номеров сетей при необходимости расширения их числа.
Обе эти проблемы решались за счет добавления еще одного уровня иерархии к адресной структуре протокола IP. Вместо двухуровневой иерархии концепция формирования подсетей вводит поддержку трехуровневой иерархии. На Рисунке 5 проиллюстрирована основная идея формирования подсетей, в соответствии с которой номер хоста разбивается на две части — номер подсети и номер хоста в этой подсети.
Рисунок 5.
Формирование подсетей.
Организация подсетей решает проблему роста таблиц маршрутизации за счет того, что структура подсетей корпоративной сети никогда не видима за пределами организации. Маршруты из Internet до любой подсети данного IP-адреса одинаковы вне зависимости от того, в какой подсети расположен получатель. Это стало возможным благодаря тому, что все подсети данного номера сети используют один и тот же сетевой префикс, но с разными номерами подсетей. Маршрутизаторы в частной сети должны различать отдельные подсети, но у маршрутизаторов в Internet все данные подсети определены единственной записью в таблицах маршрутизации. Это позволяет администратору частной сети вносить любые изменения в логическую структуру сети без влияния на размер таблиц маршрутизации на маршрутизаторах в сети Internet.
Формирование подсетей позволяет также решить вторую проблему, связанную с выделением организации нового сетевого номера или номеров при ее росте. Организации можно выделить один номер сети, затем администратор имеет возможность произвольно присваивать номера подсетей для каждой из своих внутренних сетей. Это позволяет внедрять дополнительные подсети без необходимости получения нового сетевого номера.
Рисунок 6 показывает корпоративную распределенную сеть, состоящую из нескольких логических сетей, использующих концепцию подсетей внутри одного адреса класса B. Граничный маршрутизатор получает весь трафик из Internet, адресованный сети 130.5.0.0, и передает его внутренним подсетям, основываясь на информации, содержащейся в третьем октете.
Рисунок 6.
Введение подсетей в организации.
Формирование подсетей внутри частной сети организации позволяет извлечь следующие преимущества:
- ограничение размера глобальных таблиц маршрутизации в сети Internet,
так как администратор частной сети не нуждается в получении дополнительной
адресной информации; - возможность по своему усмотрению реализовывать дополнительные подсети
без получения новых номеров сетей.
Изменение топологии частной сети не влияет на таблицы маршрутизации в сети Internet, поскольку маршрутизаторы в Internet не имеют маршрутов в индивидуальные подсети организации — они знают только маршрут к самой сети.
Если маршрутизаторы в Internet используют только сетевой префикс адреса получателя для передачи трафика в совокупность подсетей, то маршрутизаторы внутри этой совокупности анализируют расширенный сетевой префикс для передачи трафика индивидуальным подсетям. Расширенный сетевой префикс состоит из префикса сети и номера подсети (см. Рисунок 7).
Рисунок 7.
Расширенный сетевой префикс.
Расширенный сетевой префикс можно идентифицировать с помощью маски подсети (subnet mask). Маска подсети — это число, двоичная запись которого содержит единицы в разрядах, интерпретируемых как номер сети. Маска подсети позволяет провести четкую границу между двумя частями IP-адреса. Одна часть идентифицирует номер подсети, вторая — предназначается для идентификации хостов в этой подсети.
Хосты и маршрутизаторы используют старшие биты IP-адреса для определения его класса. После того как класс определен, хост может легко найти границу между битами номера сети и номера хоста в этой сети. Однако класс адреса ничем не может помочь в определении номера подсети. Для решения данного вопроса служит 32-разрядная маска подсети, позволяющая однозначно определить требуемую границу. Для стандартных классов сетей маски имеют следующие значения:
- 255.0.0.0 — маска для сети класса А;
- 255.255.0.0 — маска для сети класса B;
- 255.255.255.0 — маска для сети класса C.
Например, если в случае адреса класса B 130.5.0.0 сетевой администратор хочет использовать весь третий октет для представления номера подсети, ему необходимо указать маску подсети 255.255.255.0. Биты в маске подсети имеют взаимнооднозначное соответствие. Они должны быть заданы равными единице, если система проверки адреса должна рассматривать соответствующий бит в IP-адресе как часть расширенного сетевого префикса. Иными словами, после определения класса IP-адреса любой бит в части номера хоста используется для идентификации номера подсети, если бит в соответствующей позиции в маске подсети равен единице. Оставшаяся часть номера хоста — ей отвечают нулевые биты маски подсети — служит для задания номера хоста. В Таблице 3 приведен пример IP-адреса класса B с соответствующей маской подсети.
Таблица 3 — ПРИМЕР ИСПОЛЬЗОВАНИЯ МАСКИ ПОДСЕТИ | |||||
Сетевой префикс | Номер подсети | Номер хоста | |||
IP-адрес | 130.5.5.25 | 10000010. | 00000101. | 00000101. | 00011001 |
Маска подсети | 255.255.255.0 | 11111111. | 11111111. | 11111111. | 00000000 |
Расширенный сетевой префикс |
В стандартах, описывающих современные протоколы маршрутизации, часто дается ссылка на длину расширенного сетевого префикса, а не на маску подсети. Данная длина эквивалентна числу заданных равными единице бит в традиционной маске подсети. Это означает, что сетевой адрес 130.5.5.25 с маской подсети 255.255.255.0 так же может быть записан, как 130.5.5.25 /24. Число 24 указывает, что в маске подсети 255.255.255.0 число единичных бит равно 24. Такая запись более компактна и легка для понимания, нежели маска подсети в ее традиционной точечно-десятичной нотации. В Таблице 4 приведен пример использования записи расширенного сетевого префикса.
Таблица 4 — ПРИМЕР ИСПОЛЬЗОВАНИЯ ДЛИНЫ РАСШИРЕННОГО СЕТЕВОГО ПРЕФИКСА | ||||
Сетевой префикс | Номер подсети | Номер хоста | ||
130.5.5.25 | 10000010. | 00000101. | 00000101. | 00011001 |
255.255.255.0 | 11111111. | 11111111. | 11111111. | 00000000 |
Или эквивалентная запись | ||||
24-битовый расширенный сетевой префикс | Номер хоста | |||
130.5.5.25 /24 | 10000010. | 00000101. | 00000101. | 00011001 |
Однако следует отметить, что большинство современных протоколов маршрутизации передает именно маску подсети в своих сообщениях. В то же время стандартного протокола маршрутизации, который имел бы дополнительное однобайтовое поле в заголовке своих сообщений с указанием числа битов в расширенном сетевом префиксе, не существует. Каждый протокол маршрутизации передает полную четырехоктетную маску подсети.
Перед тем как реализовывать сеть на базе протокола IP, сетевому администратору следует ответить на четыре важных вопроса.
- Сколько подсетей необходимо организации сегодня?
- Сколько подсетей может потребоваться организации в будущем?
- Сколько хостов существует в наибольшей подсети организации сегодня?
- Сколько хостов может понадобиться в наибольшей подсети организации
в будущем?
Первым шагом в процессе планирования является определение максимального количества требуемых подсетей. Данное число округляется до ближайшей степени двойки. При выполнении этой оценки важно учесть возможное увеличение числа подсетей в будущем. На втором шаге проверяется факт существования достаточного количества адресов хостов в наибольшей подсети организации. И в заключение проверяется, что выделенный организации класс адресов предоставляет необходимое для определения подсетей количество бит.
Рассмотрим пример создания подсетей. Предположим, что организация получила сеть класса C 193.1.1.0, и ей необходимо сформировать шесть подсетей. Наибольшая подсеть должна поддерживать 25 хостов. На первом шаге определяется число битов, требуемых для определения необходимых шести подсетей. Поскольку найти число, при котором два в какой-либо степени равнялось шести, невозможно, то в данном примере администратор должен определить восемь подсетей (23 = 8), т. е. для выделения подсетей будут использованы три бита из выделенного адреса.
В данном примере организации выделен адрес класса С, с записью расширенного сетевого префикса как /24, а значит, полученный после выделения подсетей, расширенный сетевой префикс будет записан как /27 (24 + 3 = 27). Этот расширенный сетевой префикс имеет эквивалентное значение маски подсети 255.255.255.224 как показано в Таблице 5.
Таблица 5 — ОПРЕДЕЛЕНИЕ МАСКИ ПОДСЕТИ В ОРГАНИЗАЦИИ | ||||||
Сетевой префикс | Байт для задания номеров хостов в данной сети | |||||
Байты для задания номера сети | Биты для номеров подсетей | Биты для номеров хостов | ||||
Адрес | 193.1.1.0 | 11000001. | 00000001. | 00000001. | 000 | 00000 |
Маска подсети | 255.255.255.224 | 11111111. | 11111111. | 11111111. | 111 | 00000 |
Или эквивалентная запись | ||||||
Адрес | 193.1.1.0 /27 | 11000001.00000001.00000001.000 | 00000 |
Необходимо отметить, что расположение номера подсети сразу после сетевого префикса необязательно, — администратор может задавать биты в маске подсети независимо от остальной части адреса. В примере с адресом 193.1.1.0 /27 четвертый байт маски подсети вместо (111000002) может быть,
например, задан равным (000111002). Однако на практике в большинстве случаев так не поступают.
Используемый 27-разрядный расширенный сетевой префикс оставляет 5 бит для задания номеров хостов в каждой из подсетей. Это означает, что в каждой подсети может быть определено до 32 (25 = 32) индивидуальных
адресов хостов. Однако адреса, у которых все биты равны или нулю, или единице,
являются зарезервированными, так что общее число адресов хостов в каждой
подсети становится равным 30 (25 — 2 = 30).
Для определения какой-либо подсети, сетевой администратор помещает двоичное представление номера этой подсети (а в нашем случае для восьми подсетей это может быть число от 0 до 7) в битовое поле номера подсети. Например, для определения подсети #4 администратор просто помещает двоичное представление числа 4 (1002) в трехбитовое поле номера подсети. В Таблице 6 приведены все восемь возможных вариантов подсетей для рассматриваемого примера.
Таблица 6 — ВОЗМОЖНЫЕ ВАРИАНТЫ ПОДСЕТЕЙ | ||
Точечно-десятичная нотация | Двоичное представление адреса | |
Базовая сеть | 193.1.1.0 /24 | 11000001.00000001.00000001.00000000 |
Подсеть #0 | 193.1.1.0 /27 | 11000001.00000001.00000001.00000000 |
Подсеть #1 | 193.1.1.32 /27 | 11000001.00000001.00000001.00100000 |
Подсеть #2 | 193.1.1.64 /27 | 11000001.00000001.00000001.01000000 |
Подсеть #3 | 193.1.1.96 /27 | 11000001.00000001.00000001.01100000 |
Подсеть #4 | 193.1.1.128 /27 | 11000001.00000001.00000001.10000000 |
Подсеть #5 | 193.1.1.160 /27 | 11000001.00000001.00000001.10100000 |
Подсеть #6 | 193.1.1.192 /27 | 11000001.00000001.00000001.11000000 |
Подсеть #7 | 193.1.1.224 /27 | 11000001.00000001.00000001.11100000 |
Самый простой способ проверить, что все подсети корректно определены, — это проконтролировать кратность всех десятичных номеров подсетей номеру подсети #1. В данном примере все номера подсетей кратны 32.
Опубликованная в документе RFC 950 схема введения подсетей запрещала использование номера подсетей, у которых все биты равны единицам или нулям. Причиной такого ограничения стала необходимость в устранении возможных проблем, связанных с работой протоколов маршрутизации, которые не передают в своих служебных сообщениях ни маски подсети, ни длины расширенного сетевого префикса. Например, протокол маршрутизации RIP версии 1 рассматривает маршруты в разные подсети с адресами 193.1.1.0 /27 и 193.1.1.0 /24 как идентичные. Иными словами, без указания маски подсети маршрутизатор не делает различий между маршрутом в одну подсеть и во всю сеть. Аналогичная проблема, но только с определением направления широковещания возникает и в случае всех битов, равных единице. Один и тот же адрес 193.1.1.255 является широковещательным для всей сети 193.1.1.0 /24 и для подсети 193.1.1.224 /27. В Таблице 7 отображены обе рассмотренные ситуации.
Таблица 7 — ИДЕНТИЧНЫЕ МАРШРУТЫ И ШИРОКОВЕЩАТЕЛЬНЫЕ АДРЕСА | ||||
Маршруты в Сети | 24-битовый расширенный сетевой префикс | |||
193.1.1.0 /24 | 11000001. | 00000001. | 00000001. | 00000000 |
27-битовый расширенный сетевой префикс | ||||
193.1.1.0 /27 | 11000001. | 00000001. | 00000001.000 | 00000 |
Широковещательные адреса | 24-битовый расширенный сетевой префикс | |||
193.1.1.0 /24 | 11000001. | 00000001. | 00000001. | 11111111 |
27-битовый расширенный сетевой префикс | ||||
193.1.1.224 /27 | 11000001. | 00000001. | 00000001.111 | 11111 |
С разработкой протоколов маршрутизации, передающих маску подсети (OSPF, IS-IS) с каждым рекламируемым маршрутом, подсети, все биты номера которых равны единице и нулю, могут использоваться, вопреки документу RFC 950. В результате производители позволяют настраивать подсети с такими номерами на портах своих маршрутизаторов. При этом, однако, следует учитывать, что, во-первых, используемые в корпоративной сети протоколы маршрутизации, относящиеся к классу IGP, должны поддерживать маску подсети или расширенный сетевой префикс и, во-вторых, все маршруты в сети должны понимать номера подсетей со всеми единичными и нулевыми битами. Кроме того, иногда приходится принимать в расчет номер версии программного обеспечения маршрутизатора. Например, маршрутизатор фирмы 3Com NETBuilder II обеспечивает полную поддержку таких подсетей и их корректную маршрутизацию в версии 8.3.0.2.
В примере (Таблица 5) остается 5 бит для задания адресов хостов в каждой подсети. В результате каждая подсеть может содержать блок из 30 адресов хостов (25 — 2 = 30), которые нумеруются от 1 до 30. Для определения
адреса хоста N в сети, администратор помещает двоичное представление числа
N в поле номера хоста. Например, для определения адреса, который необходимо
присвоить хосту #28 в подсети #2, администратор просто помещает двоичное
представление 28 (11102) в пятибитовое поле подсети #2. В Таблице 8 приведены некоторые возможные комбинации номеров хостов в подсети #2.
Таблица 8 — ВОЗМОЖНЫЕ ВАРИАНТЫ АДРЕСОВ ХОСТОВ В ПОДСЕТИ #2 | ||
Точечно-десятичная нотация | Двоичное представление | |
Подсеть #2 | 193.1.1.64 /27 | 11000001.00000001.00000001.01000000 |
Хост #1 | 193.1.1.65 /27 | 11000001.00000001.00000001.01000001 |
Хост #2 | 193.1.1.66 /27 | 11000001.00000001.00000001.01000010 |
Хост #3 | 193.1.1.67 /27 | 11000001.00000001.00000001.01000011 |
… | ||
Хост #28 | 193.1.1.92 /27 | 11000001.00000001.00000001.01011100 |
Хост #29 | 193.1.1.93 /27 | 11000001.00000001.00000001.01011101 |
Хост #30 | 193.1.1.94 /27 | 11000001.00000001.00000001.01011110 |
Широковещательный адрес для подсети #2 | ||
193.1.1.95 | 11000001.00000001.00000001.01011111 |
Проверить корректность широковещательного адреса для определенной подсети можно с помощью следующего простого правила. Во всех случаях широковещательный адрес для подсети #N на единицу меньше базового адреса для подсети #(N+1). Например, широковещательный адрес для подсети #2 (193.1.1.95) на единицу меньше базового адреса подсети #3 (193.1.1.96).
Перед передачей датаграммы хосту необходимо определить следующее.
- Располагается ли получатель в той же подсети, где и отправитель?
- Если пакет в нужную сеть может быть передан более чем одним маршрутизатором,
какой маршрутизатор необходимо использовать отправителю?
До введения подсетей процесс передачи выполнялся путем извлечения поля сетевого номера из IP-адреса получателя, содержащегося в заголовке IP-датаграммы, и последующего сравнения с собственным IP-адресом хоста. Если сетевые номера адреса отправителя и получателя совпадают, то они располагаются в одной локальной сети, и датаграмма может быть передана напрямую. Если номера сетей разные, то датаграмму необходимо посылать получателю, используя маршрутизатор по умолчанию.
С введением подсетей этот процесс значительно усложнился, так как получатель может располагаться в другой подсети той же самой сети, что и отправитель. В этом случае используется маска подсети. После выполнения операции логическое «И» между IP-адресом получателя и маской подсети результат сравнивается с результатом этой же операции, но для собственного IP-адреса хоста и той же маски подсети. Если результаты двух операций идентичны, то отправитель и получатель находятся в одной подсети, и датаграмма может быть послана напрямую; если различны, то получатель находится в другой подсети. В этом случае датаграмма посылается маршрутизатору.
При присваивании номеров подсетям и хостам администратор должен следовать одному основному правилу, описанному в документе RFC 1219: номера подсетей назначают таким образом, чтобы старшие биты в номере подсети задавались первыми. Например, если поле номера подсети состоит из четырех бит, то первые несколько номеров подсетей должны быть следующими: 8 (1002),
4 (0102), 12 (1102), 2 (0012), 6 (0112) и т. д. Иными словами, единичные биты номеров подсетей рекомендуется задавать начиная с крайне левой позиции, а единичные биты номеров хостов — с крайне правой позиции (см. Таблицу 9).
Таблица 9 — ПРИМЕР ПРИСВОЕНИЯ НОМЕРОВ ПОДСЕТЕЙ И ХОСТОВ | |||
Сетевой префикс | Номер подсети | Номер хоста | |
11111111. | 11111111. | 4 бит | Оставшиеся 12 бит |
Рекомендуемая схема присвоения адресов | |||
Биты подсетей | Биты хостов | ||
128 = | 1000 0000. 0000 0001 | = 1 | |
64 = | 0100 0000. 0000 0010 | = 2 | |
192 = | 1100 0000. 0000 0011 | = 3 | |
32 = | 0010 0000. 0000 0100 | = 4 | |
160 = | 1010 0000. 0000 0101 | = 5 | |
96 = | 0110 0000. 0000 0110 | = 6 | |
224 = | 1110 0000. 0000 0111 | = 7 |
Если следовать данному правилу, то между номером подсети и номером хоста будут оставаться нулевые биты. Это позволяет изменять маску подсети без изменения IP-адреса, присвоенного хосту. Необходимость в изменении маски подсети может возникнуть при увеличении числа хостов в каждой подсети с учетом того, что планируемое число возможных подсетей обычно больше, чем требуется в настоящий момент. В этом случае некоторые биты можно «заимствовать» из числа зарезервированных под номера подсетей. Достоинство описанного правила в том, что администратору достаточно изменить маску подсети на каждом хосте, а не переконфигурировать IP-адреса хостов во всей организации. Изменение адресов может потребовать больших усилий от администратора, так как обычно оно сопряжено с модификацией почтовых сервисов, статических таблиц маршрутизации и т. д.
В сети, которая была разбита на подсети, можно использовать два типа широковещательной передачи информации: направленное и ограниченное. Направленное широковещание служит для передачи датаграммы всем хостам в определенной подсети. Для посылки датаграммы всем хостам во всех подсетях необходимо использовать ограниченное широковещание, с адресом 255.255.255.255. Однако необходимо учесть, что маршрутизаторы не пропускают датаграммы с таким адресом. Среды с подсетями накладывают одно ограничение на направленное широковещание. Выделенные для формирования номеров подсетей биты обычно являются частью поля номера хоста и не могут быть все одновременно заданы равными нулю или единице. Например, в случае адреса класса B, в котором третий байт выделен под номера подсетей — 128.1.<Номер подсети>.<Номер хоста>, адрес направленного широковещания не может быть равным 128.1.255.255, 128.1.0.255, 128.1.255.0 или 128.1.0.0.
Рисунок 8.
Пример широковещания в сети.
На Рисунке 8 показан пример сетей, связанных маршрутизаторами. Каждый из маршрутизаторов содержит маршруты во все подсети в данной топологии. Маска подсети равна 255.255.255.0. В таблице 10 приведен список получателей широковещательных датаграмм, отправляемых хостом A.
Таблица 10 — ПОЛУЧАТЕЛИ ШИРОКОВЕЩАТЕЛЬНОЙ ДАТАГРАММЫ, ПОСЫЛАЕМОЙ ХОСТОМ А | ||
Отправитель | IP-адрес получателя | Получатели |
Хост А | 255.255.255.255 | Хост Б и порт 1 (П1) маршрутизатора М1 |
Хост А | 128.1.1.255 | Хост Б и П1 М1 |
Хост А | 128.1.2.255 | Хост В, Г, П2 М1 и П1 М2 |
Хост А | 128.1.3.255 | Хост Д, Е и П2 М2 |
С Максимом Кульгиным можно связаться по адресу: mk@mail.admiral.ru.
-
Классы адресов, номера сетей и номера хостов
Значение первого
октета в IP-адресе определяет, к какому
классу (А, В или С) относится данный
адрес. Эта величина определяет также и
число разрядов в адресе, которые
используются для обозначения номера
сети и номера хоста. Если значение
первого октета в IP-адресе находится в
диапазоне от 1 до 126, то адрес принадлежит
к классу А. В этом случае первый октет
(8 разрядов) обозначает номер сети, а
последние три октета (24 разряда) обозначают
номер хоста. Например, IP-адрес 95.56.187.5
обозначает сеть с номером 95 и хост с
номером 56.187.5. Если значение первого
октета в IP-адресе находится в диапазоне
от 128 до 191, то адрес относится к классу
В. В этом случае первые два октета (16
разрядов) указывают номер сети, а
последние два октета (16 разрядов)
указывают номер хоста. Наконец, если
значение первого октета в IP-адресе
находится в диапазоне от 192 до 223, то
адрес принадлежит к классу С. В этом
случае первые три октета (24 разряда)
обозначают номер сети, а последний октет
обозначает номер хоста. IP-адреса со
значениями первых октетов, равными 0,
127 и 224-255 являются зарезервированными
для специальных случаев. (табл. 2.5)
Таблица 2.5. Классы IP-адресов
Класс | Первый октет | Октетов в номере сети | Октетов в номере хоста | Возможное число сетей | Возможное число хостов | |
от | до | |||||
0 | 0 | зарезервировано | ||||
А | 1 | 126 | 1 | 3 | 126 | 16 777 214 |
127 | 127 | зарезервировано | ||||
В | 128 | 191 | 2 | 2 | 16 384 | 65 534 |
С | 192 | 223 | 3 | 1 | 2 097 152 | 254 |
D | 224 | 239 | — | 4 | — | 228 |
E | 240 | 255 | зарезервировано на будущее |
Существуют еще 2
специальных класса сетей D (групповые
адреса) и Е (зарезервированные адреса).
Адреса класса D используются при
обращениях к группам машин, а адреса
класса E зарезервированы на будущее. В
сетях класса D под номер сети отводятся
4 старших байта из первого октета, а в
сетях класса Е для этой цели отводятся
5 старших байтов.
-
Зарезервированные номера хостов
Число разрядов,
используемых для обозначения номера
хоста, в зависимости от класса адреса
может составлять 8, 16 или 24. Однако, два
номера хоста всегда остаются
зарезервированными: номер, получающийся
при заполнении всех разрядов в номере
хоста в IP-адресе нолями (нолевой номер);
и номер, получающийся при заполнении
всех разрядов в номере хоста в
IP-адресе единицами (его значение
зависит от числа разрядов).
Эти зарезервированные
номера хостов имеют специальное
назначение. IP-адрес с нолевым номером
хоста используется для адресации ко
всей сети. Например, в сети класса Cс номерами195.60.32.0-195.60.32.255IP-адрес195.60.32.0обозначает сеть в целом.
Если все разряды в
номере хоста в IP-адресе заполнены
единицами, то широковещательное сообщение
будет разослано всем хостам в этой сети.
Предположим, например, что один из
хостов в сети класса Cс
сетевым адресом195.60.32.0собирается
направить сообщение всем остальным
хостам, находящимся в той же сети. В этом
случае сообщение должно быть передано
на адрес195.60.32.255.
Когда программа
посылает данные по IP-адресу 127.0.0.1,
то образуется «петля». Данные не
передаются по сети, а возвращаются
модулям верхнего уровня, как только что
принятые. Поэтому в IP-сети запрещается
присваивать машинам IP-адреса, начинающиеся
со 127.(табл. 2.6)
Таблица 2.6 Выделенные IP-адреса
0.0.0.0 | Данный узел |
Номер сети.все ноли (195.45.226.0) | Данная IP-сеть |
Все ноли.номер узла (0.0.0.22) | Узел в данной (локальной) IP-сети |
255.255.255.255 | Все узлы в данной (локальной) IP-сети |
Номер сети.все единицы (195.45.226.255) | Все узлы в указанной IP-сети |
127.0.0.1 | Петля |
Соседние файлы в предмете Технология проектирования информационных систем
- #
- #
- #
30.04.201364 б6descript.ion
- #
- #
- #
- #
Как вы рассчитываете префикс, сеть, подсеть и номера хостов?
Пример:
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 на четыре равные подсети:
Поскольку нам нужно всего четыре подсети из всего блока 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-адреса:
Предположим, кто-то дает нам два IP-адреса и ожидает, что мы найдем самую длинную маску сети, которая содержит их оба; например, что если бы у нас было:
- 128.42.5.17
- 128.42.5.67
Самое простое, что нужно сделать — это преобразовать оба в двоичный файл и найти самую длинную строку битов сети в левой части адреса.
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 завершена. Для удобства, вот оно снова:
- Сетевой адрес: 195.70.16.156
- Первый доступный адрес: 195.70.16.157
- Последний доступный адрес: 195.70.16.158
- Адрес трансляции: 195.70.16.159
В качестве ярлыка вы также можете использовать эту формулу. Работает в подсетях любого размера:
- Первый используемый адрес = Сетевой адрес + 1
- Широковещательный адрес = следующий сетевой адрес — 1
- Последний используемый адрес = широковещательный адрес — 1
Я не хочу ничего отнимать от превосходного ответа Майка Пеннингтона , который я неуклонно продвигал, но я продолжаю видеть вопросы, которые непосредственно не затрагиваются его ответом, и я создал что-то, что изначально было основано на ответе Майка, но я имею больше информации для решения вопросов, которые возникли с течением времени. К сожалению, он слишком большой, и мне пришлось разбить его на два ответа.
Часть 1 из 2
IPv4 Math
Учитывая IPv4-адрес и сетевую маску IPv4 (сетевая маска также может быть получена из длины сетевой маски или маски хоста), вы можете определить много информации о сети IPv4: сетевой адрес, сетевой широковещательный адрес, общее количество адресов хоста, общее количество используемых Адреса хостов, первый используемый адрес хоста и последний используемый адрес хоста.
Я не могу не подчеркнуть, что вы должны делать IPv4 математику в двоичном формате. Я думаю, что каждый сетевой инженер (или потенциальный сетевой инженер) пытался найти способ сделать все это в десятичном формате, как я уверен, что вы будете *. Проблема в том, что 10 (десятичное) не является степенью 2 (двоичное), поэтому десятичное и двоичное не преобразовываются естественным образом между собой так, как шестнадцатеричное (основание 16) естественным образом преобразуется в двоичное и обратно, потому что 16 является степенью 2 ,
Похоже, что использование точечно-десятичной нотации для IPv4 было ранней ошибкой, которую сейчас нельзя исправить, но IPv6 с самого начала перенял шестнадцатеричное использование, и его легко преобразовать в шестнадцатеричное и двоичное.
Если у вас нет IP-калькулятора (вероятно, он не разрешен в экзаменах по сетевому обучению или в сертификационных тестах), полезно составить диаграмму значений битов в октете. Поскольку это двоичный код, каждое значение бита в 2 раза превышает одно и то же значение цифры в следующей младшей цифре. Каждая цифра — это число, умноженное на одно и то же значение цифры в следующей младшей цифре. Это также верно для любой другой числовой базы, включая десятичную (основание 10), где каждое цифровое значение в 10 раз превышает значение того же цифрового значения в следующей позиции менее значимого числа. Для двоичных цифр (бит):
---------------------------------------------------------
| Bit # | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---------------------------------------------------------
| Value | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---------------------------------------------------------
Там, где десятичная дробь — это степени 10, двоичная — это степени 2. Обратите внимание, что для каждого номера бита в приведенной выше таблице соответствующее значение равно 2 степени бита.
For our example IPv4 dotted-decimal address of 198.51.100.223:
1st octet: 198 = 128 + 64 + 0 + 0 + 0 + 4 + 2 + 0 = 11000110
2nd octet: 51 = 0 + 0 + 32 + 16 + 0 + 0 + 2 + 1 = 00110011
3rd octet: 100 = 0 + 64 + 32 + 0 + 0 + 4 + 0 + 0 = 01100100
4th octet: 223 = 128 + 64 + 0 + 16 + 8 + 4 + 2 + 1 = 11011111
For our example IPv4 binary address of 11000110001100110110010011011111:
1st octet: 11000110 = 128 + 64 + 0 + 0 + 0 + 4 + 2 + 0 = 198
2nd octet: 00110011 = 0 + 0 + 32 + 16 + 0 + 0 + 2 + 1 = 51
3rd octet: 01100100 = 0 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 100
4th octet: 11011111 = 128 + 64 + 0 + 16 + 8 + 4 + 2 + 1 = 223
Вам также нужно будет запомнить свои Таблицы правды из школы (в двоичной математике 0 — Ложь, а 1 — Истина):
-----------------------------------------
| False AND False = False | 0 AND 0 = 0 |
-----------------------------------------
| False AND True = False | 0 AND 1 = 0 |
-----------------------------------------
| True AND False = False | 1 AND 0 = 0 |
-----------------------------------------
| True AND True = True | 1 AND 1 = 1 |
-----------------------------------------
-----------------------------------------
| False OR False = False | 0 OR 0 = 0 |
-----------------------------------------
| False OR True = True | 0 OR 1 = 1 |
-----------------------------------------
| True OR False = True | 1 OR 0 = 1 |
-----------------------------------------
| True OR True = True | 1 OR 1 = 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-битный двоичный адрес разделен на четыре октета, затем каждый двоичный октет преобразуется в десятичное число *:
Binary address: 11000110001100110110010011011111
---------------------------------------------
Binary octets: | 11000110 | 00110011 | 01100100 | 11011111 |
Decimal octets: | 198 | 51 | 100 | 223 |
---------------------------------------------
Dotted-decimal: 198.51.100.223
Поскольку каждый октет имеет длину восемь битов, каждый октет будет иметь значение между 0
и 255
(любые значения больше 255
недопустимых). Причина в том, что 2^8 = 256
: 2
(база двоичных чисел) в степени 8
(восемь битов на октет) равна 256
количеству различных значений, которые могут быть выражены восьмибитным октетом. Помните, что первое значение равно 0
, поэтому 256
значение th будет на единицу меньше общего числа значений, которые могут быть выражены ( 256 – 1 = 255
).
Чтобы правильно выполнять математику IPv4, вы должны делать это в двоичном формате, в противном случае вы будете делать ошибки, которые вызовут у вас проблемы и разочарование. Это означает, что вы должны преобразовать десятичную запись с точками в двоичную форму, прежде чем пытаться манипулировать ею:
Dotted-decimal: 198.51.100.223
---------------------------------------------
Decimal octets: | 198 | 51 | 100 | 223 |
Binary octets: | 11000110 | 00110011 | 01100100 | 11011111 |
---------------------------------------------
Binary address: 11000110001100110110010011011111
* Ведущие нули в точечно-десятичном адресе IPv4 могут интерпретироваться некоторыми приложениями и языками программирования как восьмеричные (основание 8), а не десятичные (основание 10), что приводит к ошибкам и следует избегать начальных нулей для представления IPv4 с точками и десятичными точками, но начальные нули необходимы для двоичных октетов IPv4-адресов, поскольку они представляют позиции битов в полном адресе, а пропуск позиции бита приведет к сокращению адреса и изменению двоичного значения.
Сетевая маска IPv4
Маска сети IPv4 используется для разделения адреса IPv4 на две части: сетевую часть и часть хоста. Деление может быть с любым битовым числом, поэтому оно может находиться в пределах октета, а не на границе октета, как многие люди ошибочно полагают, что это всегда происходит. Маска сети IPv4 имеет тот же размер, что и адрес IPv4 (32 бита), и она выражается в десятично-точечной нотации так же, как если бы вы выражали адрес IPv4 в десятично-точечной нотации (четыре восьмибитных октета, разделенных период). Например, 255.255.248.0
.
Маска сети IPv4 состоит из нескольких последовательных 1
битов (представляющих сетевую часть адреса), за которыми следует количество 0
битов (представляющих хост-часть адреса). Общее количество 1
битов и общее количество 0
битов складывается до 32
количества бит в адресе IPv4 или сетевой маске. Для нашего примера маска сети:
Dotted-decimal: 255.255.248.0
------------------------------------------------
Decimal octets: | 255 | 255 | 248 | 0 |
Binary octets: | 11111111 | 11111111 | 11111 | 000 | 00000000 |
------------------------------------------------
| 21 Network bits | 11 Host bits |
------------------------------------------------
Как вы можете видеть, разделение между частями сети и хоста адреса IPv4 с использованием этой конкретной маски находится в пределах октета, а не на границе октета.
Маска сети IPv4 часто представляется количеством последовательных 1
битов в маске. Это по-разному называется длиной маски сети или длиной префикса, и она представлена как /
число последовательных 1
битов в маске сети. В нашем примере подсчитывается количество последовательных 1
битов 21
, которое можно представить как /21
.
Учитывая длину маски, вы можете вычислить точечно-десятичное представление маски. Просто запишите количество 1
битов для длины маски и добавьте достаточно 0
битов в конце к общему количеству 32
битов. Преобразуйте полученное двоичное число в десятичное представление с точками:
Mask length: /21
------------------------------------------------
| 21 Network bits | 11 Host bits |
------------------------------------------------
Binary octets: | 11111111 | 11111111 | 11111 | 000 | 00000000 |
Decimal octets: | 255 | 255 | 248 | 0 |
------------------------------------------------
Dotted-decimal: 255.255.248.0
Пример может быть представлен традиционно как 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
:
Decimal address: 198.51.100.223/21
Binary address octets: 11000110 00110011 01100100 11011111
Binary mask octets: 11111111 11111111 11111000 00000000 AND
-----------------------------------
Binary network octets: 11000110 00110011 01100000 00000000
Decimal network octets: 198 51 96 0
Dotted-decimal network: 198.51.96.0
Как видите, сетевой адрес 198.51.100.223/21
есть 198.51.96.0
. Обратите внимание, что вы не можете полагаться на то, что октеты сообщают вам, какая часть адреса является сетью, а какая часть адреса для хостов.
Вы можете использовать этот метод, чтобы определить, находятся ли два адреса в одной или разных сетях *. Например, если вы хотите узнать, находится ли ваш 198.51.100.223/21
адрес в той же сети IPv4, где хосту назначен 198.51.102.57
адрес, определите свой сетевой адрес IPv4 (как указано выше). Затем определите сетевой адрес IPv4 рассматриваемого хоста, используя маску сети IPv4 (хосты в той же сети используют ту же маску сети, и у вас может не быть маски, только адрес хоста назначения):
Decimal address: 198.51.102.57/21
Binary address octets: 11000110 00110011 01100110 00111001
Binary mask octets: 11111111 11111111 11111000 00000000 AND
-----------------------------------
Binary network octets: 11000110 00110011 01100000 00000000
Decimal network octets: 198 51 96 0
Dotted-decimal network: 198.51.96.0
Сравните полученный сетевой адрес IPv4 с исходным сетевым адресом IPv4 и обратите внимание, что сетевые адреса равны, поэтому адреса узлов находятся в одной сети.
Теперь, давайте посмотрим, если вы находитесь в той же сети, что и 74.125.69.100
адрес Google:
Decimal address: 74.125.69.100/21
Binary address octets: 01001010 01111101 01000101 01100100
Binary mask octets: 11111111 11111111 11111000 00000000 AND
-----------------------------------
Binary network octets: 01001010 01111101 01000000 00000000
Decimal network octets: 74 125 64 0
Dotted-decimal network: 74.125.64.0
Сравните полученный сетевой адрес IPv4 с исходным сетевым адресом IPv4 и обратите внимание, что сетевые адреса разные, поэтому адреса узлов находятся в разных сетях.
* Это метод, используемый исходным хостом для определения, является ли он хостом назначения в той же сети, что и исходный хост.
IPv4 Host Mask
Одно полезное, часто упускаемое из виду значение, которое полезно при адресации IPv4, — это маска хоста IPv4. Маска хоста IPv4 — это просто обратная маска сети IPv4. Вы можете создать бинарную маску хоста из бинарной маски сети или бинарную маску сети из бинарной маски хоста, просто инвертируя 1
s и 0
s начальной маски:
Dotted-decimal network mask: 255.255.248.0
Decimal network mask octets: 255 255 248 0
Binary network mask octets: 11111111 11111111 11111000 00000000 invert
-----------------------------------
Binary host mask octets: 00000000 00000000 00000111 11111111
Decimal host mask octets: 0 0 7 255
Dotted-decimal host mask: 0.0.7.255
Можно математически создать маску хоста из маски сети или маску сети из маски хоста, вычитая начальную маску из самой длинной маски ( /32
или маски «все единицы»).
Это можно сделать в двоичном виде:
Binary all-ones mask octets: 11111111 11111111 11111111 11111111
Binary network mask octets: 11111111 11111111 11111000 00000000 -
-----------------------------------
Binary host mask octets: 00000000 00000000 00000111 11111111
Decimal host mask octets: 0 0 7 255
Dotted-decimal host mask: 0.0.7.255
Это также может быть выполнено в десятичном формате (это октет «все единицы» 255
), но не забудьте преобразовать его в двоичный файл, прежде чем пытаться использовать его для манипулирования адресами:
Decimal all-ones mask octets: 255 255 255 255
Decimal network mask octets: 255 255 248 0 -
---------------
Decimal host mask octets: 0 0 7 255
Dotted-decimal host mask: 0.0.7.255
Сетевой широковещательный адрес IPv4
Сетевой широковещательный адрес IPv4 — это сетевой адрес IPv4 со всеми установленными битами хоста 1
. Существует несколько способов вычисления широковещательного адреса IPv4.
Для нашего примера IPv4-адрес 198.51.100.223
и маска сети 255.255.248.0
.
Вы можете выполнить побитовую обработку OR
с IPv4-адресом или сетевым адресом с маской хоста:
Decimal address octets: 198 51 100 223
Binary address octets: 11000110 00110011 01100100 11011111
Binary host mask octets: 00000000 00000000 00000111 11111111 OR
-----------------------------------
Binary broadcast octets: 11000110 00110011 01100111 11111111
Decimal broadcast octets: 198 51 103 255
Dotted-decimal broadcast: 198.51.103.255
Вы можете просто добавить значение маски хоста IPv4 к значению сетевого адреса IPv4:
Binary network octets: 11000110 00110011 01100000 00000000
Binary host mask octets: 00000000 00000000 00000111 11111111 +
-----------------------------------
Binary broadcast octets: 11000110 00110011 01100111 11111111
Decimal broadcast octets: 198 51 103 255
Dotted-decimal broadcast: 198.51.103.255
Это также то, что вы можете сделать в десятичном виде:
Decimal network octets: 198 51 96 0
Decimal host mask octets: 0 0 7 255 +
---------------
Decimal broadcast octets: 198 51 103 255
Dotted-decimal broadcast: 198.51.103.255
Всего сетевых адресов 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
:
Decimal network octets: 198 51 96 0
Binary network octets: 11000110 00110011 01100000 00000000
-----------------------------------
Binary address octets: 11000110 00110011 01100000 00000001
Decimal address octets: 198 51 96 1
Dotted-decimal address: 198.51.96.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
:
Decimal broadcast octets: 198 51 103 255
Binary broadcast octets: 11000110 00110011 01100111 11111111
-----------------------------------
Binary address octets: 11000110 00110011 01100111 11111110
Decimal address octets: 198 51 103 254
Dotted-decimal address: 198.51.103.254
Объединяем сетевую адресацию IPv4 все вместе
Для нашего примера сетевого адреса 198.51.100.223
и маски IPv4 255.255.248.0
(или 198.51.100.223/21
) мы можем вычислить много сетевой информации:
Host address: 198.51.100.223
Network mask: 255.255.248.0
Network mask length: 21
Host mask: 0.0.7.255
Host mask length: 11
*Network address: 198.51.96.0
*First usable network host address: 198.51.100.1
*Last usable network host address: 198.51.103.254
*Network Broadcast address: 198.51.103.255
Total network host addresses: 2048
Usable network host addresses: 2046
* Экзамены по сетевому обучению и сертификационные тесты попросят вас быстро вычислить их для сети IPv4, учитывая адрес хоста и маску (или длину маски). Вы можете использовать подсказки ниже для быстрой проверки ваших ответов:
- Сетевой адрес (подсказка: четное число)
- Первый доступный адрес хоста (подсказка: сетевой адрес плюс 1, нечетное число)
- Последний используемый адрес хоста (подсказка: широковещательный адрес минус 1, четное число)
- Широковещательный адрес (подсказка: сетевой адрес плюс маска хоста, нечетное число)
Вышеприведенные советы не относятся к /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
округляется до следующего целого значения:
Log2(14 subnets) = 3.807354922, rounded up = 4 borrowed bits
В нашем примере нам нужно 14 подсетей одинакового размера в исходной 198.51.96.0/21
сети, начиная со всех 0
s * для первой подсети, добавьте 1
в подсеть часть, чтобы получить следующую подсеть:
----------------------------------------------
Original: | 21 network bits | 11 host bits |
----------------------------------------------
Network: | 110001100011001101100 | 0000 | 0000000 | = 198.51.96.0/21
Subnet 1: | 110001100011001101100 | 0000 | 0000000 | = 198.51.96.0/25
Subnet 2: | 110001100011001101100 | 0001 | 0000000 | = 198.51.96.128/25
Subnet 3: | 110001100011001101100 | 0010 | 0000000 | = 198.51.97.0/25
Subnet 4: | 110001100011001101100 | 0011 | 0000000 | = 198.51.97.128/25
Subnet 5: | 110001100011001101100 | 0100 | 0000000 | = 198.51.97.128/25
Subnet 6: | 110001100011001101100 | 0101 | 0000000 | = 198.51.98.128/25
Subnet 7: | 110001100011001101100 | 0110 | 0000000 | = 198.51.99.0/25
Subnet 8: | 110001100011001101100 | 0111 | 0000000 | = 198.51.99.128/25
Subnet 9: | 110001100011001101100 | 1000 | 0000000 | = 198.51.100.0/25
Subnet 10: | 110001100011001101100 | 1001 | 0000000 | = 198.51.100.128/25
Subnet 11: | 110001100011001101100 | 1010 | 0000000 | = 198.51.101.0/25
Subnet 12: | 110001100011001101100 | 1011 | 0000000 | = 198.51.101.128/25
Subnet 13: | 110001100011001101100 | 1100 | 0000000 | = 198.51.102.0/25
Subnet 14: | 110001100011001101100 | 1101 | 0000000 | = 198.51.102.128/25
----------------------------------------------
Subnetted: | 25 network bits | 7 host bits |
----------------------------------------------
----------------------------------------------
Unused: | 110001100011001101100 | 111 | 00000000 | = 198.51.103.0/24
----------------------------------------------
* Существует постоянный миф, что для подсетей, как и для адресов хостов, нельзя использовать все нули и все единицы, но этот миф был явно развеян много лет назад стандартом. К сожалению, этот миф распространяется на некоторые сетевые учебные классы, и правильным ответом для этих (неправильных) классов будет использование 2–15-й подсетей.
Можно разделить сеть на подсети различного размера (каждая сеть IPv4 является подсетью 0.0.0.0/0
сетевого адреса), как в нашем примере выше, где неиспользуемая подсеть является /24
подсетью, но это требует тщательного планирования, чтобы начальные подсети начинались с правильный бит.
Например, предположим, что нам нужна сеть /26
и /27
подсеть a 198.51.96.0/21
. Есть два способа сделать это: начать с /26
подсети или начать с /27
подсети.
Начиная с /26
подсети:
Original: | 110001100011001101100 | 00000000000 | /21
Subnet 1: | 110001100011001101100 | 00000 | 000000 | /26
Добавьте 1
в подсеть часть, чтобы получить начальную позицию следующей подсети:
Subnet 2: | 110001100011001101100 | 00001 | 000000 | /26
Затем расширьте вторую подсеть /27
:
Subnet 2: | 110001100011001101100 | 000010 | 00000 | /27
Обратите внимание, что мы на самом деле подсетим вторую /26
подсеть в /27
подсеть, и это хорошо работает, потому что 27
больше, чем 26
.
Начиная с /27
подсети:
Original: | 110001100011001101100 | 00000000000 | /21
Subnet 1: | 110001100011001101100 | 000000 | 00000 | /27
Добавьте 1
в подсеть часть, чтобы получить начальную позицию следующей подсети:
Subnet 2: | 110001100011001101100 | 000001 | 00000 | /27
Обратите внимание, что в хост-части осталось недостаточно битов (пять битов хоста) для поддержки /26
сети, для которой требуется шесть бит хоста ( 32 address bits – 26 network bits = 6 host bits
). Если мы используем это в качестве начальной позиции для /26
подсети, мы фактически перекрываем предыдущую и следующую /26
сети. Нам нужно оставить пробел в размере /27
сети для начальной позиции /26
сети:
Original: | 110001100011001101100 | 00000000000 | /21
Subnet 1: | 110001100011001101100 | 000000 | 00000 | /27
Unused: | 110001100011001101100 | 000001 | 00000 | /27
Subnet 2: | 110001100011001101100 | 00001 | 000000 | /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
адреса хостов, которые можно использовать. Такой вопрос может быть хитрым, и правильный ответ будет зависеть от того, вопрос означает общее количество адресов хоста или используемых адресов хостов.)
Пример вопроса:
Given the 198.51.96.0/21 network, subnet it for the following departments:
Department 1: 500 hosts
Department 2: 100 hosts
Department 3: 200 hosts
Department 4: 1000 hosts
Как мы видели в разделе «Подсети сетей IPv4», самый простой способ сделать это — сначала отсортировать отделы по наибольшему или наименьшему количеству хостов, потому что нам не нужно будет работать с сетевыми пробелами:
Department 4: 1000 hosts
Department 1: 500 hosts
Department 3: 200 hosts
Department 2: 100 hosts
Вы можете округлить каждую до следующей большой степени 2, чтобы получить количество требуемых общих адресов хоста для каждой подсети, а затем вывести количество требуемых битов хоста из показателя степени 2
:
Department 4: 1024 total host addresses = 2^10 = 10 host bits
Department 1: 512 total host addresses = 2^9 = 9 host bits
Department 3: 256 total host addresses = 2^8 = 8 host bits
Department 2: 128 total host addresses = 2^7 = 7 host bits
Вы также можете изменить предыдущую формулу, чтобы найти количество битов, требуемых для определенного числа подсетей одинакового размера, чтобы определить количество битов хоста, требуемых для каждой подсети:, Log2(X hosts) = Y host bits
округленное до следующего целочисленного значения:
Department 4: Log2(1000 hosts) = 9.96578428466209, rounded up = 10 host bits
Department 1: Log2( 500 hosts) = 8.96578428466209, rounded up = 9 host bits
Department 3: Log2( 200 hosts) = 7.64385618977472, rounded up = 8 host bits
Department 2: Log2( 100 hosts) = 6.64385618977473, rounded up = 7 host bits
Когда у вас есть количество битов хоста, необходимых для каждой подсети, выполните двоичную математику, чтобы получить конкретную подсеть для каждого отдела. Не забудьте добавить 1
в подсеть, чтобы получить начальный адрес следующей подсети:
Original: | 110001100011001101100 | 00000000000 | = 198.51.96.0/21
Department 4: | 110001100011001101100 | 0 | 0000000000 | = 198.51.96.0/22
Department 1: | 110001100011001101100 | 10 | 000000000 | = 198.51.100.0/23
Department 3: | 110001100011001101100 | 110 | 00000000 | = 198.51.102.0/24
Department 2: | 110001100011001101100 | 1110 | 0000000 | = 198.51.103.0/25
Unused: | 110001100011001101100 | 1111 | 0000000 | = 198.51.103.128/25
Нахождение конкретной подсети
Вас могут попросить предоставить информацию о сети для конкретной подсети данной сети. Например, вас могут попросить предоставить информацию о сети для 23-й /26
подсети 198.51.96.0/21
сети. Поскольку вам нужна 23-я подсеть, вы можете преобразовать 22
(помните, 0
это первая подсеть, поэтому 23-я подсеть будет 22
*) в двоичную систему: Decimal 22
= Binary 10110
. Используйте преобразованное двоичное число в части адреса подсети:
Original: | 110001100011001101100 | 00000000000 | = 198.51.96.0/21
Subnet 23: | 110001100011001101100 | 10110 | 000000 | = 198.51.101.128/26
После того как вы определили 23-й сетевой адрес, 198.51.101.128/26
вы можете рассчитать другую сетевую информацию (как описано в предыдущих разделах):
Network address: 198.51.101.128
Network mask length: 26
Network mask: 255.255.255.192
Host mask length: 6
Host mask: 0.0.0.63
First usable network host address: 198.51.101.1
Last usable network host address: 198.51.101.62
Broadcast address: 198.51.101.63
Total network host addresses: 64
Usable network host addresses: 62
* Существует постоянный миф, что для подсетей, как и для адресов хостов, нельзя использовать все нули и все единицы, но этот миф был явно развеян много лет назад стандартом. К сожалению, этот миф распространяется на некоторые сетевые учебные классы, и правильным ответом для этих (неправильных) классов будет использование 24-й ( 23
десятичной, 10111
двоичной) подсети в нашем примере подсетей одинакового размера, а не фактической 23-й ( 22
десятичной, 10110
бинарная) подсеть.
Поиск конкретного сетевого хоста
Вас могут попросить найти адрес хоста для конкретного хоста данной сети. Например, вас могут попросить дать адрес хоста для 923-го хоста 198.51.96.0/21
сети. Так как вам нужен 923-й хост, вы можете преобразовать 923
в двоичный: десятичный 923
= двоичный 1110011011
. Добавьте преобразованное двоичное число в сетевой адрес:
Binary network: | 110001100011001101100 | 00000000000 |
Binary 923: | 000000000000000000000 | 01110011011 | +
-----------------------------------
Host address: | 110001100011001101100 | 01110011011 | = 198.51.99.155
Крупнейшая общая сеть для двух хостов *
Вам может быть дано два (или более) разных адреса хоста, и вам будет предложено создать самую большую сеть (наименьшее количество хостов), которая содержит оба адреса хоста. Например, найти крупнейшую общую сеть 198.51.100.223
и 198.51.101.76
.
Во-первых, преобразуйте точечные десятичные адреса в двоичные:
198.51.100.223 = 11000110001100110110010011011111
198.51.101.76 = 11000110001100110110010101001100
Затем, начиная с самого старшего (самого левого) бита, сравнивайте двоичные адреса в каждой битовой позиции, пока биты в той же позиции не совпадают:
198.51.100.223 = | 11000110001100110110010 | 011011111 |
198.51.101.76 = | 11000110001100110110010 | 101001100 |
Подсчитайте количество совпадающих битов, 23
в этом случае, чтобы получить длину маски. Затем вы можете взять любой адрес и выполнить побитовую AND
маску сети, чтобы получить общую сеть. Выполнение этого по обоим адресам должно привести к одной и той же сети, и если это не так, то вы либо неправильно сосчитали, либо пропустили непревзойденную битовую позицию.
198.51.100.223 = 11000110001100110110010011011111
/23 mask length = 11111111111111111111111000000000 AND
--------------------------------
Binary network: 11000110001100110110010000000000 = 198.51.100.0/23
198.51.101.76 = 11000110001100110110010111011111
/23 mask length = 11111111111111111111111000000000 AND
--------------------------------
Binary network: 11000110001100110110010000000000 = 198.51.100.0/23
Обратите внимание, что два сетевых адреса совпадают. Это означает, что самой большой общей сетью для двух адресов хоста является 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 основаны на первых битах адреса:
Class Address Starts With Address Range Default Size*
A First one bit = 0 0.0.0.0 to 127.255.255.255 /8
B First two bits = 10 128.0.0.0 to 191.255.255.255 /16
C First three bits = 110 192.0.0.0 to 223.255.255.255 /24
D First four bits = 1110 224.0.0.0 to 239.255.255.255 N/A
E First four bits = 1111 240.0.0.0 to 255.255.255.255 N/A
- Сети класса A имеют сетевую маску по умолчанию
255.0.0.0
(/8
) и маску хоста по умолчанию0.255.255.255
, что дает вам16,777,216
общее количество адресов хостов на сеть. - Сети класса B имеют сетевую маску по умолчанию
255.255.0.0
(/16
) и маску хоста по умолчанию0.0.255.255
, что дает вам65,536
общее количество адресов хостов на сеть. - Сети класса C имеют сетевую маску по умолчанию
255.255.255.0
(/24
) и маску хоста по умолчанию0.0.0.255
, что дает вам256
общее количество адресов хостов на сеть. - Адреса класса D используются для многоадресной рассылки, где каждый адрес используется индивидуально для представления группы хостов, которые подписываются на многоадресный адрес. Это означает, что адреса класса D обычно не имеют понятия сетевой маски.
- Адреса класса E зарезервированы и не могут быть использованы ни для чего. Есть одно исключение, это адрес ограниченной широковещательной рассылки
255.255.255.255
, который является отдельным адресом, который каждый хост в сети будет рассматривать как свой собственный. Это означает, что все отправленные сообщения255.255.255.255
будут приниматься и обрабатываться каждым хостом в сети.
Поскольку каждый класс имеет размер сети по умолчанию, некоторые вопросы предполагают маску по умолчанию для данного адреса, поэтому любые вычисления должны быть сделаны на основе маски сети по умолчанию. Для нашего примера адреса 198.51.100.223
:
Binary: 11000110 00110011 01100100 11011111
Обратите внимание, что первые три адресных бита 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 см от края.
- Сколько адресов доступно всего для вашего стартового блока?
- Предположим, что разделение / 22 имеет 1024 адреса
- Получите лист бумаги с таким количеством квадратных сантиметров (и квадрат или отношение 2×1)
- Поэтому я получаю кусок 32 см на 32 см, который имеет 1024 кв. См.
- Несколько раз
- Выберите кусок (если их больше одного)
- Разрежьте его пополам (в пределах ограничений: только прямоугольные разрезы, пополам, ничего не ниже 1 см)
- Часто вы можете сделать различные надрезы, и вы должны сделать выбор
- Чтобы получить n сетей, нужно сделать n-1 срезы
- Иногда вы получаете дополнительные куски (в зависимости от того, как вы хотите распределить «отходы»)
Вот иллюстрация процесса. Вы видите, что на срезе 1 и 2 возможен только один вид разреза, но на разрезе 3 мы делаем выбор: вырезать маленький кусок (красный) или большой (синий), предоставляя две разные возможности.
Это то, что часто называют проблемой гильотины , которую я узнал как проблему «стеклореза», так как листовое стекло действительно должно быть разрезано по всей длине, и это специфическое можно назвать «бинарным стеклорезом», поскольку оно всегда разрезается пополам.
Когда я на самом деле делаю это в реальной жизни, я мысленно делю пополам, глядя на сетку вот так. Я помню, что / 26 должно начинаться с 0, .64, 128 или .192; Я мог бы знать, что седьмая арендованная линия нуждается в седьмой / 30 в высшей четверти, но я не буду помнить, что это .216.
Очевидно, что сетка также может использоваться для представления третьего октета, и каждый квадрат представляет / 24. Теперь говорится, что / 18 начинается с 0, 0, 64, 128 или 0,12.
Советы по общей технике
Общая процедура:
- округлить каждый требуемый размер в наименьший блок, который является достаточно большим
- убедитесь, что вы следуете любым глобальным правилам (часто «максимизируйте доступную адресацию», иногда «разрешите удвоение для роста» или «упростите маршрутизацию»)
- распределите подсети по адресам, НАЧИНАЮЩИМ С НАИБОЛЕЕ БОЛЬШИМИ и спускающимся до самых маленьких ( это та часть, которую они обычно забывают вам сказать )
- следуйте определенным правилам (тестовые вопросы часто содержат дополнительные правила, иногда такие аббревиатуры, как «Ни один сетевой адрес не может содержать 7»)
- проверьте, есть ли место для любых подразумеваемых адресов (трансляции, маршрутизаторы)
- если какая-либо сеть небольшого размера (/ 30, / 31 или / 32), обратите особое внимание, поскольку существуют некоторые крайние случаи для сетей с 4, 2 и 1 хостом, и детали зависят от того, какую именно проблему вы решаете
Пример:
IP: 128.42.5.4
В двоичном коде: 10000000 00101010 00000101 00000100
Подсеть: 255.255.248.0
Как вы можете определить префикс, сеть, подсеть и номера хостов?
32768 16384 8192 4096 2048 1024 512 256 ----> Binary
128 192 224 240 248 252 254 255 ----> Sunet Mask
/17 /18 /19 /20 /21 /22 /23 /24 ----> CIDR
32766 16382 8190 3094 2046 1022 510 254 ----> Host
128 64 32 16 8 4 2 1 ----> Binary
128 192 224 240 248 252 254 255 ----> Sunet Mask
/25 /26 /27 /28 /29 /30 /31 /32 ----> CIDR
126 62 30 14 6 2 * - ----> Host
128 64 32 16 8 4 2 1
10000000 01000000 00100000 00010000 00001000 00000100 00000010 00000001
Example
Network=192.168.1.0 /24;
Network Address with Subnet mask = 192.168.1.0 subnet 255.255.255.0
Ip address range 192.168.1.0----192.168.1.255
Fist available ip address 192.168.1.1;
Last available ip address 192.168.1.254;
Broadcast address = 192.168.1.255;
254 Host
Network=192.168.1.0 /25;
Network Address with Subnet mask = 192.168.1.0 subnet 255.255.255.128
Ip address range 192.168.1.0----192.168.1.128
Fist available ip address 192.168.1.1;
Last available ip address 192.168.1.126;
Broadcast address = 192.168.1.127;
126 Hosts
When the CIDR increased ex. /24. /25. the network will divided by the
binary number.
/25 increase network 0-128| 128- 256 | you will have 2 Networks
/26 increase network 0-64 | 64 - 128 | 128-192 | 192-256 you will have 4 Networks
.
.
.
/32......