Что такое широковещательный протокол

Обновлено: 30.06.2024

Адрес Интернета определяет подключение узлов к своей сети. Из этого следует, что любое устройство, подключенное больше чем к одной сети, должно иметь больше чем один адрес Интернета. Фактически устройство имеет различные адреса для каждой сети, к которой оно подключено. Компьютер , который подключен к различным сетям, называется многоадресным компьютером и будет иметь несколько адресов. Каждый из таких адресов может принадлежать к различному классу. Маршрутизатор должен быть связан больше чем с одной сетью, иначе он не сможет маршрутизировать. Поэтому маршрутизатор по определению имеет больше чем один адрес IP (один для каждого интерфейса).

Прямой широковещательный адрес

В классах A, B и C, если номер хоста (hostid) состоит только из единиц, адрес называется прямым широковещательным адресом. Такой адрес используется маршрутизатором для того, чтобы передать пакеты для всех хостов в заданной сети. Все хосты примут пакет, имеющий этот тип адреса пункта назначения. Заметим, что введение такого адреса уменьшает число номеров локальных адресов в каждом из классов A, B, C.

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

Этот хост на этой сети

Если адрес IP составлен из всех нулей, это означает, что это хост расположенный на этой сети. Он используется хостом во время начальной загрузки, когда передающий хост не знает свой адрес IP . Хост передает пакет IP серверу начальной загрузки, используя этот адрес как исходный адрес пункта назначения, который может определить собственный адрес передающего хоста. Его можно использовать только как исходящий адрес . Этот адрес – всегда адрес класса A независимо от сети, что уменьшает число сетей в классе A на одну сеть .

Заданный хост на этой сети

Адрес кольцевой проверки (Loopback address)

В таблице 2.3 приведены рассмотренные выше специальные адреса.

Частные адреса

Некоторое количество блоков в каждом классе предназначено для частного использования. Эти блоки изображены в таблице 2.4 Эти адреса используются при подключении к сетям с другими способами адресации .

Индивидуальные адреса, групповая рассылка и широковещательные адреса

Связь в Интернете осуществляется с использованием индивидуальных адресов, или адресов групповой рассылки, или широковещательных адресов. Если в полях номера сети и номера узла установлены все двоичные "1", то пакет адресован всем узлам той же сети (широковещательная рассылка, адрес ограниченной групповой рассылки).

Индивидуальные адреса

Когда пакет передают от индивидуального источника до индивидуального пункта назначения — это индивидуальная связь. Все системы в Интернете имеют по крайней мере один уникальный индивидуальный адрес. Индивидуальные адреса принадлежат к классам A, B или C.

Адреса групповой рассылки

Связь групповой рассылки происходит по принципу "один ко многим". Когда пакет передают от индивидуального источника до группы пунктов назначения — это связь групповой рассылки. Адрес групповой рассылки — адрес класса D. Полный адрес определяет групповой адрес ( groupid ). Система в Интернете может иметь один или более адресов класса D групповой рассылки (в дополнение к индивидуальному адресу или адресам). Если система (обычно хост) имеет семь адресов групповой рассылки, это означает, что он принадлежит семи различным группам. Адрес класса D может использоваться только как входящий адрес пункта назначения, а не как исходный адрес.

Групповая передача в Интернете может осуществляться на местном или на глобальном уровне. На местном уровне хостом локальной сети LAN может быть сформирована группа, и могут быть назначены адреса групповой рассылки. На глобальном уровне хосты на различных сетях могут формировать группу, и может быть назначен адрес групповой рассылки.

Назначенные адреса групповой рассылки. В сети Интернет определены некоторые адреса групповой рассылки к заданным группам.

Категория. Некоторые адреса групповой рассылки предназначены для некоторого специального использования. Эти адреса групповой рассылки начинаются с префикса 224.0.0 . таблицa 2.5 показывает некоторые из этих адресов.

Конференц-связь. Некоторые адреса групповой рассылки предназначены для конференц-связи и организации телеконференций. Эти адреса групповых рассылок начинаются с префиксов 224.0.1 . табл. 2.6 показывает некоторые из этих адресов.

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

