Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать основы работы компьютерных сетей и протокол сетевого уровня IP, а если быть более точным, то его версию IPv4. На этот раз мы разберемся с классовыми сетями и классовой адресацией в IP сетях, посмотрим какие классы были когда-то раньше и какие IP-адреса включали в себя эти классы, а также разберемся с основными механизмами работы классовых сетей.

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

Оглавление первой части: «Основы взаимодействия в компьютерных сетях».

Оглавление четвертой части: «Сетевой уровень: протокол IP и его версия IPv4».

4.5.1 Введение

Классовая адресация IP сетей — это первый механизм, с помощью которого узлы сети определяли судьбу IP-пакетов, этот механизм плавно перерос в CIDR и VLSM, которыми мы до сих пор пользуемся, чтобы проще было разобраться с CIDR и VLSM, нам нужно понять как работали классовые сети.

4.5.2 Классовая адресация IP сетей

Классовые сети в протоколе IP использовались с 1981 по 1993 год, начиная с 1993 года появились сети CIDR и механизм VLSM, поскольку гибкость и экономичность расходования IP-адресов в классовых сетях оставляла желать лучшего. Раз сети классовые, то значит есть и какие-то стандартные классы, вот они:

  1. Сеть класса А.
  2. Сеть класса B.
  3. Сеть класса C.
  4. Сеть класса D.
  5. Сеть класса E.

Как определить к какому классу сети принадлежит IP-адрес? Да очень просто, достаточно взглянуть на первых несколько бит в IP-адресе и всё станет ясно. Первых три класса IP-адресов определяли размер сети, сети класса D использовались для многоадресной рассылки, а сети класса E были зарезервированы для будущих целей.

Скорее всего на данный момент вы не встретите сетей, IP адресация в которых реализована при помощи классов. Отказ от классов и классовой адресации произошел главным образом из-за неэкономного расходования IP-адресов. А как вы наверно знает, в мире сейчас ощущается недостаток публичных IPv4 адресов.

4.5.3 Формат IP-адресов и классы сети

Когда мы разбирались со структурой IP-адреса я уже упоминал о том, что принадлежность к классу сети определяется первыми битами IP-адреса, но на самом деле это еще не всё, дело в том, что за первой последовательностью бит, определяющей классовую принадлежность, идет вторая последовательность, которая определяет сеть, к которой принадлежит IP-адреса или номер сети, а за ней третья последовательность для записи номера узла. Несколько таблиц ниже это наглядно демонстрируют.

Сначала давайте посмотрим на структуру IP-адреса из сети класса А:

Рисунок 4.5.1 Структура IP-адреса класса A

Рисунок 4.5.1 Структура IP-адреса класса A

Здесь мы видим, что принадлежность IP-адреса к классу определяется первым битом IP-адреса, если он имеет значение 0, то это сеть класса А. Вспоминая двоичную систему счисления здесь и сейчас мы уже можем сделать следующий вывод: в классовых сетях половина всего пространства IP-адресов принадлежала классу А, поскольку ровно у половины IP-адресов самый крайний левый бит 0, у другой половины первый бит 1. Далее идет 7 бит, которые определяют номер сети класса А, давайте сейчас скажем, что если под номера сети нам выделено 7 бит, то это означает, что всего можно сделать 27 сетей внутри класса А или 128 сетей, а в каждую такую сеть мы можем поместить 224 узлов, ведь под номер узла нам здесь дается целых 24 бита, а это целых 16 777 216 узлов в одной подсети, итого получается, что сети класса А – это половина все адресного пространства в протоколе IPv4 или 2 147 483 392 IP-адреса. Изначально планировалась выдавать IP-адреса из сети класса А только очень крупным компаниям.

Если принять во внимания только те факторы, что мы описали выше, то получается, что сети класса А занимают пространство IP-адресов с 0.0.0.0 по 127.255.255.255, а из этого следует, что в сетях класса А первый октет определяет номер сети, а три других отданы под номер узла. Давайте теперь посмотрим на структуру IP-адреса из сети класса B.

