Protocollo datagramma utente
| protocollo datagramma utente | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Famiglia | Famiglia di protocolli Internet | |||||||||
| Funzione | Scambio di datagrammi su una rete. | |||||||||
| Posizione nello stack del protocollo | ||||||||||
| ||||||||||
| standard | ||||||||||
| RFC768 ( 1980 ) | ||||||||||
Il protocollo user datagram (in inglese: User Datagram Protocol o UDP ) è un protocollo di livello di trasporto (incapsulato tra il livello di rete e il livello applicativo del modello OSI ) basato sulla trasmissione senza connessione di datagrammi e rappresenta un'alternativa al protocollo TCP ( Protocollo di controllo della trasmissione). Questo protocollo consente di inviare rapidamente i datagrammi su reti IP senza stabilire prima una connessione, dato che il datagramma stesso incorpora abbastanza informazioni sul destinatario nella sua intestazione [ 1 ] . Inoltre non ha conferma o controllo del flusso, quindi i pacchetti possono anticiparsi a vicenda; e non si sa se sia arrivato correttamente, poiché non c'è conferma di consegna o ricezione. Il suo utilizzo principale è per protocolli come DHCP , BOOTP , DNS e altri protocolli in cui lo scambio di pacchetti di connessione/disconnessione è maggiore, o non redditizio rispetto alle informazioni trasmesse, nonché per la trasmissione di audio e video in in tempo reale, laddove non sia possibile effettuare ritrasmissioni a causa dei severi requisiti di ritardo in questi casi.
Descrizione tecnica
User Datagram Protocol (UDP) è un protocollo di livello di trasporto orientato ai messaggi minimo documentato in IETF RFC 768 .
Nella famiglia di protocolli Internet, UDP fornisce una semplice interfaccia tra il livello di rete e il livello dell'applicazione . UDP non fornisce garanzie per la consegna dei suoi messaggi (quindi in realtà non dovrebbe essere al livello 4) e l'origine UDP non mantiene gli stati dei messaggi UDP che sono stati inviati alla rete. UDP aggiunge solo il multiplexing dell'applicazione e il checksum dell'intestazione e del payload . Qualsiasi tipo di garanzia per la trasmissione delle informazioni deve essere implementata a livelli superiori.
| bit | 0 - 15 | 16 - 31 | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | porta di origine | porto di destinazione | ||||||||||||||||||||||||||||||
| 32 | Lunghezza del messaggio | somma di controllo | ||||||||||||||||||||||||||||||
| 64 | Dati | |||||||||||||||||||||||||||||||
L'intestazione UDP è composta da 4 campi, di cui 2 opzionali (con sfondo rosso nella tabella). I campi della porta di origine e di destinazione sono campi a 16 bit che identificano il processo di invio e ricezione. Poiché UDP non dispone di un server di stato e l'origine UDP non richiede risposte, la porta di origine è facoltativa. Se non viene utilizzata, la porta di origine deve essere impostata su zero. I campi della porta di destinazione sono seguiti da un campo obbligatorio che indica la dimensione in byte del datagramma UDP inclusi i dati. Il valore minimo è 8 byte. Il campo di intestazione rimanente è un checksum a 16 bit che comprende una pseudo-intestazione IP (con gli IP di origine e destinazione, il protocollo e la lunghezza del pacchetto UDP), l'intestazione UDP, i dati e gli 0 fino a completare un multiplo di 16 Il checksum è facoltativo anche in IPv4, sebbene sia generalmente utilizzato nella pratica (in IPv6 il suo utilizzo è obbligatorio). Di seguito sono riportati i campi per il calcolo del checksum in IPv4, la pseudo-intestazione IP contrassegnata in rosso.
| bit | 0 – 7 | 8 – 15 | 16 – 23 | 24 – 31 | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Indirizzo di origine | |||||||||||||||||||||||||||||||
| 32 | Indirizzo di destinazione | |||||||||||||||||||||||||||||||
| 64 | Zero | Protocollo | Lunghezza UDP | |||||||||||||||||||||||||||||
| 96 | Porto di origine | Porto di destinazione | ||||||||||||||||||||||||||||||
| 128 | Lunghezza del messaggio | somma di controllo | ||||||||||||||||||||||||||||||
| 160 | Dati | |||||||||||||||||||||||||||||||
Il protocollo UDP viene utilizzato, ad esempio, quando è necessario trasmettere voce o video ed è più importante trasmettere con velocità che garantire che arrivino assolutamente tutti i byte.
Porti
UDP utilizza le porte per consentire la comunicazione tra le applicazioni. Il campo della porta è lungo 16 bit, quindi l'intervallo di valori validi è compreso tra 0 e 65.535. La porta 0 è riservata, ma è un valore consentito come porta di origine se il processo di invio non prevede di ricevere messaggi in risposta.
Le porte da 1 a 1023 sono chiamate porte "famose" e su sistemi operativi simili a Unix il collegamento a una di queste porte richiede l'accesso come root.
Le porte da 1024 a 49151 sono porte registrate.
Le porte da 49152 a 65535 sono porte dinamiche e vengono utilizzate come porte temporanee, principalmente dai client durante la comunicazione con i server.
Utilizzare nelle applicazioni
La maggior parte delle principali applicazioni Internet utilizzano il protocollo UDP, tra cui: il Domain Name System, in cui le query devono essere veloci e conteranno solo da una singola richiesta, dopo un singolo pacchetto di risposta, il Network Management Protocol, il Routing Information Protocol (RIP) e Dynamic Protocollo di configurazione dell'host :)
Caratteristiche principali
Le caratteristiche principali di questo protocollo sono:
- Funziona offline, ovvero non utilizza alcuna sincronizzazione tra l'origine e la destinazione.
- Funziona con interi pacchetti o datagrammi, non singoli byte come TCP. Un'applicazione che utilizza il protocollo UDP scambia informazioni sotto forma di blocchi di byte, in modo che per ogni blocco di byte inviato dal livello dell'applicazione al livello di trasporto, venga inviato un pacchetto UDP.
- Non affidabile. Non utilizza il controllo del flusso o l'ordinamento dei pacchetti.
- Il suo grande vantaggio è che provoca poco carico aggiuntivo sulla rete, poiché è semplice e utilizza intestazioni molto semplici.
Confronto tra UDP e TCP ( Transmission Control Protocol )
- UDP: fornisce un livello di trasporto inaffidabile per i datagrammi , poiché aggiunge poche informazioni necessarie per la comunicazione end-to-end al pacchetto che invia al livello inferiore. Viene utilizzato da applicazioni come NFS ( Network File System ) e RCP (comando per copiare file tra computer remoti), ma soprattutto viene utilizzato in compiti di controllo e nella trasmissione di audio e video in rete. Non introduce ritardi nello stabilire una connessione, non mantiene alcuno stato di connessione e non tiene traccia di questi parametri. Pertanto, un server dedicato a una particolare applicazione può supportare client più attivi quando l'applicazione viene eseguita su UDP anziché su TCP.
- TCP: è il protocollo che fornisce un trasporto affidabile di flussi di bit tra le applicazioni . È progettato per poter inviare grandi quantità di informazioni in modo affidabile, liberando il programmatore dalla difficoltà di gestire l'affidabilità della connessione (ritrasmissioni, perdita di pacchetti, ordine di arrivo dei pacchetti, duplicati di pacchetti...) che gestisce. il protocollo stesso. Ma la complessità della gestione dell'affidabilità ha un costo in termini di efficienza, poiché per eseguire i passaggi precedenti è necessario aggiungere molte informazioni ai pacchetti da inviare. A causa del fatto che i pacchetti da inviare hanno una dimensione massima, più informazioni il protocollo aggiunge per la sua gestione, meno informazioni provengono dall'applicazione che il pacchetto può contenere (il segmento TCP ha un sovraccarico di 20 byte in ogni segmento, mentre UDP aggiunge solo 8 byte). Quindi, quando la velocità è più importante dell'affidabilità, viene utilizzato UDP. TCP garantisce invece la ricezione a destinazione delle informazioni da trasmettere .
Trasmissione video e vocale
UDP è generalmente il protocollo utilizzato nella trasmissione di video e voce su una rete. Questo perché non c'è tempo per inviare nuovamente i pacchetti persi quando si ascolta qualcuno o si guarda un video in tempo reale.
Poiché sia TCP che UDP circolano sulla stessa rete, in molti casi accade che l'aumento del traffico UDP danneggi il corretto funzionamento delle applicazioni TCP. Per impostazione predefinita, il protocollo TCP è in secondo piano per consentire ai dati in tempo reale di utilizzare la maggior parte della larghezza di banda. Il problema è che entrambi sono importanti per la maggior parte delle applicazioni, quindi trovare l'equilibrio tra i due è fondamentale.
Tutti questi tipi di protocolli sono utilizzati in telematica.
Vedi anche
Collegamenti esterni
(in inglese)
- RFC768
- Incarichi portuali IANA
- Il problema con la scansione UDP (PDF)
- Rottura del frame UDP
- UDP su socket per riviste MSDN e WCF
- Esempio di client e server UDP Node.js
Riferimenti
- ↑ "UDP: cos'è il protocollo UDP?" . IONOS Guida digitale . Estratto il 30 marzo 2022 .