Как найти количество бит узлов подсети

Количество подсетей = 2n, где n – это количество занятых бит от порции хоста.

Cisco формула расчёта хостов (узлов)

Количество хостов в подсети = 2n-2, где n – это количество свободных бит (нулей) в порции хоста, а «-2» – это вычет адреса сети (в порции хоста все нули) и широковещательного адреса (в порции хоста все единицы).

Объяснение формул расчета сетей

IP адрес

IP адрес состоит из 32 битов, которые поделены на 4 части по 8 бит соответственно (эти части называются октетами). В жизни используется запись IP адреса в десятичном виде.

Примеры IP адресов:

172.16.2.15 = 10101100.00010000.00000010.00001111

178.68.128.168 = 10110010.01000100.10000000.10101000

217.20.147.94 = 11011001.00010100.10010011.01011110

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

Маска сети

Маска сети тоже состоит из 32 битов, но в отличие от IP адреса, в маске единицы и нолики не могут перемешиваться. В жизни используется запись сетевой маски в десятичном виде.

Примеры масок сети:

255.255.255.0 = 11111111.11111111.11111111.00000000

255.0.0.0 = 11111111.00000000.00000000.00000000

255.255.240.0 = 11111111.11111111.11110000.00000000

255.255.255.128 = 11111111.11111111.11111111.10000000

Префикс маски

Еще чаще, маска сети записывается в виде короткого префикса маски. Число в префиксе обозначает количество бит относящихся к адресу сети.

/16 = 11111111.11111111.00000000.00000000 = 255.255.0.0

/24 = 11111111.11111111.11111111.00000000 = 255.255.255.0

/26 = 11111111.11111111.11111111.11000000 = 255.255.255.192

IP адрес и маска сети

Чтобы узнать, какая часть IP адреса относится к порции сети, необходимо выполнить бинарную логическую операцию AND (И).

Бинарная логическая операция AND (И)

Смысл операции заключается в сравнении двух битов, причем только в одном случае бинарная операция даёт единицу на выходе – в случае сравнения двух единиц. В остальных случаях логическая операция AND даёт на выходе 0.

Результаты сравнения логической операцией AND двух битов:

1 AND 1 = 1

1 AND 0 = 0

0 AND 1 = 0

0 AND 0 = 0

Операция AND над IP адресом и маской

Представим, что у нас есть IP адрес 192.168.1.31 с маской сети в виде префикса /24, наша задача вычислить адрес сети, порцию сети, порцию хоста.

Сначала надо перевести IP адрес из десятичной системы счисления в двоичную систему. Затем перевести префикс в двоичный вид и нормальный вид маски сети (десятичный). Далее останется только сложить IP адрес с маской с помощью логической операции AND.

192.168.1.31/24

192.168.1.31 = 11000000.10101000.00000001.00011111

/24 = 11111111.11111111.11111111.00000000 = 255.255.255.0

11000000.10101000.00000001.00011111 (IP)
AND
11111111.11111111.11111111.00000000 (Mask)
=
11000000.10101000.00000001.00000000 (Адрес сети в двоичном виде)
192.168.1.0/24 (Адрес сети в десятичном виде с сетевым префиксом)

Вот мы и узнали адрес сети. Единички в маске указывают на длину порции адреса сети (11000000.10101000.00000001.), а нолики – на порцию адреса хоста (.00011111).

Примеры расчета сетей

Деление сети осуществляется присвоением битов из порции адреса хоста к порции адреса сети. Тем самым мы увеличиваем возможное количество подсетей, но уменьшаем количество хостов в подсетях. Чтобы узнать, сколько получается подсетей из присвоенных битов надо воспользоваться cisco формулой расчета сетей: 2n, где n является количеством присвоенных бит.

Пример расчета сети на 2 подсети.

У нас есть адрес сети 192.168.1.0/24, нам надо разделить имеющуюся сеть на 2 подсети. Попробуем забрать от порции хоста 1 бит и воспользоваться формулой: 21=2, это значит, что если мы заберём один бит от части хоста, то мы получим 2 подсети. Присвоение одного бита из порции хоста увеличит префикс на один бит: /25. Теперь надо выписать 2 одинаковых IP адреса сети в двоичном виде изменив только присвоенный бит (у первой подсети присвоенный бит будет равен 0, а у второй подсети = 1). Захваченный бит я выделю более жирным шрифтом красного цвета.

2 подсети (захваченный бит я выделю более жирным шрифтом красного цвета):

1) 11000000.10101000.00000001.00000000
2) 11000000.10101000.00000001.10000000

Теперь запишем рядом с двоичным видом десятичный, и добавим новый префикс. Красным пометил порцию подсети, а синим – порцию хоста.

1) 11000000.10101000.00000001.00000000 = 192.168.1.0/25
2) 11000000.10101000.00000001.10000000 = 192.168.1.128/25

Всё, сеть разделена на 2 подсети. Как мы видим выше, порция хоста теперь составляет 7 бит.

Чтобы высчитать, сколько адресов хостов можно получить используя 7 бит, необходимо воспользоваться cisco формулой расчёта хостов: 2n-2, где n = количество бит в порции хоста.

27 – 2 = 126 хостов. В начале статьи было сказано, что вычитаемая цифра 2 является двумя адресами, которые нельзя присвоить хосту: адрес сети и широковещательный адрес.

Адрес сети, это когда в порции хоста все нули, а широковещательный адрес, это когда в порции хоста все единицы. Выпишем эти адреса для каждой подсети в двоичном и десятичном виде:

11000000.10101000.00000001.00000000 = 192.168.1.0/25 (адрес сети первой подсети)

11000000.10101000.00000001.01111111 = 192.168.1.127/25 (широковещательный адрес первой подсети)

11000000.10101000.00000001.10000000 = 192.168.1.128/25 (адрес сети второй подсети)

11000000.10101000.00000001.11111111 = 192.168.1.255/25 (широковещательный адрес второй подсети)

Пример расчета сети на 4 подсети.

Этот пример делается абсолютно по тому же алгоритму, что и предыдущий, поэтому я запишу текст немного короче. Адрес я буду использовать тот же, чтобы вы видели отличия. Если нужны подробности, пишите на почту eaneav@gmail.com.

У нас есть адрес сети 192.168.1.0/24, надо разделить сеть на 4 подсети. Высчитываем по формуле, сколько нам надо занять бит от хоста: 22 = 4. Префикс изменяется на /26.

4 подсети (захваченный бит я выделю более жирным шрифтом красного цвета):

1) 11000000.10101000.00000001.00000000
2) 11000000.10101000.00000001.01000000
3) 11000000.10101000.00000001.10000000
4) 11000000.10101000.00000001.11000000

Красным пометил порцию подсети, а синим – порцию хоста:

1) 11000000.10101000.00000001.00000000 = 192.168.1.0/26
2) 11000000.10101000.00000001.01000000 = 192.168.1.64/26
3) 11000000.10101000.00000001.10000000 = 192.168.1.128/26
4) 11000000.10101000.00000001.11000000 = 192.168.1.192/26

Всё, сеть разделена на 4 подсети. Порция хоста теперь составляет 6 бит.

26 – 2 = 62 хостов.

11000000.10101000.00000001.00000000 = 192.168.1.0/26 (адрес сети первой подсети)

11000000.10101000.00000001.00111111 = 192.168.1.63/26 (широковещательный адрес первой подсети)

11000000.10101000.00000001.01000000 = 192.168.1.64/26 (адрес сети второй подсети)

11000000.10101000.00000001.01111111 = 192.168.1.127/26 (широковещательный адрес второй подсети)

11000000.10101000.00000001.10000000 = 192.168.1.128/26 (адрес сети третьей подсети)

11000000.10101000.00000001.10111111 = 192.168.1.191/26 (широковещательный адрес третьей подсети)

11000000.10101000.00000001.11000000 = 192.168.1.192/26 (адрес сети четвёртой подсети)

11000000.10101000.00000001.11111111 = 192.168.1.255/26 (широковещательный адрес четвёртой подсети)

Заключение

Таким способом можно разделить любую сеть на подсети, а cisco формулы расчета сетей и хостов помогут вам в этом деле.

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

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

Итак IP-адрес — это адрес, используемый узлом на сетевом уровне. Он имеет иерархическую структуру. Что это значит? Это значит, что каждая цифра в его написании несет определенный смысл. Объясню на очень хорошем примере. Примером будет номер обычного телефона — +74951234567. Первой цифрой идет +7. Это говорит о том, что номер принадлежит зоне РФ. Далее следует 495. Это код Москвы. И последние 7 цифр я взял случайными. Эти цифры закреплены за районной зоной. Как видите здесь наблюдается четкая иерархия. То есть по номеру можно понять какой стране, зоне он принадлежит. IP адреса придерживаются аналогично строгой иерархии. Контролирует их организация IANA(англ. Internet Assigned Numbers Authority). Если на русском, то это «Администрация адресного пространства Интернет». Заметьте, что слово «Интернет» с большой буквы. Мало кто придает этому значение, поэтому объясню разницу. В англоязычной литературе термин «internet» используется для описания нескольких подключённых друг к другу сетей. А термин «Internet» для описания глобальной сети. Так что примите это к сведению.

Несмотря на то, что тема статьи больше теоретическая, нежели практическая, я настоятельно рекомендую отнестись к ней со всей серьезностью, так как от нее зависит понимание дальнейших тем, а особенно маршрутизации. Не для кого, я думаю, не секрет, что мы привыкли воспринимать числовую информацию в десятичном формате (в числах от 0-9). Однако все современные компьютеры воспринимают информацию в двоичном (0 и 1). Не важно при помощи тока или света передается информация. Вся она будет воспринята устройством как есть сигнал (1) или нет (0). Всего 2 значения. Поэтому был придуман алгоритм перевода из двоичной системы в десятичную, и обратно. Начну с простого и расскажу, как выглядят IP адреса в десятичном формате. Вся эта статья посвящена IP адресам версии 4. О версии 6 будет отдельная статья. В предыдущих статьях, лабах, да и вообще в жизни, вы видели что-то вроде этого «193.233.44.12». Это и есть IP адрес в десятичной записи. Состоит он из 4-х чисел, называемых октетами и разделенных между собой точками. Каждое такое число (октет) может принимать значение от 0 до 255. То есть одно из 256 значений. Длина каждого октета равна 8 битам, а суммарная длина IPv4 = 32 битам. Теперь интересный вопрос. Каким образом этот адрес воспримет компьютер, и как будет с ним работать?

Можно конечно набить это в калькулятор, коих навалом в Интернете, и он переведет его в двоичный формат, но я считаю, что переводить вручную должен уметь каждый. Особенно это касается тех, кто планирует сдавать экзамен. У вас не будет под рукой ничего, кроме бумаги и маркера, и полагаться придется только на свои навыки. Поэтому показываю, как это делать вручную. Строится таблица.