Рисунок 4.5.2 Структура IP-адреса класса B

Рисунок 4.5.2 Структура IP-адреса класса B

Здесь мы видим, что сеть класса B определяется по первым двум битам, если их значение 102, то перед нами IP-адрес из сети класса B, последующих 14 бит отданы под номер узла, а оставшихся 16 бит определяют номер хоста. Получается, что внутри класса B доступно 16384 сети или 214 номеров сети. И давайте пока скажем, что в одной сети класса B может быть 65536 узлов. А всего в сети класса B получается 1 073 741 824 IP-адреса, то есть одна четвертая IP-адресов от всего пула, планировалось выдавать сети из класса B только крупным компаниям.

Из того, что мы сказали выше получается, что первый IP-адрес в сети класса B 128.0.0.0, а последний 191.255.255.255, если принять во внимание структуру IP-адреса сети класса B, то первых два байта здесь отданы под номер сети, а оставшихся два байта определяют номер хоста. Перейдем к сетям класса C.

Рисунок 4.5.3 Структура IP-адреса класса C

Рисунок 4.5.3 Структура IP-адреса класса C

Если первых три бита имеют значения 1102, то перед вами IP-адрес из сети класса C. А далее следует последовательность из 21 бита, которая отдана под номер сети, 21 + 3 = 24, следовательно, под номер хоста у нас остается 8 бит, ведь сам IP-адрес 32 бита. Получается, что внутри класса C можно нарезать 2 097 152 сети или 221 номеров сети. А внутри одной сети класса C может быть 28 номеров узла или 256 узлов. Нетрудно посчитать, что всего в классе C всего 536 870 912 IP-адресов, первый IP-адрес 192.0.0.0, а последний 223.255.255.255.

В сетях класса C первых три октета определяют номер сети, а последний байт используется для нумерации узлов. Ниже показана структура multicast IP-адреса в классовых сетях, для которых был выделен класс D.

Рисунок 4.5.4 Структура IP-адреса класса D

Рисунок 4.5.4 Структура IP-адреса класса D

Какая тут логика? Попробуем ответить на вопрос: много ли мы знаем чисел в десятичной системе счисления от 0 до 255, у которых четыре старших разряда были бы представлены последовательностью 11102. Сначала ответим на вопрос: почему от 0 до 255? Да потому что в один октет можно записать число только из этого диапазона, больше уже не влезет, число 255 в двоичной системе записывается как 111111112, а число 256 уже записывается как 1000000002, то есть это уже 9 бит. С учетом ограничения в 8 бит выходит, что первое попадающее под последовательность 11102 это 224 (11100000), а последнее число, попадающее под эти условия, в двоичной системе будет выглядеть так: 111011112, в десятичной системе 239. Получается начальный IP-адрес сети класса D 224.0.0.0, а последний 239.255.255.255. Говорит о числе возможных хостов и сетей в данном случае не имеет смысла.
Перейдем к сетям класса E, которые никому не выдавались и были зарезервированы под различные эксперименты и будущие технические новшества в сетях передачи данных, структура IP-адреса сети класса E показана ниже.

Рисунок 4.5.5 Структура IP-адреса класса E

Рисунок 4.5.5 Структура IP-адреса класса E

Здесь самое главное, чтобы первых четыре бита первого октета IP-адреса имели значение 11112. Руководствоваться здесь нужно той же логикой, которая у нас была при рассмотрении сети класса D, хотя можно сказать проще: все оставшиеся IP-адреса были зарезервированы и относились к сети класса Е. Начальный адрес сети класса E 240.0.0.0, а конечный адрес 255.255.255.255.
Тут вы должны меня прервать и сказать: «Стоп, а как мы можем проверить диапазоны IP-адресов каждого класса, вдруг ты нас обманываешь?». И это будет справедливо, проверять нужно всё и всегда. Давайте проверим диапазоны для сетей класса А и B вместе, а для всех остальных, если вам захочется вы сделаете это сами.

