Чи адаптери мережі читають вхідні біти в одному потоці?


9

Коли гігабітний мережевий адаптер приймає дані, як він приймає біти? Це бачити все в одному потоці 0 і 1? Або якимось чином одночасно надходять декілька потоків "0" та "1"?

Наприклад ... скажімо, є два пристрої відправлення та один прийом пристроїв.

Пристрої 1 і 2 починають одночасно надсилати мережеві дані на Пристрій 3.

Моє припущення, що з точки зору мережевого адаптера пристрою 3, всі 0 і 1 зустрічаються в одному потоці даних. Він може з’ясувати, які дані з пристрою 1 або 2, але це все одно лише один потік мільйонів / мільярдів біт.

Я абсолютно помиляюся? :)


1
Ви маєте на увазі напівдуплексне з'єднання або використання повного дуплексу? Ніколи не було жодних напівдуплексних пристроїв для 1000Base-T, хоча це все ще є в тому стандарті. При повнодуплексному з'єднанні по каналу не буде кадрів з двох пристроїв, які одночасно змагаються за третій пристрій.
Рон Моупін

повний дуплекс. Добре, тож, все одно залишиться один потік 0 і 1 (наприклад: 01010101010001010010101001010100100101011010) і з точки зору пристрою 3 (приймач), тоді як пристрої 1 і 2 можуть по черзі перетворювати цей потік, вони ніколи б не обидва надсилати 0 і 1 в той самий час, правда?
shihku7

Чи допомогла вам якась відповідь? Якщо так, то слід прийняти відповідь, щоб питання не з’являлося вічно, шукаючи відповідь. Крім того, ви можете надати і прийняти власну відповідь.
Рон Моупін

Відповіді:


14

Це залежить.

Хоча багато Ethernet PHY передають дані чисто послідовно (наприклад, 100BASE-TX, 1000BASE-SX, 10GBASE-SR), деякі розбивають потік даних на кілька смуг, які передаються паралельно.

Найчастіше, 1000BASE-T - поширений варіант гігабіту над міддю - розбиває кодований потік даних на чотири смуги і передає кожну окремо по одній із чотирьох скручених пар кабелем Cat-5. Усі варіанти крученої пари від гігабітного вгору використовують ці чотири смуги.

Деякі високошвидкісні (10G +) волокна PHY також використовують декілька смуг із довжиною до шістнадцяти волокон (з багатомодовим волокном та короткою дальністю) або довжиною хвилі (з одномодовим волокном та великим діапазоном).

Однак все передається у кадрах, які проходять від одного джерела до одного пункту призначення. Рами, як правило, атомні, тобто. вони завжди передаються одним цілим твором. Кожен кадр транспортує дані лише з одного конкретного з'єднання / програми. Її заголовок містить адреси джерела та місця призначення, тому він може знайти свій шлях по мережі.

Коли мережа отримує два кадри з різних джерел для одного і того ж порту призначення одночасно, один з кадрів повинен бути в черзі, поки порт комутатора до пункту призначення не закінчить передавати перший кадр.

Це передбачає, що джерела та пункт призначення працюють з однаковою швидкістю, що не обов'язково відповідає дійсності. У вас може бути файловий сервер, з'єднаний посиланням 1 Гбіт / с, і десять клієнтів, кожен з яких відправляє повну швидкість по своїх 100 Мбіт / с посиланнями (без значної) черги. Це дещо наближається до вашої пропозиції "кількох потоків", лише те, що ці потоки переплетені на рівні кадру, а не на рівні бітів.

Швидкість на мережевий порт може становити тисячі або навіть мільйони кадрів за одну секунду, тому з точки зору людини неможливо диференціювати кілька потоків - все здається "одночасним".


Будь ласка, зберіться з іншим відповідачем @jonathanjo і з’ясуйте, який опис 1000Base-T є правильним.
davidbak

1
"той самий носій" jonathanjo описує багатопортовий зіткнення домену, який (практично) не існує з Gigabit Ethernet, а також застарілий для 10/100 Мбіт.
Zac67