Вместо «x» записывается либо 1, либо 0. Таблица разделена на 8 колонок, каждая из которых несет в себе 1 бит (8 колонок = 8 бит = 1 октет). Расположены они по старшинству слева направо. То есть первый (левый) бит — самый старший и имеет номер 128, а последний (правый) — самый младший и имеет номер 1. Теперь объясню, откуда эти числа взялись. Так как система двоичная, и длина октета равна 8-ми битам, то каждое число получается возведением числа 2 в степень от 0 до 7. И каждая из полученных цифр записывается в таблицу от большего к меньшему. То есть слева направо. От 2 в 7-ой степени до 2 в 0-ой степени. Приведу таблицу степеней 2-ки.

Думаю теперь понятно, каким образом строится таблица. Давайте теперь разберем адрес «193.233.44.12» и посмотрим, как он выглядит в двоичном формате. Разберем каждый октет отдельно. Возьмем число 193 и посмотрим, из каких табличных комбинаций оно получается. 128 + 64 + 1 = 193.

Те числа, которые участвовали в формировании комбинации получают 1, а все остальные получают 0.

Берем первый октет 233. 128 + 64 + 32 + 8 + 1.

Для 44 — это 32 + 8 + 4.

И напоследок 12. 8 + 4.

Получается длинная битовая последовательность 11000001.11101001.00101100.00001100. Именно с данным видом работают сетевые устройства. Битовая последовательность обратима. Вы можете так же вставить каждый октет (по 8 символов) в таблицу и получить десятичную запись. Я представлю совершенно случайную последовательность и приведу ее к десятичному виду. Пусть это будет 11010101.10110100.11000001.00000011. Строю таблицу и заношу в нее первый блок.

Получаю 128 + 64 + 16 + 4 + 1 = 213.

Вычисляю второй блок.

Считаю 128 + 32 + 16 + 4 = 180.

Третий блок.

128 + 64 + 1 = 193.

И напоследок четвертый.

2 + 1 = 3

Собираем результаты вычислений и получаем адрес 213.180.193.3. Ничего тяжелого, чистая арифметика. Если тяжело и прям невыносимо трудно, то попрактикуйтесь. Сначала может показаться страшным, так как многие закончили учебу лет 10 назад и многое позабыли. Но уверяю, что как только набьете руку, считать будет гораздо легче. Ну а для закрепления дам вам несколько примеров для самостоятельного расчета (под спойлером будут ответы, но открывайте их только когда прорешаете сами).

Задача №1

1) 10.124.56.220
2) 113.72.101.11
3) 173.143.32.194
4) 200.69.139.217
5) 88.212.236.76
6) 01011101.10111011.01001000.00110000
7) 01001000.10100011.00000100.10100001
8) 00001111.11011001.11101000.11110101
9) 01000101.00010100.00111011.01010000
10) 00101011.11110011.10000010.00111101

Ответы

1) 00001010.01111100.00111000.11011100
2) 01110001.01001000.01100101.00001011
3) 10101101.10001111.00100000.11000010
4) 11001000.01000101.10001011.11011001
5) 01011000.11010100.11101100.01001100
6) 93.187.72.48
7) 72.163.4.161
8) 15.217.232.245
9) 69.20.59.80
10) 43.243.130.61

Теперь IP-адреса не должны быть чем-то страшным, и можно углубиться в их изучение.
Выше мы говорили о структуре телефонных номеров и их иерархии. И вот на заре рождения Интернета в том представлении, в каком мы его привыкли видеть, возник вопрос. Вопрос заключался в том, что IP-адреса нужно как-то сгруппировать и контролировать выдачу. Решением было разделить все пространство IP-адресов на классы. Это решение получило название классовая адресация (от англ. Classful). Она уже давно устарела, но практически в любой книге на нее отводятся целые главы и разделы. Cisco тоже не забывает про это и в своих учебных материалах рассказывает про нее. Поэтому я пробегусь по этой теме и покажу, чем она блистала с 1981 по 1995 год.

Пространство было поделено на 5 классов. Каждому классу был назначен блок адресов.

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

В чем суть. Первый октет, то есть 8 бит, остаются за адресом сети, а 3 последних октета (то есть оставшиеся 24 бита) назначаются хостам. Вот для того, чтобы показать, какой кусок относится к сети, а какой к хостам, используется маска. По структуре записи она аналогична записи IP-адреса. Отличие маски от IP-адресов в том, что 0 и 1 не могут чередоваться. Сначала идут 1, а потом 0. Таким образом, там где есть единица, значит это участок сети. Чуть ниже, после разбора классов, я покажу, как с ней работать. Сейчас главное знать, что маска класса A — 255.0.0.0. В таблице еще упомянут какой-то первый бит и для класса A он равен 0. Этот бит как раз нужен для того, чтобы сетевое устройство понимало, к какому классу оно принадлежит. Он же еще задает начальный и конечный диапазон адресов. Если в двоичном виде записать на всех октетах единицы, кроме первого бита в первом октете (там всегда 0), то получится 127.255.255.255, что является границей класса A. Например, возьмем адрес 44.58.63.132. Мы знаем, что у класса A первый октет отдается под адрес сети. То есть «44» — это адрес сети, а «58.63.132» — это адрес хоста.

Поговорим про класс B

Этому классу был дан блок поменьше. И адреса из этого блока предназначались для сетей средних масштабов. 2 октета отданы под адрес сети, и 2 — под адрес хостов. Маска у B класса — 255.255.0.0. Первые биты строго 10. А остальные меняются. Перейдем к примеру: 172.16.105.32. Два первых октета под адрес сети — «172.16». А 3-ий и 4-ый под адрес хоста — «105.32».

Класс C

Этот класс обделили адресами и дали ему самый маленький блок. Он был предназначен для мелких сетей. Зато этот класс отдавал целых 3 октета под адрес сети и только 1 октет — под хосты. Маска у него — 255.255.255.0. Первые биты 110. На примере это выглядит так — 192.168.1.5. Адрес сети «192.168.1», а адрес хоста «5».

Классы D и E. Я неcпроста объединил их в один. Адреса из этих блоков зарезервированы и не могут назначаться сетям и хостам. Класс D предназначен для многоадресной рассылки. Аналогию можно привести с телевидением. Телеканал вещает группе лиц свой эфир. И те, кто подключены, могут смотреть телепередачи. То есть в распоряжение администраторов могут попасть только 3 первых класса.

Напомню, что первые биты у класса D — это 1110. Пример адреса — 224.0.0.5.

А первые биты у класса E — это 1111. Поэтому, если вдруг увидите адрес вида 240.0.0.1, смело говорите, что это адрес E класса.

Про классы обмолвились. Теперь озвучу вопрос, который мне недавно задали. Так зачем тогда маски? У нас итак хосты понимают в каком они классе. Но суть вот в чем. Например, у вас есть маленький офис, и вам нужен блок IP-адресов. Никто не будет вам выдавать все адреса класса C. А дадут только его кусок. Например 192.168.1.0 с маской 255.255.255.0. Так вот эта маска и будет определять вашу границу. Мы уже говорили, что октет варьируется в значении от 0 до 255. Вот этот 4 октет полностью в вашем распоряжении. За исключением первого адреса и последнего, то есть 0 и 255 в данном случае. Первый адрес — это адрес сети (в данном случае 192.168.1.0), а последний адрес — широковещательный адрес (192.168.1.255). Напомню, что широковещательный адрес используется в том случае, когда надо передать информацию всем узлам в сети. Поэтому есть правило. Если вам надо узнать номер сети, то все биты относящиеся к хосту обращаете в 0, а если широковещательный, то все биты — в 1. Поэтому, если из 256 адресов забирается 2 адреса, то на назначение хостам остается 254 адреса (256 — 2). На собеседованиях и экзаменах часто любят спрашивать: «Количество IP-адресов в сети?» и «Сколько доступных IP-адресов в сети для назначения хостам?». Два разных вопроса, которые могут поставить в тупик. Ответом на первый будет — все адреса, включая адрес сети и широковещательный адрес, а на второй вопрос — все адреса, кроме адреса сети и широковещательного адреса.

Теперь углубимся в изучении маски.

Я записал адрес класса C 192.168.1.1 с маской 255.255.255.0 в десятичном и двоичном формате. Обратите внимание на то, как выглядит IP-адрес и маска в двоичном формате. Если в IP-адресе 0 и 1 чередуются, то в маске сначала идут 1, а потом 0. Эти биты фиксируют адрес сети и задают размер. По таблице выше можно сделать вывод, что в двоичном виде маска представлена последовательностью 24 единиц подряд. Это говорит о том, что целых 3 октета выделено под сеть, а 4 октет свободен под адресацию для хостов. Здесь ничего необычного. Это стандартная маска класса C.

Но вот в чем загвоздка. Например, в вашем офисе 100 компьютеров, и расширяться вы не планируете. Зачем плодить сеть из 250+ адресов, которые вам не нужны?! На помощь приходит разделение на подсети. Это очень удобная вещь. Объясню принцип на примере того же класса C. Как бы вы не хотели, но трогать 3 октета нельзя. Они фиксированы. Но вот 4 октет свободен под хосты, поэтому его можно трогать. Заимствуя биты из хостового куска, вы дробите сеть на n-ое количество подсетей и, соответственно, уменьшаете в ней количество адресов для хостов.

Попробуем это воплотить в реальность. Меняю маску. Заимствую первый бит из хостовой части(то есть 1-ый бит 4-ого октета выставляю в единицу). Получается следующая маска.

Данная маска делит сеть на 2 части. Если до дробления у сети было 256 адресов(от 0 до 255), то после дробления у каждого куска будет по 128 адресов(от 0 до 127 и от 128 до 255).
Теперь посмотрю, что изменится в целом с адресами.

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

То есть в четвертом октете меняются все биты, кроме первого. Он жестко фиксирован в рамках этой сети.

Теперь посмотрим на вторую половину сети и вычислим ее адреса. Деление у нас производилось заимствованием первого бита в 4-ом октете, значит он является делителем. Первая половина сети получалась, когда этот бит принимал значение 0, а значит вторая сеть образуется, когда этот бит примет значение 1. Обращаю этот бит в 1 и посмотрю на границы.

Приведу в десятичный вид.

Соответственно .128 и .255 назначать хостам нельзя. Значит в доступности 128-2=126 адресов.
Вот таким образом можно при помощи маски управлять размером сети. Каждый заимствованный бит делит сеть на 2 части. Если откусить 1 бит от хостовой части, то поделим на 2 части (по 128 адресов), 2 бита = 4 части (по 64 адреса), 3 бита = 8 (по 32 адреса) и так далее.

Если вы рассчитали количество бит, отдаваемые под хосты, то количество доступных IP-адресов можно вычислить по формуле

В книге У. Одома по подготовке к CCNA R&S приведена хорошая формула для расчета битов, отдаваемых на подсеть и хосты:

