2009-12-04 14 views
26

Jaki jest rozmiar pustego datagramu UDP? I to z pustego pakietu TCP?Rozmiar pustego pakietu UDP i TCP?

Mogę tylko znaleźć informacje o MTU, ale chcę wiedzieć, jaki jest ich "podstawowy" rozmiar, aby oszacować zużycie przepustowości dla protokołów nad nimi.

Z góry dziękuję za informacje.

+6

Wikipedia mówi wszystko, co musisz wiedzieć w tym przypadku ... – Artelius

+1

Która warstwa serwera? UDP na IP może obsługiwać ** wiele ** warstw serwerowych, z których jedna to Ethernet, ale są też MPLS, PBT, Frame Relay, ATM, POS itp. – jldupont

Odpowiedz

64

Rozmiar ramki Ethernet - 24 Bytes
Wielkość nagłówka IPv4 (bez opcji) - 20 bajtów Rozmiar
TCP Header (bez opcji) - 20 bajtów
Więc całkowitej wielkości pustej TCP datagramu - 24 + 20 + 20 = 64 bajtów

wielkość nagłówka UDP - 8 bajtów
Więc całkowity rozmiar pustej datagramu UDP - 24 + 20 + 8 = 52 bajty

+2

this (modulo possible errors :) był rzeczywiście ogólnym wynikiem, którego szukałem! – puccio

+5

Myślę, że minimalna ramka ethernetowa ma 64 bajty (ładunek musi być dopełniony do co najmniej 46 bajtów). – Useless

+1

Nie wszystkie TCP i UDP są jednak przenoszone na Ethernet - w rzeczywistości ten sam pakiet może być przenoszony na kilku różnych warstwach fizycznych podczas jego tranzytu przez różne sieci. – caf

8

Zobacz User Datagram Protocol. Nagłówek UDP ma długość 8 bajtów (64 bity).

Maksymalny rozmiar nagiego nagłówka TCP to 5 słów (słowo 32-bitowe), a maksymalny rozmiar nagłówka TCP to 15 słów.

Najlepsze życzenia, Fabian

1

Artelius i Halfdan są poprawne, ale jesteś czegoś brakuje: UDP i TCP prowadzony zarówno na szczycie jakiegoś transportu fizycznego. Na przykład, jeśli używasz UDP over Ethernet, należy także rozmiar ethernet frame

+0

Cóż .. i oczywiście ramka IP, jeśli chcesz być routowane. – halfdan

+0

Nie ma czegoś takiego jak "ramka IP": prawdopodobnie chcesz odwoływać się do "pakietu IP". – jldupont

13

Odpowiedź Himanshusa jest całkowicie poprawna.

Co może być mylące, patrząc na strukturę ramki Ethernet [patrz dalsze czytanie], jest to, że bez ładunku minimalny rozmiar ramki Ethernet wynosiłby 18 bajtów: Dst Mac (6) + Src Mac (6) + Length (2) + Fcs (4), dodając minimalny rozmiar IPv4 (20) i TCP (20) daje nam w sumie 58 bajtów.

To, co nie zostało jeszcze wspomniane, to to, że minimalna ładowność ramki ethernetowej wynosi 46 bajtów, więc 20 + 20 bajtów z protokołu TCP IPv4 nie jest wystarczającym ładunkiem! Oznacza to, że 6 bajtów musi zostać dopełnionych, czyli tam, skąd pochodzi 64 bajty.

18 (min. Ethernet "header" pola) + 6 (dopełnienia) + 20 (IPv4) + 20 (TCP) = 64 bajtów

Nadzieja ta czyści rzeczy się trochę.

Dalsze Reading:

+2

ma to również oznacza następujące? 18 (min. Pola "nagłówka" Ethernet) + 18 (dopełnienie) + 20 (IPv4) + 8 (UDP) = 64 bajty? Łącznie 18 + 20 + 8 = 46 bajtów dla ładunku IP + UDP. – Ali

+3

Tak! Tutaj znowu 20 + 8 (= 28) nie wystarcza dla minimalnej ładowności sieci Ethernet, więc potrzeba 18 bajtów wypełnienia (20 + 8 + 18 = 46). – Felix

+0

Jeśli zastanawiasz się, jak odróżnić pusty pakiet TCP od jednego z 1-6 bajtami ładunku w sieci Ethernet, robi się to za pomocą pola "całkowita długość" w nagłówku IP. –

0

Jeśli zamierzasz obliczyć zużycie pasma i odnosić je do maksymalnej szybkości sieci (jak 1Gb/s lub 10 Gb/s), konieczne jest, jak wskazano przez Useless, dodanie Ethernet framing overhead at layer 1 do liczb obliczonych przez Felixa i innych, a mianowicie

  • 7 bajtów preambuły
  • 1 bajt o rozpoczęciu ramy separatora
  • 12 bajtów szczeliny interpacket

czyli łącznie 20 więcej bajtów zużywanych w pakiecie.