Network Education
КаталогГлоссарийПрогресс
Протокол IPv4
  1. 1Основы
  2. 2Формат пакета
  3. 3Классовая адресация
  4. 4Бесклассовая адресация
  5. 5Задачи на IP-адресацию
  6. 6ARP
  7. 7DHCP
  8. 8ICMP
  9. 9NAT
Каталог/Сетевые основы/Протокол IPv4/Классовая адресация

Классовая адресация

3Урок 3 из 9

О чём этот урок

Классы IP-адресов (A, B, C), определение границы Network ID / Host ID, служебные адреса, таблица маршрутизации и причины неэффективности классовой модели.

Ключевые выводы

  • Класс адреса определяется по старшим битам первого октета: 0–127 — класс A (/8), 128–191 — класс B (/16), 192–223 — класс C (/24)
  • В каждой сети два адреса зарезервированы: адрес сети (Host ID = все нули) нельзя назначать узлам, широковещательный адрес (Host ID = все единицы) принимается всеми узлами
  • Классовая адресация крайне неэффективна: невозможно создать сеть произвольного размера, что приводит к колоссальному расходу адресного пространства
  • Маршрут по умолчанию позволяет не перечислять все сети мира — пакеты, не попавшие под явные маршруты, отправляются через один указанный шлюз

Проверьте себя

Вопрос 1 из 6

К какому классу относится IP-адрес 172.16.5.1?

Вопрос 2 из 6

Какие два адреса зарезервированы в каждой IP-сети и не могут назначаться узлам?

Вопрос 3 из 6

В чём главный недостаток классовой адресации?

Вопрос 4 из 6

Для чего используется маршрут по умолчанию (default route)?

Вопрос 5 из 6

Какая маска подсети по умолчанию соответствует классу A?

Вопрос 6 из 6

Что произойдёт при отправке пакета на широковещательный адрес сети?

🔗Связанные уроки

⚠️Сначала посмотрите

Бесклассовая адресацияПротокол IPv4
→

Бесклассовая адресация (CIDR) строится на основе классовой — для понимания ipv4-classless необходимо сначала изучить ipv4-classful

🔗Смотрите также

История и основы протокола IP: классовая адресацияCisco ICND1: основы сетей и Cisco IOS
→

Одна и та же тема — классовая адресация IPv4 (классы A/B/C), рассмотренная в двух разных курсах

Формат пакетаБесклассовая адресация

Транскрипция

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

Замечу сразу, что мы будем говорить про классовую адресацию (classful addressing). То есть про то, что в современном мире вы уже не встретите. Классовая адресация -- это то, как изначально было придумано, а потом поняли, что придумали плохо, и сделали бесклассовую адресацию (classless addressing), которая будет отдельным модулем.

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

Как узлы определяют, находятся ли они в одной сети

Каким образом два устройства отправляют друг другу данные?

У нас есть узел, который хочет отправить данные кому-нибудь. Этот узел смотрит, находится ли получатель в одном канале с ним, с отправителем:

  • Если да -- отправитель отправляет данные сразу в тот канал, в котором он находится с получателем.
  • Если нет -- отправитель отправляет пакет по какому-то иному правилу в сторону маршрутизатора, который дальше уже разберётся, куда отправлять пакет.

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

Сравнение Network ID

Как вы определяете, что получатель находится с вами в одном канале?

  1. Берёте IP-адрес получателя (он вам должен быть известен).
  2. Берёте левую часть (Network ID) этого адреса и сравниваете со своей левой частью.
  3. Если результат совпал -- вы находитесь в одном канале с получателем.
  4. Если не совпал -- в этом канале вы с ним не находитесь.

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

Канальная адресация при передаче

Вы отправляете пакет, но отправляете его в кадре. Этот кадр должен иметь канальные адреса. Если говорить про Ethernet, там есть MAC-адрес отправителя и получателя. Вы должны правильно заполнить эти MAC-адреса:

  • Получатель в одном канале -- вы прописываете MAC-адрес конечного получателя. И IP-адреса, и MAC-адреса указывают на получателя.
  • Получатель в другом канале -- вы прописываете MAC-адрес маршрутизатора в качестве канального получателя. Маршрутизатор откроет кадр, увидит, что кадр адресован ему, увидит, что IP-пакет адресован не ему, и промаршрутизирует его дальше в сторону получателя.