N + S + H = 32, где N — кол-во битов сети (класс A — 8 бит, B — 16 бит, C — 24 бита), S — кол-во заимствованных битов на подсеть (это то, что мы делали выше, когда заимствовали 1 бит из хостовой части), H — кол-во бит отводимых хостам.

Внесу ясность и объясню, как и где применять эти формулы.

Возьмем пример:

Нам выдали сеть 172.16.0.0 и попросили создать 120 подсетей со 180 хостами и записать маску. Приступим.

В качестве шпаргалки, и для быстроты вычисления, я ниже подготовил таблицу степеней двойки.

Двигаемся дальше. Первое главное условие, при использовании классовой адресации — это то, что должна использоваться одна маска для всех подсетей. То есть, если у вас для одной подсети маска 255.255.255.0, то для другой подсети она не может быть 255.255.255.128.

Теперь смотрим на выданную сеть. Путем логических размышлений понимаем, что это адрес класса B. А значит его N (кол-во битов сети) = 16. Ок. Значит на хосты выделено тоже 16 бит. Вспоминаем условия задачи. Нужно создать 120 подсетей. «Откусывать» биты от сетевой части запрещено, значит кусаем от хостовой части.

Теперь нужно взять такое кол-во бит, чтобы хватило для 120 подсетей, однако оставляло достаточное кол-во под биты для хоста. Смотрим на таблицу выше. Если взять 7 бит, то получим 128. 128>120, следовательно попадаем под условие. Если возьмем 6 бит, то получим 64. 64<128, поэтому не попадаем под условие и отбрасываем этот вариант.

Ок. Выяснили, что S надо выделить не меньше 7 бит. Теперь посмотрим, что осталось под хосты.
Если N + S + H = 32 => H = 32 — (N + S) => H = 32 — (16 + 7) = 9. Смотрим на таблицу выше (или возводим 2 в 9 степень в уме) и получаем число 512. Отнимаем 2 (адрес сети и широковещательный адрес) и получаем 510 адресов. Нам нужно 180, а значит под условие мы попадаем причем с большим запасом. В таких случаях вам предоставляется право выбора. Сделать больше подсетей или хостов на подсеть. Объясняю, что это значит. У нас есть 9 бит на хосты. Если мы возьмем 8 бит, то получим число 256. 256 — 2 = 254 адреса. Этот вариант нам тоже подходит. Возьмем 7 бит. Получаем 128. Даже не отнимая 2 адреса, становится понятно, что это меньше 180 => данный вариант отбрасывается сразу. Итого получаем, что минимальное количество для подсети — 7 бит, а для хостов — 8 бит. Поэтому свободный бит можно отдать либо на подсеть, либо на хосты. Маска получается сложением N и S. В нашем случае получаем, если под подсеть отдаем 7 бит, то получаем 23. В десятичном виде маска будет выглядеть 255.255.254.0. А если отдадим под подсеть 8 бит, то получим 24 (или в десятичном виде 255.255.255.0). Иногда бывает, что под задачу существует всего одна маска. Ну и, конечно, могут быть случаи, когда маска не попадает не под какие условия. В этих случаях нужно брать сеть другого класса или доказывать заказчику, что это невозможно.

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

Задача №2

1) Записать маску для проекта: сеть 172.16.0.0. 250 подсетей и 220 хостов.
2) Записать маску для проекта: сеть 10.0.0.0. 2000 подсетей и 1500 хостов.
3) Записать маску для проекта: сеть 192.168.0.0. 4 подсети и 60 хостов.

Ответы на задачи

1) 24 бита или 255.255.255.0
2) 19 бит (255.255.224.0), 20 бит (255.255.240.0), 21 бит (255.255.248.0)
3) 26 бит или 255.255.255.192

На этом разговор про классовые сети начну закруглять и подведу итоги. Классовая адресация — это зарождение сегодняшнего интернета, и именно с нее все началось. Поэтому плюсов у нее много, и за это создателям спасибо. Но, как вы могли заметить, у нее было жесткая привязка к одной маске. За счет этого IP-адреса использовались не экономно и расточительно. А в связи с бурным ростом Интернета адресов стало не хватать, и срочно нужно было вносить изменения.

Поняли ведущие умы, что использовать классовые сети не удобно и нужно от них отказываться. Это привело к созданию бесклассовой адресации и маскам переменной длины, о чем мы ниже поговорим. Но перед этим пару слов о видах IP-адресов. Несмотря на то, что переход от классовой адресации к бесклассовой предполагал экономию IP-адресов, на деле эта проблема все равно решалась не полностью. Все упиралось в саму технологию IPv4. Объясню почему. Выше я говорил, что длина IP адреса равна 32 бита. Каждый бит может принимать значение 0 или 1, то есть два значения. Соответственно, чтобы вычислить все комбинации, надо возвести 2 в 32-ую степень. Получаем 4294967296 адресов. Если вычесть отсюда зарезервированные для специальных нужд и прочего, то останется примерно 4.2 млрд. адресов, когда на Земле проживает около 7.3 млрд. человек. Поэтому ведущие умы быстро просекли эту фишку и начали искать решение. Они решили выделить некое адресное пространство, которое будет использоваться только в пределах локальной сети и не будет использоваться в Интернете. Это разделило адреса на 2 лагеря: белые или публичные (англ. public) и серые или частные (англ. private).

Привожу диапазон адресов, которые выделены под локальные сети:

1) 10.0.0.0 — 10.255.255.255 с маской 255.0.0.0 (или кратко 10/8).
2) 172.16.0.0 — 172.31.255.255 с маской 255.240.0.0 (или кратко 172.16/12).
3) 192.168.0.0 — 192.168.255.255 (или кратко 192.168/16).

Если честно, я мало где видел применение адресации 172.16.X.X. Обычно в корпоративной среде всегда используется 10.X.X.X, а в домах/квартирах и мелких офисах 192.168.X.X.

Теперь прошу обратить внимание на очень важную вещь, которую многие путают. Не путайте классовую адресацию и диапазон частных адресов. Очень много людей наступают на эти грабли и свято верят, что диапазон частных адресов 10.0.0.0 — 10.255.255.255 — это диапазон A класса.
Разобрались, что такое частные адреса или private адреса. Но это еще не все. Есть еще список зарезервированных адресов, которые не могут светиться в Интернете. По ним написана целая документация на IETF. Привожу ссылку, где можете прочитать оригинал. Я кратко опишу часто встречающиеся.

1) 0.0.0.0/8 — диапазон адресов, используемый хостами для самоидентификации. Обычно это можно увидеть, когда хост пытается получить IP-адрес от DHCP сервера. Так как изначально у него нету IP-адреса, то в поле источника он вставляет адрес из данного диапазона.

2) 127.0.0.0/8 — loopback или localhost адреса. Это IP-адреса, используемые компьютером, чтобы обратиться к самому себе. Очень полезно для проверки работы TCP/IP. Дело в том, что независимо от наличия соединения с Интернетом или локальной сетью, адреса из этого пула должны всегда пинговаться. Если этого не происходит, значит система накрылась или накрывается медным тазом.

3) 169.254.0.0/16 — link-local address или локальные адреса. Автоматически используются хостами при отсутствии DHCP-сервера или его недоступности. Это позволяет быстро организовать локальную сеть и проверить работу узлов. Однако данный пул адресов не маршрутизируется. Следовательно, выйти в Интернет с них не получится.

4) 224.0.0.0/4 — блок адресов, зарезервированный под многоадресную рассылку или multicast. Для тех, кто хочет побольше узнать про multicast, оставляю ссылку.

Бесклассовая адресация (англ. Classless Inter-Domain Routing или CIDR). Описана была в стандарте RFC1519 в 1993 году. Она отказалась от классовых рамок и фиксированной маски. Адреса делятся только на публичные и зарезервированные, о которых написано выше. Если в классовой адресации маска нарезалась единой для всех подсетей, то в бесклассовой — у каждой подсети может быть своя маска. На теории все хорошо и красиво, но нет ничего лучше, чем практика. Поэтому перехожу к ней и объясню, как можно делить на подсети с разным количеством хостов.

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

Представим ситуацию. Вам выдали сеть 192.168.1.0/24 и поставили следующие условия:

1) Подсеть на 10 адресов для гостей.
2) Подсеть на 42 адреса для сотрудников.
3) Подсеть на 2 адреса для соединения 2 маршрутизаторов.
4) Подсеть на 26 адресов для филиала.

Ок. Данная маска показывает, что в нашем распоряжении находятся 256 адресов. По условию эту сеть надо каким-то образом разделить на 4 подсети. Давайте попробуем. 256 очень хорошо делится на 4, давая в ответе 64. Значит один большой блок в 256 адресов можно поделить на 4 равных блока по 64 адреса в каждом. И все было бы прекрасно, но это порождает большое число пустых адресов. Для сотрудников, которым нужно 42 адреса, ладно, может в дальнейшем компания еще наймет. Но вот подсеть для маршрутизаторов, которая требует всего 2 адреса, оставит 60 пустых адресов. Да, вы можете сказать, что это private адреса, и кому дело до них. А теперь представьте, что это публичные адреса, которые маршрутизируются в Интернете. Их и так мало, а тут мы еще будем их отбрасывать. Это не дело, тем более, когда мы можем гибко управлять адресным пространством. Поэтому возвращаемся к примеру и нарежем подсети так, как нам нужно.

Итак, какие подсети должны быть нарезаны, чтобы вместились все адреса, заданные по условию?!

1) Для 10 хостов, наименьшей подсетью будет блок из 16 адресов.
2) Для 42 хостов, наименьшей подсетью будет блок из 64 адресов.
3) Для 2 хостов, наименьшей подсетью будет блок из 4 адресов.
4) Для 26 хостов, наименьшей подсетью будет блок из 32 адресов.

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

Вот у нас блок, состоящий из 256 адресов.

После деления на 4 части получается следующая картинка.

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

Как видите, в свободном доступе осталось куча адресов, которые мы в дальнейшем сможем использовать. Можно посчитать точную цифру. 256 — (64 + 32 + 16 + 4) = 140 адресов.

Вот столько адресов мы сэкономили. Двигаемся дальше и ответим на следующие вопросы:

— Какими будут сетевые и широковещательные адреса?
— Какие адреса можно будет назначить хостам?
— Как буду выглядеть маски?

Механизм деления на подсети с разной маской получил название VLSM (от англ. Variable Length Subnet Mask) или маска подсети переменной длины. Дам важный совет! Начинайте адресацию с самой большой подсети. Иначе вы можете попасть на то, что адреса начнут перекрываться. Поэтому сначала планируйте сеть на бумаге. Нарисуйте ее, изобразите в виде фигур, просчитайте вручную или на калькуляторе и только потом переходите настройке в боевых условиях.

Итак, самая большая подсеть состоит из 64 адресов. С нее и начнем. Первый пул адресов будет следующий:

