Czy karty sieciowe odczytują przychodzące bity w jednym strumieniu?


9

Kiedy karta sieciowa Gigabit odbiera dane, jak odbiera bity? Czy widzi to wszystko w jednym strumieniu zer i jedynek? Czy może jest kilka strumieni zera i jedynki jednocześnie?

Na przykład ... powiedzmy, że są dwa urządzenia wysyłające i jedno urządzenie odbierające.

Urządzenia 1 i 2 zaczynają jednocześnie wysyłać dane sieciowe do urządzenia 3.

Zakładam, że z punktu widzenia karty sieciowej urządzenia 3 wszystkie zera i jedynki napotykają w jednym strumieniu danych. Może dowiedzieć się, jakie dane pochodzą z urządzenia 1 lub 2, ale dane są nadal tylko jednym strumieniem milionów / miliardów bitów.

Czy całkowicie się mylę? :)


1
Czy masz na myśli połączenie półdupleksowe, czy korzystasz z pełnego dupleksu? Nigdy nie było żadnych półdupleksowych urządzeń dla 1000Base-T, mimo że wciąż jest w tym standardzie. Przy połączeniu pełnego dupleksu nie byłoby ramek z dwóch urządzeń rywalizujących o trzecie urządzenie w tym samym czasie na łączu.
Ron Maupin

pełny dupleks. OK, więc nadal istniałby pojedynczy strumień zer i jedynek (np .: 01010101010001010010101001010100001101011010) i z punktu widzenia urządzenia 3 (odbiornika), podczas gdy urządzenia 1 i 2 mogłyby na zmianę włączyć ten strumień, nigdy nie miałyby obu wysyłanie zer i jedynek dokładnie w tym samym czasie, prawda?
shihku7

Czy jakaś odpowiedź ci pomogła? Jeśli tak, powinieneś zaakceptować odpowiedź, aby pytanie nie wyskakiwało wiecznie, szukając odpowiedzi. Możesz również podać i zaakceptować własną odpowiedź.
Ron Maupin

Odpowiedzi:


14

To zależy.

Podczas gdy wiele PHY Ethernet przesyła dane w sposób czysto szeregowy (np. 100BASE-TX, 1000BASE-SX, 10GBASE-SR), niektóre dzielą strumień danych na wiele linii przesyłanych równolegle.

Najczęściej 1000BASE-T - popularny wariant gigabit-over-copper - dzieli zakodowany strumień danych na cztery linie i przesyła je osobno na jednej z czterech skręconych par kabla Cat-5. Wszystkie warianty skrętki od gigabitowego w górę wykorzystują te cztery linie.

Niektóre szybkobieżne włókna światłowodowe (10G +) wykorzystują również wiele pasów na maksymalnie szesnastu włóknach (z włóknem wielomodowym i krótkim zasięgu) lub o długości fali (z włóknem jednomodowym i długim zasięgu).

Jednak wszystko jest przesyłane w ramkach, z których każda biegnie z jednego źródła do jednego miejsca docelowego. Ramy są ogólnie atomowe, tj. są zawsze przesyłane w jednym kawałku. Każda ramka przenosi dane tylko z jednego konkretnego połączenia / aplikacji. Jego nagłówek zawiera adresy źródłowe i docelowe, dzięki czemu może znaleźć drogę przez sieć.

Gdy sieć odbiera jednocześnie dwie ramki z różnych źródeł dla tego samego portu docelowego, jedna z ramek musi być umieszczona w kolejce, aż port przełączający w kierunku miejsca docelowego zakończy transmisję pierwszej ramki.

Zakłada się, że źródła i miejsce docelowe działają z tą samą prędkością, co niekoniecznie jest prawdą. Możesz mieć serwer plików podłączony przez łącze 1 Gbit / s i dziesięciu klientów wysyłających pełną prędkość na swoich łączach 100 Mbit / s bez (znaczącego) kolejkowania. Jest to nieco zbliżone do sugestii „wielu strumieni”, tyle że strumienie te są przeplatane na poziomie ramki, a nie na poziomie bitów.

Szybkość na porcie sieciowym może wynosić tysiące, a nawet miliony ramek w ciągu jednej sekundy, więc z ludzkiej perspektywy nie można rozróżnić wielu strumieni - wszystko wydaje się „jednoczesne”.


Skontaktuj się z innym odpowiadającym @jonathanjo i dowiedz się, który opis 1000Base-T jest poprawny.
davidbak

1
„to samo medium” jonathanjo opisuje wieloportową domenę kolizyjną, która (praktycznie) nie istnieje w Gigabit Ethernet i jest przestarzała również dla 10/100 Mbit.
Zac67

