You are on page 1of 23

Poletti Dario

Tesina dEsame

AS 2005/06

Siamo in piena guerra fredda, dopo la seconda guerra mondiale che vede Usa e URSS nemiche
acerrime per il potere e la supremazia in Europa e nel Mondo; il 4 Ottobre del 1957 lURSS manda
in orbita lo Sputnik, il primo satellite artificiale della storia, che gli Stati Uniti sentirono come
unoffesa inammissibile a testimonianza di un progresso tecnologico ormai inarrestabile. La
contromossa statunitense fu repentina, guidata dal presidente Eisenhower; la preoccupazione
ricorrente ed ossessiva derivata dallimpossibilit di comunicare con sicurezza in caso di attacco
nucleare con le solite trasmissioni via radio.
Il 15 ottobre viene convocato lo Scienze Advisory Committee( comitato di consulenza scientifica)
allinterno del quale si stabilisce di nominare uno Scienze Advisor, con il potere di decidere sullo
sviluppo della tecnologia americana, senza subire le pressioni degli organi ufficiali.
Il 7 gennaio Eisenhower trova lo scienziato adatto, James R.killian Junior il quale definisce insieme
al segretario della difesa americana le basi per la crezione di unagenzia per lo sviluppo scientifico
che portasse allunione di esercito marina militare e aviazione, interrompendo vecchie e reciproche
concorrenze. Tale progetto ostacolato dalle alte gerarchie militari, che non intendono sottomettersi
ad ununica decisionale; nasce dopo un estenuante braccio di ferro lARPA, Advanced Research
Project Agency.

Il sistema nato allinterno dellARPA prevedeva il collegamento fra computer distanti fra loro, con
possibilit di interscambio di documenti ed applicazioni, e nacque dopo gli studi condotti in
America da Paul Baran e in Inghilterra da Donald Watts Davies. I due scienziati portarono avanti
uno studio sella commutazione di pacchetto, ispirato al cervello umano; tale studio port alla
nascit del metodo di trasmissione definito racket switching. In un documento pubblicato da
Baran nel 1962, On distributed Communications Network, veniva infatti avanzata una proposta
tutta nuova; la rete che collegava i vari computer tra loro non doveva avere unautorit centrale, ed
era fondamentale che tutti i nodi fossero indipendenti, godessero di una stessa posizione gerarchica
e fossero in grado di originare, passare e ricevere messaggi.
Tali messaggi sarebbero stati scomposti in pacchetti opportunamente targati per non perdersi ed
ogni pacchetto indirizzato verso la propria meta finale, raggiunta la quale sarebbero stati
ricompattati i diversi moduli. La strada percorsa da questi pacchetti era scelta da loro stessi, grazie
ad una serie di computer programmati appositamente per incanalare i dati sulla strada pi veloce e
sicura. Il sistema venne battezzato Arpanet.

Il nuovo sistema sperimentato dallArpa trov alcuni ostacoli nella realizzazione ma alla fine
arrivarono anche sostenitori del progetto; tra i pi autorevoli troviamo linventore del mouse ,
Engelbart, che mette a dispostone dellArpa il suo gruppo di lavoro per la realizzazione del NIC,
che in seguito diventer INTERNIC, (Internet Network Information Center).

Poletti Dario

Tesina dEsame

AS 2005/06

Importante per lo sviluppo di Arpanet stato il progetto proposto da Wesley Clark, per il quale non
andavano collegati tra loro due computer, ma andava usata una sottorete di computer uguali tra loro
per trasmettere e ricevere dati, ion modo che ogni computer collegato avesse dovuto imparare solo
il linguaggio della sottorete e non quello di tutti i computer on-line.
Queste sottoreti vennero definite IMP (Interface message processor); lappalto dei primi IMP
affidato alla Bol Beranek and newman, piccola ditta del Massachussets neta nel 1948 e prima ditta
che sostiene il progetto, dopo che lIBM ha rifiutato la proposta. La BBN prende il nome di terza
universit, dopo il MIT e Harvard, poich diventa il centro propulsore di una nuova tecnologia;
attorno alla piccola azienda nascono gli imp guys, un gruppo di ricerca composto da scienziati
quotati che realizzano il primo IMP. La svolta avvenne tra il 1968-1969 quando, creato il primo
IMP, si cominciano a realizzare i primi nodi nelle universit; nel 1969 viene inaugurato il primo
nodo, ubicato fisicamente presso la University of California Los Angeles (UCLA), al quale seguir
il collegamento della University of California at Santa Barbara (ucsb), della Stanford University e
della University of Utah.
Curiosamente lembrione della rete nasce negli stessi anni in cui il primo essere umano pone piede
sulla luna e rappresenta un nuovo mondo sia per leggi che lo regolano sia per opportunit che offre.
Arpanet ebbe successo fino ai primi anni ottanta quando il successo delle connessioni in rete fece
proliferare i computer collegati rendono indispensabile un rapido accordo per la loro
interconnessione e la nascita di un protocollo par la trasmissione dati uguale per tutti e molto pi
elastico.

I calcolatori, pur avendo sistemi operativi diversi, dovevano infatti parlare la stessa lingua, un
esperimento informatico basato sul racket switching; tale idioma nasce informalmente nel 1973,
grazie a Vinton Cerf (che in unintervista rilasciata a Mediamente ne spiega le caratteristiche) e
Robert Kanh. I due ricercatori, diedero cita al progetto di realizzazione di unarchitettura di
cooperazione tra reti (internetworking), in grado di collegare tra loro reti basate su pacchetti di
informazioni e macchine diverse collegate a reti diverse ma interponesse.
Tale architettura si basa sul protocollo tcp/ip, del quale vennero realizzate quattro versioni n ella
seconda met degli anni 70, negli anni 80 il protocollo aveva gi un successo tale da oscurare lo
standard dal quale derivava, lISO/OSI; la rivoluzione Internet prendeva sempre pi piede,
appoggiata anche dalle autorit e dalle imprese.. Principalmente, il protocollo tcp/ip formato da
due protocolli distinti che svolgono funzioni diverse nella trasmissione dei dati: il TCP gestisce
lorganizzazione dei dati e il controllo della trasmissione di questi ultimi, poich i dati da inviare
sono troppo grandi ne ridimensiona la grandezza, li spezzetta in pacchetti pi piccoli e li ricompone
nel momento in cui arrivano al computer scelto. Compito del protocollo IP quello di trasmettere i
dati e di gestire il traffico fra i diversi computer collegati; tale protocollo, infatti, impacchetta i dati
in uscita e li invia, scegliendo la strada migliore per linvio. Altro compito del protocollo IP
linvio di dati ad un indirizzo esistente, utilizzando uno schema di indirizzamento dei computer
collegati, basato su un sistema di indirizzi numerici. Infatti Internet ogni sito logico individuato da
un solo indirizzo numerico, leggibile da parte di un computer; lindirizzo numerico determinato da
quattro campi separati tra loro da un punto, in cui ogni campo pu assumere valori da 0 a 255 per
un totale di 8 bit, per cui lindirizzo completo del sito da vita ad una parola di 32 bit (esempio:
131.175.64.1). lindirizzo del sito assume diversi nomi, anche se pi tecnicamente la prima parte
corrisponde allindirizzo della sottorete a cui il nodo appartiene, mentre la seconda parte individua i
computer secondari di appartenenza fino ad arrivare al singolo computer. Tale modalit efficiente
2

Poletti Dario

Tesina dEsame

AS 2005/06

