Комментарии 82
ого! Круто!
Очень развернуто!
За одно только старание над статьей, большое спасибо!
Текст, картинки и подробный разбой!
Спасибо. Почитал. Все просто и подробно.
Это же не цикл статей, дубль СДСМ ?
А если мы подключим третий коммутатор и, с его помощью, соединим первый и второй?
По-сути, тогда должен записаться вход первый среди входящих. А если мы отключим устройство №1 от коммутатора №1 и подключим к коммутатору №3? Нужно как-то удалить данные об компьютере №1 и, когда он будет подключен к коммутатору №3, то записать информацию о нём, пусть он будет компьютер №1.1, тогда надо перезаписать его в таблице
Имеете в виду если к 2м коммутаторам подключены конечные устройства и один коммутатор промежуточный?
Нет, треугольником
Грубо говоря, когда есть несколько путей, по которым можно отправить пакет. Таких маршрутов, в которых путь между двумя узлами используется не более одного раза
В случае кольца работают дополнительные протоколы (STP, ERPS и т.п.), которые отключают часть портов, преобразуя кольцо в дерево. Или всё ложится из-за бродкастового шторма.
Немного удивила подача материала, как будто пропущена первая глава. Коммутатор - L2, маршрутизатор - L3, в первых же строчках. Но простите, если это материал для новичков - объясните что такое L2 и L3 в OSI и чем OSI отличается от TCP/IP, а уже потом объясняйте их взаимодействие с железками. А если это рассчитано на людей знакомых с сетевыми моделями, то наверное им уже не будет интересен этот материал.
В самом начале же есть гиперссылка
В предыдущих статьях я уже затрагивал эти темы, в данной статье не хотел еще раз повторяться. Старался дать на все темы ссылки.
Можете написать в каких именно местах есть вопросы ?
Для решения этой проблемы была введена абстракция в виде IP-адреса — универсального протокола, не привязанного к физическому носителю.
Эммм... а можно не согласиться? IP - не единственный, и уж тем более не первый, маршрутизируемый протокол. И если описанное было одной из целей создания, то уж точно не единственной.
Маршрутизаторы стали устройствами, способными связывать сети с разными технологиями передачи данных
Вы явно путаете маршрутизаторы и конверторы интерфейса. Простейшая точка доступа связывает проводную и беспроводную сети, где технологии уж точно разные - но она никак не маршрутизатор. Ну или конвертор оптики в медь...
Сеть — это соединение двух и более компьютеров, устройств или других компонентов для обмена информацией.
Вот скажите, если у меня ОДИН компьютер, на котором клиент с адреса 127.0.0.3 общается с сервером 127.0.0.2 - это что, не сеть?
Как только мы подключаем устройства к домашнему маршрутизатору, они становятся частью локальной сети.
А если мы подключаем домашние устройства к домашнему коммутатору - они что, не становятся частью локальной сети?
Насчёт одного компьютера: один IP-адрес присваивается одному компьютеру. То есть, если компьютер не подключен к сети (к порту не подключен кабель/к порту подключен кабель, который не подключен к другому устройству), то компьютер это обнаружит и поймет, что он не подключен ни к какой сети. Адреса 127.0.0.х — это, скорее всего, адреса локального хоста. В итоге работает программная эмуляция сети, не сеть между устройствами, а сеть между программами внутри устройства. Вообще, интересный вопрос, я задумался, поразмышляв на досуге. (Я не автор поста, если что)
Адреса 127.0.0.х — это, скорее всего, адреса локального хоста.
Так и есть, вы совершенно правы.
В итоге работает программная эмуляция сети, не сеть между устройствами, а сеть между программами внутри устройства.
Сеть - это необязательно между устройствами, сеть - она между узлами сети, даже если эти узлы есть два разных входа в один и тот же сетевой стек. Иначе получается парадокс - сервер есть, клиент есть, сетевой обмен есть, а сети нет.
Насчёт одного компьютера: один IP-адрес присваивается одному компьютеру.
Я бы сказал, что адрес - это именованная точка входа в сетевой стек. У одного экземпляра сетевого стека их может быть несколько. Да собственно их всегда несколько. Даже если есть один комп с одной сетевой картой и одним IP-адресом на ней, и мы не смотрим на адреса подсети локалхоста, всё равно у сетевого стека минимум две точки входа, связанные с сетевой картой, одна "именуется" по МАС-адресу, вторая по IP-адресу.
Сетевые устройства также являются узлами сети (см DTE и DCE). Сетевой адрес это всего лишь идентификатор устройства в сети, по которому его могут найти и к нему могут обращаться другие устройства. Терминов типа "входа в сетевой стек" не слышал ни разу за 20+ лет работы в телекоме.
Сетевой адрес это всего лишь идентификатор устройства в сети, по которому его могут найти и к нему могут обращаться другие устройства.
Это что есть адрес снаружи. Но что он есть с точки зрения самого устройства?
И описанный мной случай - формально устройство-то обращается само к себе, оба адреса - локалхост.
Терминов типа "входа в сетевой стек" не слышал ни разу за 20+ лет работы в телекоме.
Вы знаете термин, который определяет IP-адрес именно как именованный интерфейс с точки зрения самого узла, а не того, кто к нему обращается? Скажите его (или их), буду признателен. Или считаете, что такая формулировка неудачна? Сформулируйте лучше.
один IP-адрес присваивается одному компьютеру
Может ли, один и тот же глобально-маршрутизируемый IP-адрес быть присвоен нескольким компьютерам?
Это я расскажу в следующих статьях. При использовании NAT, один глобальный "Белый адрес" присваивает нескольким локальным компьютерам "Серий адрес"
Может. Публичные DNS сервера 1.1.1.1 от Cloudflare и 8.8.8.8 от Google это же не один сервер, это много серверов, просто из каждой подсети крупных провайдеров связи пакеты маршрутизируются на разные сервера.
Вот :) Ситуация когда в одном сегменте локальной сети встречаются два устройства с одинаковым IP-адресом - это аномалия, и это вызовет проблемы.
С другой стороны маршрутизация в интернете осуществляется с помощью протокола BGP, и он не запрещает анонсировать одни и те же подсети из разных мест. Это позволяет присваивать одни и те же ip-адреса разным компьютерам/серверам. И при обращении к серверу, трафик пойдет по «кратчайшему маршруту» (стоит помнить, он не является гарантировано оптимальным, но чаще это так). Этот трюк называют anycast, и его активно использует часть CDN-сервисов и сервисов обеспечивающих DDOS-защиту с целью распределения и оптимизации нагрузки. Ну и да, упомянутые вами DNS-сервера от Гугла и cf - это примеры anycast-сетей.
А NAT - это совсем про другое
Адреса 127.0.0.х
я б даже сказал 127.х.х.х (127.0.0.0/8)
Эммм... а можно не согласиться? IP - не единственный, и уж тем более не первый,
Я не говорил о том, что он единственный и первый протокол, просто стал универсальным.
Вы явно путаете маршрутизаторы и конверторы интерфейса.
Как раз маршрутизатор это и обеспечивает. Примеры - WiFi, где маршрутизируется беспроводная и проводная технология. А также различные технологии передачи данных, включая DSL (цифровая абонентская линия).
Вот скажите, если у меня ОДИН компьютер, на котором клиент с адреса 127.0.0.3 общается с сервером 127.0.0.2 - это что, не сеть?
Это все еще 2 устройства. Сервер и клиент. Сеть — это соединение ДВУХ и более компьютеров, УСТРОЙСТВ или других компонентов для обмена информацией.
Приведу пример гипервизора. Когда мы создаем несколько виртуальных машин на одном физическом устройстве и пробрасываем их между собой, то это 2 и более устройств, просто виртуальных.
А если мы подключаем домашние устройства к домашнему коммутатору - они что, не становятся частью локальной сети?
Отвечая на Ваш вопрос, да становится.
Как раз маршрутизатор это и обеспечивает. Примеры - WiFi, где маршрутизируется беспроводная и проводная технология.
Это когда точка доступа работает в режиме роутера (маршрутизатора, обычного или NAT). А когда она работает в режиме прозрачного моста между WiFi и кабелем? Никакой маршрутизации нет и в помине.
Но ещё показательнее конвертор оптика-медь. Это вообще пассивное устройство, просто тупо передаёт пакеты с преобразованием среды передачи... у него даже интерфейса нет, ни МАС, ни тем более IP-адреса нет, в отличие от вышеупомянутой точки доступа, так что никакой маршрутизации нет и быть не может даже теоретически. А различие технологии передачи данных видно невооружённым глазом.
вы не правы, это как раз очень хорошо, что автор четко сформулировал разницу между маршрутизаторами и коммутаторами L3. Коммутаторы ничего не умеют кроме ethernet, а маршрутизаторы могут работать с различными интерфейсами/протоколами, вроде serial, E1/T1 и т.п.
вы не правы, это как раз очень хорошо, что автор четко сформулировал разницу между маршрутизаторами и коммутаторами L3
??? Я как-то вот вообще не увидел в своём посте хоть что-то насчёт того, о чём вы говорите. Вы точно на мой пост отвечаете?
Коммутаторы ничего не умеют кроме ethernet, а маршрутизаторы
Вот если бы автор сказал, что коммутатор L3 - это коммутатор L2, к которому дополнительно прикручен донельзя кастрированный маршрутизатор (и сервер интерфейса, telnet/web/etc.), который только и может, что ... и далее по тексту, было бы вообще шоколадно. То есть cделал упор на функциональную схему, а не на её реализацию в конкретном железе, где и правда это разделение достаточно виртуально. Но автор решил как решил - хотя, с учётом того, что начинающие как раз пляшут от аппаратуры, может, он и прав.
сам коммутатор имеет свой IP/MAC адрес? он как-то используется при коммутации?
Сам коммутатор - нет, не имеет. А вот его интерфейс управления (если это управляемый коммутатор) - да, имеет. Но интерфейс управления - это, считай, подключенный к коммутатору компьютер, только компьютер специализированный и подключенный через отдельный интерфейс.
Сам коммутатор в приведенных примерах не имеет своего IP-адреса, но MAC-адрес он имеет, просто при передачи трафика не меняет ни src ни dsя Mac-address в пакете и как бы прозрачен в сети. А вот хабы как раз не имеют MAC-адресов.
Очень полезная статья. Освежил память со времён университета.
Как то думал про такую идею. Со своего компа Вова отправляет Мaше по почте "Hello" и смотрит через net-VR-шлем на провод и видит свое сообщение в разрезе всех протоколов. Начать можно просто с визуализации сообщения на разных уровнях. А потом в привязке к шлему - назвать это "Цифровым двойником сети", который при наведении на конкретный кабель показывает передаваемые по нему сообщения (фильтром можно оставить только прикладного уровня и только интересующего приложения).
Т.е. сетевой сканер (sniffers), но для виртуального обозрения передаваемых по сети (конкретному проводу) данных с упрощением, т.е. часть служебной информации скрывать (настраиваемым фильтром), а для какой-то части давать подсказку, чтобы для обычного юзера было адаптировано (не Wireshark -ом же его пугать). Может есть уже такие?
Я правильно понимаю, что потерянный первый ICMP-пакет (что-то с превышением времени ожидания) — это нормально для ситуаций, когда мы пингуем устройство, которое нас ещё не знает?
Почему сообщение тогда так сформулировано, а не, скажем, «вы нам незнакомы»?
И почему сторонние сервера (типа Гугла) пингуются с первой попытки? Это потому, что в качестве MAC-адреса выступает мой провайдер или кто-нибудь, кого Гугл уже видел и содержит информацию в ARP-таблице?
Я понимаю, что вы не автор статьи, но быть может знаете ответ. Спасибо заранее.
что в качестве MAC-адреса выступает мой
... маршрутизатор
ICMP пингует по IP. И вашей станции не нужен МАС конечного, пингуемого, устройства. Вам нужен только МАС следующего по маршруту узла - т.е. обычно вашего дефолтного шлюза, который почти наверняка вам известен. То же будет и со следующим узлом (ближайшим коммутатором или маршрутизатором), и с последующим... то есть ситуация, когда нужно выяснять, на каком порте находится МАС назначения, крайне редкая. Грубо говоря, она возникает один раз при включении устройства, и больше не возникнет до его выключения/перезагрузки.
Тут приведены примеры простой сети, в которой никто ничего не знает, поэтому для формирования ICMP всегда нужен ARP запрос. Далее в следующих статьях я обязательно опишу как подобное происходит в глобальных сетях. Если коротко, то в сети всегда присутствует DNS сервер, который в своей памяти хранит данные о "белом адресе" Гугла и при "пинге" мы сначала обращаемся к DNS серверу "узнать" его IP-адрес. ARP обмен происходит только между нами и шлюзом по умолчанию, а дальше работает маршрутизация, но это в следующих статьях)
Понятно, то есть даже если бы у моего компьютера была бы пустая ARP-таблица, а Гугл я бы пинговал по IP-адресу, то я бы отправил широковещательный запрос к своему роутеру (он у меня будет ближайшим шлюзом) и тот уже сам разберётся как доставить мой запрос наружу?
Тогда мне не совсем понятно, можно ли получить ошибку с вашей картинки в домашних условиях с ОДНИМ компьютером и роутером? Мне любопытна эта ситуация лишь потому, что подобного рода ошибки я не припомню у себя (как бы, первый "пинг" провалился, но остальные работают хорошо). Ping либо он есть, либо его нет.
Извините, если мой вопрос показался вам глупым. Спасибо за ваш ответ :)
В домашних условиях такую ошибку получить затруднительно) роутер обычно выступает в роле Nat и присваивает сам ip адрес устройствам и является шлюзом по умолчанию. А роутер дальше маршрутизирует пакет в интернет
и тот уже сам разберётся как доставить мой запрос наружу
Именно так! Каждый узел (что станция, что любой промежуточный маршрутизатор) принимает решение об отправке пакета, во-первых, самостоятельно, во-вторых, совершенно независимо. Да, он ориентируется на информацию, которую он получил/накопил ранее, но на информацию, хранимую именно у себя.
Вот роутер получил пакет. Там указано, что его надо доставить в некий IP-адрес. Роутер посмотрит в своей таблице маршрутизации, на какой (соседний) следующий узел надо переслать пакет, и именно туда и пошлёт. Если конечный адрес - в подсети своего интерфейса, то он достижим напрямую, и пакет отправляем сразу ему. Если есть частный маршрут в подсеть узла назначения - на его шлюз (на самом деле если узел в своей подсети, то есть и соотв. частный маршрут, то есть эта и предыдущая ситуация - считай одно и то же), нету - на дефолтный, если вдруг нет дефолтного - отправит обратно Destination Unreacheable. А МАС соответствующих узлов у роутера стопудово уже имеются, так что проблем с пересылкой у него не должно быть.
Понятнейшая статья и комменты, проясняющие суть! Жалко, её не было пару месяцев назад, когда я писал курсовую.
Однака, всплокнулось за последние 20 лет, что вы к гуглу прикопались с пингом, если в роутере прописаны шлюзы и днс сервера провайдера, комп отправляет запрос через шлюз, а дальше, сами догадаетесь
Очень интересная статья. Спасибо. Иногда коммутаторы отбрасывают фреймы с неизвестным MAC адресом. Это поведение разрешено в 802.1Q и настраивается в таблицах коммутатора.
Спасибо за статью.
Короче:
1) Хаб - это многоканальная релюшка
2) Свитч - это адресно-управляемая многоканальная релюшка
3) Роутер - это свитч с мини-компутером, реализующим всякие умные протоколы управления адресами релюшек
Статья хорошенький.
НО:
- хабы забыли (были такие, уже не продается)
- коммутаторы L3 (там есть тонкие отличия с маршрутизаторами)
Но, в принципе, не важно.
Оооо! Самый простой хаб - провод соединяющий два ПК) реализует канальное соединение.передает информацию от всех отправителей всем получателям.
В картинках где один коммутатор ошибка. Почему то таблицы мак адресов с разными виланами. А вот когда коммутатора два уже все правильно, вилан один.
Статья очень понравилась. Доступно, на неясные термины есть гиперссылки. У меня не было большого опыта с сетями, пару раз копался в настройках коммутатора (соединял IP камеры), в остальном только роутер в рамках настройки домашней сети. Статья как раз для моего уровня.
Почему-то не упоминаются L2+ коммутаторы, а в энтерпрайзе таких большинство. У них, как правило, есть маршрутизация между VLAN по фиксированным маршрутам, и есть свои нюансы. Так как задача маршрутизации пакетов для ASIC достаточно ресурсоемка, то могут быть ограничения.
Например, HP Procurve 2610 имеет не более16 таких маршрутов, более производительный 2910 уже не имеет такого ограничения. Это всё древние как кости динозавра коммутаторы, но они вполне себе рабочие и используются до сих пор.
Важная технология для коммутаторов - MLAG (multi-chassis link aggregation group). К сожалению вендоро-зависимая (не совместимая между собой, хотя и строится на едином RFC), зато позволяет объединять коммутаторы, так что они со стороны других устройств (в том числе серверов), выглядят как единый коммутатор на который отдаётся трафик по LACP (802.3ad). Иногда MLAG есть даже на коммутаторах доступа - очень удобно и увеличивает надёжность сети.
Эх, год был сетевым инженером, сейчас перебрался на data engineering. Очень интересно было читать
Спасибо за статью, я начинающий вкатун в сети, штурмую CCNA/JEREMY IT LABS и прочее.
Прочел статью - освежил базу в памяти, удобно и интересно)
В начале и в конце статьи пишете про коммутаторы и маршрутизаторы. Но в середине статьи есть еще и про хабы, стоило бы сразу писать про все три класса устройств, описание их хорошо показывает уровни работы каждого "раскладывает сеть по полочкам".
Есть некоторые неточности, вроде того что маршрутизатор не умеет VLAN, не совсем ясно что имеется в виду, но вообще они обычно умеют dot1.q.
Может замените тут на Multilayer :)
Multiplayer switch
Очень полезная статья! Спасибо!
Спасибо, статья очень понравилось!
Но остались вопросы и их даже добавилось после прочтения коментариев:
К чему относятся конверторы из одной среды в другую (оптика-медь, медь-WiFi и т.д.)? Или они представляют собой особый класс устройств "медиаконверторы"?
Что произойдет если у двух устройств окажется одинаковый МАС адрес? Вроде как именитым производителям выделяют диапазоны МАС адресов и внутри этих диапазонов они сами должны отслеживать их уникальность. Но мне рассказывал админ с автозавода (дело было в начале 200х и вполне допускаю, что в те времена еще вполне применяли хабы совместно с коммутаторами) как у них в сети оказалось несколько сетевых карт (по всей видимости китайский ноунейм) с одинаковыми МАС адресами, что добавило им много веселья. На каком сетевом уровне находится МАС адрес, если имеется возможность програмно его поменять? Да и как в принципе работает подмена МАС адреса? Если честно, то всегда думал, что он зашит на аппаратном уровне.
По аналогии с п.2 - Что произойдет если у двух устройств окажется одинаковый IP адрес?
Вопрос уже озвучивали раньше, но не нашел на него ответа - как отработает ARP протокол и будут меняться таблицы МАС адресов в случае с 3 коммутаторами, когда ПК отключат от первого коммутатора и подключат к третьему и к этому ПК пойдет запрос?
Как обстоят дела с емкостью таблиц коммутаторов. Это из за ее ограниченной емкости существует "правило 5 коммутаторов, если мне память не изменяет" гласящее, что между двумя ПК в одной сети не должно быть более 5 коммутаторов? Или это пережиток со времен хабов или еще какое нибудь ограничение связанное, например с кольцевыми топологиями? Но в любом случае размер таблицы должен накладывать некоторые ограничения? Стекируемые коммутаторы используются как раз для обхода этих ограничений?
В случае образования кольца как образуется бродкастовый шторм? Или об этом будет в следующей части?
Ну я ж про них вроде говорил. Медиаконвертор - это прозрачное пассивное устройство в сети, которое вообще никак не обнаруживает себя прямо. IP нет, МАС нет,
населена роботами... Только по косвенным признакам - несовпадению сред передачи в начале и конце трассы, ну и (при очень точном измерении) по появлению дополнительной ничем не оправданной задержки. То же и репитер - но там ещё и среда передачи не меняется.Дублирование МАС приведёт к тому, что фреймы будут отправляться на устройство, появившееся в сети последним. Но предпоследнее, обиженное невниманием, тут же себя переанонсирует и станет последним... в общем, половина фреймов пойдёт не тому, кому надо, и оба устройства не смогут общаться. Как к обнаруженному дублированию отнесётся конкретное промежуточное оборудование, зависит от конкретной модели. Может быть всё - начиная от игнорирования проблемы и безусловной пересылки (я тупая железка, разбирайтесь сами) и заканчивая полным дропом фреймов от/для проблемного МАС. В оборудовании МАС может быть зашит насмерть и/или в NVRAM, а также может изменяться программно драйвером (в promiscuous mode можно во фрейме вообще нарисовать что угодно).
Ну почти то же, что и по пункту 2. Вроде как стандарт говорит, что "последний - работает, первый - переходит на DHCP либо вообще отключается", но тут всё определяется управляющим софтом.
Отключение от первого по факту port down удалит (ну или во всяком случае должен удалить) из таблицы все соответствующие этому порту МАС. И это быстро расползётся по соседям. И при подключении к 3 коммутатору всё пойдёт как с нуля.
Размер таблицы МАС-адресов обычно описан документацией и, как правило, ограничен аппаратно (что не исключает и дополнительных программных ограничений). А "правило 5 коммутаторов" - это я не знаю откуда вы выкопали. Есть правило 5-4-3, но оно для хабов.
Бродкаст не имеет конкретного МАС назначения, а потому шлётся на все порты. Если имеется кольцо, то он будет бегать по нему до посинения - ведь дропнуть-то его некому. И да, с этим борются разные spanning tree протоколы (STP, ERPS и т.п., слегка упоминалось выше), автор их пока не рассматривал.
На каком сетевом уровне находится МАС адрес, если имеется возможность програмно его поменять
Все там же, L2
Да и как в принципе работает подмена МАС адреса? Если честно, то всегда думал, что он зашит на аппаратном уровне.
Ага, только целую вечность этим занимается не вендор чипа сетевушки (за редким исключением, смотри intel) а производители сетевых карт. Им отгружают чипы с чистыми однократно-программируемыми фьюзами, а те уже зашивают нужное. Или не зашивают. При этом фьюзов больше, и порой через сервисный софт это аппаратно-зашитый адрес можно дома изменить, или просто первый раз прошить если это не сделал производитель сетевой карты.
Второй вариант, его можно хранить в nvram и устанавливать его при инициализации сетевушки, это будет делать какой-нибудь uboot при загрузке одноплатника/пк/самой сетевушки, и собрав uboot с другими значениями - его можно изменить таким путём. И так тоже поступают многие. Можно сказать это между аппаратной и программной реализацией.
Теперь про другую сущность, адрес можно указать и программно, в операционной системе. Тут про механизмы я не подскажу. Но в целом, ничего не мешать болтаться пачке виртуальных сетевушек с собственными MAC на одном физическом интерфейсе (сделаю оговорку, в сетях ethernet. В случае wifi это не работает)
По аналогии с п.2 - Что произойдет если у двух устройств окажется одинаковый IP адрес?
В одном сегменте локальной сети - это аномалия ведущая к проблемам. Мне сложно описать спектр возможных воздействий.
В сети интернет, это возможно. Протокол BGP не запрещает анонсировать один и тот же IP-адрес из нескольких мест сразу. В этом случае трафик будет направлен к «ближайшему» к тебе серверу (условно, какой маршрут будет сочтен вышестоящими провайдерами более оптимальным). Этот трюк называется anycast и активно используется крупными CDN-провайдерами. Из этого вытекает другая проблема, сам BGP разрабатывался давно, и возможны ситуации когда кто-то анонсирует чужую подсеть без разрешения чем ломает кусок интернета. И даже после того как косячник (или злодей) прекратит хайджекать чужие сети - интернет восстановится не сразу, понадобится время на перестроение маршрутов
Хотел бы я сказать "чего-то не хватает...", но понятно чего. В 2025 году следует IPv6 писать наравне с v4, а то вы даже один раз упомянули, а ничего не написали. В последующих статьях тоже хочется больше про NDP, SLAAC, etc... И так же сравнить основные преимущества, какие баги исправлены итд.
Сложно о простом. Как работает интернет. Часть 1. Что такое коммутатор, маршрутизатор и примеры работы простых сетей