2
@davidbak мені здається, що тут все правильно - Зак, як правило, є! - просто різний наголос. Я зафіксував декілька речей у своїй відповіді, зокрема уточнення зіткнень не відбувається в практичному 1000baseT.
jonathanjo

2
До цього вам також потрібно додати PAM16 та подібні кодування, які змушують в основному отримати декілька біт.
ПлазмаHH

1
@PlasmaHH 1000BASE-T вже використовує чотири смуги та PAM5, тож у кожному тактовому такті є приблизно 9,3 необроблених бітів (і, звичайно, 8 біт "користувача" при 125 Мбіт для L1).
Zac67

13

Давайте поки проігноруємо Gigabit-частину та трохи зосередимось на вашій частині "2 пристрої надсилають одночасно" частину.

У спільних ЗМІ це насправді може статися і бути проблемою. Більшість бездротових передач - це загальнодоступні засоби масової інформації, а Ethernet тоді ще був:

  • 10base2 (коаксіальний) використовував те, що було більш-менш одним кабелем з кожним на ньому. Очевидно, що дві (або більше) станцій змогли передавати одночасно;
  • 10baseT і 100baseT (на основі крученої пари), з концентраторами (а не комутаторами) також означали, що дві (або більше) станції можуть передавати одночасно, оскільки сигнал, отриманий від будь-якого підключеного пристрою, просто повторювався всім іншим.

Тепер, якщо два пристрої надсилають одночасно, можуть статися дві речі:

  • ви використовуєте певну форму мультиплексування (поділ часу, поділ частоти ...), яка дозволяє окремі "канали", щоб можна було слухати певний канал і не турбувати інших. Це використовується дуже багато для бездротових передач, набагато менше для дротових передач (WDM / DWDM на волокнах є одним винятком).

  • або якщо два або більше пристроїв надсилають одночасно по одному каналу, ви отримуєте те, що називається зіткненням : наприклад, коли двоє людей говорять одночасно, ви не можете зрозуміти, що говорить, або приймаючі пристрої не в змозі розшифрувати дані, надіслані будь-яким із пристроїв (або частіше, вони можуть їх декодувати, але це не має сенсу і не буде проходити перевірки CRC).

Сюди потрапляли такі схеми, як CSMA-CD (Carple-Sense Multiple Access, Collision Detection):

  • Перш ніж спробувати передати, пристрій перевірить, чи надсилає хтось інший (сенс оператора)
  • Якщо канал вільний, він починає передавати.
  • Але навіть при цьому два пристрої можуть запуститися точно в один і той же час, тому ви все одно можете зіткнутися.
  • Щоб не витрачати занадто багато часу на канал, пристрої виявлятимуть зіткнення (порівнюючи те, що вони надсилають із отриманим: якщо це не відповідає, то це означає, що хтось інший надсилає одночасно), скасовує передачу, та повторіть спробу після випадкової затримки (щоб уникнути нового зіткнення).

Це було досить весело, і в слабо завантажених мережах він працював досить добре, але як тільки трафік набув значного значення, ви закінчитеся тоннами зіткнень, що, в свою чергу, збільшує використання спільного носія, що в свою чергу призводить до більшої кількості зіткнень, так що це може стати дуже поганим.

Відповіддю на це було перехід на повнодуплексні комутовані мережі . Хаби просто повторювали сигнал, не замислюючись. Перемикачі з іншого боку дійсно отримують кадр, а потім повторно надсилають його за цільовим посиланням (додатковий бонус: кадр відправляється не всім, просто до місця призначення в більшості випадків).

Якщо два пристрої надсилають одному і тому ж пристрою призначення, то комутатор виведе в чергу один з кадрів, тож два кадри, які були надіслані одночасно, фактично надходять один за одним у пункт призначення.

Крім того, на фізичному рівні цілком можливі дані обмінюються паралельно декількома парами або навіть декількома кабелями. Чи буде це зроблено на рівні бітів або цілі кадри надсилаються на кожну пару / кабель, залежить від точної технології, що використовується. Але я думаю, це насправді не було вашим питанням.


