Как коммутатор понимает, на какой порт отправлять кадры

Обновлено: 19.05.2024

Мне просто интересно, как коммутатор знает, как направлять пакеты в пункты назначения, «скрытые» за другим коммутатором. Насколько я понимаю, у коммутатора есть таблица, которая сопоставляет каждый из его аппаратных портов ровно с одним MAC-адресом. Пока все хорошо, когда прибывает пакет/кадр (?), теперь он может определить порт, на который должен быть направлен пакет.

Но что произойдет, если к одному из этих портов подключен другой коммутатор, и к этому второму коммутатору подключено более одного устройства?

Мне интересно, как коммутатор может решить эту проблему (на OSI-уровне 2, без маршрутизатора), так как я думаю, что это действительно работает в реальности (?)

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

По теме: Как коммутатор изучает таблицу коммутаторов? Тот же процесс, с помощью которого один коммутатор заполняет свою таблицу MAC-адресов, используется при наличии двух, трех или любого количества коммутаторов.

3 ответа 3

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

(Хост А) (Коммутатор А) (Коммутатор Б) (Хост Б).

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

  • Хост А хочет получить доступ к узлу Б. Хост А знает MAC-адрес хоста Б. Таким образом, узел A отправляет кадр на коммутатор A.
  • Коммутатор A не имеет узла B в своей таблице MAC-адресов. Коммутатор A затем рассылает фрейм на все свои порты, за исключением того, на котором находится хост A. Среди всех этих портов есть порты, к которым подключен коммутатор B, поэтому коммутатор B получает кадр.
  • Коммутатор B затем рассылает этот фрейм по всем своим портам (учитывая, что коммутатор B не имеет хоста B в своей таблице MAC-адресов).
  • Хост Б ответит на кадр, затем коммутатор Б запишет MAC-адрес хоста Б и отправит ответ на коммутатор А. Затем коммутатор А запишет MAC-адрес хоста Б в свою таблицу и отправит ответ на хост А

отлично, спасибо! Я думал о широковещании, но подумал, что это добавит слишком много накладных расходов, особенно когда много коммутаторов соединены вместе.

@sh4kesbeer Может случиться так, что коммутаторы даже не генерируют «дополнительные» широковещательные рассылки L2: прежде чем хост A отправит пакет хосту B, он, как правило, все равно отправляет широковещательный запрос arp с запросом MAC-адреса, принадлежащего для заданный IP-адрес. При обработке этого запроса все коммутаторы узнают, откуда поступает MAC-адрес A. Следовательно, они уже могут правильно направить ответ arp и (по крайней мере, те, кто находится на пути от B к A) узнать, откуда поступает MAC-адрес B. – Таким образом, «дополнительная» широковещательная рассылка, вызванная переключением, обычно происходит только после изменения топологии.

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

Коммутатор может сопоставлять несколько MAC-адресов с портом.

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

Он обновляет свою таблицу при получении любого пакета, так как все они содержат исходный mac. Если у него был Mac на другом порту, прежде чем он изменил свою таблицу MAC-адресов (сопоставление Mac с портом).

Когда положение компьютера Mac часто меняется между портами, это рассматривается как откидная створка Mac.


При описанной топологии: Хост A - Коммутатор A - Коммутатор B - Хост B

В идеале хост А должен знать IP-адрес хоста Б (пункт назначения, с которым он хочет установить связь). Предполагая, что IP-адреса двух хостов находятся в одной сети, хост A использует ARP для получения MAC-адреса пункта назначения. Это широковещательный кадр, который перенаправляется через порты коммутатора A и коммутатора B на хост B, который видит, что он является предполагаемым получателем, и отвечает своим собственным MAC-адресом.

Хост A позже использует этот MAC-адрес и отправляет пакет коммутатору A.

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

Давайте рассмотрим действительно классный пример. Я на самом деле люблю это, и если бы я получил эту информацию в таком объяснении давным-давно, мой мозг был бы взорван, потому что это сделало бы все для меня таким ясным.Что мы собираемся сделать, так это посмотреть, что происходит с данными, когда они перемещаются по сети от хоста слева к хосту справа. Прежде чем мы это сделаем, нам нужно определить, что происходит с двумя разными сетями. У нас есть одна сеть слева с IP-адресом 192.168.100.0 и другая сеть справа с частным IP-адресом 10.10.10.0. Две разные частные сети, которые мы соединяем вместе через этот маршрутизатор. Каждый из наших хостов в этих сетях имеет определенные IP-адреса и определенные MAC-адреса.

