Новости

Основы. Общие сведения об использовании подсетей

(часть 1)

Вы, конечно, слышали о подсетях. Но если сумасшедший ветеран в области ИТ взглянет на вас и потребует: «Сию минуту объясните мне смысл использования подсетей, или я уволю вас за некомпетентность!», — сможете ли вы рассказать ему нечто больше, чем изложить туманную идею связи подсетей с сетями TCP/IP? Данная статья объясняет, что такое подсети, маска подсети и как использовать их в вашей собственной сети.

Коротко говоря, подсети имеют дело с маршрутизацией, но прежде чем перейти к этому вопросу, требуются некоторые пояснения. Поэтому статья будет состоять из двух частей. (Итак, постарайтесь избегать сумасшедших ветеранов в области ИТ, пока не прочитаете обе части.)

[Примечание редактора. Если различие между битом и байтом ставит вас в тупик или ваши представления об IP-адресации весьма туманны, то вы намного лучше поймете данную статью, если сначала ознакомитесь со статьей https://www.watchguard.com/infocenter/editorial/135183.asp --Скотта Пинзона (Scott Pinzon)]

Давным-давно, в далеком проекте...

Когда-то Интернет был очень маленьким. Настолько маленьким, что по сути весь Интернет (который тогда назывался Арпанет (Arpanet)) мог использовать для адресации каждого подключенного компьютера всего один байт с максимальным значением 255. В то время группа студентов-выпускников, работающих над проектом в Стэнфорде, приступила к созданию замены для NCP, одного из первых протоколов для сети Арпанет. Они назвали разработанный ими протокол TCP/IP и разрешили использовать для адресов четыре байта, посчитав, что этого будет достаточно.

Более того, они установили такой формат адресов, что начало каждого адреса указывало на один из трех классов, к которому относился адрес. По мнению студентов, Интернет должен был состоять из нескольких очень крупных сетей (которые они отнесли к классу А), большого числа сетей среднего размера (класс В) и множества мелких сетей (класс C). Созданная студентами схема предусматривала 126 сетевых адресов класса А, 64 000 сетевых адресов класса В и почти 2 миллиона сетевых адресов класса С.

Такая структура работала не слишком эффективно, поскольку сеть класса С могла включать только 254 отдельных адреса устройств — слишком серьезное ограничение, поэтому любая организация среднего размера стремилась полностью закрепить за собой класс В. К началу 90-х гг., когда Интернет начал превращаться в источник прибыли, в Американском реестре Интернет-номеров (American Registry for Internet Numbers, ARIN) закончились сетевые адреса класса В.

Решение проблем

(когда адресация сама становится проблемой)

В созданной студентами схеме некоторые из четырех байтов IP-адреса идентифицировали сеть. Остальная часть адреса определяла конкретный компьютер, или узел, в этой сети. Другими словами, любой IP-адрес состоит из двух частей: сетевого адреса и адреса узла. В некотором смысле IP-адреса можно сравнить с телефонными номерами. Например, если вы хотите позвонить в американский Белый дом из Японии, то должны набрать номер 001 1 202 456 1414. 001 1 — это код для звонков из Японии в США; 202 — код зоны; а 456 1414 — конкретный телефонный номер. 001 1 202 соответствует сетевому адресу, а 456 1414 — адресу узла.

Но какая часть 32-разрядного IP-адреса составляет сетевой адрес, а какая — адрес узла? Если честно, то все зависит от конкретного случая. Схема адресации, разработанная студентами, разбивала IP-адрес на сетевой адрес и адрес узла по границам байтов. Например, адрес класса А использовал первый байт для идентификации сети, а остальные три байта — для идентификации отдельных узлов. Таким образом, в адресе 126.10.11.12 первый байт (126.) соответствует сети, а 10.11.12 — узлу в сети 126. IP-адреса класса В, такие как 128.16.7.4, используют первые два байта (128.16) в качестве сетевого адреса, а последние два байта (.7.4) — в качестве адреса узла. В адресе класса C, например 204.176.22.1, сетевая часть адреса занимает три байта (204.176.22) и только один байт остается для определения узла (.1).

Обратите внимание, что, используя адрес класса А, можно обращаться к огромному множеству узлов. Вы помните из статьи https://www.watchguard.com/infocenter/editorial/135183.asp, что один байт может представлять любое значение от 0 до 255? Это означает, что если для идентификации узлов используется три байта, можно назначить IP-адреса узлов 0.0.1, 0.0.2, 0.0.3 и т.д., до 255 (по крайней мере, в теории; практически число 255 зарезервировано для особых целей). Затем можно начать с начала, используя 0.1.1, 0.1.2 и т.д. Если перебрать все возможные комбинации, общее число уникальных идентификаторов узлов для адреса класса А составит примерно 255 x 255 x 255 — значительно больше 16 000 000 доступных адресов! Следуя той же логике, в сети класса В для адресов узлов используется два байта, которые обеспечивают адресацию более 65 000 узлов (255 x 255). Теперь вы, возможно, поняли, почему адрес класса С, использующий только один байт для адресации отдельных узлов, может применяться лишь для 254 устройств. Почему не для 255 устройств? Я объясню это во второй части данной статьи.

Пусть имеется общий IP-адрес nnn.nnn.nnn.nnn (где «n» — число):

Класс сети

Часть, идентифицирующая сеть

Часть, идентифицирующая узел

Число возможных уникальных адресов узлов

A

nnn.

nnn.nnn.nnn

более 16 000 000

B

nnn.nnn.

nnn.nnn

более 65 000

C

nnn.nnn.nnn.

nnn

254

Теперь, когда вы знаете историю создания классов IP-адресов и принципы их деления по границам байтов, вы сможете понять систему обозначений с использованием косой черты («слэш-нотацию»), условный способ записи информации о сети. На сетевую часть адреса класса А приходится один байт, или восемь разрядов (битов). Чтобы указать это в явном виде, администраторы в конце IP-адреса добавляют /8. Таким образом, запись 126.10.11.12/8 означает адрес класса А. Класс В использует два байта, или 16 битов, что записывается как /16. Классу C соответствует запись /24 (три байта по восемь битов). Важный принцип слэш-нотации заключается в том, что число после косой черты указывает, сколько разрядов IP-адреса занимает сетевая часть. (Вы можете быстро посчитать, сколько разрядов приходится на часть адреса, соответствующую узлу. Для этого нужно вычесть число разрядов сетевого адреса из 32, общего числа разрядов в IP-адресе.)

Как Интернет потерял свой класс

Рассказывая историю Интернета несколькими абзацами выше, я остановился на том, что организация ARIN исчерпала сетевые адреса класса В. Группа специалистов по разработкам в Интернете (Internet Engineering Task Force) в итоге нашла обходной путь. Вместо первоначального жесткого разделения классов сети по границам целых байтов (/8, /16 и /24), они разрешили бесклассовую междоменную маршрутизацию (Classless Internet Domain Routing, CIDR). Это привело к появлению современного подхода к IP-адресам, при котором классы игнорируются, а используется сетевая система обозначений. Поэтому, если организация хотела располагать достаточным пространством IP-адресов для тысячи систем, варианты ARIN больше не были ограничены либо четырьмя сетями класса C (/24), либо сетью класса В (/16). Можно было назначить, например, /22. В этом случае двадцать два разряда IP-адреса будут использоваться в качестве сетевого адреса, а остальные 10 разрядов — в качестве адресов узлов, что обеспечит 1 024 адреса.

Другая проблема IP-адресации была обнаружена в середине 80-х. Некоторые организации хотели иметь несколько сетевых адресов: по одному для каждой сети внутри организации. Вместо выдачи нескольких сетевых адресов в RFC 950 рекомендуется использование подсетей, то есть, использование части IP-адреса для указания внутренних сетевых адресов.

Проблема как с использованием сетевого адреса CIDR (бесклассового), так и с разделением сети на подсети, заключалась в том, что протокол TCP/IP был ориентирован на жесткую систему классов. Предполагалось, что конкретные адреса используют один, два или три байта сетевого адреса. В частности:

0.0.0.0 - 127.255.255.255

Класс A, или /8

128.0.0.0 - 191.255.255.255

Класс В, или /16

192.0.0.0 - 223.255.255.255

Класс С, или /24

Концепция CIDR не учитывает эти предположения. По сути, вся эта дискуссия вокруг классовых IP-адресов имеет смысл только из-за своего длительного существования в Интернете (и с целью помочь вам понять ветеранов Интернета, которые часто пользуются старой терминологией). Проблема состояла в том, что для разделения IP-адреса по нужному разряду требовался способ определить, где производить такое разбиение. Ответ на вопрос, как определять подсети: использовать маску подсети. Это очень важный принцип организации сетей, и с него мы продолжим наш разговор в статье https://www.watchguard.com/infocenter/editorial/135191.asp.

(часть 2)

В первой части я объяснил, почему IP-адрес на самом деле представляет собой два адреса в одном: одну его часть занимает сетевой адрес, а другую — адрес узла. Раньше это разделение на сетевой адрес и адрес узла было предсказуемым, поскольку производилось по границам целых байтов. Но более новые способы адресации, направленные на расширение ограниченного числа адресов, доступных для быстро растущего Интернета, в настоящее время позволяют разбивать 32-разрядный IP-адрес в любом месте.

Из-за исторических особенностей разработки протокола TCP/IP, ваша операционная система (которая предоставляет протокол TCP/IP) по-прежнему ориентирована на использование старой системы классов. При использовании адреса в диапазоне класса С, например 192.168.1.0, операционная система автоматически воспринимает его как адрес /24: первые три байта определяют сетевой адрес. Но предположим, вы не хотите, чтобы адрес 192.168.1.0 соответствовал сети /24. Допустим, вы хотите, чтобы он представлял сеть /26. Каким образом вы, администратор, сможете навязать IP-адресации свою железную волю? Указав маску подсети. В вашей сети всегда есть одна такая маска. Но в данном случае вы можете взять управление в свои руки, указав маску, которая отличается от значения по умолчанию для класса С.

Чтобы понять, как работает маска подсети, нам нужно вернуться к двоичному коду, поскольку именно его интерпретирует компьютер. Итак, в двоичном коде 192.168.1.0 соответствует числу:

11000000.10101000.00000001.00000000

(Если вам непонятно, как было получено это значение, ознакомьтесь с https://www.watchguard.com/infocenter/editorial/135183.asp.)

Маска подсети — это просто двоичное значение, в котором единицы показывают число разрядов (в 32-разрядном IP-адресе), представляющих сетевую часть адреса. Нули определяют часть адреса, соответствующую узлу. Итак, если вам нужен адрес /26, значит, 26 разрядов IP-адреса должны указывать адрес сети, а 6 разрядов — адреса узлов, что можно записать следующим образом:

11111111.11111111.11111111.11000000

Чтобы преобразовать адрес класса С (или любого другого класса) в бесклассовый адрес CIDR, нужно указать маску подсети, отличную от классовой маски подсети по умолчанию. Компьютер использует эту маску подсети, чтобы закрыть сетевую часть адреса. Это напоминает капельдинера в театре, который огораживает бархатными веревками ряды, зарезервированные для большой группы зрителей. Чтобы проще было понять принцип маскирования, посчитайте число единичных разрядов в маске подсети, поскольку это показывает, сколько разрядов IP-адреса будут соответствовать сетевой части. Сложнее представить, как это действие выполняет операционная система: используя процессорную операцию, которая называется логическим или двоичным И. Не углубляясь в математическую теорию — другими словами, пока не отвечая на вопрос «почему» — условимся, что в этой операции 1 + 1 = 1 и 1 + [любое другое число] = 0. Если вам сложно это понять, пусть 1 для вас соответствует значению «истина», а 0 — значению «ложь». Истина плюс истина равняется значению «истина». Истина плюс ложь не равняется значению «истина». Используя эту булеву логику и IP-адрес из примера (192.168.1.0) в сочетании с примером маски подсети (/26), получим следующий результат:

11000000.10101000.00000001.00000000
+ 11111111.11111111.11111111.11000000
11000000.10101000.00000001.00000000

Преобразовав результат обратно в десятичное число, вы снова получите 192.168.1.0 — но, поскольку вы указали нестандартную маску подсети, ОС теперь будет интерпретировать этот адрес как 192.168.1.0/26, и в этом диапазоне будет 64 адреса, а не 256.

Проблемные разряды

Нет необходимости в утомительной процедуре расчета двоичного кода каждый раз, когда нужно указать подсеть. Хотя внутри ОС используются двоичные разряды, можно указать маску подсети в десятичной системе или в слэш-нотации. Если вы вспомните статью Кори, целый байт со всеми включенными восемью битами (11111111) сводится к значению 255 (128 + 64 + 32 + 16 + 8 + 4 + 2 + 1), поэтому маски подсети, выраженные в десятичной системе счисления, часто содержат числа 255. Например, /16 в десятичном представлении принимает вид 255.255.0.0.

Итак, в качестве другого примера, определим маску подсети для адреса /22. Она будет содержать в начале 22 единицы, а остальные — нули: 11111111.11111111.11111100.00000000, или 255.255.252.0. Преобразование двоичного представления в десятичное может оказаться сложным, поэтому хорошо бы иметь под рукой калькулятор или компьютерную программу, выполняющую математические расчеты, либо таблицу. Такие шпаргалки можно найти в Интернете, например здесь:

  • Калькулятор масок подсети
  • http://www.digipro.com/Papers/IP_Subnetting.shtml DigiPro — таблицы преобразования для подсетей
  • http://www.cotse.com/networkcalculator.html Церковь купающегося слона» — калькулятор масок подсети
  • Шпаргалка для подсетей

Вот почему еще слэш-нотация так удобна (не требуется преобразований из двоичного представления в десятичное).

Почему подсеть?

Если вы до сих пор следовали логике, то, наверно, удивляетесь: «Неужели весь этот путь был действительно необходим?» Ответ: да, поскольку использование подсетей позволяет разбить единственный сетевой адрес на несколько подсетей.

Помните: каждый раз, когда отдельный узел в сети получает очередной пакет данных, узлу нужно знать только одно — что с этим пакетом делать. Например, рассмотрим типичный сетевой узел под названием Гэндальф (Gandalf). Гэндальф оценивает поле «Назначение» каждого исходящего пакета в его IP-заголовке, чтобы определить, направлен ли пакет на локальный адрес или нет. В случае локального пункта назначения Гэндальф обращается к таблице ARP за MAC-адресом компьютера назначения, а затем направляет ему пакет. Если пункт назначения не является локальным, Гэндальф пересылает пакет своему всезнающему «партнеру», который обрабатывает все пакеты. Это устройство называется шлюзом по умолчанию. (В его качестве используется либо реальный маршрутизатор, либо другой тип устройства, которое может выполнять маршрутизацию, например Firebox.) Как Гэндальф определяет, локальный ли пункт назначения пакета? Просто: локальным является любое устройство с таким же адресом подсети, как у Гэндальфа.

Подсети повсеместно используются в Интернете. Но при желании вы можете применять их и в вашей собственной сети. Подсети служат для различных целей, в том числе для обеспечения безопасности — например, для разделения единой сети на две или более частей при помощи одного или нескольких маршрутизаторов, соединяющих подсети между собой. При использовании маршрутизаторов широковещательная передача для каждой подсети в общем случае будет ограничена. Можно также использовать дополнительный (Optional) и доверенный (Trusted) интерфейсы Firebox, чтобы изолировать две подсети, даже если они обе являются внутренними сетями. Подсети помогают в устранении неполадок. Отследить проблему в сетевом сегменте проще, если при помощи подсетей разделить сеть пополам — в этом случае вы одновременно имеете дело с меньшим числом узлов.

Хотя когда-то использование подсетей означало разбиение сети на более мелкие физические сегменты, сегодня это понятие не обязательно употребляется в физическом смысле. Подсеть можно использовать просто для того, чтобы каждое подразделение (удаленный офис, этаж высотного здания, корпус организации и т.п.) имело собственный адрес подсети. Например, пусть все адреса, начинающиеся с 192.168.100, относятся к мобильным пользователям, а 192.168.200 — к пользователям-руководителям. Адреса беспроводной сети можно сделать мгновенно распознаваемыми, чтобы проще было отслеживать их в журналах. Можно все что угодно — используйте собственное воображение!

Но пока не приступайте...

Прежде чем вы начнете создавать собственные подсети, нам придется предпринять еще одно путешествие в историю TCP/IP. Обратите внимание, что хотя существует 256 возможных адресов, при использовании одного байта (от 0 до 255), остается только 254. Это связано с тем, что адрес, состоящий из всех единиц, или 255 в данном случае, зарезервирован для широковещательного адреса, а адрес, состоящий из всех нулей, — для сетевого адреса. Широковещательный адрес означает отправку всем узлам в данном сетевом сегменте, поэтому он определенно не может использоваться в качестве адреса отдельного узла. Сетевой адрес зарезервирован для более традиционных целей.

В качестве примера, предположим, что нужно разбить сеть класса С на четыре более мелкие сети CIDR. Разделив 256 возможных адресов в сети класса С на 4, мы получим, что каждая подсеть может иметь 64 адреса. (Однако, по только что упомянутым причинам, только 62 из этих адресов можно использовать для узлов.) Вместо маски подсети класса С (255.255.255.0, или /24) вы будете использовать 255.255.255.192, или /26. Это допускается, поскольку шесть разрядов (из 32 разрядов IP-адреса) остается для адресации узлов. Шести разрядов (32 + 16 + 8 + 4 + 2 + 1) достаточно для формирования 64 адресов (сумма разрядов равна 63, но 0 также считается одним из адресов).

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

Что будет представлять собой IP-адресация при разделении сети таким образом? Будем использовать 192.168.1.0/26 в качестве адреса класса С разделяемой сети.

Номер подсети

Сетевой адрес

Широковещательный адрес

Допустимые адреса узлов

1

192.168.1.0

192.168.1.63

От 192.168.1.1 до 62

2

192.168.1.64

192.168.1.127

От 192.168.1.65 до 126

3

192.168.1.128

192.168.1.191

От 192.168.1.129 до 190

4

192.168.1.192

192.168.1.255

От 192.168.1.193 до 254

Маршрутизация в этом случае будет выполняться независимо от того, соединены ли все подсети одним и тем же физическим кабелем или нет, при наличии хотя бы одного маршрутизатора, занимающего стратегическую позицию.

Бинарная арифметика, используемая при адресации блоков CIDR, достаточно сложна. Намного проще начать с другого пространства частных сетевых адресов, например 172.16.0.0, и использовать третий байт для указания внутренних подсетей: 172.16.1.0, 172.16.2.0, 172.16.3.0 и т.д. Сейчас вы используете маску подсети по умолчанию (классовую) — 255.255.255.0 (или /24), и каждая подсеть содержит 254 адреса узлов. Убедитесь, насколько проще начать с сети класса В (/16) и разбить ее на 254 подсети класса С (/24). Возможно, разработчики TCP/IP, в конце концов, были не так глупы, когда решили использовать границы байтов в первоначальной схеме сетевой адресации.

В подсетях нет никакого колдовства — это просто область, где администраторы часто впервые встречаются с бинарной арифметикой. Мы лишь едва коснулись этой темы. Но, по крайней мере, теперь вы не растеряетесь, когда сетевые специалисты, обсуждая подсети, станут забрасывать вас техническими терминами. У вас достаточно базовых знаний, чтобы принять участие в беседе. Благоразумно используйте свои новые возможности!

WatchGuard Technologies, Inc. Все права защищены. WatchGuard, LiveSecurity, Firebox и ServerLock являются торговыми знаками или зарегистрированными торговыми знаками компании WatchGuard Technologies, Inc. в США и других странах.

Рик Фэрроу (Rik Farrow), консультант по вопросам Интернет-безопасности, и Скотт Пинзон (Scott Pinzon), редактор контента сайта LiveSecurity

Возврат к списку

 

Защита банкоматов

Имя* Компания* Email* Телефон

* - Поля, обязательные для заполнения

Компрометация приложений для смартфонов

Имя* Компания* Email* Телефон

* - Поля, обязательные для заполнения

Семинар ATAR

Фамилия* Имя* Должность* Компания* Email* Телефон* Защита от автоматического заполнения Введите символы с картинки*

* - Поля, обязательные для заполнения

Заполните поля

Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке*

Заполните поля

Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке*

Для получения БЕСПЛАТНОГО БИЛЕТА заполните, пожалуйста, Форму:

Количество билетов ограничено

Фамилия* Имя* Отчество* Название компании* Должность* Телефон рабочий* Телефон мобильный* E-mail*

* - Поля, обязательные для заполнения