1
Це відмінний момент - мабуть, найбільш відповідна відповідь на питання. Я можу додати, що коли ви досягаєте дійсно високих швидкостей (волокон), вони, як правило, обмежені одним відправником та одним приймачем на лінії, щоб уникнути зіткнень. Якщо потрібно додати інший вхід, він приймається на іншому каналі та поєднується з вхідним потоком, а потім надсилається у вихідний потік. У наші дні навіть мережева мережа має тенденцію до "комутації", що дозволяє уникнути зіткнень - головне місце, коли ви бачите зіткнення (2 пристрої, що розмовляють з одним, як у питанні), це wifi - більшість всього іншого - 1 відправник до 1 приймача
Білл К

12

Цей конкретний випадок є складним.

Щодо 1000baseT.

По-перше: коли ми говоримо взагалі про те, що два пристрої передають одночасно, вони зазвичай фактично не надсилають біти в один і той же момент на одному носії. Якщо вони роблять це, відбувається зіткнення, і всі пристрої прослуховування спрацьовують це (зрештою, за допомогою різних схем виявлення зіткнень.) Отже, два передавальні пристрої отримають доступ до середовища в трохи інші моменти. Але в 1000baseT є лише два пристрої на заданому наборі пар; зазвичай один пристрій є комутатором, а інший - хостом.

По-друге, 1000baseT передає одночасно два біти даних на пару, кодовані комплексно на п'яти рівнях напруги. Отже, це серія базових 4 цифр на дроті, а не серія базових 2 цифр.

По-третє, 1000baseT може передавати в обох напрямках одночасно, по одній і тій же парі. Він може відокремити вихідний сигнал від вхідного сигналу ланцюгом, який називається гібридом.

Гігабітна Ethernet над іншими носіями поводиться по-різному. Повільні швидкості, наприклад, 10baseT і 100baseT, мають більш прості схеми. 10baseT над концентратором насправді має фактичні зіткнення; над перемикачами, як правило, організовано комутатором, так що вихідні кадри стоять у черзі; якщо це повний дуплекс, то зіткнень взагалі немає.


Будь ласка, знайдіть разом з іншим відповідачем @ Zac67 і з’ясуйте, який опис 1000Base-T правильний.
davidbak

@jonathanjo Ви маєте рацію щодо трибітних символів, але лише п'ять рівнів PAM. Приблизно, це 8-бітний до чотирьох 3-бітових символів плюс кодування скремблювання, де 3-бітні символи відображаються (зміщуються) на рівні PAM.
Zac67

Дякую @davidbak за те, що взяв його. Я спростив опис, щоб охопити основний пункт (складний і не двійковий) і позбутися помилки. Дякую Заку за уточнення.
jonathanjo

7

Припускаючи, що тут є всі провідні посилання Ethernet.

Коли два пристрої в одному сегменті мережі надсилають одночасно, незалежно від того, кому вони надсилають, це називається зіткненням . Жодне повідомлення не отримує, коли відбувається зіткнення. На щастя, відправники мають можливість виявляти зіткнення. Коли це трапляється, кожен відправник кожен раз вибирає випадкову кількість часу (невеликі частки секунди), щоб почекати та спробувати ще раз, і повторювати процес, доки в кінцевому підсумку не буде активним лише один відправник.

Але цього навряд чи більше трапляється.

Натомість сьогодні більшість дротових з'єднань здійснюються через комутовані мережі , де кожен пристрій (і відправники, і приймачі) підключений до свого окремого порту на комутаторі. Дані поділяються на пакети (справді: кадри ), і комутатор переконайтесь, що кожен порт одночасно активний. Якщо посилання зайняте, комутатор зберігатиме та передає інші кадри до приймача, коли посилання знову буде доступне.

