Skąd Ethernet wie, jak długa jest ramka?

17

Patrząc na wpis Ethernet na Wikipedii, nie mogę zrozumieć, w jaki sposób wskazano, jak długo trwa ramka Ethernet. Pole nagłówka EtherType / Length najwyraźniej może wskazywać albo typ ramki, albo jawną długość, i domyślam się, że w przypadku typu ramki musi ona wykonać inną logikę, aby dowiedzieć się, jak długi jest pakiet. Na przykład, jeśli pole EtherType ma wartość 0x0800, oznacza to ładunek IPv4, a zatem odbierająca karta sieciowa musiałaby zbadać pierwsze 32 bity ładunku, aby znaleźć długość pakietu IP, a zatem obliczyć całkowitą długość ramkę Ethernet i wiedz, kiedy szukać sumy kontrolnej końca ramki i odstępu między ramkami.

Czy to brzmi poprawnie? Spojrzałem również na specyfikację IEEE 802.3 dla Ethernetu (w każdym razie część 1), która wydaje się to potwierdzać, ale jest dość nieprzejrzysta.

zbocze
źródło

Odpowiedzi:

21

Podwarstwa Fizycznego Kodowania jest odpowiedzialna za rozdzielanie ramek i wysyłanie ich do warstwy MAC.

Na przykład w Gigabit Ethernet schemat kodowania 8B / 10B wykorzystuje 10-bitową grupę kodową do kodowania 8-bitowego bajtu. Dodatkowe dwa bity informują, czy bajt jest informacją kontrolną, czy danymi. Informacją sterującą może być Konfiguracja, Start_of_packet, End_of_packet, IDLE, Carrier_extend, Error_propagation.

W ten sposób karta sieciowa wie, gdzie zaczyna się i kończy ramka. Oznacza to również, że długość ramki nie jest znana przed jej pełnym dekodowaniem, analogicznie do łańcucha zakończonego NULL w C.

Hroi Sigurdsson
źródło
1
Jest to określone w IEEE Std 802.3-2015 (sekcja trzecia), 36.2.4.2 i 36.2.4.15 (między innymi w tej nieczytelnej rzeczy, którą nazywają standardem).
stefanct
1

Artykuł, na który naprawdę chcesz odpowiedzieć na twoje pytanie, to http://en.wikipedia.org/wiki/Ethernet_II_framing ; który mówi:

Ponieważ ten opracowany w branży standard przeszedł formalny proces standaryzacji IEEE, pole EtherType zostało zmienione na pole długości (danych) w nowym standardzie 802.3. (Oryginalne pakiety Ethernet określają swoją długość za pomocą otaczającej go ramki, a nie z jawną liczbą). Ponieważ odbiorca pakietu nadal musi wiedzieć, jak interpretować pakiet, standard wymagał nagłówka IEEE 802.2, aby śledzić długość i określać typ pakietu.

womble
źródło
Wydaje mi się, że nie jestem pewien, co oznacza „Oryginalne pakiety Ethernet określają ich długość w otaczających go ramkach”. Bity preambuły / ramki początkowej są dość wyraźne, ale skąd klient wie, że osiągnięto koniec ramki? Jak odróżnia CRC od luki między ramkami? Czy losowy szum elektryczny IFG jest łatwy do odróżnienia od rzeczywistego sygnału?
dirtside
Koniec ramki w „klasycznym Ethernecie” jest sygnalizowany przez nielegalne kodowanie.
Vatine
@womble, artykuł, który podłączyłeś, jest dobry, ale cytowany przez Ciebie fragment wprowadza w błąd poza kontekstem. Obecnie większość ramek w sieci Ethernet nie używa pola o wyraźnej długości.
Peter Green
-3

Logicznie istnieją tylko trzy opcje:

  1. Używanie statycznego rozmiaru ramki jak w.
  2. Określanie rozmiaru ramki w nagłówku lub w innym miejscu, a nawet ograniczanie go za pomocą niektórych flag.
  3. W ogóle brak wysyłania ramek

Jedna z nich działa w sieci Ethernet, ponieważ obecnie nie ma innych dostępnych opcji dla nowoczesnej sieci;) Pierwsza i trzecia są złe dla sieci Ethernet, więc masz rację!

kolypto
źródło
-3

Zajęło mi to trochę czasu, aby to rozwiązać raz i jeszcze raz. Niewiele dostępnych informacji na ten temat, co jest zaskakujące, ponieważ jest to tak oczywiste pytanie. W końcu zdecydowałem się na rozwiązanie polegające na wykorzystaniu pól długości w nagłówkach pakietów. Zobacz poniższy link

http://www3.rad.com/networks/infrastructure/lans/etherform.htm#_ieee


źródło