Protocolli di rete

L'argomento e' troppo complesso per una trattazione esauriente in questi appunti, ove ci si limita a dare alcune informazioni di base. Esistono molti buoni testi sulle reti, fra questi si raccomandano: "Internetworking with TCP/IP vol.I", di D.E.Comer (Prentice Hall) ed i libri di Andrew Tanenbaum.

Il software di rete e' fatto "a strati" (layers) ogni strato implementa funzionalita' ben precise e si interfaccia solo con gli strati immediatamente sopra e sotto. Questo permette di semplificare le interazioni fra le componenti del software e, se le interfacce fra i layers sono ben definite, di utilizzare insieme apparati ed implementazioni diverse dei protocolli.

Nel TCP/IP la comunicazione fra 2 macchine e' identificata in modo univoco da 4 numeri: 2 numeri per identificare le macchine e 2 per identificare le applicazioni che comunicano; le applicazioni sono identificate attraverso il numero della porta che usano per la connessione; la porta e' un canale di comunicazione fra applicazione e rete, identificato da un numero, in modo univoco. I numeri delle porte utilizzate dalle varie applicazioni sono in gran parte standardizzati; ad esempio la porta 80 e' quella dei server web, la 25 del servizio SMTP, che serve ad inviare posta ad un server etc. Siccome le connessioni di rete sono identificate sia dai numeri degli host che dai numeri delle porte, e' possibile avere su una macchina piu' applicativi che interagiscono con un unico server su un'altra macchina, basta che gli applicativi usino, in uscita, porte diverse.

Il TCP/IP e' sviluppato su base empirica, e la sua struttura a layers non e' ben precisa; si possono ad ogni modo distinguere 4 strati:

  1. lo strato delle applicazioni: che non e' trattato dal TCP/IP;
  2. uno strato di trasporto (TCP: transmission control protocol); il TCP definisce come i dati sono suddivisi in pacchetti e passati agli strati inferiori, come i pacchetti in arrivo sono riassemblati, come si comunica all'altra macchina che i pacchetti sono stati ricevuti e come pacchetti persi vengono ritrasmessi; specifica come si stabilisce e si termina una connessione.
    L'UDP (user datagram protocol) e' utilizzato al posto del TCP per comunicazioni brevi, che non prevedano un vero controllo della connessione, ma un semplice invio di pacchetti, senza controllo che siano giunti a destinazione;
  3. uno strato di rete (IP: internet protocol) , che specifica come i pacchetti vengono inviati a destinazione, e quindi come sono fatti gli indirizzi di rete ed il routing;
  4. uno strato fisico, che specifica come i dati sono trasmessi sul mezzo fisico; abbiamo ad esempio i protocolli ethernet, per collegare le macchine ai cavi di una rete locale (LAN), od i protocolli IEEE 802.11 per le reti wireless; questo strato non e' descritto dal TCP/IP ;
L'ICMP (internet control message protocol) serve a notificare messaggi di controllo per la rete o segnalare errori o problemi nella trasmissione dei pacchetti.