Широковещательная связь происходит по принципу "один ко всем". Интернет позволяет широковещательную передачу только на местном уровне. Мы уже обсудили два широковещательных адреса , используемые на местном уровне: ограниченный широковещательный адрес (все единицы) и прямой широковещательный адрес (сетевой адрес и все единицы в локальном адресе ).

Для сокращения числа записей в маршрутизаторе широко используют бесклассовую систему междоменной маршрутизации (Classless Inter Domain Routing, CIDR ), в которой маршрутизация осуществляется на основе префиксов. Префиксом обозначают общую часть старших разрядов адреса, они позволяют сократить число записей в маршрутизаторе. Так, если две первые указанные подсети подсоединены к одному маршрутизатору, то смежным маршрутизаторам не обязательно иметь 2 записи о каждой подсети, а достаточно иметь одну запись префикса 135.38.0.0/17 с маской 255.255.128.0 (11111111 11111111 10000000 00000000) , содержащей 17 лидирующих "единиц".

Рассмотрим, допускается ли в Ethernet кольцевое соединение между коммутаторами. Например, в сети 4 коммутатора и они соединены 4 кабелями, так что образуется кольцо. Вопрос состоит в том, может ли работать такая сеть? К сожалению, такая сеть работать не может, потому что в ней возникает широковещательный шторм.

p, blockquote 1,0,0,0,0 -->


p, blockquote 2,0,0,0,0 -->

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


p, blockquote 3,0,0,0,0 -->

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

p, blockquote 4,0,0,0,0 -->


p, blockquote 5,0,0,0,0 -->

Компьютеры, которые подключены к портам коммутатора увидят, что этот кадр предназначен не для них и просто отбросят их. А два порта на картинке ниже, подключены к другим коммутаторам и кадр через эти порты будет передан в другие коммутаторы 2 и 3.

p, blockquote 6,0,0,0,0 -->


p, blockquote 7,0,0,0,0 -->

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

p, blockquote 8,0,0,0,0 -->


p, blockquote 9,0,0,0,0 -->

Как и на предыдущем этапе компьютеры отбросят кадры, которые предназначены не для них, а через соединение кадр будет передан на коммутатор 4.

p, blockquote 10,0,0,0,0 -->


p, blockquote 11,0,0,0,0 -->

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

p, blockquote 12,0,0,0,0 -->


p, blockquote 13,0,0,0,0 -->

Кроме этого кадр 1 передастся в коммутатор 3, а кадр 2 передастся в коммутатор 2. Таким образом, кадры будут ходить по кругу и передаваться на все порты.

p, blockquote 14,0,0,0,0 -->


p, blockquote 15,0,0,0,0 -->

Через некоторое время таких кадров будет очень много и сеть окажется неработоспособной. Такая ситуация называется широковещательный шторм и из-за него кольцевое соединение в сети Ethernet невозможно.

p, blockquote 16,0,1,0,0 -->

Протокол STP

Протокол связующего дерева (Spanning Tree Protocol) или иногда называют протокол остовного дерева. Протокол STP позволяет отключать на программном уровне некоторые соединения между коммутаторами, чтобы не образовывалось кольцо.

p, blockquote 17,0,0,0,0 -->

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

p, blockquote 18,0,0,0,0 -->

Протокол STP определен в стандарте IEEE 802.1D. Благодаря этому протоколу можно создавать несколько соединений между коммутаторами. Это повышает надежность работы сети. Если по какой-то причине одно соединение разорвется, то можно будет использовать другое соединение.

p, blockquote 19,0,0,0,0 -->

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

p, blockquote 20,0,0,0,0 -->

Место протокола STP в модели OSI

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

p, blockquote 21,0,0,0,0 -->

Работа протокола STP

Рассмотрим, как работает протокол STP. В примере с 4-мя коммутаторами одно из соединений (между коммутатором 3 и 4) будет отключено на программном уровне.

p, blockquote 22,0,0,0,0 -->


