Jaka jest różnica między segmentem TCP a pakietem TCP?

16

Czy segment TCP nie jest częścią pakietu TCP?

Oto co przeczytałem:

Segment jest fragmentem danych aplikacji pociętym na rozmiar TCP przez przewoźnego i owiniętym nagłówkiem TCP

Czy sam nagłówek TCP nie składa się z segmentów?

use753231
źródło

Odpowiedzi:

21

Mówimy, że TCP segmentjest to jednostka danych protokołu, która składa się z nagłówka TCP i elementu danych aplikacji (pakietu), który pochodzi z (górnej) warstwy aplikacji. Dane warstwy transportowej są ogólnie nazywane jako, segmenta jednostka danych warstwy sieci jest nazywana jako, datagramale kiedy używamy UDP jako protokołu warstwy transportowej, nie mówimy UDP segment, zamiast tego mówimy UDP datagram. Myślę, że dzieje się tak, ponieważ nie segmentujemy jednostek danych UDP (segmentacja odbywa się w warstwie transportowej, gdy używamy TCP).

Hermetyzacja danych i stos protokołów TCP / IP

Ricardo Cristian Ramirez
źródło
wszystkie te objaśnienia dotyczą modelu TCP / IP obsługiwanego przez IETF .
wyloguj się
8

Oryginalny protokół TCP RFC jest niejasny w tym, jak używa terminu „segment”.

W niektórych przypadkach termin „segment” odnosi się tylko do bieżącego fragmentu przesyłanego strumienia danych aplikacji, co wyklucza nagłówki TCP. Na przykład TCP „Maksymalny rozmiar segmentu” (MSS) to maksymalny rozmiar fragmentu danych aplikacji w tym komunikacie, nie licząc nagłówków TCP.

Ale w innych przypadkach termin „segment” obejmuje cały komunikat TCP, w tym nagłówki TCP. W rzeczywistości przynajmniej w jednym przypadku specyfikacja wymienia segmenty TCP bez danych aplikacji (takie jak zwykłe potwierdzenia).

Pojedyncza cała wiadomość IP to „datagram”.

Pierwotny protokół IP RFC odnosi się do komunikatów w warstwie łącza jako „pakietów”. Datagramy IP można podzielić na „fragmenty”, aby dopasować je do limitów wielkości pakietów w sieciach małych pakietów.

Warstwa łącza IEEE 802.3 / Ethernet określa pojedynczą ciągłą transmisję warstwy fizycznej jako „pakiet”. Część łącza danych MAC nazywa się „ramką”. Ramka zaczyna się od docelowego adresu MAC, a kończy sekwencją sprawdzania ramki. Część ramki, która może zawierać datagram IP (lub jego fragment), nazywana jest „polem danych klienta MAC”.

Tak więc technicznie nie ma czegoś takiego jak „pakiet TCP” lub „pakiet IP”. Pakiety są warunkami z warstw poniżej adresu IP. TCP ma „segmenty”, a IP ma „datagramy”.

Spiff
źródło
2

Nagłówek TCP, zwany także „nagłówkiem segmentu”, a ładunek lub dane lub „dane segmentu” tworzą segment TCP o różnej wielkości.

Florenz Kley
źródło
2

Segment TCP nazywa się datagramem. Zazwyczaj segment lub datagram to pakiet. Gdy datagram lub pakiet jest przetwarzany przez warstwę sieci, dodaje nagłówek IP do danych i staje się pakietem IP.

Warstwa transportowa dzieli dane na mniejsze jednostki zwane Segmentami, datagramami lub tak zwanymi pakietami. Ale zwykle nazywamy je Segmentami.

Lovej
źródło
2

Segment tcp to tylko koncepcja, różni się defragmentacją IP

kiedy wysyłasz dane, które są większe niż ip mtu, są one umieszczane w jednym pakiecie ip, ale warstwa ip następnie stwierdza, że ​​pakiet ip jest zbyt długi do przesłania, więc podzieli duży pakiet na kilka części, każdy z nich ma taki sam Identyfikator, ale z innym przesunięciem i długością danych. strona odbierająca jest odpowiedzialna za zebranie wszystkich elementów, po otrzymaniu wszystkich elementów ponownie złoży wszystkie elementy w jeden cały pakiet ip i przepchnie je do górnej warstwy protokołu.

ale warstwa tcp ma inne zachowanie. kiedy wysyłasz dane, które są wystarczająco duże, warstwa tcp nie umieszcza danych w jednym pakiecie tcp, a następnie nie dzieli ich na kawałki (ale ip robi), pobiera część surowych danych do jednego pakietu tcp, a następnie przesyła Długość pakietu tcp do warstwy ip, długość pakietu tcp jest określana przez mss, później pobierze inną część pozostałych danych do innego pakietu tcp i powtórzy proces, aż wszystkie dane zostaną przesłane.

jeśli tcp nie używa mss, to jest okropne. zakładamy, że wysyłasz dane większe niż mss, zostaną one umieszczone tylko w jednym pakiecie tcp (dane nie zostaną podzielone na małe kawałki z powodu niewykorzystania ms), pakiet tcp jest większy niż ip mtu, więc ip podzieli tcp pakiet na kawałki. pakiet tcp prześle ponownie, jeśli któryś z elementów zostanie utracony, straci czas i przepustowość

ps: tcp_mss = ip_mtu - tcp_header

Albert
źródło
1

Nagłówek nie składa się z segmentów. Nagłówek ma zawsze ten sam rozmiar i musi być kompletny. W przeciwnym razie pakiet nie mógłby zostać zdekodowany.

To, co nazywacie „segmentem”, to cały „pakiet”, który później łączy się z innymi w strumieniu TCP. Widzieć:

