Типы передачи данных

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

Основная статья: Подсеть

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

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

IPv4 CIDR
IP/маска До последнего 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).

Таблица масок подсетей

Маска позволяет выделить целое множество сетей класса С, как и сетевых адресов других типов. В предыдущем примере была показана маска для стандартной сети класса С. Однако если сбросить крайнюю единицу на ноль, тогда получим следующую запись 255.255.254.0 или /23. При такой маске можем получить 2 сети класса С, так как сброшенная единица может быть восстановлена. Запись с 17-ю единицами позволит адресовать сразу 128 сетей класса С.

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

Так, если администратору надо подключить 30 рабочих станций, тогда маска сети должна завершаться 5-ю нулями. Действительно, для нумерации узлов достаточно 5 нулей, так как 2 в степени 5 равно 32.

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

1111111.11111111.11111111.11100000 или 255.255.255.224.

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

Как определить маску подсети с помощью адреса сети и маски сети

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

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

С помощью адреса 192.168.0.199 и маски сети 255.255.255.0 уже вычислен адрес самой сети, который имеет вид 192.168.0.0. Здесь для использования присутствует 256 адресов. Из них 2 адреса автоматически резервируются:

  • …255 — broadcast;

  • …0 — адрес сети и не может быть использован.

Остаётся для раздачи хостам всего 254 адреса. Стоит отметить, что в многоранговых сетях еще один адрес резервируется для роутинга, это может быть …1 (или любой другой).

Разбирая все по порядку, приведём этот пример в общий вид, применяемый к любой сети.

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

Бит может возвращать только два значения, два бита — четыре, три бита — восемь и так далее. Выходит, что n-бит возвращают 2^n значения. Исходя из всего, что сказано выше, получается вывод: число хостов (N) в сети вычисляется формулой N = (2^r)—2, в которой r-количество нулей в двоичном виде маски.

Возвращаясь к нашему примеру, производим расчёт:

Получаются те же 254 адреса для раздачи интерфейсам хостов в сети.

Предположим, что предприятию требуется создать подразделение и собрать 20 рабочих компьютеров в подсеть. Рассчитать маску подсети можно следующим образом.

Берём 20 IP и прибавляем к ним 2 адреса, которые будут зарезервированы. Всего требуется 22, самая близкая степень 2 — это 32. В двоичном виде 10 0000. Поскольку сеть, в которой проводится деление, относится к классу С, то маска подсети будет иметь вид:

Максимально в полученной подсети раздать интерфейсам хостов можно 30 адресов.

Broadcast (Широковещание)

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

Когда хосту необходимо передать какую-то информацию всем хостам в сети
используется способ передачи данных broadcast. Еще когда адрес
специальных сервисов (служб) или устройств заранее неизвестен, то для
обнаружения также используется broadcast (широковещание).

Примеры, когда используется broadcast передача данных:

  • создание карты принадлежности адресов верхнего уровня к нижним
    (например, какой IP адрес на конкретном устройстве со своим MAC адресом)
  • запрос адреса (в качестве примера можно взять протокол ARP)
  • протоколы маршрутизации обмениваются информацией о маршрутах (RIP, EIGRP, OSPF)

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

Подобным образом, когда хосту необходимо отправить информацию всем
хостам в сети, он создаёт широковещательный пакет с его информацией и
передаёт его в сеть.

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

Существует два типа broadcast передачи данных: направленное широковещание и ограниченное широковещание.

Направленный broadcast (направленное широковещание)

Направленный broadcast отправляется всем хостам какой-то конкретной
сети. Этот тип широковещания удобно использовать для отправки broadcast
трафика всем хостам за пределами локальной сети.

Например, хост хочет отправить пакет всем хостам в сети 172.16.5.0/24,
но сам хост находится в другой сети. В данном случае хост-отправитель
вложит в заголовок пакета в качестве адреса пункта назначения broadcast
адрес 172.16.5.255. Хотя маршрутизаторы должны ограничивать (не
передавать) направленный широковещательный трафик, их можно настроить на
разрешение передачи broadcast трафика.