2
@davidbak wydaje mi się tu wszystko poprawny - Zac zwykle jest! - po prostu inny nacisk. Naprawiłem kilka rzeczy w mojej odpowiedzi, w tym wyjaśnianie kolizji, które nie występują w praktycznym 1000baseT.
jonathanjo

2
Do tego trzeba również dodać PAM16 i podobne kodowania, które sprawiają, że w zasadzie wiele bitów jest w jednym.
PlasmaHH

1
@PlasmaHH 1000BASE-T wykorzystuje już cztery linie i PAM5, więc w każdym kroku zegara znajduje się około 9,3 nieprzetworzonych bitów (i oczywiście 8 bitów „użytkownika” przy 125 MBd dla L1).
Zac67

13

Na razie zignorujmy część Gigabit i skupmy się na części „2 urządzenia wysyłają jednocześnie” na chwilę.

Na współdzielonych mediach może się tak naprawdę stać i stanowić problem. Większość transmisji bezprzewodowych to współdzielone media, a Ethernet w przeszłości był:

  • 10base2 (koncentryczny) używał mniej więcej jednego kabla z każdym na nim. Oczywiście dwie (lub więcej) stacje mogły nadawać w tym samym czasie;
  • 10baseT i 100baseT (oparte na skrętce), z koncentratorami (a nie przełącznikami) również oznaczały, że dwie (lub więcej) stacje mogły nadawać w tym samym czasie, ponieważ sygnał odebrany z dowolnego podłączonego urządzenia został po prostu powtórzony dla wszystkich innych.

Teraz, jeśli dwa urządzenia wysyłają jednocześnie, mogą się zdarzyć dwie rzeczy:

  • używasz jakiejś formy multipleksowania (podział czasu, podział częstotliwości ...), który pozwala na oddzielne „kanały”, dzięki czemu można słuchać określonego kanału i nie przeszkadzają mu inne. Jest to często stosowane w przypadku transmisji bezprzewodowych, a tym bardziej w przypadku transmisji przewodowych (wyjątek stanowią WDM / DWDM na włóknach).

  • lub jeśli dwa lub więcej urządzeń wysyła w tym samym czasie w tym samym kanale, otrzymujesz coś, co nazywa się kolizją : na przykład, gdy dwie osoby mówią jednocześnie, nie możesz zrozumieć, co mówi jedno z nich, urządzenia odbierające nie są w stanie dekodować dane wysyłane przez dowolne urządzenie (lub częściej mogą je dekodować, ale nie ma to sensu i nie przejdzie kontroli CRC).

Tutaj pojawiły się schematy takie jak CSMA-CD (Carrier-Sense Multiple Access, Collision Detection):

  • Przed próbą transmisji urządzenie sprawdzi, czy ktoś inny wysyła (wyczucie operatora)
  • Jeśli kanał jest wolny, zaczyna nadawać.
  • Ale nawet przy tym dwa urządzenia mogą uruchomić się dokładnie w tym samym czasie, więc nadal możesz mieć kolizję.
  • Aby uniknąć marnowania zbyt wiele czasu na kanale, urządzenia wykrywają kolizje (porównując to, co wysyłają z tym, co otrzymują: jeśli nie pasuje, oznacza to, że ktoś inny wysyła w tym samym czasie), przerywają transmisję, i spróbuj ponownie po losowym opóźnieniu (aby uniknąć nowej kolizji).

Było to całkiem zabawne, a w lekko obciążonych sieciach działało całkiem dobrze, ale gdy tylko ruch stał się znaczny, skończyło się to masą kolizji, co z kolei zwiększa wykorzystanie wspólnych mediów, co z kolei prowadzi do większej liczby kolizji, więc mogło być całkiem źle.

Odpowiedzią na to było przejście do przełączanych sieci full-duplex . Huby po prostu powtórzyły sygnał bez zastanowienia. Z drugiej strony przełączniki naprawdę otrzymują ramkę, a następnie ponownie wysyłają ją na link docelowy (dodatkowy bonus: ramka nie jest wysyłana do wszystkich, w większości przypadków do miejsca docelowego).

Jeśli dwa urządzenia wysyłają do tego samego urządzenia docelowego, przełącznik umieści w kolejce jedną z ramek, więc dwie ramki, które zostały wysłane w tym samym czasie, faktycznie docierają jedna po drugiej do miejsca docelowego.

Poza tym na poziomie fizycznym jest całkiem możliwe, że dane są wymieniane równolegle przez kilka par lub nawet kilka kabli. To, czy odbywa się to na poziomie bitowym, czy też dla każdej pary / kabla wysyłane są całe ramki, zależy od zastosowanej technologii. Ale myślę, że to nie było twoje pytanie.