Начнем с класса А. У нас есть условие, что самый первый бит в IP-адресе сети класса А должен быть 0, следовательно, все остальные биты (а их осталось 31) могут быть какими угодно, тогда у нас получается, что самое маленькое число, которое мы можем записать в двоичном виде будет представлять собой 32-а нуля: 000000002 000000002 000000002 000000002, а самое большое число, которое попадает под условие будет таким: 011111112 111111112 111111112 111111112. Если написать эти адреса в десятичной системе, то мы получим: 0.0.0.0 и 127.255.255.255. Аналогично поступим с сетями класса B, только учтем, что здесь первых два бита имеют фиксированные значения 102. Тогда получается, что самое маленькое, что можно записать, с учетом этого условия, в двоичной системе счисления выглядит так: 100000002 000000002 000000002 000000002, а самое большое число так: 101111112 111111112 111111112 111111112. В десятичной системе эти IP-адреса записываются так: с 128.0.0.0 по 192.255.255.255.

4.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-адрес и маска подсети в двоичной системе счисления

Рисунок 4.5.6 IP-адрес и маска подсети в двоичной системе счисления

Помните структуру IP-адреса сети класса А? Самый первый бит обязательно должен быть нулевой, в таблице я его выделил более крупным шрифтом, а следующих семь бит определяют номер узла в сети класса А, то есть 1 + 7 = 8, другими словами первый октет. А теперь посмотрите на первый октет в маске сети для сетей класса А, там все биты установлены в единицу. Вы должны помнить, что маска подсети, это такая штука, у которой сначала идут только единицы, а потом идут только нули, никаких разрывов быть не должно. А если IP-адрес наложить на маску, и для каждого бита IP-адреса, выполнить операцию «логическое И» с соответствующим битом маски сети, то мы узнаем номер узла, номер сети и широковещательный адрем. Получится следующее: там, где в маске стоят единицы, значения бит IP-адреса не изменятся, а там, где в маске стоят нули, значения бит IP-адреса обнуляется, таким образом мы узнаем номер сети. Таблица ниже это демонстрирует.

Рисунок 4.5.7 Номер сети и маска у IP-адреса класса A

Рисунок 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

Рисунок 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

Рисунок 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-адрес и говорят: назови номер сети, вы просто обязаны будете сказать, а дайте еще и маску.

4.5.5 IP адресация в классовых сетях

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

Рисунок 4.5.10 Классы сетей и их описание в протоколе IPv4

Рисунок 4.5.10 Классы сетей и их описание в протоколе IPv4

Обратите внимание на диапазон первого октета для сетей класса А, ранее я говорил, что сети класса А начинаются с 0.0.0.0 и заканчиваются 127.255.255.255, но все дело в том, что адреса с диапазона с 0.0.0.0 до 0.255.255.255 мы использовать не можем, так как они зарезервированы под специальные нужды, а IP-адреса с 127.0.0.0 по 127.255.255.255 отданы программным loopback интерфейсам и используются для их диагностики, то есть эти адреса всегда есть на любом компьютере и они всегда доступны, если сетевые библиотеки вашего компьютера работают корректно. По этим причинам я и указал диапазон значения первого октета для сети класса А с 1 по 126.

Приведем вторую таблицу, в которой собрана вся необходимая информация для быстрого расчета классовых сетей.

Рисунок 4.5.11 Классы сетей и их описание в протоколе IPv4

Рисунок 4.5.11 Классы сетей и их описание в протоколе IPv4

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

4.5.6 Выводы

Информация из этой темы на первый взгляд может показаться бесполезной, но она нужна для понимания процесса развития компьютерных сетей, если мы поймем из-за чего и как механизм классовых сетей был заменен механизмами VLSM и CIDR, для нас будет проще понять принцип работы современных компьютерных сетей, ведь замена классов на VLSM – это прямая ветвь развития, можно сказать, что механизм VLSM опирается на классовые сети.

Возможно, эти записи вам покажутся интересными


Выберете удобный для себя способ, чтобы оставить комментарий

Leave a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Loading Disqus Comments ...