p, blockquote 23,0,0,0,0 -->

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

p, blockquote 24,0,0,0,0 -->


p, blockquote 25,0,0,0,0 -->

Протокол STP может автоматически включить заблокированное соединение, и коммутатор по-прежнему сможет передавать данные в сеть.

p, blockquote 26,0,0,0,0 -->

Этапы работы протокола STP

Работа протокола STP состоит из трех этапов. На первом этапе выбирается корневой коммутатор. На втором этапе рассчитываются кратчайшие пути от всех коммутаторов в сети до корневого коммутатора. На 3 этапе отключаются все остальные соединения, кроме кратчайших.

p, blockquote 27,0,0,0,0 -->

Протокол STP придумала Ради Перлман и написала стихотворение, как протокол работает.

p, blockquote 28,0,0,0,0 -->


p, blockquote 29,0,0,0,0 -->

p, blockquote 30,0,0,0,0 -->

p, blockquote 31,0,0,0,0 -->

В качестве адреса получателя используется групповой МАК-адрес STP. Все Ethernet коммутаторы, которые поддерживают STP принимают и обрабатывают кадры, которые приходят на этот групповой адрес (01:80:С2:00:00:00).

p, blockquote 32,1,0,0,0 -->

Выбор корневого коммутатора

Подробно рассмотрим, как работает протокол STP. На первом этапе выполняется выбор корневого коммутатора. Выбор выполняется по идентификатору, в качестве корневого выбирается коммутатор, у которого этот идентификатор минимальный.

p, blockquote 33,0,0,0,0 -->

Сейчас в качестве идентификатора коммутаторов используется его МАК-адрес, но можно повлиять на значение идентификатора вручную, чтобы выбрать в качестве корневого наиболее мощный коммутатор в вашей сети, а не тот коммутатор, у которого случайно оказался самый маленький МАК-адрес.

p, blockquote 34,0,0,0,0 -->

Предположим, что в нашей сети коммутаторы используют в качестве идентификаторов простые, целые числа. У коммутатора 1 идентификатор 4, у коммутатора 2 BID=2 и так далее, смотри по картинке ниже. В качестве корневого по протоколу будет выбран коммутатор 4 с идентификатором 1.

p, blockquote 35,0,0,0,0 -->


p, blockquote 36,0,0,0,0 -->

p, blockquote 37,0,0,0,0 -->


p, blockquote 38,0,0,0,0 -->

p, blockquote 39,0,0,0,0 -->


p, blockquote 40,0,0,0,0 -->

p, blockquote 41,0,0,0,0 -->


p, blockquote 42,0,0,0,0 -->

p, blockquote 43,0,0,0,0 -->


p, blockquote 44,0,0,0,0 -->

На следующем этапе информация о том, что корневой коммутатор это коммутатор с номером 4, доходит до 1 коммутатора в нашей сети и теперь все коммутаторы считают, что корневой коммутатор это коммутатор 4 с BID=1. На этом выбор корневого коммутатора заканчивается.

p, blockquote 45,0,0,0,0 -->

Видео о работе корневого коммутатора

p, blockquote 46,0,0,0,0 -->

Расчет кратчайших путей

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

  • количество промежуточных коммутаторов;
  • скорость соединений между промежуточными коммутаторами.

p, blockquote 48,0,0,1,0 -->

Расстояние между коммутаторами определено в стандарте IEEE 802.1D. Предположим, что у нас соединение с коммутаторами 1 Гбит/с в этом случае в качестве значения расстояния мы используем число 4,как в таблице ниже.

p, blockquote 49,0,0,0,0 -->


p, blockquote 50,0,0,0,0 -->

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

p, blockquote 51,0,0,0,0 -->


p, blockquote 52,0,0,0,0 -->

В нашем случае скорость соединения 1 Гбит/с значения расстояния равно 4.Затем это кратчайшее расстояние до корневого коммутатора рассылается в четвертый коммутатор. 4-эй коммутатор берет это значение 4, определяет скорость соединения с этими коммутаторами 1 Гбит/с расстояние 4 и суммарное расстояние 8. Теперь мы знаем расстояние от всех портов до корневого коммутатора.