1
To doskonały punkt - prawdopodobnie najbardziej odpowiednia odpowiedź na pytanie. Mogę dodać, że gdy dochodzisz do naprawdę dużych prędkości (światłowodów), są one na ogół ograniczone do jednego nadawcy i jednego odbiornika na linii, aby uniknąć kolizji. Jeśli konieczne jest dodanie innego wejścia, jest ono pobierane na innym kanale i łączone ze strumieniem przychodzącym, a następnie wysyłane do strumienia wychodzącego. W dzisiejszych czasach nawet sieć Ethernet jest zwykle „przełączana”, co pozwala uniknąć kolizji - głównym miejscem, w którym widzisz kolizje (2 urządzenia rozmawiają z jednym jak w pytaniu) w dzisiejszych czasach jest wifi - większość wszystkiego innego to 1 nadawca do 1 odbiornika
Bill K

12

Ten szczególny przypadek jest złożony.

Odnośnie 1000baseT.

Po pierwsze: kiedy mówimy ogólnie, że dwa urządzenia transmitują w tym samym czasie, zwykle tak naprawdę nie wysyłają bitów w tym samym momencie na tym samym medium. Jeśli to zrobią, nastąpi kolizja i wszystkie urządzenia nasłuchujące to rozwiązają (ostatecznie poprzez różne schematy wykrywania kolizji). Tak więc dwa urządzenia nadawcze uzyskają dostęp do medium w nieco innych momentach. Ale w 1000baseT są tylko dwa urządzenia na danym zestawie par; zwykle jedno urządzenie jest przełącznikiem, a drugie hostem.

Po drugie, 1000baseT przesyła dwa bity danych na raz na parze, zakodowane w złożony sposób na pięciu poziomach napięcia. Jest to więc seria 4 podstawowych cyfr na przewodzie, a nie seria 2 podstawowych cyfr.

Po trzecie, 1000baseT może transmitować w obu kierunkach jednocześnie, na tej samej parze. Może oddzielić sygnał wychodzący od sygnału przychodzącego przez obwód zwany hybrydą.

Gigabit Ethernet na innych mediach zachowuje się inaczej. Wolniejsze prędkości, np. 10baseT i 100baseT, mają prostsze schematy. 10baseT przez hub naprawdę ma rzeczywiste kolizje; nad przełącznikami jest zwykle zorganizowane przez przełącznik, dzięki czemu wychodzące ramki są w kolejce; jeśli jest to pełny dupleks, nie ma żadnych kolizji.


Skontaktuj się z innym odpowiadającym @ Zac67 i dowiedz się, który opis 1000Base-T jest poprawny.
davidbak

@jonathanjo Masz rację co do trzech-bitowych symboli, ale jest tylko pięć poziomów PAM. Z grubsza, jest to 8-bit do czterech 3-bitowych symboli plus kodowanie szyfrujące, w którym 3-bitowe symbole są mapowane na (przesuwające) poziomy PAM.
Zac67

@davidbak dzięki za podniesienie go. Uproszcziłem opis, aby objąć główny punkt (złożony, a nie binarny) i pozbyć się błędu. Dzięki Zac za wyjaśnienie.
jonathanjo

7

Zakładając tutaj wszystkie przewodowe łącza Ethernet.

Kiedy dwa urządzenia w tym samym segmencie sieci wysyłają jednocześnie, bez względu na to, do kogo wysyłają, jest to nazywane kolizją . Żadna wiadomość nie przechodzi, gdy nastąpi kolizja. Na szczęście nadawcy mają możliwość wykrywania kolizji. Kiedy to się stanie, każdy nadawca wybierze losowy czas (małe ułamki sekundy), aby poczekać i spróbować ponownie, i powtarzaj proces, aż w końcu tylko jeden nadawca będzie aktywny.

Ale to już prawie nigdy się nie zdarza.

Zamiast tego dzisiaj większość połączeń przewodowych jest wykonywanych za pośrednictwem przełączanych sieci , w których każde urządzenie (zarówno nadawca, jak i odbiornik) jest podłączone do własnego oddzielnego portu na przełączniku. Dane są dzielone na pakiety (naprawdę: ramki ), a przełącznik upewni się, że tylko jeden pakiet jest aktywny na każdym porcie na raz. Jeśli łącze jest zajęte, przełącznik zapisze i przekaże inne ramki do odbiornika, gdy łącze będzie ponownie dostępne.