Адрес подсети — 192.168.1.0.
Широковещательный адрес — 192.168.1.63.
Пул адресов для назначения хостам от 192.168.1.1 до 192.168.1.62.
Теперь выбор маски. Тут все просто. Отнимаем от целой сети нужный кусок и полученное число записываем в октет маски. То есть 256 — 64 = 192 => маска 255.255.255.192 или /26.

Дальше идет подсеть поменьше. Состоит она из 32 адресов. Если первая заканчивалась на .63, то эта будет начинаться с .64:

Адрес подсети — 192.168.1.64.
Широковещательный адрес — 192.168.1.95.
Пул адресов для назначения хостам будет от 192.168.1.65 до 192.168.1.94.
Маска: 256 — 32 = 224 => 255.255.255.224 или /27.

3-я подсеть, которая предназначена для филиала, начнет старт с .96:

Адрес подсети — 192.168.1.96.
Широковещательный адрес — 192.168.1.111.
Пул адресов для назначения хостам будет от 192.168.1.97 до 192.168.1.110.
Маска: 256 — 16 = 240 => 255.255.255.240 или /28.

Ну и для последней подсети, которая уйдет под интерфейсы, соединяющие роутеры, будет начинаться с .112:

Адрес подсети — 192.168.1.112.
Широковещательный адрес — 192.168.1.115.
Разрешенными адресами будут 192.168.1.113 и 192.168.1.114.
Маска: 256 — 4 = 252 => 255.255.255.252 или /30.

Замечу, что адрес 192.168.1.115 является последним используемым адресом. Начиная с 192.168.1.116 и до .255 свободны.

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

Задача №3

Разделите сеть 192.168.1.0/24 на 3 разные подсети. Найдите и запишите в каждой подсети ее адреса, широковещательный адрес, пул разрешенных к выдаче адресов и маску. Указываю требуемые размеры подсетей:

1) Подсеть на 120 адресов.
2) Подсеть на 12 адресов.
3) Подсеть на 5 адресов.

Ответ

1) Адрес подсети — 192.168.1.0.
Широковещательный адрес — 192.168.1.127.
Пул адресов для назначения хостам будет от 192.168.1.1 до 192.168.1.126.
Маска: 256 — 128 = 128 => 255.255.255.128 или /25.

2) Адрес подсети — 192.168.1.128.
Широковещательный адрес — 192.168.1.143.
Пул адресов для назначения хостам будет от 192.168.1.129 до 192.168.1.142.
Маска: 256 — 16 = 240 => 255.255.255.240 или /28.

3) Адрес подсети — 192.168.1.144.
Широковещательный адрес — 192.168.1.151.
Пул адресов для назначения хостам будет от 192.168.1.145 до 192.168.1.150.
Маска: 256 — 8 = 248 => 255.255.255.248 или /29.

Теперь, когда вы знаете, как делить сети на подсети, самое время научиться собирать подсети в одну общую подсеть. Иначе это называется суммированием или summarization. Суммирование чаще всего используется в маршрутизации. Когда у вас в таблице маршрутизатора несколько соседних подсетей, маршрутизация которых проходит через один и тот же интерфейс или адрес. Скорее всего этот процесс лучше объяснять при разборе маршрутизации, но учитывая то, что тема маршрутизации и так большая, то я объясню процесс суммирования в этой статье. Тем более, что суммирование это сплошная математика, а в этой статье мы ею и занимаемся. Ну что же, приступлю.

Представим, что у меня компания состоящая из главного здания и корпусов. Я работаю в главном здании, а в корпусах коллеги. Хоть у меня и главное здание, но в нем всего 4 подсети:

— 192.168.0.0/24
— 192.168.1.0/24
— 192.168.2.0/24
— 192.168.3.0/24

Тут коллеги с соседнего здания очухались и поняли, что у них слетела конфигурация на маршрутизаторе, а бекапов нет. Наизусть они не помнят, какие в главном здании подсети, но помнят, что они находятся рядом друг с другом, и просят прислать одну суммированную. Теперь у меня возникает задача, как их суммировать. Для начала я переведу все подсети в двоичный вид.

Посмотрите внимательно на таблицу. Как видите, у 4 подсетей первые 22 бита одинаковые. Соответственно, если я возьму 192.168.0.0 с маской /22 или 255.255.252.0, то покрою свои 4 подсети. Но обратите внимание на 5 подсеть, которую я специально ввел. Это подсеть 192.168.4.0. 22-ой бит у нее отличается от предыдущих 4-х, а значит выше выбранное не покроет эту подсеть.
Ок. Теперь я отправлю коллегам суммированную подсеть, и, если они все правильно пропишут, то маршрутизация до моих подсетей будет работать без проблем.

Возьмем тот же пример и немного изменим условия. Нас попросили прислать суммарный маршрут для подсетей 192.168.0.0 и 192.168.1.0. Я не поленюсь и создам еще одну таблицу.

Обратите внимание, что у 2 первых подсетей одинаковые не 22 бита, а 23 бита. Это значит, что их можно просуммировать еще компактнее. В принципе работать будет и так, и так. Но как говорилось в одной рекламе: «Если нет разницы — зачем платить больше?». Поэтому старайтесь суммировать, не задевая при этом соседние подсети.

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

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

Задача №4

Даны 4 подсети:

1) 10.3.128.0
2) 10.3.129.0
3) 10.3.130.0
4) 10.3.131.0

Просуммируйте подсети и найдите маску, которая сможет покрыть их, не задевая при этом соседние подсети.

Ответ


Исходя из этого, ответом будет 10.3.128.0/22 (255.255.252.0)

Пришло время закругляться. Статья получилась не очень длинной. Я бы даже сказал наоборот. Но все, что требует знать Cisco про IPv4, мы рассмотрели. Самое главное, что требуется от вас — это научиться работать с адресами и масками и уметь конвертировать их из десятичной в двоичную и обратно. Ну и, конечно, правильно делить на подсети и распределять адресное пространство. Спасибо, что дочитали. А если еще и задачки все сами прорешали, то цены вам нет) А если еще не прорешали, то приятного времяпровождения.

Лабораторная работа: расчёт подсетей IPv4

Задачи

Определите адрес сети.

Определите широковещательный адрес.

Определите количество узлов.

Часть 2. Расчёт данных сети по IPv4-адресу

Определите количество созданных подсетей.

Определите количество узлов для каждой подсети.

Определите адрес подсети.

Определите диапазон узлов для подсети.

Определите широковещательный адрес для подсети.

Исходные данные/сценарий

Умение работать с подсетями IPv4 и определять информацию о сетях и узлах на основе известного IP-адреса и маски подсети необходимо для понимания принципов работы IPv4-сетей. Цель первой части — закрепить знания о том, как рассчитывать IP-адрес сети на основе известного IP-адреса и маски подсети. Зная IP-адрес и маску подсети, вы всегда сможете установить следующие данные подсети:

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

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

Общее количество битов узлов

Количество узлов в подсети

Во второй части лабораторной работы вы определите следующие данные для указанного IP-адреса

имаски подсети:

Сетевой адрес этой подсети

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

Диапазон адресов узлов для этой подсети

Количество созданных подсетей

Количество узлов для каждой подсети

Необходимые ресурсы

1 ПК (Windows 7, Vista или XP с выходом в Интернет)

Дополнительно: калькулятор IPv4-адресов

Часть 1: Определение данных сети по IPv4-адресу

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

© Корпорация Cisco и/или её дочерние компании, 2014. Все права защищены.

Стр. 1 из 7

В данном документе содержится общедоступная информация корпорации Cisco.

Лабораторная работа: расчёт подсетей IPv4

ОБЗОР. Чтобы определить сетевой адрес, выполните бинарную операциюи для IPv4-адреса, используя указанную маску подсети. В результате вы получите сетевой адрес. Совет: если маска подсети имеет в октете десятичное значение255, результатом ВСЕГДА будет исходное значение этого октета. Если маска подсети имеетв октете десятичное значение 0, результатом для этого октета ВСЕГДА будет 0.

Пример.

IP-адрес

192.168.10.10

Маска подсети

255.255.255.0

==========

Результат (сеть)

192.168.10.0

Зная это, вы можете выполнить бинарную операцию И только для того октета, значение которого в маске подсети отличается от 255 или 0.

Пример.

IP-адрес

172.30.239.145

Маска подсети

255.255.192.0

Проанализировав этот пример, вы увидите, что бинарная операция И требуется только для третьего октета. В этой маске подсети первые два октета дадут результат 172.30, а четвертый — 0.

IP-адрес

172.30.239.145

Маска подсети

255.255.192.0

==========

Результат (сеть)

172.30.?.0

Выполните бинарную операцию И для третьего октета.

Десятичное

Двоичное

239

11101111

192

11000000

=======

Результат 192

11000000

Анализ этого примера снова даст следующий результат:

IP-адрес

172.30.239.145

Маска подсети

255.255.192.0

==========

Результат (сеть)

172.30.192.0

Рассчитать количество узлов для каждой сети в данном примере можно путём анализа маски подсети. Маска подсети будет представлена в десятичном формате с точкой-разделителем, например 255.255.192.0, или в формате сетевого префикса, например /18. IPv4-адрес всегда содержит 32 бита. Отняв количество битов, используемых сетевой частью (как показано в маске подсети), вы получите количество битов, используемых для узлов.

В нашем примере маска подсети 255.255.192.0 равна /18 в префиксной записи. Вычитание 18 бит сети из 32 бит даст нам 14 бит, оставшихся для узловой части. Исходя из этого, можно выполнить простой расчёт:

2 (количество битов узла)– 2 = количество узлов

214 = 16 384 – 2 = 16 382 узла

© Корпорация Cisco и/или её дочерние компании, 2014. Все права защищены.

Стр. 2 из 7

В данном документе содержится общедоступная информация корпорации Cisco.

Лабораторная работа: расчёт подсетей IPv4

Определите сетевые и широковещательные адреса и количество битов узлов для IPv4-адресов и префиксов, указанных в приведённой ниже таблице.

Общее

Адрес

Сетевой

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

количество

Общее количество

IPv4/префикс

адрес

адрес

битов узлов

узлов

192.168.100.25/28

192.168.100.16

192.168.100.31

4

14

172.30.10.130/30

172.30.10.128

172.30.10.131

2

2

10.1.113.75/19

10.1.113.75

10.1.127.255

13

8190

198.133.219.250/24

198.133.219.0

198.133.219.255

8

254

128.107.14.191/22

128.107.12.0

128.107.15.255

10

1022

172.16.104.99/27

172.16.104.96

172.16.104.127

5

30

Часть 2: Расчёт данных сети по IPv4-адресу

Зная IPv4-адрес, а также исходную и новую маски подсети, можно определить следующие параметры:

Сетевой адрес этой подсети

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

Диапазон адресов узлов этой подсети

Количество созданных подсетей

Количество узлов в подсети

Вприведённом ниже примере показана одна из задач и её решение.

Дано:

IP-адрес узла

172.16.77.120