З цією схемою єдиний спосіб виникнення зіткнень - це коли є кілька пристроїв, підключених до комутатора, або один до одного через непідключений концентратор (порти на деяких моделях домашнього wifi "маршрутизатора" все ще не перемикаються), або коли зв'язок між комутатором і пристроєм працює в напівдуплексному режимі .

Натомість ми маємо справу із заторами . У нас може не виникати зіткнень, але популярний хост у мережі може мати пристрої, які хочуть надсилати більше даних та пакетів, ніж підтримуватиме посилання, так що буфер заповнюється. Але це зовсім інше питання.


1
Нітпікінг, але на рівні Ethernet це були б кадри, а не пакети .
jcaron

1
@jcaron Nit-nit-pickking: Звичайно, зазвичай ми використовуємо "packet", щоб означати "IP-пакет", який організовано за RFC 791, і є "MAC Client Data" Ethernet Frame. Але "Ethernet-пакет" визначається як все передане, включаючи початок преамбули до кінця бітів розширення; і 'кадр' - це частина цього пункту від адреси призначення до перевірки кадру. (802.3-2015 Розділ 3.1.1 "Формат пакету"). Я б сказав, що перемикач забезпечує одночасний надсилання одного ефірного пакету , а також зберігає та передає кадри ефіру .
jonathanjo

5

Я думаю, вам потрібно отримати базове розуміння того, як працює Ethernet. Наприклад, хост-відправник надішлеть преамбулу змінних і нулів, щоб привернути увагу приймаючого хоста. Коли приймаючий хост бачить два підряд, він знає, що наступний кадр. Як тільки кадр передається, тоді в рядку має бути тиша на 96 біт, перш ніж надсилається інший кадр.

Різні стандарти Ethernet будуть використовувати різні кодування. Наприклад, 100Base-T використовує 4B5B, який надсилає п'ять біт на кожні чотири біти даних.


1

(Для цього питання я припускаю загальнодоступну мережу Hub.)

Чи адаптери мережі читають вхідні біти в одному потоці?

Так. Незалежно від реалізації PHY, це єдиний вхідний потік. Зв'язок з декількох пристроїв не може успішно надходити одночасно до однієї NIC (MAC-адреси).

Моє припущення, що з точки зору мережевого адаптера пристрою 3, всі 0 і 1 зустрічаються в одному потоці даних "

"єдиний потік" так, але у вашому прикладі двох пристроїв, що надсилають одночасно, не буде потоку даних, що надходить для подальшої обробки; "кадри" 1s і 0s зіткнуться.

Він може з’ясувати, які дані з пристрою 1 або 2, але це все одно лише один потік мільйонів / мільярдів біт.

Не може. Коли сигнали поєднуються, виявляється зіткнення, і кадр відкидається.

Я абсолютно помиляюся?

Назва вашого запитання - це правильне твердження, але ваше обговорення у вашій публікації Q натякає на те, що ваше розуміння та гіпотеза були помилковими.

Далі

  • Незалежно від типу "мережевого адаптера", вони отримують лише один потік бітів.
  • Фізичні засоби передачі сигналу можуть включати в себе кілька підпотоків даних, але ці підпотоки та така фізична обробка не вважаються "мережевим адаптером"; ці підпотоки залежні від коду, їх потрібно поєднувати, щоб мати сенс; і ці підпотоки повинні походити з одного джерела.
  • Якщо ви не впевнені в цій відповіді (та інших відповідях тут), вам потрібно вивчити основи комутованих пакетних мереж Ethernet / IP.

Для цього питання я припускаю, що загальнодоступна мережа Hub - ОП, що посилається на гігабітний NIC, і напівдуплексний режим не існує (практично) для GbE. ;-)
Zac67

@ Zac67 Я, як щедрий і корисний стажер. Я припускав, що ОП вибрала «Гігабіт» довільно, і що вони не усвідомлювали, що буде протиріччя. Це дозволить мені в кінцевому підсумку відповісти на назву питання прямо і просто. ОП може прочитати інші відповіді, щоб дізнатися більше про протиріччя.
Тодд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.