Помните, что каждый узел в сети имеет IP-адрес и MAC-адрес. Итак, оба ваших хоста имеют оба из них. Хост слева — 192.168.100.0 и MAC-адрес со всеми A, а хост справа имеет IP-адрес 10.10.10.2 с MAC-адресом со всеми B. Мы также должны понимать, что такое IP-адрес и MAC-адрес маршрутизатора. Обычно мы думаем о маршрутизаторах только с точки зрения IP, но у них есть MAC-адреса.

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

Маршрутизаторы

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

Хост создает пакет

На данный момент мы определили, что у нас есть две разные локальные сети. Хост слева собирается отправить сообщение хосту справа, поэтому он говорит, что я хочу отправить эти данные хосту справа. Хорошо, так что давайте посмотрим, что происходит. Он возьмет эти данные, и прежде чем он сможет их отправить, ему сначала нужно создать IP-пакет. Этот IP-пакет будет иметь адрес назначения, он уже знает, что хост, на который он хочет его отправить, — 10.10.10.2, и помещает его в адрес назначения IP-пакета. Он также включает свой собственный IP-адрес в IP-пакет, а также источник. В заголовке у нас есть источник 192.168.100.0 и пункт назначения 10.10.10.2, пакет создан и данные в него вставлены. Что ему нужно сделать с этим пакетом, прежде чем он сможет отправить его в локальную сеть Ethernet? Нужно создать рамку.

Пакет создает кадр

Итак, пакет создает фрейм и помещает в него информацию о MAC-адресе получателя. Однако он не знает MAC-адрес этого компьютера 10.10.10.2, потому что он находится в другой сети. Он знает только MAC-адреса компьютеров в своей локальной сети. Но у него есть шлюз по умолчанию, и этот компьютер знает MAC-адрес своего шлюза по умолчанию. Интерфейс G0/0 имеет MAC-адрес, поэтому он собирается поместить MAC-адрес назначения в заголовок MAC этого кадра. Фрейм доберется до шлюза по умолчанию, и он знает, как это сделать, потому что он знает, что его шлюз по умолчанию — это адрес 192.168.100.1, и ему известен его MAC. Следующий шаг — поместить пакет во фрейм.

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

Переключить

Коммутатор берет кадр, просматривает его, открывает заголовок и видит CC-CC-CC-CC-CC-CC в качестве MAC-адреса назначения. Затем он отправляет его из порта, который подключен к этому MAC-адресу, потому что, помните, у него есть таблица, и он точно знает, где этот маршрутизатор подключен.

Затем он отправляет его через порт, подключенный к этому маршрутизатору. Бум, он добрался до роутера. Маршрутизатор принимает кадр и анализирует заголовок MAC кадра. Он видит заголовок MAC CC-CC-CC-CC-CC-CC и знает, что кадр предназначен для маршрутизатора, и открывает кадр. Затем он обнаруживает IP-пакет, просматривает информацию заголовка пакета и видит IP-адрес назначения 10.10.10.2. Маршрутизатор знает, где находится пункт назначения, создает совершенно новый кадр и изменяет заголовок MAC-адреса на все B, чтобы его можно было переупаковать и отправить на хост.

Маршрутизатор отправляет кадр коммутатору, коммутатор затем просматривает кадр и просматривает заголовок кадра всех B и знает, что он подключен к порту G0/1, а затем отправляет его через этот порт и непосредственно на хозяин.Хост получает его, открывает, просматривает заголовок кадра и заголовок MAC-адреса и видит, что это все B, и теперь знает, что кадр попал в нужное место, и полностью открывает кадр, попадая в IP-пакет. Он проверяет назначение IP-пакета и говорит: «О, круто, это для меня». и он пришел с 192.168.100.0. Затем он извлекает данные из пакета и теперь может их анализировать.

Что он теперь делает с пакетом и фреймом? Ну, он уничтожает эти вещи и просто оставляет данные. Мы можем взять эти данные и выяснить, что они означают. Он будет проходить через свои приложения или любые другие данные, через которые должны пройти данные.

Заключение

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

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

Сетевой коммутатор

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

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

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

  • Когда данные из приложения передаются компьютером, они помещаются в сегмент TCP или UDP с информацией о порте.
  • Сегмент помещается в пакет IP, содержащий IP-адреса.
  • IP-пакет помещается внутрь фрейма с MAC-адресами.

Если кадр поступает на порт 1 коммутатора, и кадр поступает с MAC-адреса источника 00:11:22:33:44:55, то коммутатор автоматически узнает, что устройство с MAC-адресом 00:11: 22:33:44:55 подключен к порту 1. Коммутатор сохранит эту информацию в таблице MAC-адресов, которую он хранит в памяти.