Исходная маска подсети

255.255.0.0

Новая маска подсети

255.255.240.0

Найти:

Количество битов подсети

4

Количество созданных подсетей

16

Количество битов узлов в подсети

12

Количество узлов в подсети

4094

Сетевой адрес этой подсети

172.16.64.0

Адрес IPv4 первого узла в этой подсети

172.16.64.1

Адрес IPv4 последнего узла в этой

подсети

172.16.79.254

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

подсети

172.16.79.255

© Корпорация Cisco и/или её дочерние компании, 2014. Все права защищены.

Стр. 3 из 7

В данном документе содержится общедоступная информация корпорации Cisco.

Лабораторная работа: расчёт подсетей IPv4

Давайте рассмотрим, как была получена такая таблица.

Исходная маска подсети имела вид 255.255.0.0 или /16. Новая маска подсети — 255.255.240.0 или /20. Полученная разница составляет 4 бита. Так как 4 бита были заимствованы, мы можем определить, что были созданы 16 подсетей, так как 24= 16.

В новой маске, равной 255.255.240.0 или /20, остаётся 12 бит для узлов. Если для узлов осталось 12 бит, воспользуемся следующей формулой: 212= 4096–2=4094 узла для каждой подсети.

Бинарная операция И поможет определить подсеть для этой задачи, в результате чего мы получим сеть 172.16.64.0.

Взаключение необходимо установить первый узел, последний узел и широковещательный адрес для каждой подсети. Один из способов определения диапазона узлов — использовать двоичные значения для узловой части адреса. В нашем примере узловая часть — это последние 12 бит адреса. В первом узле для всех старших битов будет установлено значение 0, а для младшего бита — значение 1.

Впоследнем узле для всех старших битов будет установлено значение 1, а для младшего бита — значение 0. В этом примере узловая часть адреса находится в третьеми четвёртомоктетах.

Описание

1 октет

2 октет

3 октет

4 октет

Описание

Сеть/узел

сссссссс

сссссссс

ссссуууу

уууууууу

Маска подсети

Двоичное

10101100

00010000

01000000

00000001

Первый узел

Десятичное

172

16

64

1

Первый узел

Двоичное

10101100

00010000

01001111

11111110

Последний узел

Десятичное

172

16

79

254

Последний узел

Двоичное

10101100

00010000

01001111

11111111

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

Десятичное

172

16

79

255

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

Шаг 1: Заполните приведённые ниже таблицы, указав необходимые значения для указанного IPv4-адреса, а также исходной и новой масок подсети.

a. Задача 1.

Дано:

IP-адрес узла

192.168.200.139

Исходная маска подсети

255.255.255.0

Новая маска подсети

255.255.255.224

Найти:

Количество битов подсети

3

Количество созданных подсетей

8

Количество битов узлов в подсети

5

Количество узлов в подсети

30

© Корпорация Cisco и/или её дочерние компании, 2014. Все права защищены.

Стр. 4 из 7

В данном документе содержится общедоступная информация корпорации Cisco.

Лабораторная работа: расчёт подсетей IPv4

Сетевой адрес этой подсети

192.168.200.128

Адрес IPv4 первого узла в этой подсети

192.168.200.129

Адрес IPv4 последнего узла в этой подсети

192.168.200.158

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

192.168.200.159

b.

Задача 2.

Дано:

IP-адрес узла

10.101.99.228

Исходная маска подсети

255.0.0.0

Новая маска подсети

255.255.128.0

Найти:

Количество битов подсети

9

Количество созданных подсетей

512

Количество битов узлов в подсети

15

Количество узлов в подсети

32766

Сетевой адрес этой подсети

10.101.0.0

Адрес IPv4 первого узла в этой подсети

10.101.0.1

Адрес IPv4 последнего узла в этой подсети

10.101.127.254

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

10.101.127.255

c.

Задача 3.

Дано:

IP-адрес узла

172.22.32.12

Исходная маска подсети

255.255.0.0

Новая маска подсети

255.255.224.0

Найти:

Количество битов подсети

3

Количество созданных подсетей

8

Количество битов узлов в подсети

13

Количество узлов в подсети

8190

Сетевой адрес этой подсети

172.22.32.0

Адрес IPv4 первого узла в этой подсети

172.22.32.1

Адрес IPv4 последнего узла в этой подсети

172.22.63.254

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

172.22.63.255

© Корпорация Cisco и/или её дочерние компании, 2014. Все права защищены.

Стр. 5 из 7

В данном документе содержится общедоступная информация корпорации Cisco.

Лабораторная работа: расчёт подсетей IPv4

d.

Задача 4.

Дано:

IP-адрес узла

192.168.1.245

Исходная маска подсети

255.255.255.0

Новая маска подсети

255.255.255.252

Найти:

Количество битов подсети

6

Количество созданных подсетей

64

Количество битов узлов в подсети

2

Количество узлов в подсети

2

Сетевой адрес этой подсети

192.168.1.244

Адрес IPv4 первого узла в этой подсети

192.168.1.245

Адрес IPv4 последнего узла в этой подсети

192.168.1.246

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

192.168.1.247

e.

Задача 5.

Дано:

IP-адрес узла

128.107.0.55

Исходная маска подсети

255.255.0.0

Новая маска подсети

255.255.255.0

Найти:

Количество битов подсети

8

Количество созданных подсетей

256

Количество битов узлов в подсети

8

Количество узлов в подсети

254

Сетевой адрес этой подсети

128.107.0.0

Адрес IPv4 первого узла в этой подсети

128.107.0.1

Адрес IPv4 последнего узла в этой подсети

128.107.0.254

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

128.107.0.255

© Корпорация Cisco и/или её дочерние компании, 2014. Все права защищены.

Стр. 6 из 7

В данном документе содержится общедоступная информация корпорации Cisco.

Лабораторная работа: расчёт подсетей IPv4

f. Задача 6.

Дано:

IP-адрес узла

192.135.250.180

Исходная маска подсети

255.255.255.0

Новая маска подсети

255.255.255.248

Найти:

Количество битов подсети

5

Количество созданных подсетей

32

Количество битов узлов в подсети

3

Количество узлов в подсети

6

Сетевой адрес этой подсети

192.135.250.176

Адрес IPv4 первого узла в этой подсети

192.135.250.177

Адрес IPv4 последнего узла в этой подсети

192.135.250.182

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

192.135.250.183

Вопросы на закрепление

Почему маска подсети имеет такое значение при анализе IPv4-адреса?

_______________________________________________________________________________________

_______________________________________________________________________________________

_______________________________________________________________________________________

© Корпорация Cisco и/или её дочерние компании, 2014. Все права защищены.

Стр. 7 из 7

В данном документе содержится общедоступная информация корпорации Cisco.

Соседние файлы в папке WinRAR archive

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Part 1 of 2


IPv4 Math

With an IPv4 address and the network mask, the network mask length, or host mask, you can calculate the Network Address, Broadcast Address, Total Addresses, Usable Addresses, First Usable Address, and Last Usable Address.

It cannot be stressed enough that you must do IPv4 math in binary. Every network engineer has tried to figure out a way to do it all in decimal, as you will*. The problem is that 10 (decimal) is not a power of 2 (binary), so decimal and binary do not easily convert between each other the way that hexadecimal (base 16) easily converts to and from binary because 16 is a power of 2. Using dotted-decimal notation for IPv4 was an early mistake that cannot now be corrected, but IPv6 adopted the use of hexadecimal from the very beginning, and it is easy to convert between hexadecimal and binary.

If you do not have an IP calculator (disallowed in exams for network courses or certifications), make a chart of the values of the bits in an octet. In binary, each bit value is 2 times the same digit value in the next less-significant digit. Each digit is the number base times the same digit value in the next less-significant digit. This is also true for all number bases, including decimal, where each digit value is 10 times the value of the same digit value in the next less-significant digit. Where decimal is powers of 10, binary is powers of 2. Notice that for each bit number in the table, the corresponding value is 2 to the power of the bit number.

+-------------------------------------------------------+
¦ BIT # ¦  7  ¦  6  ¦  5  ¦  4  ¦  3  ¦  2  ¦  1  ¦  0  ¦
¦-------+-----+-----+-----+-----+-----+-----+-----+-----¦
¦ VALUE ¦ 128 ¦ 64  ¦ 32  ¦ 16  ¦  8  ¦  4  ¦  2  ¦  1  ¦
+-------------------------------------------------------+

The dotted-decimal address 198.51.100.223

+------------------------------------------------------------------------+
¦ OCTET ¦ DEC ¦ 128 ¦ 64  ¦ 32  ¦ 16  ¦  8  ¦  4  ¦  2  ¦  1  ¦  BINARY  ¦
¦-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+----------¦
¦   1   ¦ 198 ¦  1  ¦  1  ¦  0  ¦  0  ¦  0  ¦  1  ¦  1  ¦  0  ¦ 11000110 ¦
¦   2   ¦  51 ¦  0  ¦  0  ¦  1  ¦  1  ¦  0  ¦  0  ¦  1  ¦  1  ¦ 00110011 ¦
¦   3   ¦ 100 ¦  0  ¦  1  ¦  1  ¦  0  ¦  0  ¦  1  ¦  0  ¦  0  ¦ 01100100 ¦
¦   4   ¦ 223 ¦  1  ¦  1  ¦  0  ¦  1  ¦  1  ¦  1  ¦  1  ¦  1  ¦ 11011111 ¦
+------------------------------------------------------------------------+

The binary address 11000110001100110110010011011111

+------------------------------------------------------------------------+
¦ OCTET ¦  BINARY  ¦   7 ¦   6 ¦   5 ¦   4 ¦   3 ¦   2 ¦   1 ¦   0 ¦ DEC ¦
¦-------+----------+-----+-----+-----+-----+-----+-----+-----+-----+-----¦
¦   1   ¦ 11000110 ¦ 128 ¦  64 ¦   0 ¦   0 ¦   0 ¦   4 ¦   2 ¦   0 ¦ 198 ¦
¦   2   ¦ 00110011 ¦   0 ¦   0 ¦  32 ¦  16 ¦   0 ¦   0 ¦   2 ¦   1 ¦  51 ¦
¦   3   ¦ 01100100 ¦   0 ¦  64 ¦  32 ¦   0 ¦   0 ¦   4 ¦   0 ¦   0 ¦ 100 ¦
¦   4   ¦ 11011111 ¦ 128 ¦  64 ¦   0 ¦  16 ¦   8 ¦   4 ¦   2 ¦   1 ¦ 223 ¦
+------------------------------------------------------------------------+

Remember the Truth Tables from school (in binary math, 0 is False, and 1 is True).

                      +--------+                +--------+
                      ¦ RESULT ¦                ¦ RESULT ¦