Логика здесь одинакова как при классовой, так и при бесклассовой адресации.

Где проходит граница Network ID и Host ID

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

Когда нужно отправить пакет, вы берёте столько бит из IP-адреса соседа, сколько у вас составляет Network ID, и сравниваете со своими битами:

  • Совпало -- вы в одной канальной среде.
  • Не совпало -- неважно, что сосед о себе думает; главное, что биты не совпали.

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

Размер сети и адресное пространство

У IP-адреса 32 бита. Чем меньше бит отводится под Host ID, тем меньше хостов можно разместить в этой канальной среде.

Например, если 24 бита под Network ID, то оставшиеся 8 бит под Host ID дают 256 разных значений (2^8).

Все IP-адреса в мире ограничены 4 миллиардами с копейками (2^32). Есть организация IANA (Internet Assigned Numbers Authority), которая распределяет эти адреса и говорит: "Вот эти адреса используешь ты, вот эти -- ты, и больше никто эти адреса использовать не может".

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

Покупка сети

Когда вы покупаете адреса, вы покупаете сразу сеть. Вы покупаете левую часть (Network ID), а правую часть (Host ID) выбираете самостоятельно. Из 32 бит вы покупаете все адреса, у которых определённые левые биты будут одинаковые и фиксированные, а все правые биты перебирают все возможные значения.

  • Покупаете /24 сетку -- платите за 256 адресов.
  • Покупаете /16 сетку -- платите за 65 536 адресов.

Если покупаете слишком большую сетку, которую не используете, -- просто зря тратите деньги.

Служебные адреса

В каждой сети два адреса использовать нельзя:

Адрес Host ID Назначение
Первый (самый младший) Все биты = 0 Адрес самой сети, нельзя назначать узлам
Последний (самый старший) Все биты = 1 Широковещательный адрес (broadcast), принимается всеми узлами в сети

Например, для сети 192.168.1.0/24:

  • 192.168.1.0 -- адрес сети
  • 192.168.1.255 -- широковещательный адрес
  • 192.168.1.1 ... 192.168.1.254 -- адреса для узлов (254 штуки)

Широковещательный адрес работает так: если вы получаете IP-пакет, у которого Network ID совпадает с вашим, а Host ID -- все единички, вы воспринимаете этот адрес как свой собственный. Отправлять IP-пакеты из-под такого адреса нельзя, но принимать IP-пакеты на такой адрес будут все узлы с таким же Network ID.

Три класса адресов

Первый протокол IP, которым мы стали массово пользоваться -- IPv4, определённый в RFC 791 (Request for Comments), -- определял три возможных размера сетей: класс A, класс B и класс C.

Класс A

Параметр Значение
Первый бит 0
Первый октет 0 -- 127
Размер Network ID 8 бит (1 октет)
Размер Host ID 24 бита (3 октета)
Количество сетей 128 (2^7), реально 126
Адресов в сети 16 777 216 (2^24)
Хостов в сети 16 777 214

Сети класса A -- это сети-гиганты. Вы не можете взять сеть класса A и разделить её пополам -- это запрещено. Вы обязаны использовать все адреса в одной канальной среде.

В реальности вы не видели таких сетей никогда и не увидите -- с миллионами узлов. Поэтому сети класса A, конечно, существовали, но их, как правило, выкупали крупные корпорации в надежде когда-нибудь вырасти. Но не выросли. Потом появилась бесклассовая адресация, и вся эта идея пошла прахом. Зато те компании, которые выкупили себе сетки класса A, потом на этом деле хорошо поднялись.

Сети 0.x.x.x и 127.x.x.x зарезервированы под служебные нужды, поэтому реально доступных сетей класса A -- 126.

Класс B