Lo strato delle applicazioni e la comunicazione fra il TCP ( o l'UDP) e le applicazioni non e' definito dal protocollo TCP/IP, tuttavia in tutti i sistemi Unix e' in uso il sistema delle Socket (sviluppato al Berkeley) che costituisce un'interfaccia abastanza standardizzata con cui le applicazioni parlano ai protocolli di rete.

Un protocollo di rete ben strutturato a livelli e' l'ISO/OSI, uno standard internazionale che costituisce un riferimento concettuale un po' per tutte le reti, ma non e' mai entrato in uso.
In questo link una breve descrizione del modello ISO/OSI.


Per effettuare la trasmissione dei dati si procede in questo modo:

Alla struttura a strati del TCP/IP corrisponde quindi una struttura "a cipolla" del pacchetto, in cui il pacchetto ethernet contiene (incapsula) un pacchetto IP, che contiene un pacchetto TCP, che a sua colta contiene i dati delle applicazioni, come e' illustrato nella figura (presa dalla wikipedia)

pacchetti e loro headersi

Il pacchetto viaggia quindi sulla LAN, in base all'indirizzo fisico, puo' poi attraversare dei routers, che "aprono" il pacchetto ethernet , eliminano l'header ethernet, esaminano i numeri IP ed in base ad essi decidono il percorso cui inviare il pacchetto in internet. Quindi aggiungono un nuovo header di livello fisico (ad esempio ethernet) adatto alla nuova destinazione del pacchetto.

Arrivato a destinazione il pacchetto segue l'iter inverso:

Ogni strato opera come se avesse un collegamento diretto con lo strato corrispondente sull'altra macchina ed ignora tutto il resto: le applicazioni ignorano tutto il marchingegno per il trasporto, come se si parlassero direttamente; il TCP non vede cosa fanno le applicazioni, ma regola solo il collegamento con l'altra macchina come se interagisse solo con lo strato TCP dell'altra macchina; lo strato IP si occupa solo che il pacchetto viaggi attraverso i routers in modo corretto e cosi' via.

Questo semplifica le interazioni fra le parti del software e permette di far lavorare insieme implementazioni diverse del software di rete.




Strato fisico


Ethernet

Per il collegamento dei computer sulle LAN si utilizza oggi quasi sempre l'ethernet, un protocollo della Xerox, sviluppato da Metcalfe negli anni 70. E' lo standard IEEE 802.3. E' un protocollo utilizzato per il collegamento di computer si piccole distanze, adatto quindi ad un ufficio od un singolo edificio.
I computer da collegare vanno provvisti di una apposita scheda (scheda ethernet), dotata di una presa per collegare il computer a concentratori. A volta l'ethernet e' integrato nella scheda madre.

I concentratori sono di 2 tipi: gli hub e gli switch. Gli hub sono dei semplici ripetitori di segnale ed il segnale di un computer e' visto da tutte le porte dell'hub; gli switch creano una specie di circuito virtuale fra le 2 porte dei computer che stanno parlando fra loro, e la trasmissione che interessa solo 2 porte non e' vista dalle altre.
Una volta si usavano cavi coassiali per i collegamenti ethernet e le machine erano messe in cascata, tutte su un unico tratto di cavo, terminato ai 2 estremi da appositi connettori (detti tappi). Inizialmente si usavano cavi gross(thick ethernet), che potevano avere lunghezze fino a 500 metri, ed un un piccolo apparato detto tranceiver per collegare il computer al cavo ; si e' poi passati ad usare cavi coassiali sottili (thin ethenet) e ad integrare i tranceiver nelle schede ethernet. Con queste tecnologie non c'era bisogno di concentratori, ma un'interruzione sul cavo metteva fuori uso tutta la rete. Oggi questa tecnologia e' caduta in disuso, in favore dei "twisted pair" (UTP): cavi simili a quelli usati per i telefoni, utilizzati per collegare il computer al concentratore, che possono avere una lunghezza massima di 100 metri.

Nelle figure una vecchia scheda di rete, con prese sia per il cavo coassiale che per l'UTP, ed un cavo UTP.

scheda di rete cavo UTP

Ogni cavo UTP contiene 4 coppie di fili e, per minimizzare le interferenze, ogni coppia e' avvolta su se stessa; il segnale e' codificato come differenza di tensione fra i 2 fili della coppia. Una coppia si usa per trasmettere, una per ricevere. Questa tecnologia e' stata sviluppata inizialmente per velocita' a 10Mbit/sec, ma oggi arriva a 100 Mbit/sec (con cavi detti di categoria 5) e si iniziano a diffondere connessioni a 1000 Mbit, sempre con questa tecnologia. Sono in corso studi per un ethernet a 10 Gbit/sec. Nell'ethernet a 1000 Mbit/sec si usano tutte e 4 le coppie di fili ed il segnale e' codificato modulando in ampiezza un onda a 125 Mhz , nell'ethernet a 100 Mbit si usano solo 2 coppie di fili, la portante e' a 25 Mhz e la codifica del segnale e' diversa.

In figura un hub ed un cavo ethernet di tipo "twisted pair" con un connettore tipo RJ45.

netgear hub a 4 porteconnettore Rj45

Nell'ethernet la rete e' utilizzata contemporaneamente da tutti i comuter collegati, senza che ci sia un computer centrale od un sistema che assegna turni di trasmissione alle varie macchine. Semplicemente la macchina che vuole trasmettere, prima di iniziare la trasmissione, ascolta se qualcun'altro sta trasmettendo. Se capta un segnale interrompe la trasmissione, poi aspetta un tempo casuale e riprova. Siccome il segnale si trasmette a velocita' finita lungo il cavo, puo' capitare che questo modo di evitare trasmissioni contemporanee non basti e due macchine trasmettano contemporaneamente, questo evento e' detto collisione. Per ovviare al problema, ogni macchina, mentre trasmette, contemporaneamente ascolta; se rileva che qualcun'altro sta trasmettendo interrompe la trasmisione per riprovare dopo un tempo casuale. Questa modalita' di accesso alla rete e' detta CSMA/CD (carrier sense multiple access with collision detection).

Ogni scheda ethernet ha un suo indirizzo (physichal address o MAC address) di 48 bits (6 bytes), ogni indirizzo e' unico; una volta gli indirizzi erano venduti ai fabbricanti dalla Xerox, oggi sono venduti dall'IEEE. Certi indirizzi non indicano una specifica scheda ethernet, ma sono destinati a molte (od a tutte) le schede sulla rete e sono detto indirizzi multicast (o broadcast). I broadcast hanno tutti i bits che valgono 1 (ff:ff:ff:ff:ff:ff in esadecimale), la maggior parte dei multicast iniziano con il valore esadecimale 01 , 03 oppure 09.

Ogni scheda ethernet conosce il suo indirizzo, e preleva dalla rete solo i dati che le sono diretti. Si puo' pero' configurare la scheda in modo che prelevi tutti i dati che transitano sul cavo, in questo caso si dice che la scheda opera in modo promiscuo.

Sulla rete ethernet vengono trasmessi pacchetti con lunghezza massima di 1500 bytes, e fra un pacchetto e l'altro si aspetta un poco.
Ogni pacchetto e' preceduto da un preambolo di 8 bytes, fatto di 0 ed 1, per la sincronizzazione delle schede ethernet, quindi dagli indirizzi ethernet di destinazione ed origine del pacchetto, c'e' poi un campo che specifica il tipo di dati trasportati, quindi i dati. Un campo di 4 bytes e' aggiunto alla fine con un checksum, per il controllo dell'integrita' del pacchetto. Ce' una variante del pacchetto ethernet (formato IEEE 802.3), che al posto del campo con il tipo di dati contiene la lunghezza del pacchetto, e quindi un ulteriore header per specificare tipo di dati ed altre caratteristiche. Un numero sotto 1500 nel campo del tipo di dati indica che si utilizza questa variente. In figura la struttura di un pacchetto ehternet (dalla wikipedia).

pacchetto ethernet type II

Il protocollo ARP (address resolution protocol) permette alle macchine, che conoscono gli indirizzo IP di destinazione dei pacchetti, di ottenere gli indirizzi ethernet cui mandare i dati sulla LAN.

Una macchina, che deve spedire un pacchetto ad una macchina di cui conosce il numero IP, manda prima un pacchetto broadcast (cioe' destinato a tutte le macchine) con una una "ARP request" , chiedendo chi ha l'indirizzo ethernet corrispondente al un dato indirizzo IP. La macchina che ha informazioni sull'IP in questione risponde con un pacchetto di tipo: "ARP reply", fornendo l'indirizzo ethernet cui mandare i dati. Questa puo' essere la macchina di destinazione, un "ARP server" (che ha un database di numeri ethernet) oppure un router, che si fa mandare il pacchetto sapendo che va inviato ad un'altra LAN.


Reti wireless Wi-Fi

Nelle reti wireless i pacchetti sono trasmessi via radio: una apposita scheda, con una piccola antenna, trasmette ad un "access point" , che lavora un po' come un hub, e reindirizza il segnale su una linea cablata. Gli access point hanno ora un costo relativamente basso (attorno ai 100 euro nel 2006) e talvolta integrano un router ed un firewall, o si adattano ad un collegamento ADSL verso un provider. E' anche possibile collegare 2 o piu' macchine direttamente, senza l'uso di un access point ,creando quella che si chiama una rete "ad-hoc"; configurazione che ha ovviamente delle limitazioni.
In figura un access point ed una scheda wireless.

access point cisco aironetscheda wireless compaq

I collegamenti wireless sono entrati in uso solo attorno al 2000; un inizio travagliato da implementazioni proprietarie e parzialmente incompatibili, e le basse prestazioni dei primi standard, ne ha rallentato la diffusione.
La standardizzazione e' operata dal comitato IEEE 802.11, che ha definito i primi standard nel 1997.
Lo standard 802.11a e' del 1999, prevede l'uso di una banda a 5 GHz, che e' disponibile in america, ma non in europa, e permette trasmissioni fino a 54Mb/sec;
lo standard 802.11b , del 1999, prevede l'uso di 14 canali larghi 22 MHz, nel range 2400-2483 Mhz (solo 11 canali sono in uso in europa) e velocita' fino a 11 Mb/sec.
Lo standard 802.11g, del 2003, migliora le caratteristiche di codifica del segnale ed arriva a 54Mb/sec. Solo con lo standard 802.11g si inizia ad avere una vera diffusione del wireless, specie per i computer portatili.
Lo standard 802.11i, del 2004, aggiunge specifiche per la crittografia e la sicurezza.
E' in corso la definizione dello standard 802.11n, che dovrebbe permettere trasmissioni a 540 Mb/sec (2006).
La Wi-Fi alliance e' il consorzio di produttori che promuove il wireless e certifica l'aderenza agli standard.

Il collegamento wireless introduce nuove possibilita' rispetto al collegamento con cavi, ma anche nuovi problemi.

Innanazitutto il segnale radio e' molto sensibile alle interferenze, ed occorono complessi algoritmi per la correzione degli errori; la banda attorno ai 2 GHz e' infatti utilizzata anche da forni a microonde, cordless ed altri dispositivi ed e' facile che pacchetti vengano persi e questo degrada le prestazioni della rete; in buone condizioni la velocita' effettiva e' la meta' di quella massima dichiarata. Inoltre le 11 bande previste per l'802.11g si sovrappongono in parte, per cui, in una stessa zona, se ne possono usare solo 3 senza grosse interferenze (Es. la 1, la 6 e la 11 ). In caso di disturbi i dispositivi riducono automaticamente la velocita' di trasmissione; ad esempio, nell'802.11g, la velocita' puo' essere ridotta a: 48, 36, 24, 12, 9 o 6 Mhz.

C'e' poi il problema che chiunque, nel raggio dell'antenna puo' captare il segnale od inserirsi nella rete, conviene quindi criptare le trasmissioni, ma questo cala ancora le prestazioni della rete.

La originaria codifica "WEP" (wired equivalent privacy) prevista dallo standard, si e' dimostrata molto vulnerabile. E' famoso l'intervento di un gruppo di agenti dell'FBI ad un convegno sulla sicurezza, che si esibirono violando in pochi minuti una rete protetta da WEP; per la storia completa vedi il sito: www.smallnetbuilder.com

Una miglior sicurezza e' data dalla codifica WPA, eventualmente abbinata all'uso di una macchina server che controlli le autorizzazioni per le connessioni.
Spesso la gente ignora i problemi legati alla sicurezza del wireless, e, girando per le citta', si possono captare i sengali di molte reti protette solo con WEP, od addirittura senza alcuna protezione; questo permette l'accesso alla rete wireless a chiunque passi nei paraggi. Occorre quindi, quando si installa un access point, controllare il range di ricezione dell'antenna e prendere le opportune cautele, in funzione della zona coperta. Il range di un'antenna e' in genere sui 100 metri.

Il wireless ha diverse analogie con l'ethernet. Il metodo utilizzato per l'accesso al mezzo e' una variate del CSMA/CD dell'ethernet, detta CSMA/CA, ove CA sta per "collision avoidance". La differenza e' che qui non e' possibile ascoltare mentre si sta trasmettendo, per rivelare le collisioni, e si ascolta solo prima di trasmettere, per vedere se il mezzo e' libero.
Per migliorare le prestazioni la gestione delle collisioni e la ritrasmissione sono fatti direttamente a livello di scheda wireless, e non coinvolgono gli strati piu' alti del protocollo TCP/IP.

Analogamente alle schede ethernet, anche le schede wireless hanno un indirizzo, a 48 bits, unico, assegnato ai fabbricanti dall'IEEE. Anche la struttura del pacchetto e' simile a quella dell'ethernet.


Modem, telefono ed ADSL

Collegarsi ad un internet provider via telefono era fino a pochi anni fa uno dei modi piu' utilizzati per accedere alla rete. Si utilizzava un modem: una scheda apposita da inserire nel computer oppure un apparecchio esterno, che poteva anche essere utilizzato per trasmettere e ricevere fax.
Un modem permette di codificare il segnale digitale modulando una portante in fase ed in ampiezza; il segnale viene trasmesso come segnale elettrico analogico e riconvertito in segnale digitale dal modem che lo riceve. Inizialmente i modem lavoravano a velocita' molto basse, miglioramenti nelle tecniche di codifica del segnale hanno infino permesso una velocita' fino a 56 Kb/sec (standard V90), che va bene per ricevere posta, ma non per l'uso che si fa oggi della rete.
Il collegamento via modem e' un collegamenteo punto-punto, cioe' un collegamento che permette solo a 2 apparecchiature di parlarsi. Il protocollo usato e' il PPP (point to point protocol), controllato da messaggi espressi secondo il protocollo LCP (link control protocol). Le 2 macchine che si collegano usano i messaggi LCP per negoziare le caratteristiche della connessione, come lunghezza pacchetti, codifiche, indirizzi IP delle 2 macchine.



A questo tipo di apparecchi si preferiscono oggi i modem DSL (digital subscriber line); i doppini telefonici utilizzano, per trasmettere l'audio, solo una banda fra 300 e 3400 Hz, ma permetterebbero la trasmissione di segnali anche a frequenze piu' alte. Le tecnologie DSL utilizzano la banda dai 10 KHz fino al MHz, se la linea lo permette, suddividendola in un gran numero di sottoportanti. Alcune di queste sottoportanti sono utilizzate per trasmettere, altre per ricevere; nell'implementazione detta ADSL (ove A sta per asimmetric), sono usate piu' sottoportanti per ricevere di quante siano usate per trasmettere; in considerazione del fatto che l'utente finale tende a ricevere, non a trasmettere dati.

Il collegamento ADSL, nella variante ADSL2+, puo' arrivare ai 24Mbit/sec, ed distanze di qualche chilometro. La linea telefonica puo' avere dalla parte dell'utente splitters, o filtri, per separare il traffico audio da quello di rete; nelle centrali telefoniche vengono posti apparati DSLAM (digital subscriber line access multiplexer) cui sono collegati piu' utenti, questi apparati sono poi collegati alla rete del provider.

I protocolli usati per la trasmissione sono PPP incapsulato in ATM (PPPoATM), oppure PPP incapsulato in ethernet (PPPoE)


Strato IP (rete)


Questo strato si occupa di come vengono inviati a destinazione i pacchetti.

In internet ogni macchina e' identificata da un numero, unico, di 32 bits, espresso in genere nella notazione "dotted", cioe' tipo: 192.168.2.3 . I computer sono raggruppati in "reti", in genere fanno parte della stessa rete i computer collegati insieme in una LAN.

I router sono apparati che collegano fra loro le diverse reti. Un router ha piu' uscite (interfacce), ognuna collegata ad una diversa rete o ad altri routers. Ogni router ha delle tabelle (routing tables) in cui si specifica a quale dei suoi collegamenti e' associato il percorso di ogni rete; c'e' poi un percorso di default (efault gateway), cui mandare pacchetti per reti non specificate in modo esplicito. Puo' anche essere specificato il percorso associato ad una singola macchina.

Nell''indirizzo della macchina i primi bits indicano la rete cui la macchina e' connessa, gli altri il numero del computer entro la rete. Una maschera di bit (network mask), viene utilizzata per indicare quale sia la parte di indirizzo relativa alla rete e quella relativa al singolo computer.

A seconda di come i bits dell'indirizzo come sono divisi in parte di rete e parte di host, abbiamo reti di classi diverse, secondo la seguente tabella:

Classe primo IP della classe ultimo IP della classe numero di reti numero di hosts di ogni rete
Classe A 1.0.0.0 126.0.0.0. 126 16.777.124
Classe B 128.1.0.0 191.255.0.0. 16384 65534
Classe C 128.1.0.0 223.255.255.0. 2.097.252 254

Ci sono poche reti di classe A, ma composte di molti host; le reti di classe C sono invece molte, ma ognuna di questa ha un massimo di 255 macchina. Le reti di classe B hanno estensione intermedia.
Attorno al 1993 ci si e' svincolati da questa divisione rigida, per recuperare numeri IP altrimenti inutilizzati, e si preferisce la notazione detta CIDR (classless internet domain routing), in cui il numero di bits per la rete e' indicato in modo esplicito e non si parla piu' di classi; ad esempio la rete di classe C di numero 192.168.1.0 e' indicata con: 192.168.1.0/24 poiche' i primi 3 bytes identificano la rete. Anche gli algoritmi di routing sono stati adattati a questo schema.

Alcuni range di indirizzi hanno usi particolari; ad esempio la rete 127.0.0.0/8 e' utilizzata per indicare la "loopback interface", cioe' un insieme di indirizzi che la macchina usa per riferirsi a se stessa. Gli indirizzi : 169.254.0.0-169.254.255.255 sono usati da carte macchine (come i MAC ) per configurare la loro rete in modo automatico.

Alcune reti sono definite come "private", cioe' si tratta di indirizzi riservati ad uso interno di una LAN o di una organizzazione e non sono inoltrati in internet dai routers. Le reti private sono la rete 10.0.0.0/8, la rete 172.16.0.0/12 e la 192.168.0.0/16

Abbiamo visto come le macchine utilizzino il numero IP per identificarsi nella rete. A livello di applicazioni invece viene spesso usato un nome, fatto di vari campi separati da punti, con struttura gerarchica, come ad esempio: diaf3.bologna.enea.it . La corrsipondenza fra nomi e numeri e' definita da un database distribuito detto DNS (domain name system). Ogni volta che utilizziamo un nome di una macchina l'applicazione cerca nel database il numero corrispondente ed e' il numero che viene usato per l'accesso alla macchina.

Nella tabella che segue (dalla wikipedia,modificata) la struttura dell'header IP.Ogni riga rappresenta una parola di 32 bits.
+ Bits 0 - 3 4 - 7 8 - 15 16 - 18 19 - 31
0 Version Header length Type of Service
(now DiffServ and ECN)
Total Length
32 Identification Flags Fragment Offset
64 Time to Live Protocol Header Checksum
96 Source Address
128 Destination Address
160 Options
160/192+
Data




Strato di trasporto


Questo strato fa da ponte fra la rete e le applicazioni; si occupa infatti di recuperare i pacchetti dallo strato IP e di renderli disponibili alle applicazioni.
Perche' questo sia possibile, ogni programma che si inerfaccia con la rete e' individuato da un numero (numero della "porta"), lo strato di trasporto ha il compito di inoltrare i dati delle applicazioni alle diverse porte.
In una logica client-server abbiamo che i servizi (programmi server) restano in ascolto da un numero di porta predefinito, ed i programmi client, via rete, inoltrano le richieste verso le porte dei servizi. Anche il programma client utilizza una "porta", questa volta in uscita, per inerfacciarsi con lo strato di trasporto e mandare richieste.
Una connessione TCP/IP e' quindi individuata da 4 numeri: i 2 numeri IP della macchine e i 2 numeri delle porte, usate dalle applicazioni. Esistono 2 protocolli alternativi per lo strato di trasporto: il TCP e l'UDP.

TCP : trasporto con controllo della connessione

La struttura di un pacchetto TCP e' illustrata dalla tabella seguente (modificata, dalla wikipedia), anche qui ogni colonna rappresenta una parola di 32 bits nell'header. I pacchetti vanno nei 2 sensi, la trasmissione e' quello che si dice "full duplex", ed i bytes della trasmissione sono numerati, con sequenze indipendenti per ogni senso di trasmissione, in modo da poter controllare quali dati sono arrivati e quali no.


+ Bits 0 - 3 4 - 9 10 - 15 16 - 31
0 Source Port Destination Port
32 Sequence Number
64 Acknowledgement Number
96 Data Offset Reserved Flags

The IP Header

Window
128 Checksum Urgent Pointer
160 Options (optional)
160/192+
Data

Il fatto che i bytes siano numerati permette ad ognuna delle 2 macchine di tener conto di quali pacchetti si sono mandati, di quelli da mandare e dei pacchetti persi, di ottimizzare la trasmissione e di decidere quando ritrasmettere pacchetti per i quali non si e' ricevuto una conferma di ricezione, costituita da un pacchetto con il flag ACK attivo.

Per iniziare una connessione sono utilizzati pacchetti con il flags SYN attivato.
Una applicazione di rete su un server viene associata ad una porta e si mette quindi in ascolto, attendendo che qualcuno si colleghi alla porta. Si dice quindi che e' in stato: LISTEN, cioe' in ascolto dalla porta.
Il procedimento con cui viene iniziato il collegamento si chiama 3-way handshake, e procede nel modo seguente:

A questo punto le 2 macchine hanno, in modo relativamente affidabile, stabilito come saranno numerati i bytes per la trasmissione in entrambi i sensi e la comunicazione puo' avere inizio, ed e' in stato ESTABLISHED, sia per il client che per il server..

Per terminare la connessione si utilizza la procedura seguente

La connessione viene quindi chiusa in entrambi i sensi, in modo indipendente. Anche quando entrambi gli ACK sono stati inviati, si attende un poco prima di chiudere completamente la connessione, per permettere a pacchetti in ritardo di arrivare a destinazione (stato TIME-WAIT). Si parla di stato FIN-WAIT quando si aspetta l'ACK per un pacchetto FIN.

C'e' anche un modo piu' immediato per la chiusura della connessione:

Anche quando non c'e' alcuna applicazione ad ascoltare dalla porta richiesta sul server viene mandato, in risposta, un pacchetto col flag RST.




UDP : trasporto senza controllo della connessione

La struttura di un pacchetto UDP e' illustrata dalla tabella seguente (modificata, dalla wikipedia), anche qui ogni colonna rappresenta una parola di 32 bits dell'header; come si vede l'header e' molto piu' semplice di quello del TCP. Infatti qui non viene stabilita alcuna connessione, i pacchetti vengono semplicemente passati all'applicazione, come arrivano, senza fare tanti controlli. L'UDP e' un protocollo semplice, utilizzato per trasmettere semplici messaggi.

+ Bits 0 - 15 16 - 31
0 Source Port Destination Port
32 Length Checksum
64  
Data
 



ICMP


L'ICMP : internet control message protocol, serve ad inoltrare messaggi riguardanti il routing e l'inoltro dei pacchetti; viaggia incapsulato in un pacchetto IP, come il TCP o l'UDP, pur non facendo logicamente parte dei protocolli di trasporto.

+ Bits 0 - 7 8 - 15 16 - 31
0 Type Code Checksum
32 Data
64  
Data
 

Il pacchetto ICMPcontiene il tipo del messaggio ed un codice numerico, oltre a dati, che dipendono dal problema riscontrato. I piu' comuni messaggi ICMP sono elencati nella tabella seguente:

Type Code messaggio significato
0 0 echo request richiesta di un messaggio ICMP di tipo "echo reply". Usato da programmi di diagnostica
8 0 echo replay risposta ad un messaggio tipo "echo request". Usato per diagnostica
3 0 rete irraggiungibile segnala che la rete non e' raggiungibile
3 1 host irragiungibile segnala che la macchina non e' raggiungibile
3 2 protocollo inaccessibile
3 3 porta irragiungibile
3 6 rete di destinazione sconosciuta
3 7 host di destinazione sconosciuto
3 9 l'accesso alla rete e' proibito
4 source quence pacchetto perso per troppo traffico
5 redirect pacchetto reinstradato, la strada era sbagliata
11 0 time exceeded il valore del parametro TTL e' arrivato a 0