Protokół kontroli transmisji akceptuje dane ze strumienia danych, dzieli je na części i dodaje nagłówek TCP, tworząc segment TCP.

slhck
źródło
1

TCP odbiera dane z warstwy aplikacji i „tnie” te dane na kilka segmentów danych; fragmenty oryginalnych danych z dodanym nagłówkiem TCP. Część tego nagłówka to numer sekwencyjny, który jest używany przez protokół TCP po stronie odbierającej do umieszczenia wszystkich odebranych segmentów (bez nagłówków) we właściwej kolejności i ponownego złożenia oryginalnych danych, które następnie przesyła do warstwy aplikacji .

Tak więc, aby odpowiedzieć na twoje pytanie; termin „pakiet TCP” tak naprawdę nie istnieje. Nazywa się to „segmentem”, który składa się z nagłówka i sekcji danych. Sam nagłówek składa się z kilku „pól”, które zawierają między innymi numer sekwencyjny, sumę kontrolną oraz numery portów źródłowych i docelowych.

Jaspis
źródło
1

Gdy wysyłasz dane przez połączenie TCP, ilość wysyłanych danych może przekraczać maksymalny rozmiar bajtów dozwolony przez połączenie w jednym pakiecie. Ta kwota „Maksymalna wielkość segmentu” (zwana również MSS) jest „negocjowana” (1) w czasie połączenia między dwoma punktami końcowymi TCP (klientem i serwerem). Protokół TCP poziomu OSI 4 jest odpowiedzialny za rozproszenie / gromadzenie. Oznacza to, że strumień danych jest podzielony na mniejsze części (zwane segmentami) i wysyłany osobno przez sieć. Z drugiej strony warstwa TCP jest odpowiedzialna za ponowne zebranie pakietu we właściwej kolejności, aby zreformować strumień dokładnie tak, jak został wysłany. Nic nie może powiedzieć, że segmenty dotrą do miejsca docelowego w tej samej kolejności niż przy odlocie. Dlatego też pakiety są numerowane. Więcej, pakiety są potwierdzane osobno (2) oddzielnie przez odbiornik, ale czasami pakiety mogą zostać utracone. Wówczas żadne potwierdzenie nie zostanie zwrócone z miejsca docelowego pakietu do emitera. Następnie emiter powinien wysłać go ponownie (taka też jest rola TCP). Czasami pakiet jest odbierany poprawnie, ale potwierdzenie nie jest odbierane przez emiter (ponownie utracony pakiet). W takim przypadku emiter wyśle ​​go ponownie, ale odbiorca zobaczy, że już go odebrał (czyli pakiet Dup) i wyeliminuje, ale ponownie wyśle ​​potwierdzenie do nadawcy.

Również w celu zwiększenia przepustowości emiter może wysyłać kilka pakietów szeregowo i nie musi czekać na poprzednie potwierdzenie, aby wysłać następny pakiet. Jest również częścią protokołu TCP i nazywa się przesuwanymi oknami. Liczba wysłanych pakietów oczekujących na potwierdzenie jest ograniczona.

(1) W rzeczywistości nie ma żadnych negocjacji, każdy punkt końcowy określa maksymalny rozmiar, z którym może sobie poradzić. Ta wartość nie obejmuje 20 bajtów nagłówka IP ani 20 bajtów nagłówka TCP. (2) kilka pakietów może być również potwierdzonych przez jedno ACK.

Należy pamiętać, że datagramy to hermetyzowane dane wysyłane w sieci IP lub przy użyciu protokołu bez połączenia, takiego jak UDP. Pakiety są enkapsulowanymi danymi dla protokołu zorientowanego na połączenie, takiego jak TCP. Segmenty to części strumienia danych wysyłane przez TCP. Zobacz W.Richard StevensIlustrowany protokół TCP / IP”, aby uzyskać znacznie lepsze wyjaśnienie wszystkich tych rzeczy.

Roger VEBER
źródło
0

Segment TCP JEST pakietem. Segment jest tylko częścią strumienia połączenia TCP między dwoma komputerami. Datagram to „pakiet” w kategoriach UDP.

sinni800
źródło
0

Pakiet IP składa się z nagłówka IP z dołączonymi danymi. Dane to nagłówek TCP i segment danych aplikacji, zwany Segmentem TCP. Segment TCP to zwykle pakiet TCP.

CPX
źródło
0

„Ogólny” termin określający takie rzeczy to Protocol Data Unit lub PDU.

LAYER # - OSI NAME     - COMMON PROTOCOL OR USE - PDU NAME
-------   ------------   ----------------------   --------------------------
Layer 1 - Physical     - Transceiver            - bits, or a physical signal
Layer 2 - Datalink     - Ethernet               - frame
Layer 3 - Network      - IP                     - packet
Layer 4 - Transport    - TCP                    - segment
Layer 5 - Session      - SIP                    - data, request, or response
Layer 6 - Presentation - Encryption/compression - data, request, or response
Layer 7 - Application  - HTTP                   - data, request, or response

Sprawy stają się rozmyte dzięki określonym protokołom od warstwy 4 i wyższych (na przykład do dziś nie wiem o niczym, co jest tak naprawdę protokołem sesji, i tak naprawdę nie ma czegoś takiego jak zwykły protokół „prezentacji” ale z pewnością prawie osobna warstwa w wielu stosach oprogramowania / komunikacji).

Ponadto, jak wspomniano wcześniej, każda z tych jednostek PDU ma nagłówek, który różni się od ładunku lub danych. Nagłówek zawiera informacje o danych i ewentualnie sumę kontrolną do weryfikacji na drugim końcu.

LawrenceC
źródło
czy praca TPDU nie jest używana zamiast na górnych warstwach? patrz books.google.de/books?id=daqV_KzkoSIC&pg=PA147
Janus Troelsen