Qual è la differenza tra un segmento TCP e un pacchetto TCP?


16

Un segmento TCP non fa parte di un pacchetto TCP?

Ecco cosa ho letto:

Un segmento è un pezzo di dati dell'applicazione suddiviso in una dimensione trasportabile da TCP e racchiuso in un'intestazione TCP

L'intestazione TCP non è costituita da segmenti?

Risposte:


21

Diciamo che TCP segmentè l'unità dati di protocollo che consiste in un'intestazione TCP e un pezzo di dati di applicazione (pacchetto) che proviene dal livello (superiore) dell'applicazione. I dati del livello di trasporto sono generalmente denominati come segmente l'unità di dati del livello di rete è denominata come datagramma quando utilizziamo UDP come protocollo del livello di trasporto non diciamo UDP segment, invece, diciamo UDP datagram. Penso che ciò sia dovuto al fatto che non segmentiamo l'unità di dati UDP (la segmentazione viene effettuata nel livello di trasporto quando utilizziamo TCP).

Incapsulamento dei dati e stack del protocollo TCP / IP


tutta questa spiegazione si applica al modello TCP / IP, gestito da IETF .
disconnessione il

8

Il TCP RFC originale è un po 'confuso con il modo in cui usa il termine "segmento".

In alcuni casi, il termine "segmento" si riferisce solo alla parte corrente del flusso di dati dell'applicazione che viene trasmessa, che esclude le intestazioni TCP. Ad esempio, TCP "Maximum Segment Size" (MSS) è la dimensione massima del blocco di dati dell'applicazione in questo messaggio, senza contare le intestazioni TCP.

Ma in altri casi il termine "segmento" include l'intero messaggio TCP, comprese le intestazioni TCP. Infatti in almeno un caso la specifica menziona segmenti TCP senza dati applicativi (come i semplici Ack).

Un singolo messaggio IP intero è un "datagramma".

La RFC IP originale fa riferimento ai messaggi a livello di link come "pacchetti". I datagrammi IP possono essere suddivisi in "frammenti" per adattarsi ai limiti di dimensione dei pacchetti su reti a pacchetto ridotto.

Il livello di collegamento IEEE 802.3 / Ethernet si riferisce a una singola trasmissione contigua di livello fisico come "pacchetto". La parte MAC del collegamento dati del pacchetto è chiamata "frame". Il frame inizia con l'indirizzo MAC di destinazione e termina con la sequenza di controllo frame. La parte del frame che può contenere un datagramma IP (o suo frammento) è chiamata "campo Dati client MAC".

Quindi, tecnicamente, non esiste un "pacchetto TCP" o un "pacchetto IP". I pacchetti sono termini dagli strati sotto IP. TCP ha "segmenti" e IP ha "datagrammi".


2

L'intestazione TCP, nota anche come "intestazione del segmento", e il payload, o dati, o "dati del segmento" compongono il segmento TCP, di dimensioni variabili.


2

Un segmento TCP è chiamato Datagram. In genere, un segmento o un datagramma è un pacchetto. Quando il datagramma o pacchetto viene elaborato dal livello Rete, aggiunge l'intestazione IP ai dati e diventa un pacchetto IP.

Il livello di trasporto segmenta i dati in unità più piccole denominate Segmenti, datagrammi o cosiddetti pacchetti. Ma di solito li chiamiamo Segmenti.


2

Il segmento TCP è solo un concetto, è diverso con la deframmentazione IP

quando si inviano dati più grandi di ip mtu, questi vengono inseriti in un pacchetto ip, ma il livello ip rileva quindi che il pacchetto ip è troppo lungo per trasmettere , in modo da dividere il pacchetto grande in più pezzi, ognuno di essi ha lo stesso Identificatore ma con offset e lunghezza dei dati diversi. il lato di ricezione è responsabile della raccolta di tutti i pezzi, dopo aver ricevuto tutti i pezzi riassemblerà tutti i pezzi in un unico pacchetto ip e lo spingerà al livello di protocollo superiore.

ma il livello tcp ha un comportamento diverso. quando invii un dato abbastanza grande, il livello tcp non inserisce i dati in un pacchetto tcp, quindi li divide in pezzi (ma ip lo fa), recupera una parte dei dati grezzi in un pacchetto tcp e quindi invia il pacchetto tcp al livello ip, la lunghezza del pacchetto tcp è determinata da mss, successivamente recupererà un'altra parte dei dati rimanenti in un altro pacchetto tcp e ripeterà il processo fino a quando tutti i dati non vengono trasmessi.

se tcp non usa mss , è orribile. supponiamo che tu invii un dato più grande di mss, verrà inserito in un solo pacchetto tcp (i dati non vengono suddivisi in piccoli pezzi a causa di mss non utilizzati), il pacchetto tcp è più grande di ip mtu, quindi l'ip dividerà il tcp pacchetto in pezzi. il pacchetto tcp ritrasmette in caso di perdita di uno qualsiasi dei pezzi, perdita di tempo e larghezza di banda

