Когда гигабитный сетевой адаптер получает данные, как он получает биты? Видит ли это все в одном потоке 0 и 1? Или есть несколько потоков 0 и 1, поступающих одновременно?
Например ... скажем, есть два отправляющих устройства и одно принимающее устройство.
Устройства 1 и 2 начинают отправку сетевых данных на устройство 3 одновременно.
Я предполагаю, что с точки зрения сетевого адаптера устройства 3 все 0 и 1 встречаются в одном потоке данных. Он может выяснить, какие данные поступают с устройства 1 или 2, но данные по-прежнему представляют собой один поток из миллионов / миллиардов битов.
Я совершенно не прав? :)
ethernet
layer1
networking
shihku7
источник
источник
Ответы:
Это зависит.
Хотя многие Ethernet PHY передают данные чисто последовательным способом (например, 100BASE-TX, 1000BASE-SX, 10GBASE-SR), некоторые разделяют поток данных на несколько линий, которые передаются параллельно.
Чаще всего 1000BASE-T - распространенный вариант гигабит-над-медью - разбивает кодированный поток данных на четыре полосы и передает каждую отдельно по одной из четырех витых пар в кабеле Cat-5. Все варианты витой пары от гигабита и выше используют эти четыре полосы.
В некоторых высокоскоростных (10G +) PHY-волокнах также используются несколько линий на шестнадцать волокон (с многомодовым волокном и коротким диапазоном) или длины волн (с одномодовым волокном и большим диапазоном).
Однако все передается в кадрах , каждый из которых запускается из одного источника в один пункт назначения. Рамки, как правило, атомарные, т.е. они всегда передаются одним куском. Каждый кадр транспортирует данные только из одного конкретного соединения / приложения. Его заголовок содержит адреса источника и назначения, поэтому он может найти свой путь по сети.
Когда сеть получает два кадра из разных источников для одного и того же порта назначения одновременно, один из кадров должен быть поставлен в очередь до тех пор, пока порт коммутатора в направлении пункта назначения не завершит передачу первого кадра.
Это предполагает, что источники и пункт назначения работают с одинаковой скоростью, что не обязательно соответствует действительности. Вы можете иметь файловый сервер, соединенный ссылкой 1 Гбит / с, и десять клиентов, каждый из которых отправляет полную скорость по своим каналам 100 Мбит / с без (значительных) очередей. Это несколько приближается к вашему предложению о «нескольких потоках», только то, что эти потоки чередуются на уровне кадра, а не на уровне битов.
Скорость сетевого порта может составлять тысячи или даже миллионы кадров в одну секунду, поэтому с человеческой точки зрения невозможно различить несколько потоков - все кажется «одновременным».
источник
Давайте пока проигнорируем гигабитную часть и немного сосредоточимся на вашей части «2 устройства отправляют одновременно».
На общих носителях это действительно может произойти и стать проблемой. Большинство беспроводных передач являются общими носителями, и Ethernet когда-то были:
Теперь, если два устройства отправляют одновременно, могут произойти две вещи:
Вы используете некоторую форму мультиплексирования (временное разделение, частотное разделение ...), которая позволяет разделять «каналы», чтобы можно было слушать определенный канал и не беспокоить других. Это часто используется для беспроводных передач, намного меньше для проводных передач (WDM / DWDM на волокнах является одним исключением).
или если два или более устройства отправляют одновременно по одному и тому же каналу, вы получаете то, что называется коллизией : например, когда два человека говорят одновременно, вы не можете понять, что либо говорит, приемные устройства не являются возможность декодировать данные, отправленные любым из устройств (или чаще они могут его декодировать, но это не имеет смысла и не пройдет проверки CRC).
Вот где появились схемы типа CSMA-CD (множественный доступ с обнаружением несущей, обнаружение столкновений):
Это было довольно забавно, и в слабо загруженных сетях это работало довольно хорошо, но как только трафик становился значительным, вы в конечном итоге сталкивались с множеством коллизий, что, в свою очередь, увеличивало использование общих медиа, что, в свою очередь, приводило к увеличению коллизий, так что это может стать довольно плохо.
Ответом на это было переключение на полнодуплексные коммутируемые сети . Концентраторы просто повторили сигнал, не задумываясь. С другой стороны, коммутаторы действительно получают кадр, а затем повторно отправляют его по ссылке назначения (дополнительный бонус: кадр отправляется не всем, в большинстве случаев только адресату).
Если два устройства отправляют на одно и то же устройство-получатель, коммутатор ставит в очередь один из кадров, поэтому два кадра, отправленные одновременно, фактически приходят один за другим в пункт назначения.
Кроме того, на физическом уровне вполне возможно, что обмен данными происходит по нескольким парам или даже по нескольким кабелям параллельно. Будет ли это сделано на уровне битов или на каждой паре / кабеле будут передаваться целые кадры, зависит от конкретной используемой технологии. Но я думаю, что это был не твой вопрос.
источник
Этот частный случай сложный.
Что касается 1000baseT.
Во-первых: когда мы в общем говорим, что два устройства осуществляют передачу одновременно, они обычно не отправляют биты в один и тот же момент на одном носителе. Если они это делают, происходит коллизия, и все устройства прослушивания решают эту проблему (в конце концов, с помощью различных схем обнаружения коллизий). Таким образом, два передающих устройства получат доступ к среде в несколько разные моменты времени. Но в 1000baseT есть только два устройства на данном наборе пар; обычно одно устройство является коммутатором, а другое - хостом.
Во-вторых, 1000baseT одновременно передает два бита данных в паре, которые кодируются сложным образом с пятью уровнями напряжения. Так что это серия цифр из 4-х базовых цифр, а не серия цифр из 2-х базовых.
В-третьих, 1000baseT может передавать в обоих направлениях одновременно в одной и той же паре. Он может отделить исходящий сигнал от входящего по схеме, называемой гибридом.
Гигабитный Ethernet на других носителях ведет себя по-разному. Более медленные скорости, например, 10baseT и 100baseT, имеют более простые схемы. 10baseT через концентратор действительно имеет реальные столкновения; через коммутаторы обычно он организован коммутатором, так что исходящие кадры ставятся в очередь; если это полный дуплекс, нет никаких столкновений вообще.
источник
Предполагая все проводные ссылки Ethernet здесь.
Когда два устройства в одном сегменте сети отправляют одновременно, независимо от того, кому они отправляются, это называется коллизией . Ни одно сообщение не проходит, когда происходит столкновение. К счастью, отправители имеют возможность обнаруживать столкновения. Когда это происходит, каждый отправитель выбирает случайное количество времени (небольшие доли секунды), чтобы подождать и повторить попытку, и повторять процесс до тех пор, пока в итоге не станет активным только один отправитель.
Но это больше никогда не случится.
Вместо этого сегодня большинство проводных подключений осуществляется по коммутируемым сетям , где каждое устройство (и отправитель, и получатель) подключено к собственному отдельному порту на коммутаторе. Данные делятся на пакеты (на самом деле: кадры ), и коммутатор будет гарантировать, что только один пакет активен на каждом порту за раз. Если ссылка занята, коммутатор будет сохранять и пересылать другие кадры получателю, когда ссылка снова станет доступной.
При такой схеме единственный способ иметь коллизии - это когда к коммутатору подключено более одного устройства или друг к другу через некоммутируемый концентратор (порты на некоторых моделях домашнего Wi-Fi-маршрутизатора все еще не подключены) или когда связь между коммутатором и устройством работает в полудуплексном режиме .
Вместо этого мы имеем дело с заторами . У нас может не быть коллизий, но популярный хост в сети может иметь устройства, желающие отправить больше данных и пакетов, чем будет поддерживать канал, так что буфер заполнится. Но это совсем другая проблема.
источник
Я думаю, что вам нужно получить некоторое общее представление о том, как работает Ethernet. Например, отправляющий хост отправит преамбулу чередующихся единиц и нулей, чтобы привлечь внимание принимающего хоста. Когда принимающий хост видит два подряд, он знает, что следующий кадр. После того как кадр передан, на линии должно быть 96 секунд, прежде чем будет отправлен другой кадр.
Различные стандарты Ethernet будут использовать разные кодировки. Например, 100Base-T использует 4B5B, который отправляет пять битов на каждые четыре бита данных.
источник
(Для этого вопроса я предполагаю, что общая сеть Hub.)
Да. Независимо от реализации PHY, это один входной поток. Связь от нескольких устройств не может успешно прийти к одному NIC (MAC-адресу) одновременно.
«единственный поток» - да, но в вашем примере двух устройств, отправляющих одновременно, поток данных, поступающих для дальнейшей обработки, не будет; «кадры» из 1 и 0 будут сталкиваться.
Не это не может. Когда сигналы объединяются, обнаруживается коллизия, и кадр отбрасывается.
Название вашего вопроса - правильное утверждение, но ваше обсуждение в вашем посте Q намекает на то, что ваше понимание и гипотеза неверны.
Дальше
источник