Основы сетевых технологий — IP-адреса, сетевые маски и подсети
В этом руководстве мы рассмотрим некоторые из основ сетевых технологий. Мы не будем ничего взламывать, но прочитав эту статью, вы узнаете множество вещей, которые пригодятся впоследствии, особенно когда вы будете использовать nmap. Также советуем вам просмотреть страницы всех перечисленных в данной публикации понятий в Википедии, поскольку вдаваться в подробности мы не будем.
IP-адрес
Как узнать внешний IP адрес из командной строки мы узнали с вами из этой темы. IP-адрес — это просто 32-битный адрес, который должно иметь любое устройство в любой сети (использующей протокол IP/TCP). Обычно он выражается в десятичной, а не двоичной системе счисления, потому что так его проще писать. Например:
Из двоичной формы ясно, что IP действительно является 32-битным числом. Он может находиться в диапазоне от 0.0.0.0 до 255.255.255.255 (в двоичной форме от всех нулей ко всем единицам). [Первый октет чаще всего не превышает 127. Но здесь мы об этом рассказывать не будем.]
Части IP-адреса
IP-адрес состоит из 2 частей: номера сети и номера узла (хоста). Большинство беспроводных маршрутизаторов используют первые 3 октета (8 бит, потому и октет) для номера сети, а последний октет для номера хоста. Самая распространённая конфигурация — 192.168.1.1 . Где 192.168.1.0 — номер сети, а 0.0.0.1 — номер хоста. Таким образом, номер хоста может варьироваться от 0.0.0.0 до 0.0.0.255 (хотя 0 и 255 обычно зарезервированы для сети и широкого вещания соответственно).
Потребность в сетевых масках
Но у разных сетей имеются различные потребности. Конфигурация, описанная выше, позволяет создать множество сетей (первые 3 октета являются номером сети и могут принимать различные значения, а не только 192.168.1.0 ), но в каждой их них могут находиться только 256 (на самом деле 254) хостов. Некоторым сетям может потребоваться больше (больше чем 255 хостов на одну сеть). Именно поэтому в сетях нет «жёстких» стандартов для номера хоста и номера сети. Вместо этого они могут указывать свои собственные конфигурации. Использование первых 3 октетов для номера сети, а последнего октета для номера хоста встречается довольно часто, но делать так ни в коем случае не обязательно. Благодаря сетевым маскам мы получаем гибкий набор конфигураций, подходящих для любых случаев.
Сетевая маска
Сетевая маска применяется для разделения IP-адреса в подсетях.
Начнём с простого примера. Допустим, мы хотим задать сетевую маску, которая работала бы так же, как беспроводной маршрутизатор в предыдущем примере. То есть первые 3 октета должны быть номером сети, а следующий — номером хоста.
Давайте подумаем, с помощью какой операции можно разделить части IP-адреса, отвечающие за сеть и хоста. Мы могли бы просто указать, после какого октета начинается номер хоста [фактически говоря, что всё после третьей точки (.) — номер хоста]. Хотя это простое решение, оно не слишком удобно. Вместо него был предложен более элегантный и математический подход.
Как работает сетевая маска
Сначала, поясню вам математический функционал сетевой маски. Предложим, что А — IP-адрес, а М — сетевая маска. Тогда,
Таким образом, сетевая маска — это, фактически, 32-битный двоичный номер (так же как и IP-адрес), целью которого является выдача номера хоста и номера сети после выполнения операции побитовое И с А.
Пример
Вы всё лучше поймёте, рассмотрев следующий пример:
Конвертируем их в двоичную систему счисления и выполняем нужные операции.
A&M — IP сети, которая нам нужна
M — IP хоста, который нам нужен
Пояснение
Фактически, если вы поймёте, что 11111111 — это 255 в десятичной системе, то увидите, что для частей IP-адресов, указывающих на сети, нужно устанавливать подсеть 255. А части, указывающие на хостов, должны равняться 0.
Если вы хотите зарезервировать 2 октета для сетей и 2 для хостов, тогда подсеть будет выглядеть так
Если для хостов нужно 3 октета, тогда
Следовательно, используя сетевые маски, мы можем добиться требуемого результата, то есть указания необходимого количества хостов. Рассмотрим этот вопрос чуть глубже.
Подсети
Предположим, вы хотите разделить свою сеть на части. Это суб-сети, известные как подсети.
Перейдём к практике. Пусть M — сетевая маска.
Первые 3 октета описывают сеть. Но в 4-м октете, который предназначается для хоста, 2 самых важных бита (первые с левой стороны) являются единицами. Поэтому 2 важнейших бита 4-го октета будут видны после выполнения побитовой операции И. Они будут являться частью номера сети, однако, принадлежат к октету хоста. Таким образом, эти 2 бита, относящиеся к октету хоста, но отображающиеся в IP-адресе сети, разделяют сеть на подсети. Из 2 битов можно составить 4 возможные комбинации 00, 01, 10 и 11, поэтому в сети будет 4 подсети.
Пример подсети
Ранее, независимо от содержимого 4-го октета А, после выполнения операции A&M мы бы получили 4 октет, состоящий из одних только 0, то есть номер сети. На этот раз результатом будут 2 самых важных бита в номере сети. В зависимости от значения xx (может равняться 00, 01, 10 или 11) будет сформировано четыре подсети. Теперь давайте посмотрим, какой набор хостов относится к каждой из подсетей.
Какие хосты относятся к каждой их подсетей
Итак, сетевая маска М разделила сеть на 4 равные подсети, содержащие по 64 хоста. Существуют и более сложные подсети, применяющиеся в определённых областях. Я рекомендую вам ознакомиться со страницей Википедии, посвящённой маскам подсетей, чтобы получить об этом более полное представление. Здесь я уже объяснил достаточно, чтобы вы могли без проблем понять содержимое Википедии по данной теме.
Особые IP-адреса
0.0.0.0 = Все IP-адреса на локальной машине. Любой контент, размещённый на данном IP, будет доступен всем устройствам в сети.
127.0.0.1 = локальный хост. Обращение машины к самой себе.
255.255.255.255 = Широковещательный адрес. Данные, отправляемые на этот IP, будут переданы всем хостам в сети (похоже на работу радио).
В заключение
Видите обозначения на этой картинке ?
Такой способ представления подсетей с помощью /24, /25, /26 и так далее, очень полезен при сканировании сетей на уязвимости (с помощью nmap и других инструментов). /24 обозначает сетевую маску 255.255.255.0 , как в нашем первом примере с беспроводным маршрутизатором. При выполнении сканирования nmap, вы будете сталкиваться с ней чаще всего. Следующая сеть, которую мы описали в разделе подсетей, отображается как /26. В ней 4 подсети. В свою очередь, /25 включает 2 подсети, /27 имеет 8, а /31 — уже 128 подсетей! При такой конфигурации, в каждой подсети может находиться только 2 хоста, и она используется для точечной связи. Надеюсь, в следующий раз, когда вам придётся иметь дело с сетями, у вас не возникнет никаких сложностей. Конечно, есть и другие вопросы, продолжающие данную тему, например, многоадресная рассылка. О них вы можете почитать самостоятельно, а это руководство подошло к концу. Удачи.
2 комментария
Спасибо за перевод статьи. В оригинале есть ошибки, которые перешли в этот перевод.
как узнать порядковый номер компьютера в сети
IPv4 (англ. Internet Protocol version 4) — четвёртая версия интернет протокола (IP). Первая широко используемая версия. Протокол описан в RFC 791 (сентябрь 1981 года), заменившем RFC 760 (январь 1980 года).
IPv4 использует 32-битные (четырёхбайтные) адреса, ограничивающие адресное пространство 4 294 967 296 (2 32 ) возможными уникальными адресами.
Традиционной формой записи IPv4 адреса является запись в виде четырёх десятичных чисел (от 0 до 255), разделённых точками. Через дробь указывается длина маски подсети.
IP-адрес состоит из двух частей: номера сети и номера узла. В случае изолированной сети её адрес может быть выбран администратором из специально зарезервированных для таких сетей блоков адресов (10.0.0.0/8, 172.16.0.0/12 или 192.168.0.0/16). Если же сеть должна работать как составная часть Интернета, то адрес сети выдаётся провайдером либо региональным интернет-регистратором (Regional Internet Registry, RIR). Согласно данным на сайте IANA, существует пять RIR: ARIN, обслуживающий Северную Америку, а также Багамы, Пуэрто-Рико и Ямайку; APNIC, обслуживающий страны Южной, Восточной и Юго-Восточной Азии, а также Австралии и Океании; AfriNIC, обслуживающий страны Африки; LACNIC, обслуживающий страны Южной Америки и бассейна Карибского моря; и RIPE NCC, обслуживающий Европу, Центральную Азию, Ближний Восток. Региональные регистраторы получают номера автономных систем и большие блоки адресов у IANA, а затем выдают номера автономных систем и блоки адресов меньшего размера локальным интернет-регистраторам (Local Internet Registries, LIR), обычно являющимся крупными провайдерами. Номер узла в протоколе IP назначается независимо от локального адреса узла. Маршрутизатор по определению входит сразу в несколько сетей. Поэтому каждый порт маршрутизатора имеет собственный IP-адрес. Конечный узел также может входить в несколько IP-сетей. В этом случае компьютер должен иметь несколько IP-адресов, по числу сетевых связей. Таким образом, IP-адрес характеризует не отдельный компьютер или маршрутизатор, а одно сетевое соединение.
Есть два способа определения того, сколько бит отводится на маску подсети, а сколько — на IP-адрес. Изначально использовалась классовая адресация (INET), но со второй половины 90-х годов XX века она была вытеснена бесклассовой адресацией (CIDR), при которой количество адресов в сети определяется маской подсети.
Запись IP-адресов с указанием через слэш маски подсети переменной длины также называют CIDR-адресом в противоположность обычной записи без указания маски, в операционных системах типа UNIX также именуемой INET-адресом.
В протоколе IP существует несколько соглашений об особой интерпретации IP-адресов: если все двоичные разряды IP-адреса равны 1, то пакет с таким адресом назначения должен рассылаться всем узлам, находящимся в той же сети, что и источник этого пакета. Такая рассылка называется ограниченным широковещательным сообщением (limited broadcast). Если в поле номера узла назначения стоят только единицы, то пакет, имеющий такой адрес, рассылается всем узлам сети с заданным номером сети. Например, в сети 192.168.5.0 с маской 255.255.255.0 пакет с адресом 192.168.5.255 доставляется всем узлам этой сети. Такая рассылка называется широковещательным сообщением (direct broadcast).
IP-адрес называют статическим (постоянным, неизменяемым), если он назначается пользователем в настройках устройства, либо назначается автоматически при подключении устройства к сети и не может быть присвоен другому устройству.
IP-адрес называют динамическим (непостоянным, изменяемым), если он назначается автоматически при подключении устройства к сети и используется в течение ограниченного промежутка времени, указанного в сервисе назначавшего IP-адрес (DHCP).
IP калькулятор
Калькулятор производит расчет адреса сети IPv4, широковещательного адреса, ip-адрес первого узла, ip-адрес последнего узла, количество узлов в заданной сети, маску подсети и инверсию маски (wildcard mask).
Данные представлены в десятичной и двоичных системах исчисления.
При построении сети, классы подсетей выбираются исходя из предполагаемого количества узлов в компьютерной сети. Если изначально выбрана подсеть вмещающая малое количество узлов (например, класс С c маской 255.255.255.0), при большом росте компьютерной сети часто приходится менять подсеть и маску подсети, чтобы не усложнять адресацию.
И наоборот, если изначально выбрана подсеть включающая в себя огромное количество хостов (например, класса А с маской 255.0.0.0), то при возникновении в компании филиальной сети, приходится сжимать подсети чтобы выделять подсети под филиалы.
Для того, чтобы рассчитать сетевые параметры, укажите IP-адрес хоста и маску подсети.
Маска подсети: что такое и как узнать по IP
В статье рассмотрим, что такое и зачем нужна маска подсети . А начнем с того, как устроены IP-адреса, потому что от понимания структуры айпи зависит и понимание назначения маски подсети .
Структура IP-адреса
IP можно назвать указателями, которые заключают в себе данные о расположении устройств в сетях, организованным по протоколам TCP/IP, по которым работает большинство хостов (устройств, подключенных к сети). Благодаря этим адресам данные, посылаемые через Интернет или по внутренним сетям, попадают куда нужно.
IP-адрес в формате протокола IPv4 представляет собой 4 числа, разделенные точками. При этом каждое число сетевые устройства воспринимают в виде двоичного кода. Например, 127.0.0.0 — это 01111111.00000000.00000000.00000000 , а 192.168.0.1 — 11000000.10101000.00000000.00000001 .
Интересный факт: люди могут не знать IP компьютера, за которым работают, но если у них дома есть роутер, они прекрасно знают адрес 192.168.0.1 . Именно по нему доступны в сети большинство маршрутизаторов.
Минимально возможное значение для айпи — 0.0.0.0 , максимальное — 255.255.255.255 , потому что протокол IPv4 поддерживает только 32-битные числа или 256 значений на каждую из 4 частей IP-адреса. При этом ряд диапазонов уже зарезервированы: например, диапазон 127.0.0.0 – 127.255.255.255 используется для интерфейсов типа localhost. Адрес 192.168.0.1 — тоже один из примеров зарезервированного IP.
Первые три числа часто представляют собой номер сети, а последнее — номер хоста, конкретного устройства в этой сети. Теперь понятно, что сеть 192.168.0 зарезервирована для внутренних номеров, а последняя единица означает первое устройство (хост) в подобной сети, то есть маршрутизатор. Поэтому-то адрес маршрутизатора вот такой: 192.168.0.1 . А почему не 192.168.0.0 ? Дело в том, что 0 используется в качестве адреса сети, поэтому конкретные хосты он обозначать не может.
Что такое и для чего нужна маска подсети
Для настройки интернет-соединения по TCP/IP также требуется указать, помимо IP-адреса, и маску подсети . Все сети подразделяются на несколько классов, которые маркируются литерами A, B, C (есть еще D и E — это специальные сети). Сети класса A (самые крупные) имеют вид «сеть-хост-хост-хост», B — «сеть-сеть-хост-хост» и C — «сеть-сеть-сеть-хост».
Однако системные администраторы, чтобы обеспечить всех достаточным количеством адресов, разбивают сети соответствующего класса на более мелкие структуры — подсети. И для подсети, конечно же, нужно задать границы. Для этого как раз и используется маска подсети.
Обычная запись маски подсети в сетях класса C: 255.255.255.0 . Если не совсем понятно в десятичном виде, давайте преобразуем ее в двоичный код: 11111111.11111111.11111111.00000000 . Первые три октета (октет — группа из 8 бит) — наборы единиц, а последний — нули. В маске подсети единицы идентифицируют сетевую часть, а нули — хосты. Сетевая часть неизменна, а вот с самым правым октетом, заполненным нулями, можно работать.
Нетрудно подсчитать, что здесь у нас поместится 256 устройств, если поставить все возможные комбинации нулей и единиц. Однако на самом деле не 256, а 254, первое (0) и последнее (255) значения зарезервированы. Про 0 мы уже говорили: 0 является адресом сети (в данном случае подсети), а 255 используется в качестве широковещательного адреса.
Таким образом, маска подсети позволяет задать границы подсети, которые будут видеть маршрутизаторы. Понятно, что виды масок подсети зависят от классов сетей, для которых они используются. Например, самый распространенный вариант маски подсети для сетей класса B — 255.255.0.0 , а для класса A — 255.0.0.0 .
Какую маску подсети выбрать
Стандартный вариант маски для сетей класса C: 255.255.255.0 . Но совершенно не обязательно оставлять её такой. Например, если в вашей сети около сотни компьютеров и расширения не планируется, нетрудно подсчитать, что понадобится только половина от доступных IP-адресов. Поэтому можно разделить сеть на две части, просто изменив маску, вот так: 255.255.255.128 . Давайте посмотрим, как это будет выглядеть в двоичном коде: 11111111.11111111.11111111.10000000 . Слева в правом октете появилась единица, то есть работать в этой сети теперь можно уже только со 128, а точнее, со 126 значениями (помним про идентификатор сети и широковещательный адрес).
Если же нам потребуется разделить сеть на 4 подсети, используем маску 255.255.255.192 или 11111111.11111111.11111111.11000000 . Это позволит работать уже с 64 адресами. Для разбивки сетей на 8 подсетей маска уже будет иметь вид 255.255.255.224 или 11111111.11111111.11111111.11100000 . Думаем, принцип вы поняли: отталкиваемся от количества хостов в нашей сети и соответствующим образом выставляем маску, чтобы не плодить лишних айпи.
Маски подсети в IPv6
Понятно, что протокола IPv4 с его 4 миллиардами адресов (точное число: 4 294 967 296 уникальных адресов, но помним про значительные диапазоны зарезервированных) уже не хватает. Поэтому для адресации стали использовать протокол IPv6, который поддерживает уже 128-битные значения (8 чисел в шестнадцатеричной системе счисления). Здесь количество возможных адресов неизмеримо больше, чем у протокола IPv4 (в 10 28 раз), что абсолютно точно покроет все потребности человечества даже в не слишком обозримом будущем. Однако, поскольку шестнадцатеричный формат совершенно другой, то и маски подсетей здесь задаются по иным правилам.
Для построения сетей в рамках протокола IPv6 используется бесклассовая адресация, CIDR. Применение CIDR позволяет настраивать подсети значительно более гибко, так как этот метод делает возможным применять больше масок подсетей. В шестнадцатеричном формате каждая позиция может принимать значения от 0 до F (числа 0-9 и буквы A-F как раз дают последовательность из 16 символов). Поэтому, чтобы задать маску, используем F для сетевой части.
Например: ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000 . Такая маска позволит нам работать с 65536 адресами. А если нам нужно сократить количество адресов наполовину, то используем такой вариант: ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000 . Примерным соответствием маски для сети класса C (конечно, это не совсем корректно, так как классы в IPv6 отсутствуют, но сравнить с чем-то нужно для наглядности) здесь будет ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00 . Эта запись позволит выделить 256 IP-адресов в формате IPv6. Почему именно такая запись? Всё просто: свободны два разряда в правой части. В каждом разряде у нас 16 возможных значений, следовательно: 16*16 = 256.
Как узнать адрес сети по IP-адресу и маске подсети
Если вы не знакомы с побитовыми операциями, самое время приступить к освоению этой, в общем-то не самой сложной, части программирования. Итак, давайте для примера попробуем выяснить, к какой сети принадлежит адрес 192.168.1.2 с маской 255.255.254.0 . Переведем их в двоичный вид и будем складывать методом поразрядного сложения (побитовое И). Здесь нужно запомнить одно простое правило: единица на выходе получается только в том случае, если в одинаковых разрядах обоих чисел тоже единицы. Если хотя бы в одном из чисел в этом месте ноль, то и на выходе всегда будет ноль. И вот что у нас вышло:
Приводим получившееся число к десятичному виду (задачу по переводу чисел в разные системы счисления вам облегчит этот калькулятор ). Вуаля, вот и искомый адрес сети: 192.168.0.0. Как видите, ничего сложного: нужно только немного привыкнуть к двоичному виду чисел и битовым операциям.
Заключение
Итак, мы узнали о структуре IP-адреса, масках подсети в форматах IPv4 и IPv6 и научились изменять их под потребности своей сети. А еще освоили побитовое сложение для нахождения адреса сети по айпи и маске.
Курс по основам компьютерных сетей на базе оборудования Cisco. Этот курс поможет вам подготовиться к экзаменам CCENT/CCNA, так как за его основу взят курс Cisco ICND1.
4.2 IP-адрес в протоколе IPv4. Структура IP-адреса: как узнать номер сети и номер узла?
- 12.09.2018
- Cisco CCNA (ICND1 и ICND2), Компьютерные сети
- 3 комментария
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать основы работы компьютерных сетей, в этой теме я предлагаю разобраться со структурой IP-адреса и откуда вообще берутся какие-то номера сети и номера узлов, ведь IP-адрес с виду цельная и неделимая сущность. Также в этой записи мы коротко поговорим о маске подсети и зачем она нужна, увидим, что когда-то было всё плохо и сети были классовыми, а сейчас всё стало хорошо благодаря CIDR и VLSM и сети стали бесклассовые и в завершении посмотрим на формы записи IP-адресов в протоколе IPv4.
Если тема компьютерных сетей вам интересна, то можете ознакомиться с другими записями курса.
4.2.1 Введение
Структура IP-адреса — это одна из самых важных тем для понимания принципов работы протокола IP, эта тема очень тесно связана с маршрутизацией, механизмом работы классовых сетей и механизмом маски подсети переменной длинны, если вы не разберетесь со структурой IP-адреса, вы, конечно, не будете испытывать проблем с тем, чтобы настроить на своем ПК доступ в Интернет, но у вас не будет понимания принципов работы IP сетей. Надеюсь, я вас убедил в том, что тема важная, хоть и небольшая.
4.2.2 Структура IP-адреса и маска подсети
В протоколе IP есть две очень важные вещи, которые сделали его вездесущим. Первое – это заголовок IP-пакета, который определяет функционал протокола, а второе – это IP-адрес, который, следует заметить, является частью заголовка, но о нем стоит поговорить отдельно, чем мы сейчас и займемся. Я более чем уверен, что вы уже видели IP-адреса и более того, работали с ними, но если нет, то вот вам пример: 192.168.1.0. Для человека IP-адреса в протоколе IPv4 чаще всего представлены вот в таком виде.
Тут ничего сложного нет. Для нас IP-адрес разбит на четыре кусочка, разделителем между кусочками служат точки, каждый такой кусочек представляет собой один байт или один октет, следовательно, максимально возможное число, которое можно записать равно 255, а минимальное число ноль. Получается, что чисто теоретически можно использовать адреса от 0.0.0.0 до 255.255.255.255. Правда часть из этих адресов зарезервирована под специальные нужды, это мы обсудим в отдельной теме. Сейчас же будем считать, что нам доступно два в тридцать второй степени IP-адресов или 4 294 967 296, которых уже катастрофически не хватает, поэтому происходить плавное внедрение протокола IPv6.
На самом деле IP-адрес – это не просто четыре числа, разделенных точками, а более интересная и сложная сущность. Во-первых, следует заметить, что маршрутизаторы не знают десятичной системы счисления, так же, как и абонентские узлы, для них IP-адрес представлен набором нулей и единиц в нашем случае (192.168.1.0), IP-адрес для машины выглядит как-то так: 11000000 (192) 10101000 (168) 00000001 (1) 00000000 (0). Октеты в данном случае я разделил пробелами, думаю, тут всё очевидно: каждый байт – это восемь двоичных значений (0 или 1), а всего у нас для IP-адреса выделено четыре байта, то есть 32 бита, отсюда вытекает и два в тридцать второй степени IP-адресов.
Я сразу оговорился, что IP-адрес более сложная штука, чем кажется на первый взгляд. Дело всё в том, что IP-адрес включает в себя два параметра, которые позволяют идентифицировать узел в глобальной сети: номер узла и номер сети. Вообще, протокол IP предусматривает два механизма разбиения IP-адреса на номер сети и номер узла. Первый механизм называется классовая адресация, а второй механизм называется CIDR (Classless Inter-Domain Routing) или бесклассовая адресация. В этой теме мы сделаем поверхностный обзор этих механизмов, а в дальнейшем разберемся с ними детально.
Сейчас же сделаем небольшое отступление и поговорим про байты и биты, а если быть более точным, то про порядок нумерации байтов и битов в байте. Для примера возьмем IP-адрес 192.168.1.0 и запишем его в двоичном виде.