Изучение MAC-адреса в коммутаторе

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

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

Если он может сопоставить пункт назначения с портом в таблице, он будет перенаправлять трафик только на этот порт.

Переадресация MAC-адреса в коммутаторе

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

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

Широковещательные сообщения отправляются на MAC-адрес назначения FF:FF:FF:FF:FF:FF.Если коммутатор получает сообщение, отправленное на этот MAC-адрес назначения, коммутатор узнает, что это широковещательная рассылка, и пересылает сообщение на все остальные подключенные порты.

Широковещательная переадресация в коммутаторе

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

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

Переключает одноадресную рассылку как вещает для неизвестных MAC-адресов

Но переключатель тоже умный. Как только второй компьютер ответит, коммутатор сможет прочитать исходный MAC-адрес в ответе и узнает, к какому порту подключен этот MAC-адрес.

Изучение MAC-адреса в коммутаторе

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

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

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

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

Устройства, которые работают в центре сети и соединяют ПК-отправитель с ПК-получателем, также используют эту информацию для интеллектуальной обработки каждого фрагмента. Каждая часть, называемая кадром, вместе с другой информацией содержит аппаратный адрес ПК-отправителя и получателя. Аппаратный адрес называется MAC-адресом.

Коммутатор работает в середине сети. Он соединяет несколько устройств. Он использует MAC-адреса отправителя и получателя для обработки кадра. Когда коммутатор получает кадр, он считывает исходный адрес этого кадра и сохраняет его в таблице, известной как таблица CAM. Этот процесс известен как адреса обучения.

Чтобы подробно понять процесс обучения, ознакомьтесь с этим руководством.
Как коммутатор узнает MAC-адрес

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

Процесс пересылки и фильтрации кадров

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

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

Чтобы узнать больше о том, как быстро коммутатор запускает процесс переадресации кадров, изучите это руководство.
Объяснение методов и типов переключения

Коммутаторы используют относительно простую концепцию пересылки кадра. Эта концепция заключается в следующем.

Найдите MAC-адрес получателя входящего кадра в таблице CAM и, если адрес доступен в таблице, перенаправьте кадр с порта, который связан с MAC-адресом получателя, в противном случае перенаправьте кадр со всех портов, кроме порта. на котором оно прибыло.

как коммутатор принимает решение о пересылке кадров

Давайте разберем этот процесс более подробно на примере.

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

 как переключить неизвестную одноадресную рассылку

Теперь предположим, что компьютер PC-B отвечает ПК-A своим фреймом. Коммутатор получает этот кадр на интерфейсе F1. На этот раз, взглянув на таблицу CAM, коммутатор знает, где находится ПК-А. Таким образом, вместо лавинной рассылки фрейма со всех портов, как это делалось ранее, на этот раз коммутатор пересылает этот фрейм только из порта (F0), который подключен к ПК-А. Как и ранее, он также сохраняет MAC-адрес ПК-B в таблице CAM.

как переключаться пересылает известные одноадресные кадры

Типы фреймов, которые всегда передаются через коммутатор

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

Switch обрабатывает эти кадры следующим образом.

Одноадресные кадры

Чтобы узнать, какой порт с каким адресом подключен, коммутатор использует таблицу CAM. Основываясь на записях таблицы CAM, индивидуальный адрес можно разделить на два типа; известный адрес индивидуальной рассылки и неизвестный адрес индивидуальной рассылки. Если адрес доступен в таблице CAM, это известный адрес индивидуальной рассылки, в противном случае это неизвестный адрес индивидуальной рассылки.

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

В приведенном выше примере: -

Когда компьютер PC-A отправил кадр на компьютер PC-B, адрес получателя кадра (2222.2222.2222) был неизвестен коммутатору. Итак, коммутатор залил этот кадр со всех портов, кроме порта (F0), на который он пришел.

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

Коммутатор рассылает одноадресный фрейм только в том случае, если адрес назначения фрейма коммутатору неизвестен.

Многоадресные и широковещательные кадры

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

Например, в сети 50 компьютеров, и один из них хочет отправить кадр на все компьютеры. У ПК здесь есть два варианта; либо создайте 49 (исключая себя) одноадресных кадров и отправьте по одному на каждый ПК, либо создайте широковещательный кадр и отправьте его всем. Поскольку второй вариант намного проще и быстрее, ПК всегда использует его.

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

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

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