IP адресация, классы IP адресов и значение маски подсети
Адресация в компьютерных сетях бывает двух видов: физическая адресация (на основе MAC-адреса) и логическая (на основе IP-адреса). Логическая адресация реализована на 3-ем уровне эталонной модели OSI. Далее более подробно рассматривается IP-адресация и пять классов IP-адресов, а также подсети, маски подсетей и их роль в схемах IP-адресации. Кроме того, обсуждаются отличия между публичными и частными адресами, IPv4-и IPv6-адресацией, а также одноадресными и широковещательными сообщениями.
Для обмена данными в Интернете (между различными локальными сетями) узлу необходим IP-адрес. Это логический сетевой адрес конкретного узла. Для обмена данными с другими устройствами, подключенными к Интернету, необходим правильно настроенный, уникальный IP-адрес.
IP-адрес присваивается сетевому интерфейсу узла. Обычно это сетевая интерфейсная плата (NIC), установленная в устройстве. Примерами пользовательских устройств с сетевыми интерфейсами могут служить рабочие станции, серверы, сетевые принтеры и IP-телефоны. Иногда в серверах устанавливают несколько NIC, у каждой из которых есть свой IP-адрес. У интерфейсов маршрутизатора, обеспечивающего связь с сетью IP, также есть IP-адрес.
В каждом отправленном по сети пакете есть IP-адрес источника и назначения. Эта информация необходима сетевым устройствам для передачи информации по назначению и передачи источнику ответа.
1 Классовая адресация
Сначала все сети строились используя только этого вид адресации, поскольку никто не думал, что пул адресов так быстро иссякнет. Здесь номер сети и узла определялись используя классы, в которых по первым битам можно было определить номер сети, а все остальное отводилось на узел (рис. 1.1.1).
Рисунок 1.1.1 – Распределение битов в классовой адресации
В классовой адресации все сети делились на 5 классов. Каждый класс имеет свой диапазон адресов, но не все адреса из данного диапазона можно использовать. Многие из них зарезервированы (рис. 1.1.2).
Рисунок 1.1.2 – Особенности классовой адресации
С этой таблицы можно увидеть диапазоны адресов каждого из классов, маску сетей для каждого класса, доступное количество хостов и сетей и диапазон некоторых зарезервированных адресов по каждому из классов (список всех зарезервированных адресов можно найти в rfc3330).
Каждый из А, В, С классов сетей имеет диапазон адресов, которые используются в локальных сетях и относятся к частным (private). Вот эти диапазоны:
10.0.0.0/8 10.0.0.0 — 10.255.255.255
172.16.0.0/12 172.16.00 — 172.31.255.255
192.168.0.0/16 192.168.0.0 — 192.168.255.255
Любой из этих диапазонов можно использовать в локальных сетях, но если использовать классовую адресацию, то минимальное количество узлов в сети может быть – 254, если брать класс С. И когда у нас ситуация, что нужно в одной сети иметь, к примеру, 500 компьютеров, то нужно уже резервировать класс В, и брать маску 16 с 65534 доступными IP – чего нам вообще не нужно. В связи з этим (и не только этим), и стали переходить на бесклассовою адресацию.
В чем разница между IP-адресом и маской
Это кажется немного запутанным. Как узнать разницу между маской подсети и IP? Давайте использовать пример, чтобы устранить путаницу.
Лучший способ сделать это – подумать об обычном адресе, таком как домашний или физический адрес вашей компании. Итак, допустим, что один из ваших друзей хочет отправить вам письмо. Он пишет ваш адрес на конверте, затем добавляет штамп и помещает в свой почтовый ящик.
Почтовый работник получает письмо и, если адрес получателя является локальным, отправляет его прямо в ваш почтовый ящик. Если адрес находится в другом городе или поселке, письмо отправляется в центральное почтовое отделение, где работники его сортируют и отправляют туда, куда оно должно дойти. IP-адрес работает аналогичным образом.
Итак, если ваш IP – 20.0.0.1, а маска подсети – 255.0.0.0, это означает, что адреса в диапазоне 20.x.x.x находятся в вашей локальной сети. Однако, если вы хотите отправить что-либо на IP-адрес за пределами вашей подсети, например, 30.0.0.1, вы не можете сделать это напрямую (по аналогии с почтой это будет в другом городе).
В этом случае почта отправляет сообщение в местный центральный офис, а затем в местный центральный офис предполагаемого получателя. И только после этого почтовый работник доставляет его.
Таким образом, IP-адрес – это номер, который имеет номер сети, номер подсети (это необязательно) и номер хоста. Номера сети и подсети используются при маршрутизации, а номер хоста является адресом хоста.
Маска подсети численно определяет формат IP-адреса, где биты сети и подсети, которые формируют адрес, имеют значения битов маски 1, а компонент узла адреса использует значение бита маски 0.
5.4 Фиксированные маски классовых сетей
Когда я только знакомился с компьютерными сетями и разбирался с классовой адресацией, по началу я считал, что масок в классовых сетях нет, на практике с классовыми сетями мне не довелось работать, мне была доступна только теория из Интернета, практики у вас тоже не будет, но я вам сразу скажу, что маски в классовых сетях есть, только они строго фиксированы для первых трех классов сети. Но тогда зачем нужен механизм VLSM, спросите вы, если маски сети есть и в классовых сетях, а всё дело в том, что VLSM это маска переменной длинны, а в классовых сетях маска сети строго фиксирована. Да и вообще, как может не быть маски сети, как тогда компьютер или маршрутизатор или какой-нибудь умный коммутатор будут отличать одну сеть от другой, как они будут понимать в какой сети они находятся, естественно, им нужна для этого маска (вот тут можете почитать о разнице между хабами коммутаторами и роутерами).
Давайте начнем разбираться и поймем, как глупая железяка понимает, что вот это номер сети, а вот это номер узла. Для примера возьмем IP-адрес из сети класса А: 65.128.1.12. Если это IP-адрес из классовой сети, то я вам могу сразу сказать, что номер сети здесь 65.0.0.0, а номер узла 0.128.1.12, а широковещательный адрес в такой сети будет таким: 65.255.255.255. Тут сразу стоит сказать, что самый первый IP-адрес в сети никогда нельзя назначить ни одному узлу, так как это номер сети (65.0.0.0 в нашем случае), также нельзя назначить узлу самый последний IP-адрес (65.255.255.255), так как это широковещательный IP-адрес, узлы сети используют этот IP-адрес для того, чтобы сказать сразу всем соседям какую-то информацию, то есть если компьютер с IP-адресом 65.128.1.12 будет отправлять сообщения на IP-адрес 65.255.255.255, то эти сообщения получат и будут обязаны каким-либо образом обработать все узлы из его сети (то есть все узлы из сети с номером 65.0.0.0). Это похоже на ситуацию, когда вы стоите на площади и вещаете в громкоговоритель, вас услышит вся площадь.
Получается, я вас немного обманывал, когда говорил, что в одной сети класса А может быть 16 777 216 узлов, на самом деле их 16 777 214, так как самый первый IP-адрес отдан под номер сети, а последний является широковещательным, то же самое касается всех других сетей и классов: всегда один адрес уходит под номер сети, а другой является широковещательным, за парочкой исключений, которые мы обсудим в теме VLSM и CIDR.
Но мы так много сказали, но всё еще не приблизились к пониманию того, зачем нужны маски в классовых сетях. А всё очень просто, маски позволяют отделять сети внутри класса, а в классовых сетях они еще и фиксированы, напомню наш IP-адрес: 65.128.1.12. В классовых сетях для IP-адресов из диапазона с 0.0.0.0 по 127.255.255.255 можно задать только вот такую маску: 255.0.0.0, то есть маска 255.0.0.0 вместе с нулевым значением первого бита определяет, что данный IP-адрес относится к сети класса A. Это будет наглядно, если мы переведем IP-адрес и маску в двоичную систему счисления.
Рисунок 4.5.6 IP-адрес и маска подсети в двоичной системе счисления
Помните структуру IP-адреса сети класса А? Самый первый бит обязательно должен быть нулевой, в таблице я его выделил более крупным шрифтом, а следующих семь бит определяют номер узла в сети класса А, то есть 1 + 7 = 8, другими словами первый октет. А теперь посмотрите на первый октет в маске сети для сетей класса А, там все биты установлены в единицу. Вы должны помнить, что маска подсети, это такая штука, у которой сначала идут только единицы, а потом идут только нули, никаких разрывов быть не должно. А если IP-адрес наложить на маску, и для каждого бита IP-адреса, выполнить операцию «логическое И» с соответствующим битом маски сети, то мы узнаем номер узла, номер сети и широковещательный адрем. Получится следующее: там, где в маске стоят единицы, значения бит IP-адреса не изменятся, а там, где в маске стоят нули, значения бит IP-адреса обнуляется, таким образом мы узнаем номер сети. Таблица ниже это демонстрирует.
Рисунок 4.5.7 Номер сети и маска у IP-адреса класса A
Важно здесь то, что «логическое И» выполняется только между соответствующими битами, то есть сначала операция выполняется между между самым первым битом IP-адреса и самым первым битом маски и записывается результат, затем эта же операция выполняется между вторым битом IP-адреса и вторым битом маски, записывается результат, так продолжается до последнего бита. То есть операцию «логическое И» не нужно выполнять для каждого бита IP-адреса с каждым битом маски.
Напомню, что в классовых сетях размер маски является фиксированным, то есть для сетей класса А можно применять только маску 255.0.0.0, но уже не получится использовать маски 255.128.0.0 или 255.255.255.0, вас в приличном классовом обществе не поймут, получается, что маска фиксированной длины в классовых сетях являлась тем фактором, который приводил к неэкономному расходованию адресов, поскольку она была фиксированной. Собственно, на примере сети класса А мы разобрались с механизмом работы классовых сетей, теперь нам осталось посмотреть на маски сетей класса B и C.
Сначала посмотрим на класс B, я не буду объяснять все то, что было ранее, повторяться нет смысла, а сразу приведу табличку, которая все скажет за меня.
Рисунок 4.5.8 Номер сети и маска у IP-адреса класса B
Накладываем маску на IP-адрес и узнаем, что номер сети 131.10.0.0, широковещательный адрес здесь будет 131.10.255.255, а все остальные адреса можно забирать под узлы. То есть для сетей класса B можно использовать только маску 255.255.0.0. Первых два бита, которые говорят о принадлежности к сети класса B выделены шрифтом и начертанием. Осталось посмотреть на сети класса C.
Рисунок 4.5.9 Номер сети и маска у IP-адреса класса C
Первые биты, которые говорят о том, что IP-адрес из сети класса C хорошо заметны, накладываем маску на IP-адрес и получаем всю необходимую информацию: 200.150.255.0 – это номер сети, 200.150.255.255 – это широковещательный адрес, все остальные IP-адреса можно забирать на нумерацию узлов в сети. В сетях класса C для нас доступна только такая маска: 255.255.255.0, и никаких других здесь быть не может.
Заметили особенность, которую можно называть лайфхаком для классовых сетей? Чтобы назвать номер сети, количество узлов в сети и широковещательный адрес, нам не нужно знать маску сети, нам достаточно одного IP-адреса, ведь каждый IP-адрес строго закреплен за классом, а у каждого класса фиксированная маска. Так, например, если нам скажут, что есть IP-адрес 10.10.10.10 из классовой IP сети, то вы без труда поймете, что этот IP-адрес относится, к сети класса А, а это значит, что у него в любом случае будет маска 255.0.0.0, из этого следует, что номер сети 10.0.0.0, широковещательный адрес 10.255.255.255, а все остальные адреса из этого диапазона можно забирать под номера узлов.
Стоит заметить, что для IP сетей, в которых адресация реализована на масках переменной длины, этот трюк уже не прокатит. Ведь там у любого IP-адреса может быть любая маска, так, например, в сетях VLSM у того же адреса 10.10.10.10 может быть маска 255.0.0.0, а может быть и 255.255.255.252. Во втором случае номер сети будет 10.10.10.8, широковещательный адрес будет 10.10.10.11, а под номера узлов у нас остается два адреса, поэтому если вам говорят, что сеть VLSM, дают IP-адрес и говорят: назови номер сети, вы просто обязаны будете сказать, а дайте еще и маску.
Дополнительные классы сетей
В классы D и Е включаются сети со старшим октетом выше 224. Эти адреса резервируются для специализированных целей, таких как, например, мультикастинг – передача дейтаграмм определенным группам узлов в сети.
Диапазон класса D используется для рассылки пакетов и лежит в границах от 224.0.0.0 до 239.255.255.255. Последний класс, Е, зарезервирован для использования в будущем. В него входят адреса от 240.0.0.0 до 255.255.255.255. Поэтому если не хотите проблем с адресацией, желательно не брать IP-адреса из этих диапазонов.
Количество устройств в сети
Как вы успели заметить количество устройств в сети всегда меньше на 2 (два). Связано это с тем, что первый адрес является адресом самой сети и используется в таблицах маршрутизации, а последний является широковещательным адресом, пакеты отправленные на этот адрес принимаются всеми участниками сети. Эти адреса зарезервированы и в абсолютном большинстве случаев не могут быть использованы в качестве адресов для устройств в сети.
Исходя из вышесказанного, минимальная подсеть использует четыре IPv4 адреса из которых два могут быть назначены устройствам, а два используются самой сетью.
Классовая и бесклассовая адресация
На данный момент используется два подхода к решению задачи по присвоению адресов компьютерным сетям — классовая адресация и бесклассовая адресация хостов в сети. Первый способ, который частично устарел, заключается в том, что адресное пространство протокола IP делится на несколько основных классов — A, B, C, а также классы D и E. Каждый из этих классов определяет границу между сетевым префиксом и номером хоста в разных точках 32-разрядного адреса.
Например, класс А говорит о том, что идентификатор сети прописан в первом октете, а второй, третий и четвертый октет содержат адрес хоста. Для класса B адрес сети использует первые два октета, а адрес узла — вторые два октета. Класс С распределяет разряды IP-адреса таким образом, что первые три октета занимает идентификатор сети, а четвертый октет содержит адрес хоста. Диапазон первого октета для класса А составляет 1–127, для класса B он составляет 128–191, для класса С — 192–223. Классы принято также записывать через слеш, обозначая цифрой после него количество разрядов, отведенное для адреса сети: (…/8), (…/16) и (…/24).
Представьте себе, что проводится телеконференция между хостами, расположенными в разных локальных сетях — один узел в Праге, другой в Лиссабоне, третий в Париже и так далее. В передаваемом пакете присутствует адрес хоста получателя и адрес отправителя. Из этого следует, что при передаче данных, скажем, из узла в Лиссабоне, всем остальным участникам телеконференции, должны быть переданы пакеты таким числом, чтобы охватить всех получателей. Это заняло бы весь трафик, произошла бы перегрузка канала связи.
Поэтому для таких случаев был выделен диапазон адресов для групповой рассылки 224.0.0.0–239.255.255.255, который получил название класс D. Один хост приписывается группе, и когда в сеть приходит пакет, в адресе получателя которого указана группа, хост, расположенный в этой сети и приписанный этой группе, считает, что поступившая информация — для него тоже. Одним адресом отправляются данные множеству хостов в разных локальных сетях.
Последний класс зарезервированных адресов — класс E. Его диапазон 240.0.0.0–247.255.255.255. Эти адреса нигде не используются, и данный класс создавался с прицелом на возможные будущие технологии. Однако они так и остались невостребованными.
Классовая система адресации отжила свое, хотя и осталась в терминологии. При этом, правило назначения адресов из диапазонов классов A, B и С никто не отменял. Если вы попробуете ввести недопустимый адрес в настройках сетевого интерфейса, получите об этом предупреждение. На замену классовой системе адресации пришла бесклассовая система. Она основана на том, что граница между идентификатором хоста и идентификатором сети не привязана к границе целого октета. Эта граница может не соответствовать ни восьми разрядам, ни 16, ни 24 разрядам. Это количество может быть плавающим, в зависимости от количества хостов, которые входят в эту сеть. Маска подсети в случае с бесклассовой адресацией указывается точно так же с помощью префикса. Например, запись 129.62.135.4/17 означает, что для идентификатора сети выделено 17 разрядов, а оставшиеся 15 разрядов соответствуют идентификатору хоста.
Заключение
Прежде всего, важно разъяснить читателям, что классификация классов IP-адресов устарела. Тем не менее, студенты, изучающие информатику, должны понимать этот старый стандарт сетевых технологий, который может сбивать с толку, но, как видите, очень прост. Еще одно важное уточнение: классы IP-адресов применялись только к протоколу IPv4 без включения протокола IPv6.
В 1993 году метод классов IP-адресов был заменен бесклассовой междоменной маршрутизацией (CIDR), что позволило более эффективно использовать IPv4-адреса. Вместо использования октетов для классификации IP-адресов CIDR использует метод VLSM (маска подсети переменной длины), определяя сетевые биты с префиксом в конце IP-адреса.
Например, IP-адрес класса B может быть выражен как 192.168.0.3/16, где / 16 определяет количество битов, принадлежащих сети (первые два октета), а остальные биты принадлежат хостам. Адрес класса AC может быть выражен как 220.43.56.7/24, где 24 определяет количество битов для идентификации сетей (поскольку каждый октет имеет размер восемь бит, три первых октета составляют 24 бита).