Рисунок 4.2.1 Номера октетов и битов в IP-адресе
В таблице показана нумерация октетов и бит в октетах так, как это реализуется в сетях модели TCP/IP. Эта нумерация справедлива как для IP-адреса в отдельности, так для всего заголовка IP-пакета. Крайний левый байт или самый первый байт называется старшим и его порядковый номер ноль, последний байт — младший и его порядковый номер три. То же самое относится и к битам: самый старший бит имеет порядковый номер ноль, а самый младший бит в байте имеет порядковый номер семь. Такая нумерация называется от старшего к младшему или big-endian, иногда такой порядок называется сетевым порядком.
Кстати, если у вас процессор интеловской архитектуры, то он нумерует байты и биты в обратном порядке, то есть от младшего к старшему, big-endian или интеловский порядок нумерации. Есть еще смешанный порядок и переключаемый порядок, но это нам уже не очень интересно. Почему в компьютерных сетях используется прямой порядок? Да очень просто, дело в том, что в таком порядке числа удобнее сравнивать, а сетевые устройства в основном только и делают, что сравнивают то, что им пришло в пакетах с тем, что записано в их конфигурациях или памяти.
4.2.3 Классовые сети
Классовые сети были единственным способом разделить пространство IP-адресов между всеми желающими до 1993 года, то есть с 1981 по 1993 год, в 1993 году появился механизмы VLSM и CIDR, которые сделали процесс деления более гибким, из этого можно сделать вывод, что в начале девяностых уже появились первые проблемы с нехваткой IP-адресов в протоколе IPv4.
Классовая адресация, как ясно из названия, делит всё пространство IP-адресов на классы, всего этих классов пять: A, B, C, D, E. Как понять к какому классу принадлежит IP-адрес? Да очень просто! Посмотреть на его первые биты. Приведу небольшой список, чтобы было понятно, к какому классу какой IP-адрес относится:
- сети класса А определяются значением первого бита, если первый бит IP-адреса нулевой, то это означает, что он относится к сети класса А, во всех остальных случаях – это другой класс;
- сети класса B определяются по значениям первых двух бит IP-адреса, IP-адрес относится к сети класса B в том случае, если первый бит имеет значение 1, а второй 0;
- IP-адрес будет принадлежать к сети класса C, если первый бит адреса будет равен 1, второй бит тоже 1, а третий будет 0;
- сети класса D определяются по первым четырем битам IP-адреса, при этом первый бит 1, второй бит 1, третий бит 1, а четвертый 0, стоит добавить, что сети класса D использовались для многоадресной рассылки или иначе multicast;
- и наконец сети класса E были зарезервированы и их нельзя было использовать простым смертным, определялись они первыми четырьмя битами, каждый из которых должен был иметь значение 1.
Для ясности давайте посмотрим на примере IP-адресов для каждого класса:
- Сеть класса А. IP-адрес в десятичном виде: 10.10.0.1. IP-адрес в двоичном виде: 00001010 00001010 00000000 00000001. Обратите внимание на то, что первый бит равен нулю, он как раз и определяет, что данный IP-адрес принадлежит к сети класса A.
- Сеть класса B. IP-адрес в десятичном виде: 130.25.25.12. IP-адрес в двоичном виде: 1000 0010 00011001 00011001 000011000. Принадлежность к данному классу определяют первых два бита: 10.
- Сеть класса C. IP-адрес в десятичном виде: 192.168.1.0. IP-адрес в двоичном виде: 11000000 10101000 00000001 00000000. Значение первых трех бит определяют принадлежность этого адреса к классу C.
- Сеть класса D. IP-адрес в десятичном виде: 224.0.0.6. IP-адрес в двоичном виде: 11100000 00000000 00000000 00000110. Значение первых четырех бит выделены жирным.
- Сеть класса E. IP-адрес в десятичном виде: 240.10.10.10. IP-адрес в двоичном виде: 11110000 00001010 00001010 00001010.
С классами сетей всё ясно и понятно, остается нераскрытым вопрос: как понять из какой подсети тот или иной IP-адрес, но об этом мы поговорим в теме про классовые сети, сейчас же только отмечу, что принадлежность IP-адреса к той или иной подсети определяется значением некоторых бит в самом IP-адресе и фиксированной маской, которая в любом случае будет сопровождать этот адрес.
4.2.4 Бесклассовые сети (CIDR) и маска подсети переменной длины (VLSM)
Бесклассовая адресация или CIDR – это механизм разделения сети на подсети в современных сетях передачи данных, этот механизм позволил существенно экономить адреса и не тратить лишнего. CIDR тесно связан с понятием VLSM (variable length subnet mask) или маска подсети переменной длинны, можно просто маска подсети или маска, на данный момент вас поймут верно. Становится понятно, что здесь уже нет жестких рамок классов, поскольку и самих классов нет. Теперь для того чтобы понять к какой подсети относится IP-адрес, самого IP-адреса недостаточно, нужна еще и маска подсети, которая, следует сказать, не передается по сети, она указывается только на конечных узлах и маршрутизаторах (а, например, L2 коммутаторы и хабы вообще ничего не знают про IP-адреса, первые работают на канальном уровне, а вторые реализуют механизмы физического уровня модели OSI 7, про разницу между хабами, коммутаторами и роутерами читайте здесь), и для нее нет отдельного поля в IP-пакете.
Как выглядит маска подсети? Да на самом деле, как IP-адрес, вот несколько примеров маски: 255.255.255.0, 255.255.254.0, 255.248.0.0. Заметили, здесь общего? Ну, кроме того, что во всех примерах первый октет 255. Общая составляющая будет заметна, если написать все эти маски в двоичном виде:
- 255.255.255.0: 11111111 11111111 11111111 00000000;
- 255.255.254.0: 11111111 11111111 11111110 00000000;
- 255.248.0.0: 11111111 11111000 00000000 00000000.
Обратите внимание: у каждой маски вначале идут только единицы, затем идут только нули, чередоваться нули и единицы в маске подсети не могут. Например, не может быть вот такой маски: 255.254.255.0 или в двоичной системе: 11111111 11111110 11111111 00000000. И это очень важно, поскольку именно на границе нулей и единиц маски подсети находится граница между номером сети и номером узла в IP-адресе.
На примере будет все немного яснее, давайте возьмем следующий IP-адрес и маску: 192.168.1.25/24, иначе это можно было бы записать так: 192.168.1.25 с маской 255.255.255.0, число 24 означает количество единиц в маске. Если вам просто дать этот IP-адрес без маски, то вы не сможете сказать: какие биты этого IP-адреса отданы под номер сети, а какие под номер узла, с маской же все становится понятно. Чтобы понять где здесь номер сети, а где номер узла, нужно перевести и маску, и IP-адрес в двоичную систему счисления. Давайте сделаем всё это в виде таблицы.

