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ę? :)
ethernet
layer1
networking
shihku7
źródło
źródło
Odpowiedzi:
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”.
źródło
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ł:
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):
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.
źródło
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.
źródło
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.
źródło
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.
źródło
(W przypadku tego pytania zakładam udostępnioną sieć Hub).
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).
„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ę.
Nie, nie może. Po połączeniu sygnałów wykrywana jest kolizja, a ramka jest odrzucana.
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
źródło