Ограниченный broadcast (ограниченное широковещание)

Ограниченный broadcast используется для передачи данных всем хостам в
локальной сети. В такие пакеты в качестве пункта назначения вставляется
IP адрес 255.255.255.255. Маршрутизаторы такой широковещательный трафик
не передают. Пакеты, переданные ограниченным broadcast будут
распространяться только в локальной сети. По этой причине локальные сети
IP также называют широковещательным доменом (broadcast domain).
Маршрутизаторы образуют границу для широковещательного домена. Без
границы пакеты бы распространялись по всей сети, каждому хосту, уменьшая
быстродействие сетевых устройств и забивая пропускную способность
каналов связи.

Приведу пример ограниченного broadcast: хост находится внутри сети
172.16.5.0/24 и хочет передать пакет всем хостам в его сети. Используя в
качестве пункта назначения IP адрес 255.255.255.255, он отправляет
широковещательный пакет. Этот пакет примут и обработают все хосты только
в этой локальной сети (172.16.5.0/24). 

Префиксная, или CIDR запись маски

Не всегда удобно использовать для обозначения маски длинное десятичное число. А уж тем более неудобно, если работать с масками в двоичном виде. Для упрощения работы был придуман альтернативный вариант записи, называемый «префиксной» или «CIDR» запись маски подсети.

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

Небольшой пример. У нас есть маска подсети 255.255.255.0, и мы перевели ее в двоичный вид. Получилось такое число:

11111111 11111111 11111111 00000000. Здесь 24-е единицы. Это и будет значение для префиксного варианта обозначения.

Записывается он следующим образом: пишется косая черта «/» и после нее указывается количество единиц. В нашем примере это будет соответствовать «/24» — в подсети используется префикс 24.

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

Вам пригодится следующая таблица:

Setting Up a Broadcast Address

In most cases, the broadcast address will be properly set up by modern operating systems once the IP address is entered and subnet masked. In some older unix systems that use classful definitions of subnets, the broadcast address is improperly formed, and the user will need to change it.

Changing Windows Systems Broadcast Addresses

Windows systems do not allow users to change the broadcast address by hand. Users can, however, choose whether the system uses zeros-broadcasts or ones-broadcasts. To change a windows system to use zeros-broadcasts, use the following procedure:

    • Log into the windows system with an administrator account.
    • Open the registry editor. If unfamiliar with using the Windows registry editor, please do not perform these steps. A mistake can make the system unusable.
    • Find the registry key “HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices TcpipParametersInterfaces”. Replace with the actual adapter ID the broadcast address should be changed for. Get a list of all the adapter IDs in the Windows system by opening a command line prompt and executing a “ipconfig /all” command.
    • Create a new DWORD value called “UseZeroBroadcast.” Set its inital value to 1. Use a hex or binary value in this case, since 1 is the same for both numbering systems.
    • Reboot the system for the changes to take effect.

Zeros-broadcast for that adapter is now enabled.

Changing Unix Systems Broadcast Addresses

Unix systems give the administrator a method to change the broadcast address to whatever value he/she sees fit to change it to. The user should be familiar with the process before changing his/her broadcast address. In some cases, when using ifconfig from the command line, the broadcast address is set to a classful based broadcast instead of the proper broadcast. Check the results with the “ifconfig” command. Unfortunately, every unix system has differing syntax for the ifconfig command and not all command options are available for every unix system. Check the ifconfig main page for help. The sample procedure below is the process used on a Linux system to change a system broadcast address.

  • Open a terminal window, telnet, or ssh into the unix system in question, and log into the system.
  • “Su” or “sudo” commands properly to get root privileges.
  • Determine which adapter to change the broadcast address on the system to by checking the output of “ifconfig -a.”
  • Execute “ifconfigbroadcast”. Replaceandwith the proper values.
  • Test the configuration.

Выбор маски для подсети

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

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

28 - 30 - 2 = 224 = E0h;
маска: 255.255.255.224 = 0xFF.FF.FF.E0.
Добавить комментарий

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

Adblock
detector