ps: tcp_mss = ip_mtu - tcp_header


1

Un'intestazione non è composta da segmenti. Un'intestazione ha sempre le stesse dimensioni e deve essere completa. Altrimenti, il pacchetto non può essere decodificato.

Ciò che si definisce "Segmento" è l'intero "pacchetto" che verrà successivamente combinato con altri al flusso TCP. Vedere:

Transmission Control Protocol accetta i dati da un flusso di dati, li "segmenta" in blocchi e aggiunge un'intestazione TCP creando un segmento TCP.


1

TCP riceve i dati dal livello applicazione e li "suddivide" in più segmenti di dati; parti dei dati originali con un'intestazione TCP aggiunta. Parte di questa intestazione è un numero progressivo che viene utilizzato dal protocollo TCP sull'estremità ricevente per mettere tutti i segmenti ricevuti (meno le intestazioni) nell'ordine giusto e riassemblare i dati originali che trasferisce quindi al livello dell'applicazione .

Quindi, per rispondere alla tua domanda; il termine "pacchetto TCP" non esiste davvero. Si chiama "segmento" che consiste in un'intestazione e una sezione di dati. L'intestazione stessa è costituita da diversi "campi" che contengono, tra l'altro, un numero progressivo, checksum e numeri di porta di origine e di destinazione.


1

Quando si inviano dati tramite una connessione TCP, la quantità di dati inviati può superare la dimensione massima di byte consentita dalla connessione in un singolo pacchetto. Questo importo "Dimensione massima del segmento" (chiamato anche MSS) viene "negoziato" (1) al momento della connessione tra i due punti finali TCP (il client e il server). Il protocollo TCP di livello 4 OSI è responsabile della diffusione / raccolta. Significa che il flusso di dati viene suddiviso in parti più piccole (chiamate segmenti) e inviato separatamente attraverso la rete. Dall'altro lato, il livello TCP è responsabile di ri-raccogliere il pacchetto nell'ordine corretto per riformare il flusso proprio come è stato inviato. Nulla può dirti che i segmenti arriveranno a destinazione nello stesso ordine rispetto alla partenza. Questo è anche il motivo per cui i pacchetti sono numerati. Di Più, i pacchetti vengono riconosciuti uno a uno separatamente (2) dal destinatario, ma a volte i pacchetti possono essere persi. Quindi nessun ACK verrà restituito dalla destinazione del pacchetto all'emettitore. Quindi l'emettitore dovrebbe rinviarlo (che è anche il ruolo di TCP). A volte il pacchetto viene ricevuto correttamente ma la ricezione non viene ricevuta dall'emettitore (pacchetto perso di nuovo). In tal caso, l'emettitore lo rinvia, ma il destinatario vede che lo ha già ricevuto (che è un pacchetto Dup) e lo elimina ma invia nuovamente l'cker al mittente.

Inoltre, per migliorare la produttività, l'emettitore può inviare diversi pacchetti in serie e non è necessario attendere che il pacchetto precedente invii il pacchetto successivo. Fa anche parte del protocollo TCP e si chiama finestre scorrevoli. Il numero di pacchetti inviati in sospeso per un ack è limitato.

(1) In realtà, non vi è alcuna negoziazione, ogni punto finale indica la dimensione massima che è in grado di affrontare. Questo valore non include i 20 byte dell'intestazione IP, né i 20 byte dell'intestazione TCP. (2) diversi pacchetti possono anche essere riconosciuti da un singolo ACK.

Tieni presente che i datagrammi sono dati incapsulati inviati su una rete IP o che utilizzano un protocollo senza connessione come UDP. I pacchetti sono dati incapsulati per un protocollo orientato alla connessione come TCP. I segmenti sono parti di un flusso di dati inviato su TCP. Vedi W.Richard Stevens "TCP / IP illustrato" per avere una spiegazione molto migliore di tutto ciò.


0

Un segmento TCP È un pacchetto. Un segmento è solo una parte di un flusso di connessione TCP tra due computer. Un datagramma è un "pacchetto" in termini UDP.


0

Un pacchetto IP è costituito da un'intestazione IP con dati allegati. I dati sono un'intestazione TCP e un segmento di dati dell'applicazione, chiamato Segmento TCP. Il segmento TCP è quello che di solito si chiama un pacchetto TCP.


0

Il termine "generico" per cose come questa è Protocol Data Unit o 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

Le cose si confondono con protocolli specifici dal livello 4 in poi (per esempio, fino ad oggi non conosco nulla che sia puramente un protocollo di sessione e in realtà non esiste un protocollo di "presentazione" comune ma è decisamente un livello quasi separato in molti stack di software / comunicazione).

Inoltre, come accennato in precedenza, ognuna di queste PDU ha un'intestazione distinta dal suo payload o dati. L'intestazione contiene informazioni sui dati e possibilmente un checksum per la verifica sull'altra estremità.


il lavoro TPDU non viene utilizzato invece sui livelli superiori? vedi books.google.de/books?id=daqV_KzkoSIC&pg=PA147
Janus Troelsen
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.