Параметр Значение
Первые два бита 10
Первый октет 128 -- 191
Размер Network ID 16 бит (2 октета)
Размер Host ID 16 бит (2 октета)
Количество сетей 16 384 (2^14)
Адресов в сети 65 536 (2^16)
Хостов в сети 65 534

Левая половина -- Network ID, правая половина -- Host ID. Если вы не влезали в сеть класса C, то вынуждены были покупать класс B. Но компании, которым реально не хватало бы класса B, представить довольно сложно. Все IP-адреса обязаны использоваться в одном широковещательном домене.

Класс C

Параметр Значение
Первые три бита 110
Первый октет 192 -- 223
Размер Network ID 24 бита (3 октета)
Размер Host ID 8 бит (1 октет)
Количество сетей 2 097 152 (2^21)
Адресов в сети 256 (2^8)
Хостов в сети 254

Это самая маленькая сеть, которую можно было придумать в рамках RFC 791.

Проблемы классовой адресации

Когда придумывались сети, они придумывались одного из трёх размеров:

  • Класс C -- до 254 узлов
  • Класс B -- до 65 534 узлов
  • Класс A -- до 16 777 214 узлов

Никаких point-to-point сетей не было. Если нужно было соединить два узла прямым проводом, вы обязаны были использовать сеть класса C. Два адреса из 256 вы использовали, а оставшиеся 254 просто покупали и ничего с ними не могли сделать.

Если в канальной среде было 300 узлов -- приходилось покупать класс B (65 000 адресов), а использовать только 300. Остальные лежали мёртвым грузом.

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

Преимущество классовой адресации

Она очень легко позволяет вычислить Network ID из IP-адреса. Смотрите на IP-адрес, определяете класс по первому октету, и сразу знаете, где граница:

  • 192.168.1.1 -- первый октет 192, класс C, Network ID: 192.168.1, Host ID: 1
  • 10.1.1.1 -- первый октет 10, класс A, Network ID: 10, Host ID: 1.1.1

На практике это не очень полезно -- вам не нужно знать, какой Network ID у соседа. Главное -- знать свой Network ID.

Недостатки

  • Класс A: 126 сетей гигантского размера -- дорогие и никому особо не нужны
  • Класс B: 16 384 сети -- не так много
  • Класс C: 2 миллиона сетей -- звучит гордо, но с ростом интернета и каналов точка-точка быстро стали исчерпываться

Поэтому классовую адресацию сегодня использовать не нужно, и всё оборудование от этой идеи отошло.

Пример: определение маршрута при классовой адресации

Допустим, у машины есть два интерфейса:

  • Интерфейс 1: 192.168.1.1 (класс C)
  • Интерфейс 2: 172.16.1.1 (класс B)

Нужно отправить пакет на 172.16.32.0.

Шаг 1. Проверяем интерфейс 1:

  • IP 192.168.1.1 -- класс C, Network ID = 192.168.1
  • Берём 24 бита адреса получателя: 172.16.32
  • 192.168.1 и 172.16.32 не совпадают. Не тот канал.

Шаг 2. Проверяем интерфейс 2:

  • IP 172.16.1.1 -- класс B, Network ID = 172.16
  • Берём 16 бит адреса получателя: 172.16
  • 172.16 = 172.16. Совпадение! Получатель в одном канале.

Отправляем пакет через интерфейс 2 напрямую получателю.

Обратите внимание: адрес 172.16.32.0 при классовой адресации -- это адрес хоста, а не адрес сети! Потому что для класса B:

  • Адрес сети: 172.16.0.0
  • Широковещательный адрес: 172.16.255.255
  • Все остальные, включая 172.16.32.0, -- адреса хостов

Несколько адресов на одном интерфейсе

На одном интерфейсе можно задавать несколько адресов из одной подсети. Если вы это делаете, то должны выбрать, из-под какого адреса отправлять исходящие пакеты. Этот адрес помечается как основной (primary).

