Oggi inizieremo concentrandoci sul protocollo TCP. All'inizio del capitolo sulla stratificazione, abbiamo menzionato un punto importante. Al livello di rete e ai livelli inferiori, si tratta principalmente di connessioni host-to-host, il che significa che un computer deve sapere dove si trova un altro computer per potersi connettere ad esso. Tuttavia, la comunicazione in una rete è spesso una 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 consente la comunicazione diretta tra processi applicativi in esecuzione su host diversi.
Il compito del livello di trasporto è quello di fornire servizi di comunicazione diretta tra i processi applicativi in esecuzione su host diversi, pertanto è anche noto come protocollo end-to-end. Il livello di trasporto nasconde i dettagli principali della rete, consentendo al processo applicativo di percepire come se esistesse un canale di comunicazione end-to-end logico 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 a un'altra, i due processi devono eseguire 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 attraverso lo scambio di una serie di pacchetti di controllo e la definizione di alcuni parametri e regole per garantire una trasmissione dei dati efficace.
Che cos'è il TCP? (Mylinking'sIntercettazione di reteEBroker di pacchetti di retein grado di elaborare pacchetti TCP o UDP)
TCP (Transmission Control Protocol) è un protocollo di comunicazione a livello di trasporto orientato alla connessione, affidabile e basato su flussi di byte.
orientato alla connessione: Orientato alla connessione significa che la comunicazione TCP è uno a uno, ovvero una comunicazione end-to-end punto a punto, a differenza di UDP, che può inviare messaggi a più host contemporaneamente, quindi non è possibile realizzare una comunicazione uno a molti.
AffidabileL'affidabilità del TCP garantisce che i pacchetti vengano consegnati in modo affidabile al destinatario indipendentemente dalle variazioni del collegamento di rete, il che rende il formato dei pacchetti del protocollo TCP più complesso di quello dell'UDP.
Basato su flusso di byteLa natura basata su flussi di byte del TCP 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, il TCP non li consegnerà al livello applicativo per l'elaborazione e scarterà automaticamente i pacchetti duplicati.
Una volta stabilita la connessione tra l'host A e l'host B, l'applicazione deve semplicemente utilizzare la linea di comunicazione virtuale per inviare e ricevere dati, garantendo così la trasmissione. Il protocollo TCP è responsabile del controllo di attività quali la creazione, la disconnessione e il mantenimento della connessione. È importante sottolineare che, in questo contesto, la linea virtuale serve solo a stabilire una connessione, mentre la connessione TCP indica semplicemente che le due parti possono avviare la trasmissione dei dati e ne garantisce l'affidabilità. I nodi di routing e trasporto sono gestiti dai dispositivi di rete; il protocollo TCP in sé 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 altre parole, i dati possono essere trasferiti tra l'host A e l'host B in un flusso bidirezionale.
Il protocollo TCP memorizza temporaneamente i dati nel buffer di invio della connessione. Questo buffer di invio è una delle cache configurate durante l'handshake a tre vie. Successivamente, TCP invierà i dati presenti nella cache di invio alla cache di ricezione dell'host di destinazione al momento opportuno. In pratica, ogni peer disporrà di una cache di invio e di una cache di ricezione, come mostrato qui:
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, viene creata la cache di invio e utilizzata per memorizzare i dati. Il buffer di invio viene regolato dinamicamente in base alla congestione della rete e al feedback del ricevitore.
Il 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 a monte li legga.
Si noti che le dimensioni della cache di invio e della cache di ricezione sono limitate; quando la cache è piena, TCP può adottare alcune strategie, come il controllo della congestione, il controllo del flusso, ecc., per garantire una trasmissione dati affidabile e la stabilità della rete.
Nelle reti di computer, la trasmissione dei dati tra gli host avviene tramite segmenti. Ma cos'è esattamente un segmento di pacchetto?
Il protocollo 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 il suo percorso, un segmento di pacchetto attraversa il livello di collegamento. Il livello di collegamento ha un'unità di trasmissione massima (MTU), che rappresenta la dimensione massima del pacchetto che può attraversare il livello di collegamento dati. L'unità di trasmissione massima è 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 vari livelli. Ogni livello ha un nome diverso; nel livello di trasporto, i dati sono chiamati segmenti, mentre nel livello di rete sono chiamati pacchetti IP. Pertanto, la Maximum Transmission Unit (MTU) può essere considerata come la dimensione massima di un 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 in una sola volta.
Si noti che quando la dimensione massima del segmento (MSS) è maggiore della dimensione massima dell'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 dell'MTU. Ci sarà una sezione a livello di rete dedicata al livello IP.
struttura del segmento del pacchetto TCP
Analizziamo il formato e il contenuto delle intestazioni TCP.
Numero di sequenzaIl numero di sequenza (SYN) è un numero casuale generato dal computer all'avvio della connessione TCP e viene inviato al destinatario tramite un pacchetto SYN. Durante la trasmissione dei dati, il mittente incrementa il numero di sequenza in base alla quantità di dati inviati. Il destinatario verifica l'ordine dei dati in base al numero di sequenza ricevuto. Se i dati risultano fuori ordine, il destinatario li riordina per garantirne la correttezza.
Numero di confermaQuesto è 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 di dati ricevuto. Quando il ricevitore riceve correttamente i dati, invia un pacchetto ACK al mittente, che contiene il numero di conferma. Dopo aver ricevuto il pacchetto ACK, il mittente può confermare che i dati sono stati ricevuti correttamente prima di inviare il numero di risposta di conferma.
I bit di controllo di un segmento TCP includono i seguenti:
bit ACKQuando questo bit è impostato a 1, significa che il campo di risposta di conferma è valido. Il protocollo TCP specifica che questo bit deve essere impostato a 1, ad eccezione dei pacchetti SYN, quando la connessione viene stabilita inizialmente.
bit RSTQuando questo bit è 1, indica che si è verificata un'eccezione nella connessione TCP e che la connessione deve essere forzatamente disconnessa.
bit SYNQuando questo bit è impostato su 1, significa che la connessione deve essere stabilita e il valore iniziale del numero di sequenza viene impostato nel campo del numero di sequenza.
bit FINQuando questo bit è 1, significa che non verranno inviati ulteriori dati in futuro e che la connessione è desiderata.
Le diverse funzioni e caratteristiche del protocollo TCP sono racchiuse nella struttura dei segmenti di pacchetto TCP.
Che cos'è UDP? (Mylinking'sIntercettazione di reteEBroker di pacchetti di rete(in grado di elaborare pacchetti TCP o UDP)
Il User Datagram Protocol (UDP) è un protocollo di comunicazione senza connessione. Rispetto al TCP, l'UDP non offre complessi meccanismi di controllo. 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 e la sua intestazione è composta da soli otto byte (64 bit), il che la rende molto concisa. Il formato dell'intestazione UDP è il seguente:
Porti di destinazione e di origineIl loro scopo principale è indicare a quale processo UDP deve inviare i pacchetti.
Dimensioni della confezione: Il campo dimensione pacchetto contiene la dimensione dell'intestazione UDP più la dimensione dei dati
ChecksumProgettato per garantire la consegna affidabile delle intestazioni e dei dati UDP, il checksum ha il compito di rilevare eventuali errori o corruzioni durante la trasmissione di un pacchetto UDP, al fine di garantirne l'integrità.
Differenze tra TCP e UDP in MylinkingIntercettazione di reteEBroker di pacchetti di retein grado di elaborare pacchetti TCP o UDP
TCP e UDP differiscono per i seguenti aspetti:
ConnessioneTCP è un protocollo di trasporto orientato alla connessione che richiede la creazione di una connessione prima che i dati possano essere trasferiti. UDP, d'altro canto, non richiede una connessione e può trasferire i dati immediatamente.
Oggetto di servizioTCP è un servizio uno a uno a due punti, ovvero una connessione prevede solo due endpoint che comunicano tra loro. UDP, invece, supporta la comunicazione interattiva uno a uno, uno a molti e molti a molti, consentendo la comunicazione simultanea con più host.
AffidabilitàIl protocollo TCP garantisce la consegna affidabile dei dati, assicurando che siano privi di errori, perdite, duplicati e che arrivino a destinazione al momento della richiesta. Il protocollo UDP, al contrario, pur impegnandosi al massimo, non garantisce una consegna affidabile. Durante la trasmissione, UDP può essere soggetto a perdita di dati e ad altri problemi.
Controllo della congestione, controllo del flussoIl protocollo TCP dispone di meccanismi di controllo della congestione e di controllo del flusso, che consentono di regolare la velocità di trasmissione dei dati in base alle condizioni della rete, garantendo così la sicurezza e la stabilità della trasmissione. Il protocollo UDP, invece, non possiede tali meccanismi; pertanto, anche in caso di forte congestione della rete, non regola la velocità di invio dei dati.
IntestazioneIl protocollo TCP ha un'intestazione di grandi dimensioni, in genere di 20 byte, che aumenta quando vengono utilizzati i campi di opzione. Il protocollo UDP, d'altro canto, ha un'intestazione fissa di soli 8 byte, pertanto presenta un overhead di intestazione inferiore.

