Zgodnie z tabelą tutaj napisano, że MTU = 1500 bajtów, a część danych to 1500 - 42 bajty lub 1458 bajtów (<- to w rzeczywistości źle!). Teraz musisz dodać nagłówki IPv4 i UDP, które mają 28 bajtów (20 IP + 8 UDP). To pozostawia mój maksymalny możliwy komunikat aplikacji do 1430 bajtów! Ale szukając tego numeru w Internecie widzę 1472 zamiast tego. Czy źle wykonuję te obliczenia?
Chcę tylko dowiedzieć się, jaki jest maksymalny komunikat aplikacji, który mogę wysłać przewodem bez ryzyka fragmentacji. To zdecydowanie nie jest 1500, ponieważ obejmuje nagłówki ramek. Czy ktoś może pomóc?
Pomyłka polega na tym, że PAYLOAD może faktycznie mieć nawet 1500 bajtów i to jest MTU. Więc teraz jaki jest rozmiar in-the-wire dla ładunku o wartości 1500? Z tej tabeli może wynosić nawet 1542 bajty.
Tak więc maksymalne komunikaty aplikacji, które mogę wysłać, to 1472 (1500 - 20 (ip) - 8 (udp)) dla maksimum w rozmiarze drutu 1542. Dziwi mnie, jak sprawy mogą się tak skomplikować, kiedy są naprawdę proste. I nie mam pojęcia, jak ktoś wymyślił liczbę 1518, jeśli tabela mówi 1542.
Odpowiedzi:
Schemat na Wikipedii jest okropny. Mam nadzieję, że to, co zamierzam napisać, jest wyraźniejsze.
Maksymalna ładowność w sieci Ethernet 802.3 wynosi 1500 bajtów.
Są to dane, które próbujesz wysłać drogą przewodową (i do czego odnosi się MTU).
[payload]
<- 1500 bajtówŁadunek jest zamknięty w ramce Ethernet (która dodaje MAC źródła / miejsca docelowego, znacznik VLAN, długość i sumę kontrolną CRC. Jest to w sumie 22 bajtów dodatkowych „rzeczy”
[SRC+DST+VLAN+LENGTH+[payload]+CRC]
<- 1522 bajtówRamka jest przesyłana przewodem - zanim karta Ethernet to zrobi, w zasadzie wstaje i krzyczy naprawdę głośno, aby upewnić się, że nikt inny nie korzysta z drutu (CSMA / CD) - To jest ogranicznik preambuły i początku ramki (SFD) - dodatkowe 8 bajtów, więc teraz mamy:
[Preamble+SFD+[Ethernet Frame]]
<- 1530 bajtówNa koniec, gdy nadajnik-odbiornik ethernetowy wysyła ramkę, 802.3 wymaga przesłania 12 bajtów ciszy („przerwa między ramkami”), zanim będzie mogła wysłać następną ramkę.
[Preamble+SFD+[Ethernet Frame]+Silence]
<- 1542 bajtów przesłanych przewodem.Preambuła, SFD i przerwa między ramkami nie liczą się jako część ramki. Są strukturą wsparcia dla samego protokołu Ethernet.
MTU ma zastosowanie do ładunku - jest to największa jednostka danych, którą można wcisnąć do pakietu. Zatem pakiet ethernetowy z jednostką MTU 1500 bajtów będzie faktycznie ramką 1522 bajtów i 1542 bajtami na przewodzie (zakładając, że istnieje znacznik vLAN).
Więc odpowiedź na twoje pytanie - jaki jest największy pakiet, jaki mogę wysłać przez sieć Ethernet 802.3 bez fragmentacji? - ma 1500 bajtów danych ładunku .
JEDNAK warstwa Ethernet może nie być czynnikiem ograniczającym. Aby dowiedzieć się, czy coś po drodze ogranicza MTU do mniejszej niż 1500 bajtów danych ładunku, użyj jednej z następujących czynności:
ping hostname -f -l sizeofdata
(technika wymieniona przez Johna K)ping -D -s sizeofdata hostname
ping -M do -s sizeofdata hostname
Największą wartością
sizeofdata
tego działania jest MTU (na określonej ścieżce, którą podążają twoje dane).źródło
To zależy od ilości danych umieszczonych w ramce. Jeśli umieścisz 1500 bajtów danych w ramce, całkowity rozmiar ramki wyniesie 1518 bajtów. Z 1472 bajtami danych, uzyskasz całkowity rozmiar ramki 1500 ..
http://en.wikipedia.org/wiki/Ethernet_frame
Biorąc to pod uwagę, jeśli naprawdę chcesz przetestować fragmentację, dobrym sposobem na przetestowanie tego jest dobry dobry ping z kilkoma flagami:
ping nazwa hosta -f -l sizeofdata
Flaga -f spowoduje, że ping nie powiedzie się, jeśli pakiet zostanie pofragmentowany. Kluczem do zrozumienia tutaj jest „sizeofdata” to ilość danych, które można umieścić w wiadomości bez fragmentacji - więc jeśli wyślesz ładunek 1500, zaczniesz fragmentować, gdy przekroczysz 1500 bajtów. Zmniejsz to jednak do 1472 (1500 - 18 bajtów nad głową), a zobaczysz, że przechodzą pingi.
źródło
W przypadku podstawowej ramki Ethernet_II rozmiar ramki wynosi 1518 bajtów (na przewodzie lub poza nim). Składa się z 6 bajtów dla każdego adresu docelowego i źródłowego, 2 bajtów dla pola typu od 46 do 1500 bajtów dla ładunku (w Twoim przypadku całego pakietu IP z nagłówkiem IP i nagłówkiem UDP) i 4 bajtów dla FCS. Oprócz tego istnieje ograniczenie dotyczące wielkości ramki (64 bajty). Dlatego zakres wynosi od 46 bajtów (dodaj to do dwóch adresów i typu oraz FCS, a otrzymasz 64 bajty - 46 + 6 + 6 + 2 + 4 = 64).
Jeśli ramka znajduje się w sieci, która obsługuje wiele vlanów i musisz oznaczyć ramkę tagiem vlan, wówczas przed polem typu zostanie dodane jedno dodatkowe pole. To 4 bajty. Oznacza to teraz, że zakres rozmiarów ładunku można zmniejszyć o 4 bajty na dole i nadal mieć co najmniej 64 bajty. Stąd 42. (Tak 42 + 6 + 6 + 2 + 4 + 4 dla tagu vlan = 64)
Więc kiedy zapisany jest zakres 1500-42, to nie znaczy 1500 minus 42, oznacza to, że wszystko od 1500 do 42 bajtów jest poprawne. Jeden drut, ta oznakowana ramka może mieć wielkość 1522 bajtów (jeśli używany jest tylko jeden znacznik lub 1526, jeśli używane są dwa znaczniki). Nic z tego nie wyjaśnia liczby 1542.
Aby dostać się do tego numeru, musisz rozważyć, w jaki sposób ramkę można wysłać w sieci Ethernet. W sieci Ethernet LAN nie ma zegara, więc nadajnik ramki wysyła serię 1 i 0, aby ustawić zegar. Nazywa się to preambułą. Nie każdy słuchacz „usłyszy” całą preambułę, ale większość powinna usłyszeć jej część. Aby zasygnalizować koniec preambuły, jeden z 8 ostatnich wysłanych bitów jest odwracany, tak że zamiast 10101010 staje się 10101011. Ten bajt nazywa się początkiem ogranicznika ramki (SDF). Nie jest to technicznie przydatne do przechwytywania drutu, więc 7 bajtów preambuły i 1 bajt SDF normalnie nie są liczone, ale gdyby były naszym pierwotnym 1518, to teraz byłoby 1526. Wciąż nie 1542 ..
Po wysłaniu ramki dochodzi do wymuszonej ciszy na przewodzie, zwanej przerwą między ramkami. Jest to równoważne transmisji 12 bajtów. To również nie jest liczone ani przechwytywane, ale gdyby tak było, doprowadziłoby nas to do 1538 bajtów. Jedynym sposobem na przejście do 1542 z 1538 jest powiedzenie, że ramka jest oznaczona (tzn. Zawiera 4-bajtową etykietę planu). Uff, w końcu 1542 r.
Wszystko to w terminologii. Standardowa ramka ma 1518 bajtów na przewodzie (w odniesieniu do dowolnego urządzenia przechwytującego). Oznaczona ramka (pojedynczy znacznik) ma 1522 bajtów na przewodzie. Zajmują one 1538 bajtów lub 1542 bajtów przestrzeni transmisyjnej w przewodzie.
Mam nadzieję, że to pomoże wyjaśnić ..
źródło
nie chcesz fragmentacji, dlatego pakiet trzeba fragmentować, ale zestaw plików df weź to w ten sposób: 2-kierunkowa autostrada z całą masą półwyrobów w porównaniu z tą samą autostradą z całą masą małych inteligentnych samochodów, które obie będą te same półwyspy docelowe przewożą więcej ładunku, ale są wolniejsze i mogą łatwiej przejeżdżać, mniejsze samochody przewożą mniej, ale podróżują szybciej MSS to nie to samo co MTU
źródło