+---------------------+--------¦  +-------------+--------¦
¦ False ¦ AND ¦ False ¦ FALSE  ¦  ¦ 0 ¦ AND ¦ 0 ¦ 0      ¦
¦ False ¦ AND ¦ True  ¦ FALSE  ¦  ¦ 0 ¦ AND ¦ 1 ¦ 0      ¦
¦ True  ¦ AND ¦ False ¦ FALSE  ¦  ¦ 1 ¦ AND ¦ 0 ¦ 0      ¦
¦ True  ¦ AND ¦ True  ¦ TRUE   ¦  ¦ 1 ¦ AND ¦ 1 ¦ 1      ¦
+------------------------------+  +----------------------+

                      +--------+                +--------+
                      ¦ RESULT ¦                ¦ RESULT ¦
+---------------------+--------¦  +-------------+--------¦
¦ False ¦ OR  ¦ False ¦ FALSE  ¦  ¦ 0 ¦ OR  ¦ 0 ¦ 0      ¦
¦ False ¦ OR  ¦ True  ¦ TRUE   ¦  ¦ 0 ¦ OR  ¦ 1 ¦ 1      ¦
¦ True  ¦ OR  ¦ False ¦ TRUE   ¦  ¦ 1 ¦ OR  ¦ 0 ¦ 1      ¦
¦ True  ¦ OR  ¦ True  ¦ TRUE   ¦  ¦ 1 ¦ OR  ¦ 1 ¦ 1      ¦
+------------------------------+  +----------------------+

                      +--------+                +--------+
                      ¦ RESULT ¦                ¦ RESULT ¦
        +-------------+--------¦      +---------+--------¦
        ¦ NOT ¦ False ¦ TRUE   ¦      ¦ NOT ¦ 0 ¦ 1      ¦
        ¦ NOT ¦ True  ¦ FALSE  ¦      ¦ NOT ¦ 1 ¦ 0      ¦
        +----------------------+      +------------------+

*If you perform IPv4 math for many years, you may get to the point where you can perform decimal/binary conversions in your head, and you can appear to be able to do IPv4 math in decimal. Even if you can do this in your head, always double-check with an IP calculator, or convert to binary and perform the math, before committing a change to a production network.


IPv4 Address

The IPv4 dotted-decimal notation, e.g., 198.51.100.223, is simply to make it easier for humans to read an address. The four separate sections, called octets, really have no meaning to IPv4. Do not make the common mistake of thinking the octets have a special meaning. An address is really a 32-bit binary number, and that is how network devices see and use an IPv4 address.

The example dotted-decimal address, 198.51.100.223, is binary 11000110001100110110010011011111 to a device on the network. You can see that the dotted-decimal representation really does make it easier for humans. Each octet is eight bits of the 32-bit address (hence the commonly used term, “octet”), so there are four octets (32 address bits / 8 bits per octet = 4 octets). The example 32-bit binary address is separated into four octets, then each binary octet is converted to a decimal number*.

Binary address: 11000110001100110110010011011111

+-----------------------------------------------------+
¦ OCTET   ¦        1 ¦        2 ¦        3 ¦        4 ¦
¦---------+----------+----------+----------+----------¦
¦ BINARY  ¦ 11000110 ¦ 00110011 ¦ 01100100 ¦ 11011111 ¦
¦ DECIMAL ¦      198 ¦       51 ¦      100 ¦      223 ¦
+-----------------------------------------------------+

Because each octet is eight bits in length, each octet will have a value between 0 and 255 (any values greater than 255 are invalid). The reason is that 28 = 256: 2 (the binary number base) to the power of 8 (eight bits per octet) equals 256, the number of different values that can be expressed by an eight-bit octet. Remember that the first value is 0, so the 256th value will be one less that the total number of values that can be expressed (256 – 1 = 255).

To correctly perform IPv4 math, you must do it in binary, otherwise you will make mistakes that will cause you problems and frustration. That means that you must convert the dotted-decimal notation to binary before trying to manipulate it.

Dotted-decimal: 198.51.100.223

+-----------------------------------------------------+
¦ OCTET   ¦        1 ¦        2 ¦        3 ¦        4 ¦
¦---------+----------+----------+----------+----------¦
¦ DECIMAL ¦      198 ¦       51 ¦      100 ¦      223 ¦
¦ BINARY  ¦ 11000110 ¦ 00110011 ¦ 01100100 ¦ 11011111 ¦
+-----------------------------------------------------+

*Leading zeroes in a dotted-decimal IPv4 address may be interpreted by some applications and programming languages as octal (base 8) rather than decimal (base 10), causing errors, and leading zeros should be avoided for the dotted-decimal IPv4 representation, but leading zeroes are necessary for the binary address octets because they represent bit positions in the full address, and leaving out a bit position will shorten the address and change the binary value.


IPv4 Network Mask

A network mask is used to divide an address into two parts: Network and Host. Because IPv4 addresses are fixed 32-bits in length, a larger Network means a smaller Host, and vice versa. The division can be at any bit number, so it may fall within an octet, not on an octet boundary (as many people incorrectly assume it always does). A network mask is the same size as an address (32 bits), and it is expressed in dotted-decimal notation the same way you would express an address in dotted-decimal notation (four 8-bit octets, separated by a period). For example, 255.255.248.0.

A network mask consists of consecutive 1 bits (representing the Network), followed by the number of 0 bits (representing the Host) to total 32 bits (the address length). The number of 1 bits plus the number of 0 bits totals 32, the number of bits in an IPv4 address or network mask. For example, a network mask of 255.255.248.0.

+--------------------------------------------------------+
¦ OCTET   ¦        1 ¦        2 ¦           3 ¦        4 ¦
¦---------+----------+----------+-------------+----------¦
¦ DECIMAL ¦      255 ¦      255 ¦         248 ¦        0 ¦
¦---------+----------+----------+-------------+----------¦
¦ BINARY  ¦ 11111111 ¦ 11111111 ¦ 11111 ¦ 000 ¦ 00000000 ¦
¦---------+-----------------------------+----------------¦
¦ # BITS  ¦         21 Network          ¦    11 Host     ¦
+--------------------------------------------------------+

As you can see, the division between Network and Host of the address using this mask falls within an octet, not on an octet boundary.

A network mask is often represented by the number of consecutive 1 bits in the mask. This is variously called the network mask length or prefix length, and it is represented as a / followed by the number of consecutive 1 bits in the network mask. Counting the number of consecutive 1 bits in the example totals 21, which can be represented as /21.

Given a mask length, you can calculate the dotted-decimal representation of the mask. Simply put down the number of 1 bits for the mask length and add enough 0 bits on the end to total 32 bits. Convert the resulting binary number into the dotted-decimal representation.

+--------------------------------------------------------+
¦ # BITS  ¦         21 Network          ¦    11 Host     ¦
¦---------+-----------------------------+----------------¦
¦ BINARY  ¦ 11111111 ¦ 11111111 ¦ 11111 ¦ 000 ¦ 00000000 ¦
¦---------+----------+----------+-------------+----------¦
¦ DECIMAL ¦      255 ¦      255 ¦         248 ¦        0 ¦
¦---------+----------+----------+-------------+----------¦
¦ OCTET   ¦        1 ¦        2 ¦           3 ¦        4 ¦
+--------------------------------------------------------+

The example 198.51.100.223 address may be represented traditionally with the example network mask as 198.51.100.223 255.255.248.0, or it may be represented in the more modern CIDR (Classless Inter-Domain Routing) notation as 198.51.100.223/21. Either representation is valid, and you can easily convert between the mask and the mask length as required (OSes and applications will require a specific representation).


IPv4 Network Address

A network address is an address with all Host bits set to 0. The network address can be calculated by a bitwise AND of the respective bits in the binary representation of the address and the network mask. Align the bits, perform a bitwise AND on each pair of the respective bits, then convert the individual octets of the result back to decimal.

For example, the IPv4 address 198.51.100.223 and network mask 255.255.248.0

+-------------------------------------------------------------+
¦ OCTET           ¦        1 ¦        2 ¦        3 ¦        4 ¦
¦-----------------+----------+----------+----------+----------¦
¦ BINARY ADDRESS  ¦ 11000110 ¦ 00110011 ¦ 01100100 ¦ 11011111 ¦
¦ BINARY MASK     ¦ 11111111 ¦ 11111111 ¦ 11111000 ¦ 00000000 ¦
¦ BITWISE AND     ¦ 11000110 ¦ 00110011 ¦ 01100000 ¦ 00000000 ¦
¦-----------------+----------+----------+----------+----------¦
¦ DECIMAL NETWORK ¦      198 ¦       51 ¦       96 ¦        0 ¦
+-------------------------------------------------------------+

The network address of 198.51.100.223/21 is 198.51.96.0. Notice that you cannot depend on the octets to distinguish between Network and Host.

This method is used to determine if two addresses are on the same or different networks*. For example, if you want to determine if your example address is on the same network with a target address, 198.51.102.57, find the example network address (as above). Next, find the target network address using the same network mask (addresses on the same network use the same network mask, and you may not have the target mask, only the target address).

+-------------------------------------------------------------+
¦ OCTET           ¦        1 ¦        2 ¦        3 ¦        4 ¦
¦-----------------+----------+----------+----------+----------¦
¦ BINARY ADDRESS  ¦ 11000110 ¦ 00110011 ¦ 01100110 ¦ 00111001 ¦
¦ BINARY MASK     ¦ 11111111 ¦ 11111111 ¦ 11111000 ¦ 00000000 ¦
¦ BITWISE AND     ¦ 11000110 ¦ 00110011 ¦ 01100000 ¦ 00000000 ¦
¦-----------------+----------+----------+----------+----------¦
¦ DECIMAL NETWORK ¦      198 ¦       51 ¦       96 ¦        0 ¦
+-------------------------------------------------------------+

Compare the target network address to the example network address, and notice that the network addresses are equal, meaning the example and target addresses are on the same network.

Now, test if the example address is on the same network as the 74.125.69.100 Google address.

+-------------------------------------------------------------+
¦ OCTET           ¦        1 ¦        2 ¦        3 ¦        4 ¦
¦-----------------+----------+----------+----------+----------¦
¦ BINARY ADDRESS  ¦ 01001010 ¦ 01111101 ¦ 01000101 ¦ 01100100 ¦
¦ BINARY MASK     ¦ 11111111 ¦ 11111111 ¦ 11111000 ¦ 00000000 ¦
¦ BITWISE AND     ¦ 01001010 ¦ 01111101 ¦ 01000000 ¦ 00000000 ¦
¦-----------------+----------+----------+----------+----------¦
¦ DECIMAL NETWORK ¦       74 ¦      125 ¦       64 ¦        0 ¦
+-------------------------------------------------------------+

Compare the target network address to the example network address, and notice that the network addresses are different, meaning the example and target addresses are not on the same network.


*This is the method a source uses to determine if a destination is on the same network as the source. Packets destined to a different network must be sent to a router for forwarding to a different network.


IPv4 Host Mask

One useful, often overlooked, value for IPv4 addressing is the host mask. A host mask is simply the inverse (bitwise NOT) of the network mask.