Scenari applicativi TCP e UDP:
TCP e UDP sono due protocolli di livello di trasporto differenti, che presentano alcune differenze negli scenari di applicazione.
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 FTPIl protocollo TCP garantisce che i file non vengano persi o danneggiati durante il trasferimento.
HTTP/HTTPSIl protocollo TCP garantisce l'integrità e la correttezza dei contenuti web.
Essendo un protocollo senza connessione, UDP non offre garanzie di affidabilità, ma si distingue per efficienza e velocità in tempo reale. UDP è adatto ai seguenti scenari:
Traffico a basso numero di pacchetti, come il DNS (Domain Name System)Le query DNS sono generalmente pacchetti di piccole dimensioni e il protocollo UDP può completarle più rapidamente.
Comunicazione multimediale come video e audioPer la trasmissione multimediale con elevati requisiti di tempo reale, UDP può fornire una latenza inferiore, garantendo che i dati vengano trasmessi tempestivamente.
Comunicazione radiotelevisivaIl protocollo 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 attraverso la creazione di connessioni, l'handshake e la 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 senza connessione, che non offre garanzie di affidabilità ed è adatto ad alcuni scenari con elevati requisiti in tempo reale. TCP e UDP differiscono per modalità di connessione, oggetto di servizio, affidabilità, controllo della congestione, controllo del flusso e altri aspetti, e anche i loro scenari di applicazione sono diversi.
Data di pubblicazione: 3 dicembre 2024