ma non molto semplice da memorizzare e perci stata affiancata da un altro metodo chiamato
FQDN (Fully Qualified Domain Name), che si caratterizza con nomi simbolici tipo: sito.dominio. Il
dominio in cui appartiene il sito appare in modi diversi in relazione alle sottoreti alle quali ci
riappoggia, per cui nelle sottoreti statunitensi si caratterizzano i domini in relazione alla loro
tipologia di appartenenza mentre in Europa secondo la nazione di appartenenza del sito stesso.
Naturalmente ad ognuno di questi indirizzi simbolici (FQDN) associato un indirizzo IP nella
forma xxx.xxx.xxx.xxx ma lassociazione tra le due codifiche non compito delloperatore bens
del sistema stesso; infatti la tabella di transcodifica dei nomi simbolici in indirizzi numerici viene
affidata ad uno o pi nodi di sotto-rete chiamati name-server, distribuiti in modo conveniente
allindirizzo della rete in modo tale da poter fornire in ogni momento e in tempo reale lindirizzo
numerico richiesto. Tutto questo avviene senza alcun coinvolgimento dellutente.
Con lutilizzo di questa codifica possiamo raggiungere un determinato sito e se vogliamo
raggiungere uno specifico utente nel sito (esempio:vogliamo inviare un messaggio di posta
elettronica) dobbiamo aggiungere allindirizzo il codice identificativo del destinatario. Lindirizzo
individuale si presenta perci cos:utente@indirizzoIP, oppure nel caso simbolico :utente@FQDN,
otterremo cos ad esempio: rossi@ibm.com.
I vantaggi derivati dalluso del protocollo tcp/ip sono relativi al fatto che esso ha assunto lo stato di
open standard, in quanto chiunque pu utilizzare le sue caratteristiche ed inoltre perch tale
protocollo indipendente dal modo in cui la rete alla quale si attacca realizzata; esso infatti
supporta una rete Ethernet, una linea telefonica o un cavo a fibre ottiche, integrando i diversi
componenti hardware in ununica soluzione.

Con lutilizzo ufficiale del protocollo tcp/ip allinterno di Arpanet, la stessa Arpanet comincia a
perdere progressivamente d importanza; per questo motivo il dipartimento della difesa statunitense
si convinse per favorire la crescita del networking di suo interesse si doveva dividere la rete Arpanet
in due separate sottoreti. Una di queste reti viene usata a scopi militari e collega prevalentemente
siti allinterno degli Stati Uniti e solo eccezionalmente nel resto del Mondo, la cosiddetta MILNET;
la sezione della ricerca universitaria prende invece il nome di NSFnet (National Scienze Foundation
Networkk), Dalla quale fanno parte diversi enti di ricerca (Bolder, Carnegie Mellon University,
University of Pittsburg).
Tale scissione fu sostenuta in modo da far si che gli atenei potessero usufruire dei benefici di
Internet nonostante non fossero a diretto contatto con enti militari; per questo motivo la NSF
durante i primi anni 80 da vita alla Csnet, che mette in contatto fra loro tutte le universit
americane.
Ovviamente il protocollo tcp/ip mette ancora in comunicazione le macchine sulla rete MILNET e
quelle sulla rete NSFnet, anche i nodi della rete militare sono protetti dal fatto di trovarsi allinterno
di siti protetti pi che in laboratori di ricerca; dunque se ci sono problemi sulla rete NSFnet la rete
MILNET pu essere disconnessa tagliando i collegamenti in un determinato numero di gateways
che le collegano, i quali vengono creati per limitare le comunicazioni fra le due reti al semplice
scambio di posta elettronica.

Poletti Dario

Tesina dEsame

AS 2005/06