p, blockquote 53,0,0,0,0 -->


p, blockquote 54,0,0,0,0 -->

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

p, blockquote 55,0,0,0,0 -->

Если порты нумеруются слева направо, то будет отключен порт справа.

p, blockquote 56,0,0,0,0 -->


p, blockquote 57,0,0,0,0 -->

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

p, blockquote 58,0,0,0,0 -->

Поэтому мы имеем полное право его выключить использовать для передачи данных.

p, blockquote 59,0,0,0,0 -->


p, blockquote 60,0,0,0,0 -->

Состояние портов в STP

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

Развитие STP

В протоколе STP переход от состояния, когда Вы только что включили кабель к состоянию Forwarding занимает достаточно долгое время, примерно 30 секунд. В 80-е годы, когда разрабатывали протокол это было допустимо. Но сейчас сети стали гораздо больше и изменяются чаще, поэтому ждать 30 секунд пока сработает STP уже нельзя.

p, blockquote 62,0,0,0,0 -->

Поэтому был предложен новый вариант протокола STP, который называется RSTP (Rapid Spanning Tree Protocol) – быстрый протокол связующего дерева. Он работает по похожим принципам, но срабатывает всего лишь за несколько секунд. Протокол RSTP определен стандартом IEEE 802.1w.

p, blockquote 63,0,0,0,0 -->

Кроме этого возможны проблемы при взаимодействии протокола STP с технологией VLAN. Вы можете попытаться создать несколько соединений между коммутаторами, которые будут принадлежать разным Vlan. Но STP в исходном варианте ничего не знает про vlan поэтому соединение между коммутаторами в разных vlan будут отключены.

p, blockquote 64,0,0,0,0 --> p, blockquote 65,0,0,0,1 -->

Для того, чтобы можно было использовать технологию vlan совместно с протоколом STP необходимо, чтобы связующее дерево строилось для каждого vlan отдельно. Эту возможность реализовали в протоколе Multiple Spanning Tree Protocol (MSTP), который определен в стандарте 802.1s.

Эта страница поможет вам с навигацией по статьям о компьютерных сетях.

Что такое Сеть

Сеть - это группа компьютеров или других устройств объединённых с помощью проводов или радиоволн.

Что такое Хост

Хост - это одно устройство в сети.

К хосту можно обратиться по сети.

Хост может посылать запросы к одному или нескольким хостам в сети.

Для обращения по сети к самому себе придуман специальный термин - обращение к localhost

Что такое Протокол

В основе обмена данными по сети лежит передача электрических импульсов. Их можно преобразовать в числа. Например высокое напряжение принять за 1 а низкое за 0.

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

Это будет называться протоколом. Протолов может быть много и они могут вкладываться друг в друга. Примеры TCP, IP, UPD

Пример протокола

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

Пусть есть хосты А и Б.

Они договорились, что для начала работы один должен послать другому

и получить обратно

Перед реальными данными нужно всегда вставлять

Которые пока никак не используются.

При успешном получении обратно отправляется только увеличенный счётчик

Когда все данные отправлены нужно послать

Пример обмена данными по этому протоколу

A → Б: А посылает 11110000 , ждёт обратно 11110001.

Б получает предложение к обмену данными, он готов принимать и отправляет обратно 11110001

А получает сигнал готовности к приёму от Б и отправляет реальные данные 11111111, поставив перед этим 10101010 00000000

Б получает 10101010 00000000 11111111 и отправляет обратно 10101011

А получает подтверждение приёма данных от Б и отправляет вторую порцию данных 10101100 00000000 00000000

Б получает 10101100 00000000 00000000 и отпрвляет обратно 10101101

Б понимает, что данные кончились и приступает к их обработке.

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

Один протокол может быть вложен в другой.

Допустим, в нашем примере появляются новые правила назовём их П1 и П2.

П1: если перед данными приходит не