Основной адрес нужен только для одного: если система не знает, из-под какого адреса отправить IP-пакет (например, вы набираете telnet 172.16.32.0 без явного указания адреса источника), она берёт основной адрес с интерфейса, через который пойдёт пакет.

Основной адрес ничем не лучше и не хуже остальных -- это обычный адрес. Он нужен только как подсказка: "Если не знаешь, откуда отправлять -- отправляй с этого."

Ограничение: два интерфейса в одну среду

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

А вот на одном интерфейсе два адреса из одной сети -- пожалуйста, никаких проблем.

Таблица маршрутизации и маршрут по умолчанию

Если получатель не находится ни в одной из directly connected сетей, используется таблица маршрутизации. Это полное представление о том, как устроена сеть и как до всего добраться.

Пример таблицы маршрутизации

Допустим, у маршрутизатора два интерфейса:

  • Интерфейс 1: 192.168.1.1, connected-сеть 192.168.1.0
  • Интерфейс 2: 172.16.1.1, connected-сеть 172.16.0.0

И в таблице есть записи об удалённых сетях:

Сеть Интерфейс Примечание
10.0.0.0 Ethernet 0 Connected
192.168.1.0 Ethernet 1 Connected, default

При поиске маршрута до 10.255.255.254:

  1. Проверяем 10.0.0.0 -- класс A, Network ID = 10. У получателя тоже 10. Совпадение! Отправляем через Ethernet 0.

При классовой адресации у вас не может быть такого, что в таблице есть несколько способов добраться до одного и того же IP-адреса. Один IP-адрес всегда принадлежит одной классовой сети, и эта сеть либо присутствует в таблице, либо нет.

Маршрут по умолчанию (default route)

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

Это позволяет резко сократить количество записей в таблице маршрутизации. Особенно для конечных узлов и небольших маршрутизаторов.

Пример корпоративной сети

Есть корпоративная сеть с маршрутизатором, который смотрит в интернет:

  • Сеть 10.0.0.0 (класс A) -- за левым маршрутизатором
  • Сеть 11.0.0.0 (класс A) -- connected
  • Сеть 12.0.0.0 (класс A) -- connected
  • Сеть 192.168.1.0 (класс C) -- связь между маршрутизаторами
  • Сеть 192.168.0.0 (класс C) -- в сторону интернета, default

Шлюз по умолчанию (default gateway) -- это указание для конечного узла: "Вообще все сети доступны за вот этим маршрутизатором." Даже если вы не можете просмотреть таблицу маршрутизации, шлюз по умолчанию вы можете задать.

Например, узел 12.0.0.2:

  • Знает, что IP-адреса, начинающиеся с 12, -- в его сети (connected, класс A)
  • Всё остальное отправляет через шлюз по умолчанию на маршрутизатор

Центральный маршрутизатор знает про все connected-сети, про удалённую сеть 10.0.0.0 через соседний маршрутизатор, а всё остальное (интернет) -- через default-маршрут.

Маршрут по умолчанию может быть только один.

Провайдерские маршрутизаторы

Для провайдеров маршрут по умолчанию уже не пройдёт: у провайдерского маршрутизатора слева половина интернета, справа -- другая половина. Там нужно действительно знать про все сети в мире. Но это провайдерское оборудование, и проблемы с нехваткой памяти или процессорной мощности на нём встречаются реже, чем на оборудовании класса SOHO (Small Office, Home Office).

Итоги

В 2016 году (когда записывался курс) классовой адресацией уже не пользуются. Хотя термины "сеть класса B" и "сеть класса C" всё ещё остались в обиходе, на самом деле имеются в виду бесклассовые сети, которые по размеру соответствуют классовым. Например, когда говорят "сеть класса C 192.168.1.0", имеют в виду бесклассовую сеть с маской /24.

Дальше -- бесклассовая адресация, то, чем мы на самом деле пользуемся в реальном мире.

Network Education

Бесплатная онлайн-академия сетевых технологий. Видеоуроки, транскрипции и структурированные треки обучения — от основ до продвинутого уровня.

ТрекиКаталогО проекте
© 2026 Network Education