Рисунок 4.2.2 Переводим IP-адрес и маску подсети в двоичный вид
Сразу отметим, что те биты IP-адреса, напротив которых в маске подсети стоят единицы, будут относиться к номеру сети, а те биты адреса, напротив которых у маски нули, относятся к номеру хоста. Чтобы узнать номер узла и номер сети нужно выполнить операцию «логическое И» между соответствующими битами IP-адреса и маски. Операция «логическое И» в двоичной системе счисления эквивалентна операции умножения в десятичной: 1×1=1, 1×0=0, 0×0=0. Вы уже понимаете, что номер сети в IP-адресе при использовании CIDR и VLSM определяется маской, а именно единичными битами маски, то есть для нашего случая номер сети это: 192.168.1.0, а под номера узлов у нас остается диапазон с 192.168.1.1 по 192.168.1.254, заметьте, что есть еще 192.168.1.255 — это широковещательный IP-адрес для данной сети и его нельзя назначить узлу или интерфейсу маршрутизатора.
Мы рассмотрели простой пример использования маски подсети, в данном случае граница между номером сети и номером узла в IP-адресе проходит по границе предпоследнего октета, но не всегда бывает так, например, маска 255.248.0.0 проводит границу между номером сети и номером узла посередине октета, но о таких случаях мы поговорим в отдельной теме, посвященной бесклассовой адресации (CIDR) и механизму маски подсети (VLSM).
4.2.5 Форма записи IP-адреса и сокращения
Теперь вас стоит немного удивить и сказать, что ни один официальный документ, посвященный IP протоколу, не говорит нам о том, как правильно записывать IP-адрес в документах, на бумаге или в конфигурациях того или иного устройства. На самом деле IP-адрес — это число, которое можно записать в любой системе счисления, хоть в восьмеричной.
Форма записи октетов, разделенных точками, просто удобна для человека: 127.0.0.1. Но для машины IP-адрес число, которое может находиться в диапазоне от 00000000 00000000 00000000 00000000 до 11111111 11111111 11111111 11111111 или в десятичной системе счисления: от 0 до 4 294 967 295. И вы понимаете, что IP-адрес 127.0.0.1 — это не число 127001, это вот такое число 01111111 00000000 00000000 00000001 или в десятичной системе: 2 130 706 433. Более того, если вы запустите командую строку или эмулятор терминала в своей операционной системе, то сможете пропинговать IP-адрес 127.0.0.1, используя число выше, если не верите, то смотрите листинг ниже.