Nel 1986 i Newsgroup creati da due studenti dellUniversit del Nord Carolina migliorano
enormemente allutilizzo del protocollo NNTP, che usufruisce del protocollo tcp/ip; i Newsgrop
sono gruppi di discussione elettronici tra diverse persone che condividono interessi in comune.
Nel 1985 nasce la prima comunit virtuale, Well (Whole Earth Lectronic Link(, e nel 1988
cominciano le prove di terrorismo sulla rete. Aseguito di ci viene istituito il CERT ( Computer
Emergency Response team), con il compito di controllare lintromissione di virus informatici nella
rete, si chiudono con un evento memorabile che se ne trascina dietro un altro:cade il muro di
Belino, simbolo della Guerra fredda fra Usa e URSS, e conseguentemente muore anche ARPANET.
Nello stesso anno della morte di ARPANET, Peter deutsch e la sua equipe danno vita al software
ARCHIE, che permette di sviscerare allinterno di grandi archivi per gestire il contenuto dei singoli
siti a livello di FTP ad ogni nome di file di tali archivi infatti associata una serie di informazioni
( data di memorizzazione, dimensione automaticamente archiviate dal programma.

Lenorme circolazione di notizie sulla rete internet comincia a rendere problematici i controlli o le
censure delle stesse informazioni; nasce dunque nel 1990 la fondazione EEF (Electronic Frontier
Foundation), ad opera dio Mitch Kapor; tale fondazione (www.eff.org) si propone come scopo
quello di tutelare i naviganti in relazione alla libert di circolazione delle informazioni e alla
libert di accesso a queste.
Inoltre questa fondazione ha difeso in molti processi presunti hacker o programmatori informatici,
accusati dalle autorit statali di pirateria e diffusione illegale di programmi. Nascono in questo
periodo altri software per la navigazione protetta: WAIS ( Wide Area Information Service) creato da
Brewster Kahle, GOPHER creato da Mark McCahill e Paul Lindner e PGP (pretty good privacy
inventato da Philip Zimmerman.
PGP (www.pgpi.com) il programma pi famoso per garantire la sicurezza nello scambio di
messaggi tramite la posta elettronica; il meccanismo di tale programma si basa sul processo di due
chiavi di accesso, una strettamente personale, laltra pubblica e comunicabile a tutti coloro con i
quele si vuole corrispondere. Queste due chiavi sono interconnesse tra loro, per cui per decifrare un
messaggio allinizio si ha bisogno della chiave pubblica ma poi deve subentrare la conoscenza della
chiave primaria. GOPHER rappresenta invece il primo tentativo di razionalizzare larchitettura delle
informazioni; tale strumento si fonda sul principio della struttura gerarchica, rappresentata da un
grafico ad albero composto da rami e nodi.
Gopher usa due moduli interconnessi tra loro, il server, col compito di gestire la struttura ad albero,
e il client che permette allutente di esplorare la struttura ad albero e accedere alle risorse richieste.
Nel 1991 nasce infine al struttura portante dellattuale sistema di internet: Tim Berners Lee sviluppa
il WWW, WORLD WIDE WEB.

Poletti Dario

Tesina dEsame

AS 2005/06

La ragnatela mondiale, questo il significato della tripla w, mira al superamento delle barriere
geografiche che impediscono la collaborazione fra gruppi scientifici fisicamente distanti, ma anche
ad accelerare lo scambio di informazioni grazie a protocolli standardizzati.
Larchitettura WWW di tipo CLIENT-SERVER; unarchitettura definita client-server se, in un
sistema, unentit offre il servizio (server) ed unaltra (client) vi accede e ne usufruisce secondo una
serie di regole specifiche. Dunque Server e Client sono due programmi che permettono la
navigazione; come funzionano tecnicamente questi due programmi e qual la loro finalit nel
sistema? Il programma Client funziona da interfaccia fra utente finale e server web, gestendone
dunque linterazione; esso si collega al server tramite il protocollo http per richiedere un documento
identificativo del proprio URL, scarica sulla propria macchina i dati che ha prelevato, legge da un
buffer i dati scaricati da widget grafici costruiti in precedenza, grazie allaiuto delle librerie
grafiche. Il programma SERVER, invece, riceve la richiesta di connessione in rete e distribuisce i
documenti richiesti da qualche utente, tramite un programma Client.
Il programma WWW pu essere eseguito da diverse piattaforme ma per sfruttare totalmente le
caratteristiche peculiari di tale sistema si deve possedere una macchina con capacit grafiche e
audio oltre ad una connessione ad Internet abbastanza veloce, che consenta il trasferimento di
immagini, animazioni, suoni in tempi accettabili.
WWW consente di astrarre dalla struttura fisica della rete presentandola con una struttura pi
pratica, trasformandola cio in un ipermedia; si definisce ipermedia un insieme di notizie
collegate tra loro nella rete non solo in forma di documenti testuali ma anche di testi, immagini,
suoni, video. I dati per poter essere immessi in rete devono essere tradotti in un unico formato
denominato HTML (HyperText Markup Language), standard di lettura per i client browser i WWW.

I protocolli sono gli standard che specificano come avvengono i trasferimenti da una macchina ad
unaltra. Essi specificano come sono rappresentati i dati, le tecniche per la rivelazione derrore e il
meccanismo di acknowledgmen per i pacchetti trasmessi. Infine tali protocolli rendono invisibile
allutente lhardware sottostante durante una qualsiasi sessione di lavoro.
Per il TCP/IP non si intende solo il protocollo di trasmissione TCP ed il rptocollo di rete IP, ma una
famiglia di protocolli comprendente anche lUDP, lICMP, lARP, il RARP ed altri, da cui per sono
escluse le applicazioni quali la posta elettronica (E-mail), il trasferimento dei file (FTP) e
lemulazione di terminale remota(TELNET)
Il TCP/IP, al contrario di molti standards diventati in seguito protocolli, nato prima come
protocollo e successivamente stato affinato per farlo diventare uno standard, effettuando prove
sul campo; e in qualche modo uno standard cooperativo.

Poletti Dario

Tesina dEsame

AS 2005/06

Il modello a strati una comoda rappresentazione dei sistemi di rete che permette concettualmente
di separare le diverse funzionalit in strati di protocolli, permettendo cos di studiare pi facilmente
i protocolli di rete.
Lidea della stratificazione fondamentale per poter disegnare larchitettura software strutturata in
livelli, ognuno dei quali con i suoi vari protocolli, tratta una parte specifica dei problemi di
trasmissione.
Il concetto di stratificazione poggia su un principio basilare il quale, in sostanza, afferma che lo
strato ennesimo alla stazione destinazione deve ricevere un pacchetto identico a quello che uscito
dal medesimo livello alla stazione sorgente. I due principali esempi di modelli stratificati sono
rappresentati dal Open System Interconnection (OSI) dellISO e dal TCP/IP. Si pu pensare al
software di una macchina come costituito da tanti strati ognuno dei quali svolge una funzionalit
specifica propria.
Inoltre importante sottolineare che uno strato comunica soltanto con uno strato immediatamente
superiore o inferiore, tramite, delle interfacce standard, mentre allinterno dello strato la
comunicazione pu avvenire in un qualunque modo; per poter comunicare da uno strato n ad uno
strato n-2(n+2) bisogna necessariamente passare attraverso lo strato intermedio n-1(n+1).
Concettualmente, mandare un messaggio da un programma su una macchina ad un programma su
unaltra, significa trasferire tale messaggio gi attraverso tutti i vari strati fino al livello di rete e,
tramite lhardware, raggiungere laltra macchina, risalire gli strati software TCP/IP organizzato
concettualmente in quattro livelli pi un quinto costituito dal supporto fisico vero e proprio. La
figura mostra i 4 livelli:

Application Layer: A livello pi alto, lutente invoca i programmi applicativi che permettono di
accettare ai servizi disponibili attraverso internet; tale livello riguarda tutte le possibili opzioni,
chiamate, necessit dei vari programmi. In pratica gestisce linterattivit tra lutente e la macchina.
Un programma applicativo interagisce che uno dei protocolli di livello trasporto per inviare o
ricever dati e li passa a livello trasporto nella forma richiesta.
Transport Layer: lo scopo primario del livello trasporto consentire la connessione in rete fra due
utenti ovvero permettere la comunicazione tra un livello applicativo ed un altro; una comunicazione
di questo tipo spesso detto end-to-end.
Il software di tale livello divide il flusso di dati in pacchetti (di solito di circa 500 byte) che vengono
passati insieme allindirizzo di destinazione allo strato sottostante.Il livello di trasporti deve
accettare dati da molti utenti contemporaneamente e viceversa, deve smistare i pacchetti che gli
6

Poletti Dario

Tesina dEsame

AS 2005/06

arrivano dal sotto ai vari specifici programmi;deve quindi usare dei codici appositi per indicare le
cosiddette porte.
Le routine di trasporto pacchetti aggiungono ad ogni pacchetto, alcuni bit in pi atti a codificare, fra
laltro, programmi sorgente e destinazione.
Il livello di trasporto pu regolare il flusso delle informazioni e pu, nel caso del TCP ( a differenza
dellUDP), fornire un trasporto affidabile assicurando che i dati giungano a destinazione senza
errori ed in sequenza mediante un meccanismo di aknowledgement e ritrasmissione.
Internet Layer (IP): Questo livello gestisce la comunicazione tra una macchina ed unaltra; accetta
una richiesta di inoltro di un pacchetto da un livello di trasporto insieme allidentificazione della
macchina alla quale il pacchetto deve essere inviato.
E il livello pi caratteristico di internet, detto appunto IP (internet protocol) che crea il diagramma
di base della rete, sostanzialmente, riceve e trasferisce senza garanzie i pacchetti, che gli arrivano da
sopra, verso la macchina destinataria.
Esso accetta i pacchetti TCP, li spezzetta se necessario e li incapsula nei diagramma di base IP,
rempie gli header necessari ed usa lalgoritmo di routing per decidere a chi deve mandare questo
pacchetto, in particolare se si tratta di un caso di routing diretto o indiretto.
Il livello Internet gestisce anche i diagrammi in ingresso, verifica la loro validit ed usa lalgoritmo
di routing per decidere se il datagramma deve essere inoltrato o processato localmente; in
questultimo caso il software elimina gli header del datagramma e sceglie quale protocollo di
trasporto gestir il pacchetto.
In tale fase non solo si svolge la funzione di instradamento, ma si verifica anche la validit dei
pacchetti ricevuti.
Inoltre questo livello gestisce integralmente i massaggi ICMP in ingresso ed uscita.
Network Interface Layer: Il quarto ed ultimo strato costituito da una interfaccia di rete che accetta
il datagramma IP e lo trasmette, previo incapsularlo in appositi frame, sullhardware di rete (il cavo)
tramite, ad esempio, un transceiver.

Da notare che se necessario il pacchetto pu attraversare altre macchina intermedie (router) prima di
giungere a destinazione, ma in queste penetra solo i due strati pi bassi dellinterfaccia di rete e del
datagramma base IP.

Poletti Dario

Tesina dEsame

AS 2005/06

Uno dei vantaggi pi significativi di questa separazione concettuale che diventa possibile, entro
certi termini sostituire una parte senza disturbare necessariamente le altre, cosicch ricerca e
sviluppo possono procedere concordemente su ognuno dei tre livelli.

La prima differenza tra due modelli st nel numero di strati, in particolare, sette per lOSI e cinque
per internet. Esistono due sottili ma importanti differenze tra lo schema a strati dellinternet e quello
del X.25 che il pi famoso protocollo aderente nella normativa ISO. La prima riguarda
laffidabilit del servizio di trasporto dati e la seconda localizzazione dellautorit e controllo.
Nel modello X.25 il software del protocollo verifica lintegrit dei dati ad ognuno dei primi quattro
livelli (escluso ovviamente il livello fisico di rete). In particolare, i livelli due e tre, cio del link e
del network, includono oltre a checksum un meccanismo di timeout and retransmission, mentre il
livello quattro del trasporto realizza laffidabilit finale detta end-to-end.Questa crea dei problemi
poich ogni operazione di checksum mette in rete un ack ed ogni volta che si eccede il timeout
viene duplicato un pacchetto, tutte queste operazioni sono ripetute ad ogni nodo attraversato anche
se di passaggio (nel senso che vi si penetra solo al livello minimo, cio di link).
Al contrario, nellinternet laffidabilit solamente un problema end-to-end, infatti il livello di
trasporto, e quindi la destinazione e la sorgente, lunico a gestire le ritrasmissioni e gli ack; i nodi
di passaggio sono pressoch trasparenti anche se in effetti, hanno la capacit di buttar via i pacchetti
se sono corrotti o se i buffer sono pieni.

In generale, il multiplexing ed il demultiplexing sono tecniche largamente usate per sfruttare meglio
il mezzo trasmissivo. Ad esempio, il TDMA permette di trasmettere pi canali multiplexati,
sfruttando un unico supporto fisico, salvo demultiplexare i canali stessi a destinazione.
In particolare, una rete non usa un singolo protocollo per adempiere ai molteplici compiti della
trasmissione, ma, piuttosto, si basa su quella che potremmo definire una famiglia di protocolli. In
pratica nei sistemi di comunicazione si usa una tecnica di multiplexing e demultiplexing per
distinguere fra i vari protocolli ad uno stesso livello gerarchico. Quando si spedisce un messaggio, il
computer sorgente include dei bit in pi per codificare il tipo di messaggio, il processo che lo ha
generato ed il protocollo usato. Alla destinazione finale, la macchina demultiplexa i codici e guida
cos l'informazione verso la giusta procedura.

Poletti Dario

Tesina dEsame

AS 2005/06

La figura illustra come il software del Network Interface Layer usa il frame type per scegliere la
procedura che gestir il frame in arrivo; in particolare, un frame fisico pu contenere un
datagramma IP, un ARP o un RARP. A sua volta l'Internet Layer demultiplexa un datagramma IP
che pu contenere un ICMP, un UDP, un pacchetto TCP oppure un VMTP, come mostrato in figura:

Affinch un sistema di comunicazione sia universale necessario utilizzare un metodo di


identificazione di ogni computer connesso ad esso (host). Il TCP/IP assegna ad ogni host, come
identificatore universale, un indirizzo binario a 32 bits detto Internet Address o IP Address, usando
una struttura analoga a quella degli indirizzi fisici di rete. Per rendere questi indirizzi pi
comprensibili, essi sono suddivisi in quattro gruppi di bits con i rispettivi valori scritti in decimale e
separati da punti (Dotted Decimal Notation). Concettualmente, ciascun indirizzo IP una coppia
netid-hostid, dove il netid identifica la rete dove connesso l'host mentre l'hostid identifica lo stesso
host su quella rete, come mostrato in figura:

Poletti Dario

Tesina dEsame

AS 2005/06

Materialmente le reti sono interconnesse tramite computer molto veloci detti router che instradano i
pacchetti leggendo l'indirizzo internet. Considerando che un router possa essere connesso a due o
pi reti fisiche, necessario assegnare altrettanti indirizzi IP per identificare ciascuna rete; tali
computers sono definiti multi-homed hosts. Poich gli indirizzi IP codificano entrambi la rete e
l'host ad essa connessa, essi non possono specificare un particolare computer, ma una "connessione"
ad una rete. Perci un router che connette n reti necessita di altrettanti indirizzi IP. L'operazione di
routing molto efficace perch, in realt, viene svolta leggendo solo la parte di indirizzo relativo
alla rete.
Uno dei vantaggi della struttura di indirizzamento Internet che la sua forma pu specificare un
indirizzo per un particolare host, una rete o tutti gli hosts su una rete (Broadcast). Lo svantaggio
che, se una macchina ha pi indirizzi, la conoscenza di un indirizzo di rete potrebbe essere non
sufficiente per raggiungerla, se tale rete non disponibile.

Gli indirizzi IP sono assegnati indipendentemente dagli indirizzi fisici di una machina. I router
utilizzano gli indirizzi internet, ma bene sottolineare come due macchine qualsiasi possono
comunicare solo se conoscono gli indirizzi fisici di rete; sorge quindi il problema di associare agli
indirizzi IP quelli reali a livello fisico di ogni rete. Per risolvere tale problema esiste l'Address
Resolution Protocol (ARP): una macchina, a partire dall'indirizzo IP, usa un messaggio broadcast
(ARP request) per trovare l'indirizzo fisico di un'altra macchina. Tra tutte le macchine che ricevono
l'ARP request, quella a cui corrisponde l'indirizzo IP risponde inviando il proprio indirizzo fisico
alla macchina che ha inoltrato la richiesta.

Quando, per vari motivi possibili, una macchina non conosce il proprio indirizzo IP, procede con
il Reverse Address Resolution Protocol (RARP) emettendo un ARP-broadcast request ed
indicando s stesso come destinazione finale; sar compito di alcuni server di rete autorizzati a
fornire il servizio RARP, rispondere fornendo l'indirizzo richiesto.

Concettualmente l'internet prevede tre tipi di servizi, come mostrato in figura, che hanno tra di
loro una chiara gerarchia di dipendenze.
Dunque, a livello pi basso, un servizio di recapito connectionless rappresenta la base su cui si
poggia ogni cosa; infatti il protocollo IP fondamentale perch, anche se di per s realizza una
trasmissione non sicura, fornisce il supporto necessario per tutti gli altri protocolli affidabili
(reliable transport service) quali il TCP e quindi per gli stessi applicativi (application services)

10

Poletti Dario
quali
Tecnicamente,

Tesina dEsame
l'FTP
il

ed
protocollo

AS 2005/06
il

IP

TELNET.
definito:

Unreliable: un servizio senza garanzie; i pacchetti possono essere persi, venire duplicati o
consegnati fuori ordine senza per questo avvisare n l'utente sorgente n quello destinazione.
Va comunque sottolineato che la perdita di un pacchetto avviene solamente in casi abbastanza
eccezionali, quali la congestione totale di un componente o, addirittura, la caduta della rete.
Connectionless: un servizio non orientato alla connessione; ogni pacchetto viene trattato
indipendentemente da tutti gli altri. Una sequenza di pacchetti spediti da un computer ad un
altro potrebbero seguire cammini diversi per giungere a destinazione.
Best-effort: il protocollo IP effettua un serio tentativo nell'inoltro dei pacchetti.
In sostanza IP definisce l'unit base del datagramma e la forma esatta di tutti i dati che
passano attraverso Internet, gestisce le funzioni di routing (specificando il percorso sul quale
verranno spediti i dati) ed include un insieme di regole che caratterizzano come gli hosts ed i
routers processano i pacchetti, la generazione dei messaggi di errore e le condizioni sotto le
quali un pacchetto scartato.

In un sistema packets switching quale il TCP/IP, il routing rappresenta il processo di scelta del
percorso su cui inoltrare i pacchetti ed il router un computer che effettua tale instradamento.
Da sottolineare che il routing IP avviene in ambiente software, mentre in realt il routing fisico
a livello di MAC. Idealmente il routing IP dovrebbe esaminare la connessione alla rete, la
lunghezza
del
datagramma
e
quando
selezionare
il
percorso
migliore.
Quando un programma applicativo su un host tenta di instaurare una comunicazione con un
host remoto, sia l'host locale che i routers partecipano all'instradamento dei datagrammi IP
fino alla loro destinazione.

Si pu parlare di due tipi di routing:


Diretto: se l'host locale ed il remoto appartengono alla stessa rete fisica (es. una singola
Ethernet); in questo caso non sar necessario l'impiego di routers.
Indiretto: se l'utente destinazione connesso ad una rete fisica diversa ed necessario
instradare il datagramma sorgente attraverso un router.

11

Poletti Dario

Tesina dEsame

AS 2005/06

Per sapere se una destinazione appartiene alla propria rete, l'utente sorgente estrae
dall'indirizzo IP di destinazione la parte relativa alla rete, la cosiddetta netid, e la confronta con
la propria: se differisce, evidentemente la destinazione del datagramma esterna.
Nel primo caso, il Network Interface Layer dell'utente sorgente incapsula il datagramma IP in
un frame fisico, associa l'indirizzo IP al relativo fisico ed usa l'hardware della rete (il cavo) per
trasferirlo. Un possibile meccanismo per conoscere l'indirizzo fisico corrispondente quello di
utilizzare il protocollo ARP.
Il caso del routing indiretto pi difficoltoso, perch l'utente sorgente deve identificare il router
a cui inviare il datagramma; se nella rete locale c' un solo router che permette la connessione
con altre reti, il routing diventa pi semplice in quanto, appena l'host locale ha capito che la
destinazione non appartiene alla propria rete, indirizza il datagramma direttamente al router;
in generale, se connesso a pi routers, lo indirizzer al pi vicino.
Una volta che il frame contenente il datagramma ha raggiunto il router, il software del Network
Interface Layer estrae il datagramma incapsulato e le routine di routing, e sulla base degli
indirizzi internet, il software IP seleziona il prossimo router a cui inviare il datagramma,
incapsulato
in
un
nuovo
frame.
I routers in Internet formano una struttura interconnessa in continuo contatto fra loro nella
quale il datagramma scorre finch non raggiunge quel particolare router che gli permette di
giungere
direttamente
a
destinazione.
L'algoritmo che svolge queste funzioni (IP routing algorithm) utilizza su ogni macchina una
tabella di routing (IP routing table), che contiene informazioni circa alcune possibili destinazioni
e su come raggiungerle. Se comprendesse tutte le destinazioni possibili diventerebbe troppo
ingombrante
e
sarebbe
impossibile
tenerla
aggiornata.
Allora di solito ci si limita a mantenere le informazioni degli utenti sulla stessa rete o quelle pi
frequentemente usate lasciando un indirizzo di default per tutti gli altri.
Poich i router operano in base solo alla parte di indirizzo IP relativo alla rete di destinazione
l'instradamento molto efficiente e le tabelle necessarie abbastanza piccole: tipicamente una
tabella di routing contiene una coppia N-R, dove N l'indirizzo IP della rete di destinazione ed
R (next-hop) quello del successivo router che permette di raggiungere la rete N. Chiaramente
tutte le R presenti nella tabella di un router indicheranno al pi i routers connessi direttamente
ad esso, come mostrato nell'esempio in figura, che presenta quattro reti e tre routers (Q, R,
S):

Nella seguente tabella riportata la tabella di routing di R:


To reach hosts on network

Route to these address

20.0.0.0

Deliver Directly

30.0.0.0

Deliver Directly

10.0.0.0

40.0.0.0

20.0.0.5

30.0.0.7

12

Poletti Dario

Tesina dEsame

AS 2005/06

Si tratta di un meccanismo attraverso il quale i routers e gli utenti comunicano per sondare
eventuali problemi o comportamenti anomali verificatisi in rete. Ricordiamo che il protocollo IP,
di per s, non contiene nessuno strumento per poter riscontrare, da parte della stazione
sorgente n destinazione, la perdita di un pacchetto o il collasso di una rete.
L'ICMP consente una comunicazione straordinaria tra routers ed hosts permettendo lo scambio
di segnali di errore o di controllo attraverso le interfacce software dell'internet, senza per
arrivare su fino al livello degli applicativi; esso una parte necessaria ed integrante dell'IP ed
contenuto
nell'area
dati
di
un
datagramma
IP.
L'ICMP include messaggi di source quench, che ritardano il rate di trasmissione, messaggi di
redirect, che richiedono ad un host di cambiare la propria tabella di routing, e messaggi di echo
request/reply, che l'host pu usare per determinare se la destinazione pu essere raggiunta
(ping).
Un ICMP ha tre campi di lunghezza fissa alla testa del messaggio: il type field (8 bits), che
identifica il messaggio, il code field (8 bits), che contiene informazioni circa il tipo del
messaggio, ed il checksum field (16 bits). I restanti campi del formato ICMP variano in base al
tipo di messaggio.

Nel complesso del protocollo TCP/IP, l'User Datagram Protocol (UDP) fornisce un servizio di
recapito dei datagrammi connectionless ed inaffidabile, usando l'IP per trasportare messaggi
da una macchina ad un'altra; prevede delle porte di protocollo usate per distinguere tra pi
programmi
in
esecuzione
(o
processi)
su
una
singola
macchina.
E' un protocollo di trasporto che si colloca sopra l'Internet Protocol Layer (IP):

E' simile all'IP, ma oltre ai dati spediti, ciascun messaggio UDP contiene sia il numero di porta
di destinazione che quello di origine, rendendo possibile al software UDP di destinazione di
recapitare il messaggio al corretto ricevente (programma od utente), ed a quest'ultimo di
inviare
una
replica.
L'inaffidabilit quella propria dell'IP, in quanto l'UDP non prevede nessun protocollo per il
controllo dell'errore, a differenza del TCP: non usa acknowledgement per assicurare al mittente
che i messaggi siano arrivati, non dispone le sequenze di datagrammi in ordine e non fornisce
una retroazione per il controllo del rate del flusso di informazioni tra macchine. Perci i

13

Poletti Dario

Tesina dEsame

AS 2005/06

messaggi UDP possono essere persi, duplicati oppure arrivare fuori dall'ordine; inoltre i
datagrammi possono arrivare pi velocemente di quanto il ricevente sia in grado di processarli.
Il protocollo UDP lavora bene in una rete locale, ma potrebbe fallire se usato in una rete di
maggiori dimensioni Esso realizza un datagramma pi utile di quello IP per i collegamenti fra
utenti; infatti, per fare un esempio, su tale base stato costruito l'applicativo Network File
System (NFS) largamente diffuso nelle reti locali. Ciascun messaggio UDP detto user
datagram ed costituito di due parti: UDP header ed UDP data area, che verranno incapsulate
nell'IP datagram. Come mostra la figura, l'header del'UDP simile a quello del TCP, ma risulta
essere pi corto non avendo nessun numero di sequenza; diviso in quattro campi di 16 bits,
che specificano il numero di porta da cui il messaggio stato spedito (opzionale), quello della
porta di destinazione (usata per demultiplexare i datagrammi tra i processi che aspettano di
riceverli), la lunghezza del messaggio ed il checksum.

Concettualmente, tutte le operazioni di multiplexing e demultiplexing tra l'UDP ed i programmi


applicativi avvengono attraverso il meccanismo delle porte; in pratica, ciascun programma
applicativo deve negoziare con il sistema operativo per ottenere una porta di protocollo e
l'associato
numero
prima
che
sia
spedito
un
UDP
datagram.
Assegnata la porta, ogni datagramma che il programma applicativo spedisce attraverso essa
avr quel numero di porta nel suo UDP source port field. L'UDP accetta i datagrammi
provenienti dal software IP e li demultiplexa in base alla UDP destination port, come mostra la
figura:

I sistemi operativi della maggiorparte dei computers, permettono a pi programmi applicativi


di essere in esecuzione contemporaneamente (processes. tasks, application programs); tali
sistemi
sono
detti
multitasking
systems.
Potrebbe sembrare naturale che un processo su una particolare macchina sia l'ultima
destinazione di un messaggio, ma pi opportuno immaginare che ciascuna macchina
contenga un set di punti di destinazione astratti, detti protocol ports, identificati ciascuno da un

14

Poletti Dario

Tesina dEsame

AS 2005/06

intero positivo. Il sistema operativo locale fornisce un meccanismo di interfaccia che i processi
usano
per
specificare
una
porta
o
accedere
ad
essa.
In generale, le porte sono bufferizzate, in modo che i dati arrivati prima che il processo sia
pronto, non vengano perduti. Per permettere il buffering, il software di protocollo del sistema
operativo posiziona in una coda (finita) i poacchetti che arrivano per una particolare porta,
finch
il
processo
non
li
estrae.
Per comunicare con una porta esterna, il mittente deve conoscere sia l'indirizzo IP che il
numero di porta di protocollo della macchina di destinazione. Ciascun messaggio deve
contenere sia il numero della Destination Port della macchina da cui il messaggio spedito che
il numero della Source Port della macchina mittente, a cui la replica dovr essere indirizzata,
rendendo possibile, per ogni processo, il collooquio tra mittente e destinatario.
Ci sono due fondamentali approcci per l'assegnazione delle porte, usando:
Central Authority: due computers che devono interoperare tra di loro, si accordano per
permettere ad un'autorit centrale di assegnare i numeri di porta (Well-known ports) che
necessitano e di pubblicare la lista di tutte le assegnazioni (Universal assignment) il software
che gestisce le porte sar realizzato in base a tale lista.
Dynamic Binding: in questo approccio le porte non sono universalmente conosciute; infatti,
se un programma necessita di una porta, il software di rete ad assegnargliela. Per sapere la
porta corrente assegnata su un altro computer, necessario inviargli una richiesta del numero
di porta assegnata al servizio di interesse.
I progettisti del TCP/IP usano un approccio ibrido che assegna alcuni numeri di porta a priori
(Low values) e lascia altri disponibili per siti locali o programmi applicativi (High values).
La tabella seguente contiene alcune tra le pi significative UDP well-known ports:
Decimal

Keyword

UNIX Keyword

Description

ECHO

echo

Echo

DISCARD

discard

Discard

11

USERS

systat

Active Users

42

NAMESERVER

name

Host Name Server

43

NICNAME

whois

Who is

53

DOMAIN

nameserver

Domain Name Server

69

TFTP

tftp

Trivial File Transfer

Il Transmission Control Protocol (TCP), si assume la responsabilit di instaurare un


collegamento tra due utenti, di rendere affidabile il trasferimento di dati e comandi tra essi ed
infine di chiudere la connessione. Esso capace di trasferire un flusso continuo di dati fra due
utenti in entrambe le direzioni (full-duplex), decidendo quando bloccare o continuare le
operazioni
a
suo
piacimento.
Poich il TCP fa veramente poche assunzioni riguardo l'hardware sottostante, possibile
implementarlo sia su una singola rete come una ethernet sia su un complesso variegato quale
l'internet.
Tale protocollo, come l'UDP, si colloca, nel modello a strati, sopra l'Internet Protocol Layer (IP),
che gestisce il trasferimento e l'instradamento del singolo pacchetto fino a destinazione, ma,
come ulteriore funzionalit, tiene una traccia di ci che stato trasmesso ed eventualmente
ritrasmette quella parte di informazione che andata perduta lungo il tragitto.

15

Poletti Dario

Tesina dEsame

AS 2005/06

Come l'UDP, il TCP permette a pi programmi applicativi su una stessa macchina di comunicare
contemporaneamente, e demultiplexa il traffico dei pacchetti in ingresso a tali programmi; usa
i numeri di porta per identificare la destinazione finale all'interno di una macchina. La
fondamentale differenza con l'UDP che il TCP garantisce un servizio di trasporto affidabile
(Reliable Delivery Service), ponendo rimedio alle cause di inaffidabilit proprie dell'IP
(duplicazione e perdita di dati, caduta di rete, ritardi, pacchetti ricevuti fuori ordine, etc.),
anche se ci comporta una implementazione pi complessa. L'importanza dell'affidabilit del
flusso permessa da tale protocollo il motivo per cui il complesso del protocollo TCP/IP ha tale
nome.
L'affidabilit di questo servizio caratterizzata da cinque propriet:
Stream Orientation: quando due programmi applicativi trasferiscono dati (stream of bits), il
flusso nella macchina di destinazione passa al ricevente esattamente come stato originto
nella macchina sorgente.
Virtual Circuit Connection: dal punto di vista del programmatore e dell'utente, il servizio che
il TCP fornisce analogo a fornire una connessione dedicata.
Buffered Trasfer: i routers interessati dal trasferimento sono provvisti di buffers per rendere
pi efficiente il trasferimento e minimizzare il traffico di rete.
Unstructured Stream: il TCP/IP stream service non adotta un flusso di dati strutturato;
ovvero non c' modo di distinguere i records che costituiscono il flusso dati.
Full-duplex Connection: la connessione fornita dal TCP/IP stream service permette un
trasferimento di flusso contemporaneo ed indipendente in entrambe le direzioni, senza
apparente interazione.
Se un qualunque messaggio troppo grande per un singolo pacchetto TCP (gli standard
consigliano una dimensione di 576 byte compreso l'header del IP) si procede a dividerlo in
segmenti di lunghezza fissa e poi, arrivato a destinazione, si controlla che siano in ordine e si
riassemblano, in modo che tale operazione risulti del tutto invisibile ai due utenti.
Poich queste funzionalit sono necessarie per molte applicazioni, sono state messe tutte
insieme in questo protocollo piuttosto che inserirle, come parte del programma, in ogni
applicativo
che
ne
ha
bisogno.
L'affidabilit garantita da una tecnica di fondamentale importanza nota come
acknowledgement with retransmission (riscontro con ritrasmissione). Tale tecnica prevede che
il destinatario invii un messaggio di acknowledgement (ACK) al mittente, una volta ricevuto un
pacchetto. Il mittente mantiene una copia di ciascun pacchetto spedito e la rimuove dal buffer
di
trasmissione
solo
dopo
aver
ricevuto
l'ACK
relativo
ad
essa.
Nella configurazione pi banale e meno efficiente l'utente sorgente, dopo aver trasmesso un
pacchetto, aspetta di ricevere il suo ACK prima di spedire il successivo; inoltre fa anche partire

16

Poletti Dario

Tesina dEsame

AS 2005/06

un "cronometro" per il timeout, allo scadere del quale, se non ha ricevuto risposta, ritrasmette
quello stesso pacchetto:

Un semplice protocollo del tipo "stop and wait" come questo abbassa notevolmente le
prestazioni della rete, sprecando gran parte della banda disponibile nell'attesa dell'ACK relativo
al pacchetto precedente; infatti un canale full-duplex utilizzato come se fosse un half-duplex.
Tale problema accentuato se i pacchetti devono attraversare lungo il cammino molti
componenti quali bridge, router, repeater che, ovviamente, introducono un ritardo fisso di
elaborazione, pi una componente dovuta al traffico in rete.
Sliding Windows
L'introduzione del protocollo Sliding Windows (finestre scorrevoli) rende molto pi efficiente la
trasmissione e quindi l'utilizzo della banda, perch permette al mittente di trasmettere tutti i
pacchetti nella finestra senza dover aspettare l'ACK; via via che arrivano i vari ACK, il TCP fa
slittare la finestra in avanti trasmettendo dei nuovi pacchetti dinamicamente, come
rappresentato in figura:

Le dimensioni della finestra possono variare fino ad un massimo di 64 Kbytes. Una finestra di
ampiezza opportuna riuscirebbe quasi, ipotizzando di non perdere pacchetti, a saturare
completamente
la
banda
di
trasmissione.
Infatti appena il primo pacchetto della finestra arriva a destinazione, parte subito un ACK: se il
round-trip di quel collegamento abbastanza piccolo, o la finestra sufficientemente grande, in
modo che l'ACK arrivi prima che il trasmettitore abbia esaurito la finestra, allora il flusso di dati

continuo
e
pari
alle
potenzialit
massime
della
rete.
Al contrario, se il round-trip lento, si pu avere la cosiddetta "silly window syndrome", che

17

Poletti Dario

Tesina dEsame

AS 2005/06

consiste in un comportamento anomalo del TCP. Il trasmettitore spedisce i pacchetti nella


finestra e poi perde molto tempo aspettando i relativi ACK prima di passare ai dati successivi,
lavorando
quindi
con
una
generazione
impulsiva
del
carico
in
rete.
Il meccanismo di acknowledgment pu essere un "go back N" o un "go back N selective
repeat", nel senso che le disposizioni dei reference sono molto labili, specificando solo che ogni
pacchetto deve essere riconosciuto in qualche modo. Gli standard specificano invece
chiaramente che tale meccanismo deve essere cumulativo, nel senso che un ACK relativo ad
un certo numero di byte della finestra, non ad un pacchetto, e che gli ACK successivi
riconosceranno
altri
byte
in
modo
cumulativo.
Ad esempio, supposto di lavorare con ACK da 500 byte, il primo ACK conferma i primi 500
byte, il secondo assicura che sono stati ricevuti i primi 1000 byte, il terzo garantisce fino a
1500 byte e cos via. Siccome per la dimensione dei pacchetti non fissata, non detto che
un
ACK
corrisponda
ad
un
solo
pacchetto
TCP.
Possiamo allora definire la "finestra di acknowledgment" (da non confondere con quella di
trasmissione) come il numero di byte, ovvero il numero di pacchetti TCP, una volta fissata la
loro dimensione, riconosciuti da un singolo ACK. Avere una finestra di acknowledgment ampia
limita il traffico in rete generato dagli ack, poich lo stesso numero di byte trasmesso viene
riconosciuto valido con meno pacchetti ACK.
Il meccanismo della finestra molto importante anche perch fornisce al ricevente un mezzo
per governare la mole di dati spediti dall'utente sorgente. Infatti, nell'header dei pacchetti TCP
esiste un campo specifico, detto "window", tramite il quale il ricevente indica al trasmittente la
dimensione in byte della finestra che disposto attualmente a ricevere (finestra del ricevente).
Questo accordo avviene quando il ricevente spedisce un ACK (che anche esso un pacchetto
TCP) nel quale specifica innanzitutto l'ultima posizione riconosciuta valida e, a partire da
questa, il numero di byte che attualmente pu accettare.
Headers
L'unit di trasporto tra i software TCP di due macchine detto segment. I segmenti sono
scambiati per stabilire connessioni, trasferimenti di dati, inviare ACK, comunicare la
dimensione
della
Sliding
Windows
e
chiudere
le
connessioni.
Poich il TCP usa il piggybacking (trasmissione contemporanea di dati in entrambe le direzioni),
un ACK che viaggia da una macchina A ad una macchina B potrebbe viaggiare in uno stesso
segmento in cui viaggiano i dati tra A e B, sebbene l'ACK sia riferito ai dati spediti tra B ed A.
La figura mostra il formato del segmento TCP:

Ciascun segmento diviso in due parti: un TCP header ed un TCP data.


Un header ha una lunghezza di almeno 20 byte e comprende molti campi; i pi importanti sono
sicuramente il "port number" e il "sequence number", sia della sorgente che della destinazione.
Il numero di porta serve per distinguere fra loro dei trasferimenti che avvengono
contemporaneamente; ovviamente devo conoscere anche i numeri di porta degli altri tre nodi.
Il numero di sequenza identifica la posizione dei byte dati nel flusso spedito all'interno del
segmento; serve per ordinare i pacchetti in ricezione e per verificare di non averne perso
nessuno; da notare che tale numerazione riguarda i byte non i pacchetti, nel senso che se si
usano pacchetti da 500 byte, il primo numerato 500, il secondo 1000, il terzo 1500 e cos

18

Poletti Dario

Tesina dEsame

AS 2005/06

via.
Un altro campo il "acknowledgment number"; anche esso, come il "sequence number",
cumulativo
e
conta
i
byte
anzich
i
pacchetti.
Il campo da 2 byte "window" quello che consente al ricevente di indicare al trasmittente la
dimensione della finestra da usare per il trasferimento in corso; da notare che due alla sedici fa
64
K,
cio
la
dimensione
massima
della
finestra.
Gli ultimi due campi sono il "checksum" dell'header e un "urgent pointer" per alcuni casi
particolari.
Ovviamente, in ricezione il livello TCP ritaglia l'header TCP, il livello IP ritaglia l'header IP, il
livello di rete ritaglia l'header e il checksum relativo ad esso.

Le porte del TCP sono molto pi complesse rispetto a quelle dell'UDP, perch un dato numero
di porta non corrisponde ad un singolo oggetto. Infatti nel TCP gli oggetti da identificare sono
delle connessioni di circuito virtuali tra due programmi applicativi, e non delle particolari porte.
Il TCP usa la connessione, e non la porta di protocollo, come sua fondamentale astrazione; le
connessioni sono identificate da una coppia di end points, ognuno dei quali costituito da due
interi host,port, dove l'host l'indirizzo IP dell'host e port il numero di porta TCP su quell'host
(per esempio: l'end point 128.10.2.3,25 specifica la porta 25 sulla macchina di indirizzo
128.10.2.3).
Poich il TCP identifica una connessione con una coppia di valori, uno dato numero di porta pu
essere condiviso da pi connessioni su una stessa macchina, senza che si crei ambiguit.
Perci la macchina identificata da 128.10.2.3,53 pu comunicare simultaneamente con le
macchine
identificate
da
128.2.254.139,1184
e
128.9.0.32,1184.
Si possono cos creare servizi concorrenti con connessioni multiple simultanee, senza dover
riservare un numero di porta locale per ogni connessione. Per esempio, alcuni sistemi
forniscono un accesso concorrente al loro servizio di posta elettronica, permettendo a pi
utenti di spedire un E-mail contemporaneamente.
Ci sono due fondamentali approcci per l'assegnazione delle porte, usando:
Central Authority: due computers che devono interoperare tra di loro, si accordano per
permettere ad un'autorit centrale di assegnare i numeri di porta (Well-known ports) che
necessitano e di pubblicare la lista di tutte le assegnazioni (Universal assignment) il software
che gestisce le porte sar realizzato in base a tale lista.
Dynamic Binding: in questo approccio le porte non sono universalmente conosciute; infatti,
se un programma necessita di una porta, il software di rete ad assegnargliela. Per sapere la
porta corrente assegnata su un altro computer, necessario inviargli una richiesta del numero
di porta assegnata al servizio di interesse.
I progettisti del TCP/IP usano un approccio ibrido che assegna alcuni numeri di porta a priori
(Low values) e lascia altri disponibili per siti locali o programmi applicativi (High values).
La tabella seguente contiene alcune tra le pi significative TCP well-known ports:
Decimal

Keyword

UNIX Keyword

Description

ECHO

echo

Echo

DISCARD

discard

Discard

11

USERS

systat

Active Users

19

Poletti Dario

Tesina dEsame

AS 2005/06

20

FTP-DATA

ftp-data

File Transfer Protocol (data)

21

FTP

ftp

File Transfer Protocol

23

TELNET

telnet

Terminal connection

25

SMTP

smtp

Simple Mail Transport Protocol

42

NAMESERVER

name

Host Name Server

43

NICNAME

whois

Who is

53

DOMAIN

nameserver

Domain Name Server

Esistono almeno due notevoli problemi col TCP, relativi alla congestione della rete ed al
meccanismo
di
"timeout
and
retransmission".
La congestione una condizione di ritardo critico causata da un sovraccaricamento dei
datagrammi in uno o pi switching points (es. router). Quando avviene una congestione, il
ritardo aumenta ed i routers iniziano ad accodare datagrammi, finch non sono in grado di
instradarli.
Nel peggiore dei casi, il numero dei datagrammi che arrivano ad un router congestionato
cresce (esponenzialmente nel tempo) fino a che esso non raggiunge la sua massima capacit e
comincia a perdere datagrammi. Dal punto di vista degli hosts, la congestione semplicemente
un
aumento
di
ritardo.
Inoltre, poich la maggiorparte dei protocolli usa un meccanismo di timeout and
retransmission, essi rispondono al ritardo ritrasmettendo datagrammi, aggravando cos la
congestione.
Un aumento di traffico produce un aumento di ritardo, che provoca a sua volta un aumento del
traffico, e cos via, finch la rete non pu essere pi usata: tale condizione detta Congestion
Collapse
(Collasso
dovuto
alla
congestione).
Non esiste un meccanismo esplicito per risolvere il controllo della congestione, anche se
un'attenta implementazione del TCP/IP pu permette di individuare ed affrontare meglio la
situazione.
Esistono due modi per affrontare il problema della congestione di rete: recuperare la
funzionalit una volta che la congestione ha avuto luogo (Recovery) oppure evitarla
(Avoidance).
Per evitare il collasso della rete, il TCP pu utilizzare la tecnica del Multiplicative Decrease
Congestion Avoidance. Il TCP/IP mantiene un secondo limite, oltre dimensione della finestra del
ricevente, detto congestion window limit; in oogni istante il TCP assume come dimensione della
finestra
di
trasmissione,
la
minima
tra
le
due.
In condizioni normali, le due finestre sono uguali, ma in condizioni di congestione, la
congestion window riduce il traffico che il TCP immette in rete, dimezzando la propria
dimensione ogni volta che si perde un segmento (fino ad un minimo di uno). Il rate di
trasmissione ridotto in modo esponenziale ed il valore del timeout viene raddoppiato per ogni
perdita.
Se, una volta superata la congestione, si dovesse invertire la tecnica del Multiplicative Decrase,
raddoppiando la congestion window, si avrebbe un sistema instabile che oscillerebbe
ampiamente
tra
assenza
di
traffico
e
congestione.
Per ripristinare le condizioni di normale funzionamento, una volta che avvenuto il collasso, il
TCP pu invece adottare una tecnica di Slow Start Recovery. Non appena inizia il traffico su una
nuova connessione o aumenta dopo un periodo di congestione, la congestion window ha la
dimensione di un singolo segmento ed ogni volta che arriva un ACK, viene incrementata di
uno.

20

Poletti Dario

Tesina dEsame

AS 2005/06

In questo modo, dopo aver trasmesso il primo segmento ed aver ricevuto il suo ACK, la
finestra di congestione viene raddoppiata; una volta inviati i due segmenti, per ogni ACK
ricevuto la congestion window sar incrementata di una unit, cos il TCP potr spedire quattro
segmenti, e cos via, fino a raggiungere il limite imposto dalla finestra del ricevente.
Per evitare che la dimensione della finestra si incrementi troppo velocemente e causi
congestione addizionale, il TCP impone una ulteriore restrizione. Una volta che la finestra di
congestione raggiunge la met del suo valore originale, il TPC entra in una fase di congestion
avoidance e rallenta il rate di incremento; in questo caso la dimensione della finestra sar
incrementata di una sola unit dopo che tutti i segmenti della finestra hanno ricevuto ACK.
La combinazione delle due tecniche di Recovery ed Avoidance migliora drasticamente le
prestazioni del TCP senza bisogno dell'aggiunta di ulteriori strumenti per il controllo della
congestione.

L'SMTP (Simple Mail Transfer Protocol) , come dice il nome stesso, un protocollo creato per
gestire in maniera semplice e veloce l'invio di messaggi di posta elettronica (e-mail). Esso si
basa su una connessione (indifferentemente TCP o UDP), tra un host client ed un server il cui
demone software in ascolto sulla porta 25. La comunicazione tra le due macchine, avviene
attraverso alcuni semplici scambi informazioni. Una volta stabilita la connessione, infatti:
1. il client si presenta, inviando una stringa del tipo: "HELO Fabio", nella quale indica il suo
nome. Il server risponde con un "250 +OK" che il codice utilizzato dai server SMTP
per segnalare l'avvenuta ricezione e l'elaborazione del messaggio;
2. il client specifica che si tratta di una e-mail e dovrebbe ora fornire il proprio indirizzo di
posta. I nuovi software di ricezione (Outlook Express, Eudora, ecc...), per, ignorano di
pari passo questo campo. Essendo comunque obbligatorio, necessario inserire la
stringa: "MAIL FROM:<>";
3. il client specifica quindi l'indirizzo del destinatario della e-mail. Una stringa di esempio
pu essere: "RCPT TO:<F_Ruini@hotmail.com>";
4. terminata la fase di autenticazione e pu quindi cominciare quella di scrittura e
trasmissione del messaggio. Prima di tutto necessario il comando "DATA";
5. ora si pu indicare l'indirizzo del mittente. Ad esempio: "FROM:fabietto2@libero.it";
6. quindi necessario ripetere l'indirizzo del destinatario: "TO:F_Ruini@hotmail.com";
7. il messaggio dovrebbe contenere un soggetto; per specificarlo: "SUBJECT:soggetto
prova";
8. ora serve una riga vuota, per indicare al server che l'intestazione della e-mail
conclusa e che ora inizia il corpo del messaggio. Il testo pu essere inviato tutto insieme
o anche riga per riga. Il server provvede ad inoltrare la e-mail quando riceve la stringa
".";
9. il client si scollega: "QUIT".

21

Poletti Dario

Tesina dEsame

AS 2005/06

Il POP3, descritto in almeno 20 RFC diverse (1081, 1225 e 1460 solo per citare le pi
significative) il protocollo complementare dell'SMTP. Se infatti l'SMTP si occupa della
spedizione delle e-mail, il POP3 fa l'esatto contrario, ovvero fornisce una serie di comandi per
la fase di ricezione. E' per merito dei server POP3 che possibile ricevere le e-mail "on
demand". Una volta inoltrato dal server SMTP del mittente, infatti, un messaggio viene
memorizzato dal server POP3 del destinatario, che solitamente una macchina sempre accesa
e destinata prevalentemente a ricevere la posta in arrivo. L'utente pu collegarsi in un qualsiasi
momento con il proprio server POP3 e trasferire in locale tutti i messaggi destinati a lui,
tenendone o meno una copia sul server. Il demone POP3 solitamente in ascolto sulla porta
110 TCP, alla quale il client deve accedere per poter controllare la sua mailbox. I procedimenti
principali utilizzati dal protocollo per avviare il trasferimento sono i seguenti:

il client si identifica, inserendo il proprio username. La stringa da inviare deve essere ad


esempio: "USER fabietto@libero.it". Il server risponde con un +OK ed un codice che
indica la corretta ricezione ed elaborazione della stringa trasmessa;
una volta fornito il proprio username, l'utente deve farsi riconoscere mediante una
password. La stringa da inviare del tipo "PASS 5info2" (NB: la mia password non
questa, ma a titolo esemplificativo credo possa andare bene). Il server risponde inviando
il solito +OK, seguito per dal numero di messaggi presenti nella mailbox;
il client pu quindi iniziare la ricezione dei messaggi, con la stringa "RETR
numeromessaggio". Ad esempio: "RETR 1" provoca l'invio dal server al client del primo
messaggio (in ordine temporale basato sulla spedizione) presente nella casella di posta;
nonostante venga trasmesso al legittimo destinatario, il messaggio rimane memorizzato
anche nell'hard disk del server. Per eliminarlo il client pu usare la forma: "DELE
numeromessaggio";
per chiudere la connessione, come nel caso dell'SMTP, sufficiente l'invio della stringa:
"QUIT".

Il protocollo POP3 stato ormai sostituito dal pi recente IMAP4. Questo nuovo protocollo non
ha comunque introdotto sostanziali migliorie al POP3, al punto che, se fosse possibile pesare il
numero di software che sfruttano uno solo dei due protocolli, l'ago della bilancia continuerebbe
a pendere inesorabilmente verso il POP3

L'FTP un protocollo che garantisce il trasferimento di file tra due host, in maniera affidabile ed
efficiente. Esso si appoggia ai protocolli TCP e Telnet per le connessioni, aggiungendo una
interfaccia pi complessa, ma decisamente pi affidabile.

22

Poletti Dario

Tesina dEsame

AS 2005/06

HTTP - Hyper Text Transfer Protocol


L'HTTP uno dei protocolli pi recenti (l'RFC 1945 di Tim Berners-Lee datata 1996), che ha
notevolmente agevolato l'espandersi a livello mondiale di Internet. La sua funzione principale
quella di interfacciamento con il WWW (World Wide Web) e di conseguenza con l'HTML (HyperText Markup Language), il linguaggio che sta alla base dei documenti ipertestuali. Proprio per
agevolare l'ipertestualit delle pagine, con link che permettono di passare da una pagina
all'altra tramite un semplice clic del mouse, l'HTTP stato progettato come un protocollo
"state-less" (senza memoria). Ci significa che il procedimento di ricezione dati non vincolato
a quelli appena ricevuti. Quando richiediamo la visualizzazione di una pagina HTML, infatti, il
nostro browser non fa altro che connettersi al server dove essa memorizzata, richiederla
attraverso semplici stringhe ASCII di testo (chiamate "method"), riceverla e chiudere
immediatamente la connessione. L'unico incoveniente di questo protocollo si riscontra quando
l'utente ha problemi a connettersi al server HTTP. Pu infatti capitare di riuscire a vedere
qualche pagina, senza per essere in grado di visualizzare quelle successive.

DNS - Domain Name Service


Il DNS un particolare servizio che consente la risoluzione del nome di un host nell'indirizzo IP
corrispondente. In ambiente Windows NT questa funzione viene assolta da un server locale
(server DNS); nell'ambito di Internet, invece, il server DNS non locale, ma messo a
disposizione in remoto dal provider che fornisce l'accesso al Web. Sostanzialmente, il server
DNS un database, contenente un elenco di nomi di host e corrispettivi indirizzi IP. L'HTTP si
appoggia pesantemente al DNS. Ci permette di collegarsi ad un server web utilizzando un
nome facile da ricordare (ad esempio http://atreides.altervista.org) invece che il corrispettivo
IP (ad esempio 188.234.321.45)

1.

23