Network mask to host mask

+-----------------------------------------------------------------+
¦ OCTET #             ¦        1 ¦        2 ¦        3 ¦        4 ¦
¦---------------------+----------+----------+----------+----------¦
¦ BINARY NETWORK MASK ¦ 11111111 ¦ 11111111 ¦ 11111000 ¦ 00000000 ¦
¦ BITWISE NOT         ¦ 00000000 ¦ 00000000 ¦ 00000111 ¦ 11111111 ¦
¦---------------------+----------+----------+----------+----------¦
¦ HOST MASK           ¦        0 ¦        0 ¦        7 ¦      255 ¦
+-----------------------------------------------------------------+

Host mask to network mask

+--------------------------------------------------------------+
¦ OCTET #          ¦        1 ¦        2 ¦        3 ¦        4 ¦
¦------------------+----------+----------+----------+----------¦
¦ BINARY HOST MASK ¦ 00000000 ¦ 00000000 ¦ 00000111 ¦ 11111111 ¦
¦ BITWISE NOT      ¦ 11111111 ¦ 11111111 ¦ 11111000 ¦ 00000000 ¦
¦------------------+----------+----------+----------+----------¦
¦ NETWORK MASK     ¦      255 ¦      255 ¦      248 ¦        0 ¦
+--------------------------------------------------------------+

It is possible to use subtraction to create a host mask from the network mask, or the network mask from the host mask by subtracting the starting mask from the longest mask (/32 all-ones mask 255.255.255.255).

Binary network mask to host mask

+-----------------------------------------------------------------+
¦ OCTET #             ¦        1 ¦        2 ¦        3 ¦        4 ¦
¦---------------------+----------+----------+----------+----------¦
¦ BINARY /32 MASK     ¦ 11111111 ¦ 11111111 ¦ 11111111 ¦ 11111111 ¦
¦ BINARY NETWORK MASK ¦ 11111111 ¦ 11111111 ¦ 11111000 ¦ 00000000 ¦
¦ SUBTRACTION         ¦ 00000000 ¦ 00000000 ¦ 00000111 ¦ 11111111 ¦
¦---------------------+----------+----------+----------+----------¦
¦ HOST MASK           ¦        0 ¦        0 ¦        7 ¦      255 ¦
+-----------------------------------------------------------------+

Binary host mask to network mask

+--------------------------------------------------------------+
¦ OCTET #          ¦        1 ¦        2 ¦        3 ¦        4 ¦
¦------------------+----------+----------+----------+----------¦
¦ BINARY /32 MASK  ¦ 11111111 ¦ 11111111 ¦ 11111111 ¦ 11111111 ¦
¦ BINARY HOST MASK ¦ 00000000 ¦ 00000000 ¦ 00000111 ¦ 11111111 ¦
¦ SUBTRACTION      ¦ 11111111 ¦ 11111111 ¦ 11111000 ¦ 00000000 ¦
¦------------------+----------+----------+----------+----------¦
¦ NETWORK MASK     ¦      255 ¦      255 ¦      248 ¦        0 ¦
+--------------------------------------------------------------+

Decimal network mask to host mask

+------------------------------------------+
¦ OCTET #          ¦   1 ¦   2 ¦   3 ¦   4 ¦
¦------------------+-----+-----+-----+-----¦
¦ DECIMAL /32 MASK ¦ 255 ¦ 255 ¦ 255 ¦ 255 ¦
¦ NETWORK MASK     ¦ 255 ¦ 255 ¦ 248 ¦   0 ¦
¦------------------+-----+-----+-----+-----¦
¦ HOST MASK        ¦   0 ¦   0 ¦   7 ¦ 255 ¦
+------------------------------------------+

Decimal Host mask to Network mask

+------------------------------------------+
¦ OCTET #          ¦   1 ¦   2 ¦   3 ¦   4 ¦
¦------------------+-----+-----+-----+-----¦
¦ DECIMAL /32 MASK ¦ 255 ¦ 255 ¦ 255 ¦ 255 ¦
¦ HOST MASK        ¦   0 ¦   0 ¦   7 ¦ 255 ¦
¦------------------+-----+-----+-----+-----¦
¦ NETWORK MASK     ¦ 255 ¦ 255 ¦ 248 ¦   0 ¦
+------------------------------------------+

IPv4 Network Broadcast Address

A network broadcast address is the network address with all the host bits set to 1. There are several ways to calculate the network broadcast address.

For example, address 198.51.100.223 and network mask 255.255.248.0.

You can perform a bitwise OR with the address or network address with the host mask.

+---------------------------------------------------------------+
¦ OCTET             ¦        1 ¦        2 ¦        3 ¦        4 ¦
¦-------------------+----------+----------+----------+----------¦
¦ BINARY ADDRESS    ¦ 11000110 ¦ 00110011 ¦ 01100100 ¦ 11011111 ¦
¦ BINARY HOST MASK  ¦ 00000000 ¦ 00000000 ¦ 00000111 ¦ 11111111 ¦
¦ BITWISE OR        ¦ 11000110 ¦ 00110011 ¦ 01100111 ¦ 11111111 ¦
¦-------------------+----------+----------+----------+----------¦
¦ BROADCAST ADDRESS ¦      198 ¦       51 ¦      103 ¦      255 ¦
+---------------------------------------------------------------+

You can simply add the value of the host mask to the value of the network address (not the host address) and you can do this either in decimal or binary.

Decimal

+-------------------------------------------+
¦ OCTET #           ¦   1 ¦   2 ¦   3 ¦   4 ¦
¦-------------------+-----+-----+-----+-----¦
¦ DECIMAL NETWORK   ¦ 198 ¦  51 ¦  96 ¦   0 ¦
¦ DECIMAL HOST MASK ¦   0 ¦   0 ¦   7 ¦ 255 ¦
¦-------------------+-----+-----+-----+-----¦
¦ BROADCAST ADDRESS ¦ 198 ¦  51 ¦ 103 ¦ 255 ¦
+-------------------------------------------+

Binary

+--------------------------------------------------------------+
¦ OCTET #          ¦        1 ¦        2 ¦        3 ¦        4 ¦
¦------------------+----------+----------+----------+----------¦
¦ BINARY NETWORK   ¦ 11000110 ¦ 00110011 ¦ 01100000 ¦ 00000000 ¦
¦ BINARY HOST MASK ¦ 00000000 ¦ 00000000 ¦ 00000111 ¦ 11111111 ¦
¦ ADDITION         ¦ 11000110 ¦ 00110011 ¦ 01100111 ¦ 11111111 ¦
¦------------------+----------+----------+----------+----------¦
¦ NETWORK MASK     ¦      198 ¦       51 ¦      103 ¦      255 ¦
+--------------------------------------------------------------+

Total IPv4 Network Host Addresses

The total number of host addresses for a network is 2 to the power of the number of host bits, which is 32 (IPv4 address bits) minus the number of network bits. For example, for a /21 (network mask 255.255.248.0) network, there are 11 host bits (32 address bits – 21 network bits = 11 host bits). That means there are 2048 total host addresses in a /21 network (211 = 2048).


Total Usable IPv4 Network Host Addresses

Except for /31 (255.255.255.254) and /32 (255.255.255.255) networks, the number of usable host addresses in a network is the total number of network host addresses minus 2 (because the network and broadcast addresses are unusable for host addresses on the network, you must subtract them from the number of usable host addresses). For example, in a /21 (255.255.248.0) network, there are 2046 usable host addresses (211 - 2 = 2046).


First Usable IPv4 Network Host Address

Except for /31 (255.255.255.254) and /32 (255.255.255.255) networks, the first usable network host address is the network address plus (either addition or bitwise OR) 1 (the network address is not usable for a network host address). For example, in the 198.51.96.0/21 network, the first usable network host address is 198.51.96.1 (198.51.96.0 + 1 = 198.51.96.1 or 198.51.96.0 OR 1 = 198.51.96.1). Set the low-order bit of the binary network address to 1.

+------------------------------------------------------------------+
¦ OCTET                ¦        1 ¦        2 ¦        3 ¦        4 ¦
¦----------------------+----------+----------+----------+----------¦
¦ BINARY NETWORK       ¦ 11000110 ¦ 00110011 ¦ 01100000 ¦ 00000000 ¦
¦ 1                    ¦ 00000000 ¦ 00000000 ¦ 00000000 ¦ 00000001 ¦
¦ ADD (OR)             ¦ 11000110 ¦ 00110011 ¦ 01100000 ¦ 00000001 ¦
¦----------------------+----------+----------+----------+----------¦
¦ FIRST USABLE ADDRESS ¦      198 ¦       51 ¦       96 ¦        1 ¦
+------------------------------------------------------------------+

Last Usable IPv4 Network Host Address

Except for /31 (255.255.255.254) and /32 (255.255.255.255) networks, the last usable network host address is the network broadcast address minus 1 (the network broadcast address is not usable for a network host address). For example, in the 198.61.96.0/21 network, the last usable network host address is 198.51.103.254 (198.51.103.255 - 1 = 198.51.103.254). Set the low-order bit of the binary IPv4 network broadcast address to 0.

+----------------------------------------------------------------------+
¦ OCTET                    ¦        1 ¦        2 ¦        3 ¦        4 ¦
¦--------------------------+----------+----------+----------+----------¦
¦ BINARY BROADCAST ADDRESS ¦ 11000110 ¦ 00110011 ¦ 01100111 ¦ 11111111 ¦
¦ 1                        ¦ 00000000 ¦ 00000000 ¦ 00000000 ¦ 00000001 ¦
¦ SUBTRACT                 ¦ 11000110 ¦ 00110011 ¦ 01100111 ¦ 11111110 ¦
¦--------------------------+----------+----------+----------+----------¦
¦ LAST  USABLE ADDRESS     ¦      198 ¦       51 ¦      103 ¦      254 ¦
+----------------------------------------------------------------------+

IPv4 /31 (255.255.255.254) Networks

Originally, /31 (255.255.255.254) networks were unusable because there is only one host bit, giving you two total network host addresses, but the number of usable network host addresses is the total number of network host addresses minus 2 (2 total host addresses - 2 = 0 usable host addresses).

Point-to-point links only need two host addresses (one for each end of the link). The traditional way of assigning IPv4 networks required the use of /30 (255.255.255.252) networks for point-to-point links, but that wastes half the network host addresses because a /30 network has four total network host addresses, but only two are usable network host addresses (22 – 2 = 2).

With the critical IPv4 address shortage, a standard was created (RFC 3021, Using 31-Bit Prefixes on IPv4 Point-to-Point Links) to allow the use of /31 networks for point-to-point links. That makes sense because there is no need for broadcast on such networks: any packets sent by a host on the network are destined for the only other host on the network, effectively broadcasting. In a /31 network, the network address is the first usable host address, and the broadcast address is the last usable host address.

