Internet, IP, TCP, UDP #2, Protocollo UDP/IP

« Older   Newer »
  Share  
CAT_IMG Posted on 21/2/2012, 12:27     +5   +1   -1

So implementare gli object

Group:
Admin
Posts:
1,215
Reputazione:
+150

Status:


Rieccomi con il secondo episodio di Internet, IP, TCP, UDP!

In questa puntata capiremo come funziona il protocollo UDP.
Innanzi tutto bisogna dire che è un protocollo a livello software. E ora vi spiego cosa significa :D

Un protocollo software è un protocollo implementato nel sistema operativo piuttosto che in una scheda di rete: se la vostra scehda di rete sa cos'è il protocollo IP, non sa cos'è il protocollo UDP.
Ques'ultimo non è altro che una serie di specifiche implementate nello stesso modo in ogni sistema operativo!

Se è unificato il modo di instaurare una connessione (IP), allora deve essere unificato il modo di comunicare (UDP, TCP, ICMP), altrimenti Windows non potrebbe comunicare con Mac OS X o con Linux anche se tutti e tre conoscono il protocollo IP.

Un po' come gli umani: tutti parlano con la bocca ma fino a che parlano lingue diverse non si può comunicare. Le corde vocali e le orecchie sono l'IP, la lingua (intesa come idioma, non come parte del corpo) è il protocollo a livello di software.

Se vogliamo essere più precisi, queste "lingue" andrebbero chiamate protocolli a livello di trasporto, ossia sono il modo in cui le informazioni viaggiano proprio a livello di bit.

Prima di spiegare come è strutturato il protocollo UDP vorrei fare un'ultima precisazione: c'è un altro modo di comunicare, senza seguire protocollo UDP o TCP o altro, ma inviando direttamente la sequenza di byte che si vuole mandare. Sono i RAW Sockets, il vantaggio è che per le soluzioni di sicurezza sono quelli più difficili da intercettare e soprattutto capire (non c'è niente con cui riconoscerli, come invece accade come vedremo per i pacchetti UDP o TCP), ma hanno lo svantaggio... di non avere i vantaggi dei protocolli più comuni (soprattutto TCP): l'affidabilità.

Ora passiamo alla vera e propria spiegazione.

Partiamo con un esempio: voglio mandare via UDP a 43.56.102.75 sulla porta 22345 la seguente sequenza di 4 interi a 8 bit (totale 4 byte)
CODICE
67 105 97 111

(che non sono altro che i caratteri ASCII "C", "i", "a", "o")

Tramite il complicato percorso che abbiamo visto ieri il pacchetto arriva (forse, dato che il protocollo UDP non garantisce né che i pacchetti arrivino nell'ordine giusto né che arrivino asd) a destinazione.
Vediamo com'è strutturato:

udp-hdr

Abbiamo 16 + 16 + 16 + 16 bit (64 bit, 8 byte) di header in cui è contenuta la porta di provenienza (opzionale!), la porta di destinazione (in modo che il sistema operativo possa consegnare il pacchetto al programma in ascolto su quella porta), la lunghezza del messaggio (in byte, compresi gli 8 byte dell'header), e il checksum di controllo dell'integrità (anche questo opzionale, tranne se usiamo la versione sei dell'IP, meglio conosciuto come IPv6).
Poi ci vanno i dati.

Quindi il nostro pacchetto finito sarà così (tralasciando porta di provenienza e checksum per semplicità):

[per facilitare la lettura sono andato a capo ogni 16 bit e ho lasciato uno spazio ogni 4 bit]

0000 0000 0000 0000 -> 0, source port
0101 0111 0100 1001 -> 22345, destination port
0000 0000 0000 1100 -> 12, lunghezza
0000 0000 0000 0000 -> 0, checksum
0100 0011 0110 1001 -> C, i
0110 0001 0110 1111 -> a, o

* DA FINIRE *

Il sistema operativo, ricevuti questi dati, li consegna al programma in ascolto sulla porta 22345 o semplicemente li scarta se nessuno è in ascolto su quella porta.

Per fare la stessa cosa con un pacchetto TCP ci sarebbe voluto più tempo e il pacchetto sarebbe stato più grande, ma con TCP si ha la sicurezza che tutto andrà bene, che tutto prima o poi arriverà se c'è un modo per farlo arrivare (cioè se in quel momento le due macchine sono accese e collegate in rete), e che arriverà in ordine.

Per questo UDP va bene in quei campi in cui se si perde un pacchetto ogni tanto l'errore viene compensato dai pacchetti successivi (giochi online, streaming audio/video...) mentre TCP va bene dove hai bisogno di assoluta affidabilità (invio di comandi, testo, file).

Per ora è tutto!

Come al solito, criticate, ditemi le vostre opinioni, ditemi se vi interessa approfondire qualcosa o se una parte non è chiara o troppo complicata!

Grazie.

Edited by ‡ (dd) - 22/1/2013, 12:56
 
Top
LoGiX
CAT_IMG Posted on 21/2/2012, 16:07     +1   -1




Ottima! :D
 
Top
I.Ren
CAT_IMG Posted on 21/2/2012, 18:05     +1   -1




Buona.

Ma il tcp lo spieghi in un'altra parte vero? perchè sennò è decisametne da approfondire
 
Top
Doch88
CAT_IMG Posted on 21/2/2012, 18:11     +1   -1




È un po' un "Internet for Dummies" ma è spiegato bene, complimenti icon_e_smile (volevo provare 'sta emoticon asd)
 
Top
LoGiX
CAT_IMG Posted on 21/2/2012, 19:15     +1   -1




CITAZIONE (I.Ren @ 21/2/2012, 18:05) 
Buona.

Ma il tcp lo spieghi in un'altra parte vero? perchè sennò è decisametne da approfondire

Sì, nella terza parte probabilmente lo spiega.
 
Top
CAT_IMG Posted on 21/2/2012, 19:52     +2   +1   -1

So implementare gli object

Group:
Admin
Posts:
1,215
Reputazione:
+150

Status:


CITAZIONE (I.Ren @ 21/2/2012, 18:05)
Ma il tcp lo spieghi in un'altra parte vero? perchè sennò è decisametne da approfondire

|| <-- freccia verso il basso asd
V

CITAZIONE (LoGiX @ 21/2/2012, 19:15)
Sì, nella terza parte probabilmente lo spiega.

 
Top
I.Ren
CAT_IMG Posted on 21/2/2012, 21:30     +1   -1




Allora ok.
 
Top
»Master
CAT_IMG Posted on 22/2/2012, 00:09     +1   -1




ottima :D vistoche' ci sara' la parte 3 xD
 
Top
7 replies since 21/2/2012, 12:27   290 views
  Share