W tym schemacie jedynym sposobem na kolizję jest sytuacja, w której więcej niż jedno urządzenie jest podłączone do przełącznika lub nawzajem za pośrednictwem niepodłączonego koncentratora (porty w niektórych modelach domowego „routera” Wi-Fi są nadal niepodłączone) lub gdy połączenie między przełącznikiem a urządzeniem działa w trybie półdupleksu .

Zamiast tego mamy do czynienia z zatorami . Możemy nie mieć kolizji, ale popularny host w sieci może mieć urządzenia, które chcą wysłać więcej danych i pakietów, niż obsługuje łącze, tak więc bufor się zapełnia. Ale to zupełnie inna kwestia.


1
Nitpicking, ale na poziomie Ethernet byłyby to ramki, a nie pakiety .
jcaron

1
@jcaron Nit-nit-picking: Oczywiście zwykle używamy „pakietu”, co oznacza „pakiet IP”, który jest zorganizowany zgodnie z RFC 791 i jest „danymi klienta MAC” ramki Ethernet. Ale „pakiet Ethernet” jest definiowany jako wszystko przesyłane, w tym początek preambuły do ​​końca bitów rozszerzenia; a „ramka” to część od adresu docelowego do kontroli ramki. (802.3-2015 Sekcja 3.1.1 „Format pakietu”). Powiedziałbym, że przełącznik zapewnia wysyłanie jednego pakietu Ether na raz oraz przechowuje i przekazuje ramki Ether .
jonathanjo

5

Myślę, że musisz trochę zrozumieć, jak działa Ethernet. Na przykład host wysyłający wyśle ​​preambułę naprzemiennych zer i zer, aby zwrócić uwagę hosta odbierającego. Gdy host odbierający zobaczy dwa z rzędu, wie, że ramka jest następna. Po przesłaniu ramki musi nastąpić cisza na linii dla 96 bitów przed wysłaniem kolejnej ramki.

Różne standardy Ethernet wykorzystują różne kodowanie. Na przykład 100Base-T używa 4B5B, który wysyła pięć bitów na każde cztery bity danych.


1

(W przypadku tego pytania zakładam udostępnioną sieć Hub).

Czy karty sieciowe odczytują przychodzące bity w jednym strumieniu?

Tak. Niezależnie od implementacji PHY jest to pojedynczy strumień wejściowy. Komunikacja z wielu urządzeń nie może jednocześnie dotrzeć do jednej karty sieciowej (adresu MAC).

Zakładam, że z punktu widzenia karty sieciowej urządzenia 3 wszystkie zera i jedynki napotykają w jednym strumieniu danych „

„pojedynczy strumień” tak, ale w twoim przykładzie dwóch urządzeń wysyłających jednocześnie, nie będzie strumienia danych przybywających do dalszego przetwarzania; „klatki” 1s i 0s zderzą się.

Może dowiedzieć się, jakie dane pochodzą z urządzenia 1 lub 2, ale dane są nadal tylko jednym strumieniem milionów / miliardów bitów.

Nie, nie może. Po połączeniu sygnałów wykrywana jest kolizja, a ramka jest odrzucana.

Czy całkowicie się mylę?

Twój tytuł pytania jest prawidłowym stwierdzeniem, ale twoja dyskusja w twoim poście Q wskazuje, że twoje zrozumienie i hipoteza była błędna.

Dalej

  • Bez względu na rodzaj „karty sieciowej” odbierają tylko jeden strumień bitów.
  • Fizyczne środki do przesyłania sygnału mogą obejmować wiele podstrumieni danych, ale te podstrumienie i takie fizyczne przetwarzanie nie jest uważane za „kartę sieciową”; te podstrumienie są współzależne, należy je połączyć, aby mieć sens; i te podstrumienie muszą pochodzić z jednego źródła.
  • Jeśli nie masz pewności co do tej odpowiedzi (i innych odpowiedzi tutaj), musisz nauczyć się podstaw przełączanych sieci Ethernet / IP.

W przypadku tego pytania zakładam, że sieć współdzielona koncentratora - OP odnosiła się do gigabitowej karty sieciowej, a tryb półdupleksowy (praktycznie) nie istnieje dla GbE. ;-)
Zac67,

@ Zac67 Jestem jak hojny i pomocny stanger. Zakładałem, że OP wybrał „Gigabit” arbitralnie i nie wiedzieli, że będzie sprzeczność. To pozwoliło mi ostatecznie i bezpośrednio odpowiedzieć na tytuł pytania. OP może przeczytać inne odpowiedzi, aby dowiedzieć się więcej o sprzeczności.
Todd,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.