Oggi inizieremo concentrandoci sul TCP. In precedenza, nel capitolo sulla stratificazione, abbiamo accennato a un punto importante. A livello di rete e sotto, si parla più di connessioni host-host, il che significa che un computer deve sapere dove si trova un altro computer per potersi connettere. Tuttavia, la comunicazione in una rete è spesso comunicazione tra processi piuttosto che tra macchine. Pertanto, il protocollo TCP introduce il concetto di porta. Una porta può essere occupata da un solo processo, il che fornisce una comunicazione diretta tra processi applicativi in esecuzione su host diversi.
Il compito del livello di trasporto è fornire servizi di comunicazione diretta tra processi applicativi in esecuzione su host diversi, motivo per cui è anche noto come protocollo end-to-end. Il livello di trasporto nasconde i dettagli fondamentali della rete, consentendo al processo applicativo di percepire l'esistenza di un canale di comunicazione logico end-to-end tra le due entità del livello di trasporto.
TCP sta per Transmission Control Protocol ed è noto come protocollo orientato alla connessione. Ciò significa che prima che un'applicazione possa iniziare a inviare dati all'altra, i due processi devono effettuare un handshake. L'handshake è un processo logicamente connesso che garantisce una trasmissione affidabile e una ricezione ordinata dei dati. Durante l'handshake, viene stabilita una connessione tra gli host di origine e di destinazione scambiando una serie di pacchetti di controllo e concordando alcuni parametri e regole per garantire la corretta trasmissione dei dati.
Che cosa è il TCP? (Mylinking'sRubinetto di reteEBroker di pacchetti di retepotrebbe elaborare sia pacchetti TCP che UDP)
TCP (Transmission Control Protocol) è un protocollo di comunicazione a livello di trasporto, orientato alla connessione, affidabile e basato sul flusso di byte.
Orientato alla connessione: Orientato alla connessione significa che la comunicazione TCP è uno-a-uno, vale a dire una comunicazione punto-punto end-to-end, a differenza di UDP, che può inviare messaggi a più host contemporaneamente, quindi non è possibile realizzare una comunicazione uno-a-molti.
Affidabile:L'affidabilità del TCP garantisce che i pacchetti vengano recapitati in modo affidabile al ricevitore indipendentemente dalle modifiche nel collegamento di rete, il che rende il formato del pacchetto del protocollo TCP più complesso di quello dell'UDP.
Basato su flusso di byte:La natura del TCP basata sul flusso di byte consente la trasmissione di messaggi di qualsiasi dimensione e garantisce l'ordine dei messaggi: anche se il messaggio precedente non è stato ricevuto completamente, e anche se i byte successivi sono stati ricevuti, TCP non li consegnerà al livello applicativo per l'elaborazione e scarterà automaticamente i pacchetti duplicati.
Una volta che l'host A e l'host B hanno stabilito una connessione, l'applicazione deve utilizzare la linea di comunicazione virtuale solo per inviare e ricevere dati, garantendone così la trasmissione. Il protocollo TCP è responsabile del controllo di attività come l'instaurazione, la disconnessione e il mantenimento della connessione. È importante notare che qui si usa il termine "linea virtuale" solo per stabilire una connessione, mentre "connessione" nel protocollo TCP indica solo che le due parti possono avviare la trasmissione dei dati e per garantirne l'affidabilità. I nodi di routing e trasporto sono gestiti dai dispositivi di rete; il protocollo TCP non si occupa di questi dettagli.
Una connessione TCP è un servizio full-duplex, il che significa che l'host A e l'host B possono trasmettere dati in entrambe le direzioni in una connessione TCP. In altre parole, i dati possono essere trasferiti tra l'host A e l'host B in un flusso bidirezionale.
TCP memorizza temporaneamente i dati nel buffer di invio della connessione. Questo buffer di invio è una delle cache create durante l'handshake a tre vie. Successivamente, TCP invierà i dati nella cache di invio alla cache di ricezione dell'host di destinazione al momento opportuno. In pratica, ogni peer avrà una cache di invio e una cache di ricezione, come mostrato di seguito:
Il buffer di invio è un'area di memoria gestita dall'implementazione TCP sul lato mittente, utilizzata per memorizzare temporaneamente i dati da inviare. Quando viene eseguito l'handshake a tre vie per stabilire una connessione, la cache di invio viene impostata e utilizzata per memorizzare i dati. Il buffer di invio viene regolato dinamicamente in base alla congestione della rete e al feedback del destinatario.
Un buffer di ricezione è un'area di memoria gestita dall'implementazione TCP sul lato ricevente, utilizzata per memorizzare temporaneamente i dati ricevuti. TCP memorizza i dati ricevuti nella cache di ricezione e attende che l'applicazione superiore li legga.
Si noti che la dimensione della cache di invio e di ricezione è limitata; quando la cache è piena, TCP può adottare alcune strategie, come il controllo della congestione, il controllo del flusso, ecc., per garantire una trasmissione affidabile dei dati e la stabilità della rete.
Nelle reti informatiche, la trasmissione di dati tra host avviene tramite segmenti. Cos'è un segmento di pacchetto?
TCP crea un segmento TCP, o segmento di pacchetto, suddividendo il flusso in ingresso in blocchi e aggiungendo intestazioni TCP a ciascun blocco. Ogni segmento può essere trasmesso solo per un periodo di tempo limitato e non può superare la dimensione massima del segmento (MSS). Durante la discesa, un segmento di pacchetto attraversa il livello di collegamento. Il livello di collegamento ha una Maximum Transmission Unit (MTU), che rappresenta la dimensione massima del pacchetto che può attraversare il livello di collegamento dati. La massima unità di trasmissione è solitamente correlata all'interfaccia di comunicazione.
Qual è dunque la differenza tra MSS e MTU?
Nelle reti di computer, l'architettura gerarchica è molto importante perché tiene conto delle differenze tra i diversi livelli. Ogni livello ha un nome diverso; nel livello di trasporto, i dati sono chiamati segmento, mentre nel livello di rete, i dati sono chiamati pacchetto IP. Pertanto, la Maximum Transmission Unit (MTU) può essere considerata come la dimensione massima del pacchetto IP che può essere trasmessa dal livello di rete, mentre la Maximum Segment Size (MSS) è un concetto del livello di trasporto che si riferisce alla quantità massima di dati che può essere trasmessa da un pacchetto TCP alla volta.
Si noti che quando la dimensione massima del segmento (MSS) è maggiore della massima unità di trasmissione (MTU), la frammentazione IP verrà eseguita a livello di rete e TCP non suddividerà i dati più grandi in segmenti adatti alla dimensione MTU. A livello di rete sarà presente una sezione dedicata al livello IP.
Struttura del segmento del pacchetto TCP
Esploriamo il formato e il contenuto delle intestazioni TCP.
Numero di sequenza: Un numero casuale generato dal computer quando viene stabilita la connessione come valore iniziale quando viene stabilita la connessione TCP, e il numero di sequenza viene inviato al ricevitore tramite il pacchetto SYN. Durante la trasmissione dei dati, il mittente incrementa il numero di sequenza in base alla quantità di dati inviati. Il ricevitore valuta l'ordine dei dati in base al numero di sequenza ricevuto. Se i dati vengono rilevati fuori ordine, il ricevitore li riordinerà per garantirne l'ordine.
Numero di conferma: Questo è un numero di sequenza utilizzato in TCP per confermare la ricezione dei dati. Indica il numero di sequenza dei dati successivi che il mittente si aspetta di ricevere. In una connessione TCP, il ricevitore determina quali dati sono stati ricevuti correttamente in base al numero di sequenza del segmento del pacchetto dati ricevuto. Quando il ricevitore riceve correttamente i dati, invia un pacchetto ACK al mittente, contenente il numero di conferma. Dopo aver ricevuto il pacchetto ACK, il mittente può confermare che i dati, prima di confermare il numero di risposta, sono stati ricevuti correttamente.
I bit di controllo di un segmento TCP includono quanto segue:
Bit ACK: Quando questo bit è 1, significa che il campo di risposta di conferma è valido. TCP specifica che questo bit deve essere impostato a 1, tranne che per i pacchetti SYN quando la connessione viene inizialmente stabilita.
Pezzo RST: Quando questo bit è 1, indica che si è verificata un'eccezione nella connessione TCP ed è necessario forzare la disconnessione della connessione.
bit SYN: Quando questo bit è impostato su 1, significa che la connessione deve essere stabilita e il valore iniziale del numero di sequenza è impostato nel campo del numero di sequenza.
FIN bit: Quando questo bit è 1, significa che in futuro non verranno inviati altri dati e la connessione è desiderata.
Le varie funzioni e caratteristiche del TCP sono rappresentate dalla struttura dei segmenti dei pacchetti TCP.
Che cosa è UDP? (Mylinking'sRubinetto di reteEBroker di pacchetti di retepotrebbe elaborare sia pacchetti TCP che UDP)
User Datagram Protocol (UDP) è un protocollo di comunicazione senza connessione. Rispetto a TCP, UDP non fornisce meccanismi di controllo complessi. Il protocollo UDP consente alle applicazioni di inviare direttamente pacchetti IP incapsulati senza stabilire una connessione. Quando lo sviluppatore sceglie di utilizzare UDP anziché TCP, l'applicazione comunica direttamente con l'IP.
Il nome completo del protocollo UDP è User Datagram Protocol (UDP), e la sua intestazione è composta da soli otto byte (64 bit), il che la rende molto concisa. Il formato dell'intestazione UDP è il seguente:
Porte di destinazione e di origine: Il loro scopo principale è indicare a quale processo UDP deve inviare i pacchetti.
dimensione del pacchetto: Il campo dimensione pacchetto contiene la dimensione dell'intestazione UDP più la dimensione dei dati
Somma di controllo: Progettato per garantire la consegna affidabile di intestazioni e dati UDP. Il ruolo del checksum è quello di rilevare se si è verificato un errore o un danneggiamento durante la trasmissione di un pacchetto UDP per garantire l'integrità dei dati.
Differenze tra TCP e UDP in MylinkingRubinetto di reteEBroker di pacchetti di retepotrebbe elaborare sia pacchetti TCP che UDP
TCP e UDP differiscono nei seguenti aspetti:
Connessione: TCP è un protocollo di trasporto orientato alla connessione che richiede che venga stabilita una connessione prima che i dati possano essere trasferiti. UDP, invece, non richiede una connessione e può trasferire i dati immediatamente.
Oggetto di servizio: TCP è un servizio uno-a-uno a due punti, ovvero una connessione ha solo due endpoint per comunicare tra loro. Tuttavia, UDP supporta comunicazioni interattive uno-a-uno, uno-a-molti e molti-a-molti, che possono comunicare con più host contemporaneamente.
Affidabilità: TCP fornisce il servizio di trasmissione dati in modo affidabile, garantendo che i dati siano privi di errori, perdite, non duplicati e arrivino su richiesta. UDP, d'altra parte, fa del suo meglio e non garantisce una trasmissione affidabile. UDP può subire perdite di dati e altre situazioni durante la trasmissione.
Controllo della congestione, controllo del flusso: TCP dispone di meccanismi di controllo della congestione e di controllo del flusso, che possono regolare la velocità di trasmissione dei dati in base alle condizioni della rete per garantire la sicurezza e la stabilità della trasmissione. UDP non dispone di meccanismi di controllo della congestione e di controllo del flusso; anche se la rete è molto congestionata, non modificherà la velocità di invio UDP.
Intestazione in alto: TCP ha un'intestazione lunga, in genere 20 byte, che aumenta quando vengono utilizzati campi opzionali. UDP, d'altra parte, ha un'intestazione fissa di soli 8 byte, quindi UDP ha un overhead di intestazione inferiore.
Scenari applicativi TCP e UDP:
TCP e UDP sono due protocolli di livello trasporto diversi e presentano alcune differenze negli scenari applicativi.
Poiché TCP è un protocollo orientato alla connessione, viene utilizzato principalmente in scenari in cui è richiesta una trasmissione affidabile dei dati. Alcuni casi d'uso comuni includono:
Trasferimento file FTP: TCP può garantire che i file non vengano persi o danneggiati durante il trasferimento.
HTTP/HTTPS: TCP garantisce l'integrità e la correttezza del contenuto web.
Poiché UDP è un protocollo senza connessione, non offre garanzie di affidabilità, ma presenta le caratteristiche di efficienza e tempo reale. UDP è adatto ai seguenti scenari:
Traffico a basso numero di pacchetti, come DNS (Domain Name System): Le query DNS sono solitamente pacchetti brevi e UDP può completarle più velocemente.
Comunicazione multimediale come video e audio:Per la trasmissione multimediale con elevati requisiti in tempo reale, UDP può fornire una latenza inferiore per garantire che i dati vengano trasmessi in modo tempestivo.
Comunicazione broadcast: UDP supporta la comunicazione uno-a-molti e molti-a-molti e può essere utilizzato per la trasmissione di messaggi broadcast.
Riepilogo
Oggi abbiamo parlato di TCP. TCP è un protocollo di comunicazione a livello di trasporto orientato alla connessione, affidabile e basato su flussi di byte. Garantisce la trasmissione affidabile e la ricezione ordinata dei dati stabilendo connessioni, handshake e conferma di ricezione. Il protocollo TCP utilizza le porte per realizzare la comunicazione tra i processi e fornisce servizi di comunicazione diretta per i processi applicativi in esecuzione su host diversi. Le connessioni TCP sono full-duplex, consentendo trasferimenti di dati bidirezionali simultanei. Al contrario, UDP è un protocollo di comunicazione orientato alla connessione, che non fornisce garanzie di affidabilità ed è adatto ad alcuni scenari con elevati requisiti in tempo reale. TCP e UDP differiscono per modalità di connessione, oggetto del servizio, affidabilità, controllo della congestione, controllo del flusso e altri aspetti, e anche i loro scenari applicativi sono diversi.
Data di pubblicazione: 03-12-2024