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?
Mówimy, że TCP segment
jest 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, segment
a jednostka danych warstwy sieci jest nazywana jako, datagram
ale 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).
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”.
źródło
Nagłówek TCP, zwany także „nagłówkiem segmentu”, a ładunek lub dane lub „dane segmentu” tworzą segment TCP o różnej wielkości.
źródło
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.
źródło
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
źródło
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ć:
źródło
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.
źródło
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 Stevens „ Ilustrowany protokół TCP / IP”, aby uzyskać znacznie lepsze wyjaśnienie wszystkich tych rzeczy.
źródło
Segment TCP JEST pakietem. Segment jest tylko częścią strumienia połączenia TCP między dwoma komputerami. Datagram to „pakiet” w kategoriach UDP.
źródło
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.
źródło
„Ogólny” termin określający takie rzeczy to Protocol Data Unit lub PDU.
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.
źródło