Unfortunately, not all vendors (Microsoft in particular) support the standard for using /31 networks on point-to-point links, and you will most often see point-to-point links using /30 networks.


IPv4 /32 (255.255.255.255) Networks

A /32 (255.255.255.255) network is both a network with no host addresses, and a host address, itself. There is only one address in the network, and that is the network address. Because there are no other hosts are on the network, traffic must be routed to and from the network address.

These addresses are often used on virtual network interfaces defined inside a device that can route packets between its virtual and physical interfaces. An example of this is to create a virtual interface in a network device to be used as the source or destination for the device itself. A virtual interface cannot drop because of a physical problem, e.g., cable unplugged, and if the device has multiple paths into it, other devices can still communicate with the device using the virtual interface address when a physical interface of the device is inoperable for some reason.


Putting IPv4 Network Addressing All Together

For example, the network address 198.51.100.223 and mask 255.255.248.0 (or 198.51.100.223/21), we can calculate the network information.*

+--------------------------------------------+
¦ HOST ADDRESS              ¦ 198.51.100.223 ¦
¦ NETWORK MASK              ¦  255.255.248.0 ¦
¦ NETWORK MASK LENGTH       ¦             21 ¦
¦ HOST MASK                 ¦      0.0.7.255 ¦
¦ HOST MASK LENGTH          ¦             11 ¦
¦ NETWORK ADDRESS           ¦    198.51.96.0 ¦
¦ FIRST USABLE HOST ADDRESS ¦    198.51.96.1 ¦
¦ LAST USABLE HOST ADDRESS  ¦ 198.51.103.254 ¦
¦ NETWORK BROADCAST ADDRESS ¦ 198.51.103.255 ¦
¦ TOTAL HOST ADDRESSES      ¦           2048 ¦
¦ USABLE HOST ADDRESSES     ¦           2046 ¦
+--------------------------------------------+

*Network education class exams and certification tests will ask you to be able to quickly calculate these values, given a host address and mask (or mask length). You can use the hints below for a quick check of your answers:

  • Network Address (hint: an even number)
  • First Usable Host Address (hint: Network Address plus 1, an odd number)
  • Last Usable Host Address (hint: Broadcast Address minus 1, an even number)
  • Broadcast Address (hint: Network Address plus Host Mask, an odd number)

The above hints do not apply to /31 (255.255.255.254) or /32 (255.255.255.255) networks.

Given enough time on your exam, and a problem that has multiple methods to arrive at an answer, you should use the multiple methods to double-check the answer.


Continued in Part 2…

Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 8 сентября 2022 года; проверки требуют 6 правок.

Маска подсети — битовая маска для определения по IP-адресу адреса подсети и адреса узла (хоста, компьютера, устройства) этой подсети. В отличие от IP-адреса маска подсети не является частью IP-пакета.

Благодаря маске можно узнать, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети.

Например, узел с IP-адресом 12.34.56.78 и маской подсети 255.255.255.0, с длиной префикса 24 бита (/24), находится в сети 12.34.56.0.

В случае адресации IPv6 адрес 2001:0DB8:1:0:6C1F:A78A:3CB5:1ADD с длиной префикса 32 бита (/32) находится в сети 2001:0DB8::/32.

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

Чтобы получить адрес сети, зная IP-адрес и маску подсети, необходимо применить к ним операцию поразрядной конъюнкции (побитовое И). Например, в случае более сложной маски:

IP-адрес:       11000000 10101000 00000001 00000010 (192.168.1.2)
Маска подсети:  11111111 11111111 11111110 00000000 (255.255.254.0)
Адрес сети:     11000000 10101000 00000000 00000000 (192.168.0.0)

Легенда:

  • часть маски, определяющая адрес сети и состоящая из единиц;
  • адрес сети, который определяется маской подсети;
  • диапазон адресов устройств в этой сети.

Разбиение одной большой сети на несколько маленьких подсетей позволяет упростить маршрутизацию. Например, пусть таблица маршрутизации некоторого маршрутизатора содержит следующую запись:

Сеть назначения Маска сети Адрес шлюза
192.168.1.0 255.255.255.0 10.20.30.1

Пусть теперь маршрутизатор получает пакет данных с адресом назначения 192.168.1.2. Обрабатывая построчно таблицу маршрутизации, он обнаруживает, что при наложении (применении операции «побитовое И») на адрес 192.168.1.2 маски 255.255.255.0 получается адрес сети 192.168.1.0. В таблице маршрутизации этой сети соответствует шлюз 10.20.30.1, которому и отправляется пакет.

Битовые операции при расчёте адреса сети в IPv6 выглядят аналогично. Но в IPv6 можно просто рассчитать адрес сети по длине префикса, применив формулу: «длина префикса в битах» / 4 = «кол-во 0xF у адреса сети». Взяв полученное количество 0xF из адреса узла, получаем адрес сети.

Маски при бесклассовой маршрутизации (CIDR)[править | править код]

Маски подсети являются основой метода бесклассовой маршрутизации (англ. CIDR). При этом подходе маску подсети записывают вместе с IP-адресом в формате «IP-адрес/количество единичных бит в маске». Число после знака дроби ( длина префикса сети) означает количество единичных разрядов (бит) в маске подсети.

Рассмотрим пример записи диапазона IP-адресов в виде 10.96.0.0/11. В этом случае маска подсети будет иметь двоичный вид 1111_1111.1110_0000.0000_0000.0000_0000, или то же самое в десятичном виде: 255.224.0.0. 11 разрядов IP-адреса отводятся под адрес сети, а остальной 32-11=21 разряд полного адреса (1111_1111.1110_0000.0000_0000.0000_0000) — под локальный адрес в этой сети. Итого, 10.96.0.0/11 означает диапазон адресов от 10.96.0.0 до 10.127.255.255.

IPv4 CIDR

CIDR Последний IP-адрес в подсети Маска подсети Количество адресов в подсети Количество хостов в подсети Класс подсети
a.b.c.d/32 0.0.0.0 255.255.255.255 1 1* 1/256 C
a.b.c.d/31 0.0.0.1 255.255.255.254 2 2* 1/128 C
a.b.c.d/30 0.0.0.3 255.255.255.252 4 2 1/64 C
a.b.c.d/29 0.0.0.7 255.255.255.248 8 6 1/32 C
a.b.c.d/28 0.0.0.15 255.255.255.240 16 14 1/16 C
a.b.c.d/27 0.0.0.31 255.255.255.224 32 30 1/8 C
a.b.c.d/26 0.0.0.63 255.255.255.192 64 62 1/4 C
a.b.c.d/25 0.0.0.127 255.255.255.128 128 126 1/2 C
a.b.c.0/24 0.0.0.255 255.255.255.000 256 254 1 C
a.b.c.0/23 0.0.1.255 255.255.254.000 512 510 2 C
a.b.c.0/22 0.0.3.255 255.255.252.000 1024 1022 4 C
a.b.c.0/21 0.0.7.255 255.255.248.000 2048 2046 8 C
a.b.c.0/20 0.0.15.255 255.255.240.000 4096 4094 16 C
a.b.c.0/19 0.0.31.255 255.255.224.000 8192 8190 32 C
a.b.c.0/18 0.0.63.255 255.255.192.000 16 384 16 382 64 C
a.b.c.0/17 0.0.127.255 255.255.128.000 32 768 32 766 128 C
a.b.0.0/16 0.0.255.255 255.255.000.000 65 536 65 534 256 C = 1 B
a.b.0.0/15 0.1.255.255 255.254.000.000 131 072 131 070 2 B
a.b.0.0/14 0.3.255.255 255.252.000.000 262 144 262 142 4 B
a.b.0.0/13 0.7.255.255 255.248.000.000 524 288 524 286 8 B
a.b.0.0/12 0.15.255.255 255.240.000.000 1 048 576 1 048 574 16 B
a.b.0.0/11 0.31.255.255 255.224.000.000 2 097 152 2 097 150 32 B
a.b.0.0/10 0.63.255.255 255.192.000.000 4 194 304 4 194 302 64 B
a.b.0.0/9 0.127.255.255 255.128.000.000 8 388 608 8 388 606 128 B
a.0.0.0/8 0.255.255.255 255.000.000.000 16 777 216 16 777 214 256 B = 1 A
a.0.0.0/7 1.255.255.255 254.000.000.000 33 554 432 33 554 430 2 A
a.0.0.0/6 3.255.255.255 252.000.000.000 67 108 864 67 108 862 4 A
a.0.0.0/5 7.255.255.255 248.000.000.000 134 217 728 134 217 726 8 A
a.0.0.0/4 15.255.255.255 240.000.000.000 268 435 456 268 435 454 16 A
a.0.0.0/3 31.255.255.255 224.000.000.000 536 870 912 536 870 910 32 A
a.0.0.0/2 63.255.255.255 192.000.000.000 1 073 741 824 1 073 741 822 64 A
a.0.0.0/1 127.255.255.255 128.000.000.000 2 147 483 648 2 147 483 646 128 A
0.0.0.0/0 255.255.255.255 000.000.000.000 4 294 967 296 4 294 967 294 256 A

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

Возможных узлов подсети меньше количества адресов на два: начальный адрес сети резервируется для идентификации подсети, последний адрес используется в качестве широковещательного адреса (возможны исключения в виде адресации в IPv4 сетей /32 и /31).

Выбор маски для подсети[править | править код]

Если n — количество компьютеров в подсети, округлённое до ближайшей большей степени двойки, и {displaystyle nleqslant 254} (для сетей класса C), то маска подсети вычисляется по следующей формуле: {displaystyle 2^{8}-n-2}, где двойка вычитается, так как один IP-адрес (первый в задаваемом маской диапазоне) является IP-адресом подсети и ещё один IP-адрес (последний в задаваемом маской диапазоне) является широковещательным адресом (для отправки данных всем узлам подсети). Для {displaystyle n>254} будет другая формула.

Пример: в некой подсети класса C есть 30 компьютеров; маска для такой сети вычисляется следующим образом:

28 - 30 - 2 = 224 = E0h;
маска: 255.255.255.224 = 0xFF.FF.FF.E0.

См. также[править | править код]

  • Бесклассовая адресация

Примечания[править | править код]

Литература[править | править код]

  • Олифер В. Г., Олифер Н. А. Компьютерные сети. Принципы, технологии, протоколы: Учебник для вузов = Computer Networks. Principles, Technologies and Protocols for Network Design. — 3-е изд. — СПб.: Издательский дом «Питер», 2006. — С. 572—576. — 958 с. — ISBN 5-469-00504-6.

Ссылки[править | править код]

  • Ivan Pascal. «Вычисление сетевой маски для подсети». OpenNet.ru (3 июня 2002). Дата обращения: 21 февраля 2011.
  • Сергей Верещагин. «Wildcard Mask (шаблонная маска)» (30 мая 2009). Дата обращения: 21 февраля 2011. Архивировано 25 августа 2011 года.

Добавить комментарий