То данные будут не 8 бит а 16 и перед ними будет ещё 8 бит информации в которой зашифровано какая именно программа их должна обрабатывать

Данных будет по 32 бита без каких-либо других изменений

Очевидно, что обрабатывать данные для П1 и П2 нужно по разному. Хотя оба они основаны на нашем изначальном протоколе.

Этот пример слишком примитивен, но можно вообразить себе, что П1 и П2 это новые протоколы только более высокого уровня.

IP это протокол третьего уровня в модели OSI - Network Layer

Пример IP адреса 8.8.8.8

Делится точками на четыре части - октета по 8 бит. Каждый октет может принимать значение от 0 до 255

203.0.113 - это так называемая Network Portion

.10 - это Host Portion

/24 - это Subnet Mask или просто netmask - маска подсети.

С помощью маски можно увеличить размер Host Portion за счёт Network Portion.

Без маски IP не самодостаточен (пример)

До 1995-го года использовалсь Classful Addressing

После 1995-го Classless Addressing

Subnet Mask

В нашем первом примере 24 бита отведено под сетевую часть адреса и 8 бит под хосты (hosts, также употребляют термин nodes). Разобраться как происходит это разделение можно изучив понятие Subnet Mask (или просто netmask) - маска подсети.

Маска также разбита на октеты. В таблице удобно расположены бинарный IP адрес и бинарная маска.

Если бит адреса находится над 0 маски - он соответствует Host Portion.

Если бит адреса находится над 1 маске - то это Network Portion

Чем меньше маска - тем больше уникальных хостов может быть в сети

В большой локальной сети не хочется тратить 24 бита на сетевую части и оставлять всего 8 бит на хосты.

Напомню, что 8 бит это всего 256 уникальных вариантов из которых первый .0 зарезервирован под адрес самой сети ( Network Address ) а последний .255 зарезервирован под широковещательный адрес ( Broadcast Address ), о которых вы узнаете ниже, так что остаётся всего 254 уникальных IP для хостов ( Host Address ).

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

В маске 255.0.0.0 всё наоборот: 8 бит под сетевую часть и 24 бита под хост

Пример IP адреса с такой маской

Не обязательно разграничивать Host Portion и Network Portion по границе октета

IP из предыдущего примера 10.0.0.10 может быть у хоста в сети как с маской 255.0.0.0 так и с маской 255.255.240.0

Разберёмся где проявится разница.

Рассмотрим два IP адреса 10.0.15.10 и 10.0.16.10.

Если маска 255.0.0.0

Сетевая часть адреса занимает только первый октет и выделена жирным шрифтом, поэтому легко понять, что 10.0.15.10 и 10.0.16.10 это два соседних хоста в одной подсети.

Рассмотрим те же адреса но с маской 255.255.240.0

Обратите внимание на третий октет. Особенно на записи в двоичном виде.

Ни один из положительных битов адреса 10.0.15.10 не попал в сетевую часть. (нет жирных единиц)

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

У 10.0.16.10 единица в третьем октете попала в сетевую часть. От адреса хоста осталось только 1010 а подсеть теперь не такая как у 10.0.15.10

Таким образом теперь 10.0.16.10 и 10.0.15.10 это не соседние хосты одной подсети а разные хосты в разных подсетях.

Classful Addressing

Если вы когда-то слышали про IP класса A, класса B, C, D или E - это относилось как раз к устаревшей классовой адресации (Classful Addressing)

A, B, C - это так называемый Unicast. Именно такие адреса сейчас используются в публичном интернете (за исключением приватных адресов . Принцип - одно устройство общается с одним устройством

D - это multicast. Одно устройство общается с несколькими устройствами. Не поддерживается в интернете, но поддерживается в больших частных сетях для трансляций совещаний и т.д.

Класс A: первые 8 бит это всегда сетевая часть

Класс B: первые 16 бит это всегда сетевая часть

Класс C: первые 24 бита это всегда сетевая часть

Класс D: все 32 бита это всегда сетевая часть

Типы IP адресов

По тому, какое значение принимает Host Portion можно разделить адреса на три типа

Network Address

Сетевой адрес (Network Address или Network Prefix) - это уникальный идентификатор группы устройств. Например, как название улицы является уникальным идентификатором всех домов на этой улице, но не является уникальным для конкретного дома (если, конечно, на улице больше одного дома)

У сетевого адреса все биты в Host Portion равны 0

Broadcast Address

Широковещательный адрес (Broadcast Address) - идентификатор указывающий на все устройства в сети.

У широковещательного адреса все биты в Host Portion равны 1

В чём отличие поясню на примере: почтальону поручили отнести письмо в офис TopBicycle на улице Партнёрская и выдали инструкцию

Это аналог сетевого адерса. На улице Партнёрской может быть много офисов. Куда конкретно нести письмо сразу не понять - нужно уточнить адрес дома (в случае с сетью - адрес хоста).

На следующий день почтальону поручили отнести оповещение о ремонте на улице во все дома и офисы на улице Партнёрская.

Оповещения одинаковые для всех компаний.

Это аналог широковещательного адреса. Если бы на улице было два офиса, нужно нести письма в оба. Если двадцать - во все двадцать. Знать кто в каком доме необязательно поэтому если он идёт с письмами по улице то просто заходит во все дома по порядку (не по списку, а так как они расположены на улице).

Host Address

Адрес хоста (Host Address) - идентификатор указывающий на конкретное устройство в сети.

У адреса хоста может быть любая комбинация бит в Host Portion кроме двух: только нули и только единицы.

Только нули это сетевой адрес, только единицы - широковещательный. Всё остальное - это адреса хостов.

Сетевой адрес в десятичной записи может оканчиваться не на 0

Рассмотрим адрес 10.128.224.64 с маской 255.255.255.224.

Проверить являтеся ли адрес сетевым означает проверить содержит ли Host Portion только единицы или нет.

Одного IP адреса для этого недостаточно, нужно рассмотреть его вместе с маской чтобы понять чему равна Host Portion

Сетевая часть выделена жирным, очевидно, что в части хоста остались только нули и этот адрес - сетевой

CIDR Notation

Рассмотрим маску 255.255.255.0

Первый 24 бита это единицы. Чтобы не писать постоянно 255.255.255 можно писать

Формат следующий сперва слеш, затем длина Network Portion

Private

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

10.0.0.0/8
172.16.0.0/12
192.168.0.0/16

Рекомендуется избегать использования адреса 169.254.0.0/16 - так называемого APIPA

Адрес 127.0.0.1 зарезервирован под Loopback Address

Это означает адрес вашего же компьютера. Можно сказать домашний адрес.

В IPv6 он выглядит как ::1

Subnetting Networks

Рассмотрим IP адрес 10.0.0.0/8

Диапазон хост-адресов (не включая концы):

N 00001010 00000000 00000000 00000000
B 00001010 11111111 11111111 11111111
M 11111111 00000000 00000000 00000000

Рассмотрим, допускается ли в Ethernet кольцевое соединение между коммутаторами. Например, в сети 4 коммутатора и они соединены 4 кабелями, так что образуется кольцо. Вопрос состоит в том, может ли работать такая сеть? К сожалению, такая сеть работать не может, потому что в ней возникает широковещательный шторм.

p, blockquote 1,0,0,0,0 -->


p, blockquote 2,0,0,0,0 -->

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


p, blockquote 3,0,0,0,0 -->

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

p, blockquote 4,0,0,0,0 -->


p, blockquote 5,0,0,0,0 -->

Компьютеры, которые подключены к портам коммутатора увидят, что этот кадр предназначен не для них и просто отбросят их. А два порта на картинке ниже, подключены к другим коммутаторам и кадр через эти порты будет передан в другие коммутаторы 2 и 3.

p, blockquote 6,0,0,0,0 -->


p, blockquote 7,0,0,0,0 -->

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

p, blockquote 8,0,0,0,0 -->


p, blockquote 9,0,0,0,0 -->

Как и на предыдущем этапе компьютеры отбросят кадры, которые предназначены не для них, а через соединение кадр будет передан на коммутатор 4.

p, blockquote 10,0,0,0,0 -->


p, blockquote 11,0,0,0,0 -->

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

p, blockquote 12,0,0,0,0 -->


p, blockquote 13,0,0,0,0 -->

Кроме этого кадр 1 передастся в коммутатор 3, а кадр 2 передастся в коммутатор 2. Таким образом, кадры будут ходить по кругу и передаваться на все порты.

p, blockquote 14,0,0,0,0 -->


p, blockquote 15,0,0,0,0 -->

Через некоторое время таких кадров будет очень много и сеть окажется неработоспособной. Такая ситуация называется широковещательный шторм и из-за него кольцевое соединение в сети Ethernet невозможно.

p, blockquote 16,0,1,0,0 -->

Протокол STP

Протокол связующего дерева (Spanning Tree Protocol) или иногда называют протокол остовного дерева. Протокол STP позволяет отключать на программном уровне некоторые соединения между коммутаторами, чтобы не образовывалось кольцо.

p, blockquote 17,0,0,0,0 -->

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

p, blockquote 18,0,0,0,0 -->

Протокол STP определен в стандарте IEEE 802.1D. Благодаря этому протоколу можно создавать несколько соединений между коммутаторами. Это повышает надежность работы сети. Если по какой-то причине одно соединение разорвется, то можно будет использовать другое соединение.

p, blockquote 19,0,0,0,0 -->

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

p, blockquote 20,0,0,0,0 -->

Место протокола STP в модели OSI

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

p, blockquote 21,0,0,0,0 -->

Работа протокола STP

Рассмотрим, как работает протокол STP. В примере с 4-мя коммутаторами одно из соединений (между коммутатором 3 и 4) будет отключено на программном уровне.

p, blockquote 22,0,0,0,0 -->


p, blockquote 23,0,0,0,0 -->

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

p, blockquote 24,0,0,0,0 -->


p, blockquote 25,0,0,0,0 -->

Протокол STP может автоматически включить заблокированное соединение, и коммутатор по-прежнему сможет передавать данные в сеть.

p, blockquote 26,0,0,0,0 -->

Этапы работы протокола STP

Работа протокола STP состоит из трех этапов. На первом этапе выбирается корневой коммутатор. На втором этапе рассчитываются кратчайшие пути от всех коммутаторов в сети до корневого коммутатора. На 3 этапе отключаются все остальные соединения, кроме кратчайших.

p, blockquote 27,0,0,0,0 -->

Протокол STP придумала Ради Перлман и написала стихотворение, как протокол работает.

p, blockquote 28,0,0,0,0 -->


p, blockquote 29,0,0,0,0 -->

p, blockquote 30,0,0,0,0 -->

p, blockquote 31,0,0,0,0 -->

В качестве адреса получателя используется групповой МАК-адрес STP. Все Ethernet коммутаторы, которые поддерживают STP принимают и обрабатывают кадры, которые приходят на этот групповой адрес (01:80:С2:00:00:00).

p, blockquote 32,1,0,0,0 -->

Выбор корневого коммутатора

Подробно рассмотрим, как работает протокол STP. На первом этапе выполняется выбор корневого коммутатора. Выбор выполняется по идентификатору, в качестве корневого выбирается коммутатор, у которого этот идентификатор минимальный.

p, blockquote 33,0,0,0,0 -->

Сейчас в качестве идентификатора коммутаторов используется его МАК-адрес, но можно повлиять на значение идентификатора вручную, чтобы выбрать в качестве корневого наиболее мощный коммутатор в вашей сети, а не тот коммутатор, у которого случайно оказался самый маленький МАК-адрес.

p, blockquote 34,0,0,0,0 -->

Предположим, что в нашей сети коммутаторы используют в качестве идентификаторов простые, целые числа. У коммутатора 1 идентификатор 4, у коммутатора 2 BID=2 и так далее, смотри по картинке ниже. В качестве корневого по протоколу будет выбран коммутатор 4 с идентификатором 1.

p, blockquote 35,0,0,0,0 -->


p, blockquote 36,0,0,0,0 -->

p, blockquote 37,0,0,0,0 -->


p, blockquote 38,0,0,0,0 -->

p, blockquote 39,0,0,0,0 -->


p, blockquote 40,0,0,0,0 -->

p, blockquote 41,0,0,0,0 -->


p, blockquote 42,0,0,0,0 -->

p, blockquote 43,0,0,0,0 -->


p, blockquote 44,0,0,0,0 -->

На следующем этапе информация о том, что корневой коммутатор это коммутатор с номером 4, доходит до 1 коммутатора в нашей сети и теперь все коммутаторы считают, что корневой коммутатор это коммутатор 4 с BID=1. На этом выбор корневого коммутатора заканчивается.

p, blockquote 45,0,0,0,0 -->

Видео о работе корневого коммутатора

p, blockquote 46,0,0,0,0 -->

Расчет кратчайших путей

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

  • количество промежуточных коммутаторов;
  • скорость соединений между промежуточными коммутаторами.

p, blockquote 48,0,0,1,0 -->

Расстояние между коммутаторами определено в стандарте IEEE 802.1D. Предположим, что у нас соединение с коммутаторами 1 Гбит/с в этом случае в качестве значения расстояния мы используем число 4,как в таблице ниже.

p, blockquote 49,0,0,0,0 -->


p, blockquote 50,0,0,0,0 -->

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

p, blockquote 51,0,0,0,0 -->


p, blockquote 52,0,0,0,0 -->

В нашем случае скорость соединения 1 Гбит/с значения расстояния равно 4.Затем это кратчайшее расстояние до корневого коммутатора рассылается в четвертый коммутатор. 4-эй коммутатор берет это значение 4, определяет скорость соединения с этими коммутаторами 1 Гбит/с расстояние 4 и суммарное расстояние 8. Теперь мы знаем расстояние от всех портов до корневого коммутатора.

p, blockquote 53,0,0,0,0 -->


p, blockquote 54,0,0,0,0 -->

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

p, blockquote 55,0,0,0,0 -->

Если порты нумеруются слева направо, то будет отключен порт справа.

p, blockquote 56,0,0,0,0 -->


p, blockquote 57,0,0,0,0 -->

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

p, blockquote 58,0,0,0,0 -->

Поэтому мы имеем полное право его выключить использовать для передачи данных.

p, blockquote 59,0,0,0,0 -->


p, blockquote 60,0,0,0,0 -->

Состояние портов в STP

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

Развитие STP

В протоколе STP переход от состояния, когда Вы только что включили кабель к состоянию Forwarding занимает достаточно долгое время, примерно 30 секунд. В 80-е годы, когда разрабатывали протокол это было допустимо. Но сейчас сети стали гораздо больше и изменяются чаще, поэтому ждать 30 секунд пока сработает STP уже нельзя.

p, blockquote 62,0,0,0,0 -->

Поэтому был предложен новый вариант протокола STP, который называется RSTP (Rapid Spanning Tree Protocol) – быстрый протокол связующего дерева. Он работает по похожим принципам, но срабатывает всего лишь за несколько секунд. Протокол RSTP определен стандартом IEEE 802.1w.

p, blockquote 63,0,0,0,0 -->

Кроме этого возможны проблемы при взаимодействии протокола STP с технологией VLAN. Вы можете попытаться создать несколько соединений между коммутаторами, которые будут принадлежать разным Vlan. Но STP в исходном варианте ничего не знает про vlan поэтому соединение между коммутаторами в разных vlan будут отключены.

p, blockquote 64,0,0,0,0 --> p, blockquote 65,0,0,0,1 -->

Для того, чтобы можно было использовать технологию vlan совместно с протоколом STP необходимо, чтобы связующее дерево строилось для каждого vlan отдельно. Эту возможность реализовали в протоколе Multiple Spanning Tree Protocol (MSTP), который определен в стандарте 802.1s.

Читайте также: