PROTOCOLLO TCP/IP

Materie:Riassunto
Categoria:Sistemi

Voto:

2.5 (2)
Download:220
Data:21.06.2005
Numero di pagine:24
Formato di file:.doc (Microsoft Word)
Download   Anteprima
protocollo-tcp-ip_3.zip (Dimensione: 93.65 Kb)
trucheck.it_protocollo-tcp-ip.doc     175.5 Kb
readme.txt     59 Bytes


Testo

PROTOCOLLO TCP/IP
Cenni storici
Nel 1950 nel periodo della guerra fredda il Dipartimento della Difesa americano decise di far realizzare una rete in grado di resistere anche in caso di un conflitto nucleare, in particolare la rete doveva essere:
• Versatile e flessibile
• In grado di funzionare con mezzi trasmessivi diversi
• Senza dover obbligare a modifiche del software esistente
all’epoca tutte le comunicazioni militari utilizzavano la rete telefonica basata su un numero limitato di centrali di commutazione, la vulnerabilità di queste comunicazioni era proprio dovuto a questo: il malfunzionamento di poche centrali avrebbe frammentato la rete in molte “isole” separate.
La rete che inizialmente fu chiamata Arpanet, era costituita da nodi di commutazione distribuiti (Imp) e sfruttava la tecnologia digitale a commutazione di pacchetto.
Iniziarono ad interessarsi ad Arpanet vari enti e centri di ricerca universitari, per questo l’Agenzia di Comunicazione Militare decise di scindere Arpanet in due parti: Milnet – destinata al Ministero della Difesa e, Arpanet – a favore delle varie università ed enti.
Dopo il 1983, quando il Tcp/Ip divenne il protocollo ufficiale, il numero di computer e utenti collegati ad Arpanet crebbe velocemente diventando una rete globale e facendo connettere sia computer di università che di enti governativi, centri di ricerca, aziende ecc.. Con il passare del tempo diventando una grande rete geografica mondiale, Arpanet prese il nome di Internet e attualmente fornisce servizi di:
• E-mail – il servizio di posta elettronica (protocollo POP3,SMTP)
• Login remoto – gli utenti hanno la possibilità in un qualunque punto di Internet di fare login su altri i computer per i quali hanno un account (protocollo TELNET)
• Trasferimento file - gli utenti possono copiare file da un computer ad un altro indipendentemente dalla distanza che separa questi ultimi (protocollo FTP)
• News – forum specializzati dove utenti con interessi comuni possono scambiarsi messaggi (protocollo NNTP)
• WWW (world wide web) – che permette l’utilizzo di ipertesti cioè documenti contenenti testi, immagini, suoni, video e collegamenti ad altri documenti o ipertesti (protocollo HTTP)
L’accesso ad Internet ora è ottenuto attraverso società chiamate Isp (Intenet service provider) che danno la possibilità agli utenti residenziali di chiamare attraverso la rete telefonica il loro Pop (point of presence) e consentire attraverso i loro router, dislocati nelle varie città, la connessione alla rete Internet.
Per riassumere le caratteristiche di Internet possono essere descritte dalle seguenti proprietà:
1. Rete decentrata. Ogni nodo della rete di telecomunicazione è indipendente dagli altri nodi e una conseguenza importante è che l’interruzione di un nodo non influisce sul funzionamento e sulla comunicazione dei nodi rimasti inattivi
2. Commutazione di pacchetti. I messaggi spediti da un host sono suddivisi in piccole unità chiamate pacchetti che non vengono inviati insieme. Ogni pacchetto può essere inviato sulla rete seguendo percorsi indipendenti
3. Rete ridondante. I percorsi che i pacchetti possono seguire sono diversi e vengono scelti in base a criteri di distanza ed efficienza della linea che è un parametro dinamico.
Internet è formata da diverse tipologie di rete:
• Reti Dorsali (backbone) per interconnettere altre reti
(al momento sono: NSFNET negli Stati Uniti, EBONE in Europa e le grandi dorsali commerciali)
• Reti Regionali e Reti Universitarie
• Reti Commerciali che forniscono l’accesso alle dorsali per gli abbonati al servizio di connessione ad Internet
• Reti Lan di aziende ed organizzazioni
Per connettere tra di loro più reti Wan occorre un dispositivo chiamato Router (letteralmente: instradatore), che svolge la funzione di instradare i pacchetti Ip attraverso le reti.
Indirizzi Ipv4
Ogni host e router di Internet ha un indirizzo Ip che codifica il suo indirizzo di rete e il suo numero di host. La combinazione è unica: in teoria, non possono esistere su Internet due macchine con lo stesso indirizzo Ip. IPv4 rappresenta la versione di rappresentazione di indirizzi Ip attualmente in uso dell'Internet protocol: tutti gli indirizzi Ip sono lunghi 32 bit e sono suddivisi in diversi campi che permettono in fase di instradamento di determinare la rete di apparteneza (net-id e host-id). Sono utilizzati nei campi indirizzo sorgente e indirizzo destinazione dei pacchetti Ip. E’ importante notare che un indirizzo Ip non si riferisce veramente a un host ma ad una scheda di rete per cui se un host è collegato contemporaneamente a più reti ha più indirizzi Ip. Gli indirizzi Ip sono stati divisi in cinque categorie:
Classe Rete Host
A da 1.0.0.0 a 127.255.255.255

7 bit
24 bit
B da 128.0.0.0 a 191.255.255.255
10
14 bit
16 bit
C da 192.0.0.0 a 223.255.255.255
110
22 bit
8 bit
D da 224.0.0.0 a 239.255.255.255
1110
28 bit multicast
E da 224.0.0.0 a 255.255.255.255
1111
28 bit riservati per usi futuri

Questa assegnazione chiamata indirizzamento per classi, ma nella pratica il sistema è andato in disuso.
Il numero di indirizzi univoci disponibili in IPv4 è , ma bisogna tener presente che non vengono usati tutti, perché alcuni sono riservati a un particolare utilizzo (ad esempio gli indirizzi 0.0.0.0, 255.255.255.255, 192.0.34.166 ecc..) e perché certe classi non vengono sfruttate interamente per via della suddivisione interna in classi più piccole. L'indirizzamento a classi, proprio per questo, presenta diversi limiti dovuti soprattutto al numero di host gestibili dalle diverse classi. Quindi per risparmiare Ip sono state ideate altre tecniche:
• DHCP: assegnazione dinamica degli indirizzi per un uso temporaneo
• Nat: per associare un unico indirizzo Ip pubblico ad un ampio numero di Host
• Ipv6: la prossima versione dell’Internet Protocol
• Indirizzamento mediante maschere di sottorete
Le sottoreti
Tutti gli host di una rete devono avere lo stesso numero di rete, come è stato detto questa proprietà dell’indirizzamento IP crea problemi quando le reti crescono. La soluzione è quella di suddividere internamente la rete in più parti - sottoreti - facendo in modo che il mondo esterno veda ancora una singola rete.
Dal punto di vista fisico la suddivisione in sottoreti si ottiene adottando più router, a ciascuno dei quali fa capo una sottorete, connessi ad un router principale. Per implementare le sottoreti all’interno dell’Ip alcuni bit riservati al numero dell’host vengono utilizzati per il numero di sottorete. Il router principale ha bisogno di una maschera di sottorete (subnet mask) che indichi appunto il punto di demarcazione tra numero di rete e di sottorete con quello dell’host. Anche le maschere di sottorete sono scritte in notazione decimale a punti (es. 255.255.255.0) oppure da una barra seguita dal numero di bit della parte che rappresenta la rete più la sottorete (es. /22 indica che la maschera di sottorete è lunga 22 bit).
Esempio (rete di classe B con 64 sottoreti e maschera di sottorete lunga 22 bit)

10
14 bit per la rete
6 bit per la sottorete
10 bit per l’host

All’esterno della rete la divisione in sottoreti non è visibile
L’indirizzamento di una rete
Il protocollo di comunicazione del Web è l’http (hypertext transfer protocol, protocollo per il trasferimento degli ipertesti) ed è conforme alle regole del protocollo Tcp/ip dal 1991. Il modello di interazione tra i nodi è di tipo client-server: un host richiede una pagina web ad un server http che in risposta glielo spedisce.
Nell’utilizzo quotidiano il protocollo prevede che l’utente comune possa utilizzare, al posto dell’indirizzo Ip dei nomi simbolici, si parla più precisamente di Url (uniform resource locator).

URL = localizzatore uniforme di risorse
es.:
http:/hostname [:porta] / path [? Stringa di ricerca ]
• Hostname = nome del server a cui si richiede il documento, può essere espresso in notazione decimale puntata (128.141.201.74) oppure come nome di dominio (www.cd.unibo.it) o come nome mnemonico (www.ilmiolibro.it)
• Porta = è il nome di porta dove il server http fornisce i propri servizi, se non specificato viene assunta di default il numero di porta 80, predefinita per http
• Path = il percorso del documento all’interno del server http
• ? stringa = è una voce opzionale che permette di aggiungere parole chiave che verranno utilizzate per la ricerca all’interno ad esempio dei motori di ricerca
La possibilità che ha l’utente di utilizzare nomi simbolici crea il problema di dover, in ogni caso, necessariamente risalire all’indirizzo Ip dell’host che si vuole contattare.
Il problema dell’indirizzamento viene risolto interrogando un sistema gerarchico di denominazione che suddivide Internet in domini separati. Ciascun dominio viene affidato ad un server, detto Dns (Domain Name Server), a cui viene affidata la gestione dell’insieme dei nomi e degli indirizzi di quel dominio: al suo interno è presente un database dove sono memorizzati i nomi degli host di quel dominio con i relativi indirizzi Ip.
Tutti i DNS sono collegati tra loro in modo che ciascuno di essi possa accedere anche all’insieme degli indirizzi residente sugli altri. I vari domini sono raggruppati in domini più ampi dando origine ad una struttura ad albero più ampia, in modo da facilitare la ricerca di un indirizzo associato ad un singolo host. Il nome completo dell’Host contiene tutti i domini di appartenenza da quello più interno a quello più esterno.
Supponiamo che un host (detto risolutore) ad es. ricerca.roma.it abbia un’interrogazione su un nome di dominio riferita ad un host: lagrange.scuole.milano.it si trova quindi nella situazione di dover convertire il nome di quest’ultimo nel corrispondente indirizzo Ip, le fasi che possono essere seguite nel caso peggiore sono le seguenti:
• il risolutore controlla se le informazioni necessarie (cioè l’Ip) siano disponibili localmente nella sua cache, altrimenti invia una richiesta al server dei nomi locale cioè roma.it
• se il server dei nomi locale cioè roma.it non ha mai fatto un’interrogazione su questo dominio e quindi non conosce nulla di esso, allora deve inviare un pacchetto al server dei nomi del dominio it
• se il server dei nomi non conosce l’indirizzo Lagrange.scuole.milano.it allora inoltra la richiesta al server dei nomi per milano.it e a sua volta questo la inoltra al server scuole.milano.it che dispone sicuramente di un record autorevole, cioè di un record sempre corretto e aggiornato riguardante l’indirizzo Ip dell’Host richiesto
• visto che ogni richiesta proviene spesso da un client per un server, il record delle risorse richiesto deve percorrere all’indietro la sua strada fatta e quando i record vengono consegnati al server dei nomi roma.it sono inseriti in una cache locale, nel caso fossero necessari in seguito. Tuttavia queste informazioni non sono autorevoli perché tutte le modifiche apportate a scuole.milano.it non possono essere propagate a tutte le cache del mondo conosciute, per questo motivo le voci nella tabella non dovrebbero durare molto a lungo
Protocollo IPversion 4
Il protocollo prevede che i dati vengano strutturati in pacchetti chiamati datagrammi Ip, costituiti da due parti: l’intestazione e il campo dati. L’intestazione (header) contiene le informazioni necessarie per l’instradamento lungo la rete del datagramma ed è suddiviso nei seguenti campi:
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
Versione
IHL
Servizio
Lunghezza totale
Identificazione
Flags
Offset frammentazione
TTL
Protocollo
Checksum
Indirizzo mittente
Indirizzo destinatario
Opzioni
Padding

• un campo di 4 bit che definisce la versione del protocollo con cui è stato creato il datagramma
• un campo di 4 bit che definisce la lunghezza dell’intestazione
• un campo di 8 bit che definisce le caratteristiche del servizio richiesto (precedenza, velocità, affidabilità)
• un campo di 16 bit che definisce la lunghezza totale del datagramma espressa in byte
• tre campi: identificazione, flag, offset del frammento che permettono di dividere il datagramma in unità più piccole
• TTL: tempo di vita del datagramma, cioè il tempo massimo consentito per il trasferimento dei dati lungo la rete
• un campo che definisce il protocollo utilizzato ad alto livello per creare il messaggio
• un campo che contiene il checksum dell’intestazione per il controllo di correttezza
• un campo contenente l’indirizzo Ip del mittente e uno contenente l’indirizzo Ip del destinatario
• un campo opzionale contenente le informazioni sulle operazioni da fare durante il viaggio del datagramma
• Padding: un campo di riempimento allo scopo di portare la lunghezza dell’intestazione ad un multiplo di 32 bit
Il datagramma ha una lunghezza massima di 65536 byte è previsto però che durante il suo cammino venga frammentato anche più volte, per renderlo compatibile con le caratteristiche della rete che deve attraversare.
Il protocollo Ip è un protocollo di tipo:
• best-effort (inaffidabile): il protocollo non cerca di verificare se il pacchetto è stato consegnato oppure no
• senza connessione: non viene stabilita una connessione prima di iniziare una trasmissione
Indirizzo di rete e maschere di sottorete
Ad ogni computer che utilizza il protocollo Tcp/Ip è assegnato un indirizzo a 32 bit noto come indirizzo Ip della macchina, oltre all’indirizzo Ip è necessario specificare anche la maschera di sottorete associata a quell’indirizzo. Quando si assegna un indirizzo Ip a un computer una parte dei bit della parte sinistra del numero Ip a 32 bit è uguale per tutti i computer collegati alla medesima rete locale e costituisce l’indirizzo di rete locale. I bit rimanenti dell’indirizzo Ip a 32 bit identificano un particolare computer su quella rete. Affinché il computer sappia in che modo l’indirizzo Ip a 32 bit sia stato suddiviso, si utilizza un secondo numero a 32 bit detto maschera di sottorete. Questa maschera indica come l’indirizzo Ip debba essere interpretato cioè specificando quanti bit identificano la parte di rete e quanti identificano la parte host. La maschera di sottorete viene riempita sequenzialmente a partire a sinistra di 1 per tutta la parte di rete e poi di 0 per tutta la parte host.
Esempio: come estrarre l’indirizzo di rete dall’indirizzo Ip conoscendo la subnet mask?
maschera di sottorete: 11111111.00000000.00000000.00000000
scritta in notazione decimale puntata: 255.0.0.0
indirizzo Ip: 10.34.23.134
scritta nella notazione binaria: 00001010.00100010.00010111.10000110
mediante l’informazione sulla maschera di sottorete è possibile usando la semplice operazione di AND logico bit a bit, estrarre da un indirizzo Ip la parte che rappresenta la rete:
indirizzo Ip: 00001010.00100010.00010111.10000110 (10.34.23.134)
AND bit a bit
maschera di sottorete: 11111111.00000000.00000000.00000000 (255.0.0.0)
___________________________________
00001010.00000000.00000000.00000000 porzione di rete utilizzata dalla macchina host.

L’instradamento dei datagrammi
Il problema dell’instradamento dei datagrammi viene affrontato con tecniche diverse a seconda che il trasmettitore e il ricevente appartengano alla stessa rete (a) oppure (b) a reti diverse.
(a) - trasmettitore e ricevitore appartengono a reti dello stesso tipo:
è sufficiente che il trasmettitore suddivida in frammenti il datagramma incapsulandolo in frame compatibili con le caratteristiche della rete e li immetta sulla rete stessa
(b) - trasmettitore e ricevitore appartengono a reti diverse:
in questo caso è necessario che il nodo trasmettitore sulla base dell’indirizzo Ip del ricevente e delle tabelle dei gateway (i quai sono presenti proprio allo scopo interfacciare reti diverse tra di loro) individui il gateway verso cui inoltrare il datagramma. Il gateway scelto si occuperà poi di continuare il lavoro di instradamento del datagramma generalmente modificandolo e/o frammentandolo per renderlo compatibile con le caratteristiche della rete da attraversare. A ciascun frammento viene associato un offset necessario per ricostruire il datagramma completo una volta raggiunta la destinazione.
Tecniche di instradamento
Le tecniche di instradamento messe in atto dai gateway per ciò che riguarda i datagrammi sono in continua evoluzione, le più rappresentative sono:
• il protocollo gateway to gateway
in questo tipo di protocollo è prevista l’esistenza di gateway centrali che sono a conoscenza dell’intera struttura di rete e di gateway periferici che invece sono a conoscenza della struttura della sottorete di loro competenza. In base a questo protocollo quando un datagramma raggiunge un gateway, questi verifica nella sua tabella di instradamento se è possibile instradare ulteriormente il datagramma verso la destinazione oppure no. In caso affermativo provvede ad inoltrare il datagramma lungo il percorso riconosciuto come valido, altrimenti provvede ad inviare il datagramma verso il gateway centrale che porterà a termine il compito.
Per far funzionare correttamente questo protocollo è necessario che: ogni gateway che si colleghi ad internet riceva l’insieme dei gateway a cui si può collegare direttamente, in modo così da aggiornare la propria tabella di instradamento, allo stesso modo è necessario che il gateway stesso comunichi a tutti gli altri l’indicazione delle reti che è in grado di raggiungere con il numero dei passaggi necessari, in modo che tutti gli altri possano aggiornare le proprie tabelle. Quest’ultima operazione deve essere anche ripetuta periodicamente in modo che tutti gli altri gateway ricevute queste informazioni aggiornino le proprie tabelle elaborando per ciascuna destinazione il percorso più breve
• il protocollo Shortest Pah First (SPF)
E’ un’evoluzione del protocollo precedente, in cui ogni gateway tiene conto anche di svariati parametri per risalire alle difficoltà che potrebbe incontrare un datagramma nell’attraversare una certa rete.
• il protocollo Exterior Gateway (EGP)
In base a questo protocollo vengono suddivise l’insieme delle reti che sono collegate tra di loro in sistemi autonomi ciascuno dei quali è governato autonomamente. I gateway appartenenti allo stesso sistema autonomo comunicano tra di loro per risolvere l’indirizzamento all’interno del sistema stesso e inoltre comunicano anche con i gateway appartenenti a sistemi diversi per ottenere informazioni sulle reti raggiungibili. Quest’ultima operazione viene svolta anche ad intervalli regolari per aggiornare le proprie tabelle di instradamento.
La suite di protocolli Internet, chiamata suite di protocolli TCP/IP, è un insieme di protocolli che implementa la pila di protocolli su cui si basa Internet. I due più importanti protocolli che funzionano in esso: il Trasmission Protocol (TCP) e l’Internet Protocol (IP). Tale suite può essere descritta per analogia con il modello ISO/OSI, che descrive i livelli della pila di protocolli. In una pila di protocolli ogni livello risolve una serie di problemi che riguardano la trasmissione di dati e un fornisce un ben definito servizio ai livelli più alti. I livelli più alti sono logicamente più vicini all'utente e funzionano con dati più astratti lasciando ai livelli più bassi di tradurre i dati in forme mediante i quali possono essere fisicamente manipolati.
Analogie tra i livelli del modello Iso/Osi, modello Tct/Ip, modello Client/Server:
Iso/osi Client/server Tcp/Ip
Applicazione
Applicazione
Applicazione
Presentazione
Sessione
Trasporto
Trasporto (Udp,Tcp)
Trasporto
Rete
Rete (Ip)
Fisico
Collegamenti
Collegamento fisico
Fisico
Protocollo TCP
Il TCP è il protocollo di rete per eccellenza, poiché detta le regole per il corretto instradamento dei pacchetti di dati lungo tutta la rete. Esso permette, in sostanza, che le informazioni partano da un mittente e giungano regolarmente ad un destinatario. I dati vengono suddivisi in gruppi elementari, chiamati pacchetti, i quali viaggiano autonomamente nella rete.
Il TCP assicura che tutti i pacchetti inviati ad un computer remoto arrivino a destinazione. Esso si occupa non solo di spezzettare in datagrammi i dati da inviare, ma anche di riassemblare i datagrammi ricevuti e di richiedere il reinvio dei pacchetti di dati, qualora questi siano andati perduti durante il trasporto.
Mentre il protocollo IP si limita a spedire rapidamente i pacchetti che gli arrivano procedendo all'instradamento degli stessi individuando l’host destinatario (protocollo senza connessione, non affidabile) a cui possono arrivare in un ordine sparso rispetto a quello stabilito in fase di trasmissione, il TCP si occupa invece di verificare che l’informazione inoltratagli arrivi correttamente a destinazione. Attraverso il TCP i dati vengono trasmessi sotto forma di flusso (data stream) e giungono a destinazione nello stesso ordine in cui sono partiti. Si parla per quanto riguarda del protocollo Tcp di un protocollo con connesione, affidabile.
Ogni segmento TCP inizia con un header (intestazione) fissa formata da 20 bytes che fanno riferimento all’intestazione Ip e altri 20 bytes dedicati per l’intestazione TCP, dopo l’intestazione seguono 65495 bytes di dati, questi sono in realtà opzionali: sono ammessi segmenti senza dati ampiamente usati per l’acknowledgement e i messaggi di controllo.

L'header di un segmento TCP è così strutturato:
• Porta sorgente (Source port) [16 bit]
• Porta di destinazione (Destination port) [16 bit]
• Numero di sequenza (Sequence number) [32 bit], indica la posizione del primo byte di dati del segmento TCP all'interno del flusso completo; se il flag SYN è settato, il valore del sequence number corrisponde all'Initial Sequence Number (ISN);
• Numero di acknowledgment (Acknowledgment number) [32 bit], contiene il valore del prossimo sequence number che la sorgente del segmento TCP è in attesa di ricevere ed è utilizzato congiuntamente al flag ACK;
• Data offset [4 bit], indica la lunghezza (in word da 32 bit) dell'header del segmento TCP;
• 6 bit riservati (Reserved), non utilizzati e predisposti per sviluppi futuri del protocollo; (si tratta di un campo predisposto per correggere i bugs in futuro)
• Bit di controllo (Control bits) [6 bit], possono essere settati ad 1 o 0 e indicano:
o URG: il valore dell'urgent pointer è valido;
o ACK: se =1 l'acknowledgment number è valido, se =0 il segmento non ha acknowledgment number;
o PSH: l'host che riceve il segmento TCP deve provvedere a trasferire i dati al Livello applicazioni il più velocemente possibile;
o RST: reset della connessione;
o SYN: se settato, indica che si tratta del primo segmento della connessione;
o FIN: se settato, indica che si tratta dell'ultimo segmento della connessione;
• Finestra (Windows) [16 bit], indica il numero di byte che il destinatario è in grado di accettare a partire dal byte indicato dall'acknowledgment number;
• Checksum [16 bit], utilizzato per il controllo della validità del segmento;
• Urgent pointer [16 bit], puntatore al sequence number di dati con priorità di trasferimento;
• Opzioni (facoltative)
• Padding, utilizzato per completare i bit non utilizzati dalle opzioni
La procedura utilizzata per instaurare in modo affidabile una connessione TCP tra due host è chiamata three-way handshake (triplice stretta di mano), ad indicare la necessità di scambiare tre messaggi per garantire la corretta creazione della connessione. Supponiamo, che l'host A (il client) intenda instaurare una comunicazione TCP con l'host B (il server); i passi indicati dalla tecnica three-way handshake sono:
1. A invia un segmento SYN a B, contenente il suo sequence number x; (è una numerazione progressiva che indica l’ordine in cui vengono effettuate le comunicazioni)
2. B invia un segmento SYN/ACK ad A, contenente il suo sequence number y e l'acknowledgment del sequence number x di A;
3. A invia un segmento ACK a B con l'acknowldedgment del sequence number y di B.
A seguito di un hadshaking positivo vengono fissati relativamente ad una sessione, il n° di porta che deve essere utilizzata dal client e i numeri di sequenza iniziali (ISN) di ambedue le parti. La connessione e il trasferimento dati può così avere inizio.
Protocollo UDP
L'User Datagram Protocol (UDP) è un protocollo a pacchetto. È usato come il TCP in combinazione con il protocollo IP, ma a differenza del TCP, non gestisce il riordinamento dei pacchetti né la ritrasmissione di quelli persi. L'UDP è un protocollo di rete senza connessione è ha come caratteristica di essere molto efficiente ma poco affidabile. È usato spesso per la trasmissione di informazioni audio o video. Come TCP, UDP possiede una funzione di multiplazione delle connessioni ottenuta attraverso il meccanismo delle porte.
Le porte :Le porte permettono ad un calcolatore di effettuare più connessioni contemporanee verso altri calcolatori, facendo in modo che i dati contenuti nei pacchetti in arrivo vengano indirizzati al processo che li stà aspettando. Le porte sono numeri a 16 bit, utilizzati per identificare una particolare connessione di trasporto tra quelle al momento attive su un calcolatore. I pacchetti appartenenti ad una connessione saranno quindi identificata dalla quadrupla [(indirizzo Ip sorgente),(indirizzo IP destinazione ),(porta sorgente),(porta destinazione. Il livello di trasporto associa a ciascuna porta utilizzata uno (o più) processi applicativi per trasmettere e/o ricevere dati. Per poter inviare con successo un pacchetto con una certa porta destinazione, ci deve essere un processo che è "in ascolto" su quella porta, ovvero che ha chiesto al sistema operativo di ricevere connessioni su quella porta. La porta sorgente utilizzata in una connessione viene scelta dal calcolatore che inizia la connessione tra una di quelle al momento non impegnate.
Esistono delle convenzioni per cui ad alcuni numeri di porta sono associati determinati protocolli di livello applicativo. Ad esempio, la porta 80 è utilizzata per il protocollo http. Le porte da 0 a 1023 sono considerate "privilegiate", e nella maggior parte dei sistemi operativi un processo ha bisogno di privilegi amministrativi per mettersi in ascolto su una di
Esempi di collegamento tra una Lan e Internet
• LAN con SERVER PROXY Il PC collegato a Internet è il PC Server, in quanto offre il servizio della condivisione dei servizi Internet agli altri due PC, denominati Client. Il PC Server funge anche da Gateway, poiché mette in collegamento la mini LAN interna con Internet. L'hardware di rete necessario per realizzare la piccola LAN sono, oltre alle schede di rete, un concentratore (HUB o Switch) per distribuire fisicamente i dati e i cavi di rete (di tipo Twisted Pair) da collegare al concentratore e alle schede di rete. E' necessario installare sul PC Server/gateway e sui PC Client un particolare software che prende il nome di Proxy, in grado di analizzare le richieste di servizi Internet provenienti dai PC Client e di inoltrarle verso l'esterno (Internet). Un software che esegue tale funzione, per esempio Wingate. Osservando lo schema della rete è possibile notare che l'architettura di rete in questo caso è del tipo Client/Server, la topologia fisica a stella
Ai PC Client sono assegnati indirizzi IP Privati mentre al PC gateway sia un indirizzo IP privato che di un IP pubblico. Il PC Client che necessita navigare, invia attraverso il suo browser la richiesta al PC gateway di visualizzare un determinato sito web. Il PC gateway viene "visto" dal PC Client grazie al suo indirizzo IP privato. La richiesta avviene sotto forma di pacchetti dati TCP/IP, accompagnati dall'indirizzo IP del mittente e del destinatario. Il PC gateway riceve la richiesta, ma prima di inviarla verso l'esterno sostituisce l'indirizzo IP privato del Client con il suo indirizzo IP pubblico (ottenuto dal provider al momento della connessione). In questo modo il server web che fornisce i contenuti (pagine web) vede solo l'indirizzo IP pubblico del gateway e non quelli privati dei PC client. Nel momento in cui il PC gateway ottiene le informazioni da Internet, le analizza e le inoltra al PC Client.
Le configurazioni software si limitano all'assegnazione degli indirizzi IP privati nelle proprietà del TCP/IP e del programma che svolge la funzione di Proxy.
• LAN con ROUTER In questa LAN, costituita da più computer, ci si avvale di un Router per la connessione a Internet. Il ROUTER è un dispositivo in grado di effettuare la connessione telefonica (ISDN / ADSL) e, attraverso un software NAT o Proxy, di condividere la connessione tra tutti i computer della LAN.
Nell’esempio, la rete è composta da tre PC ma, se si dispone di un maggior numero di macchine, sarà sufficiente ripetere le stesse configurazioni. Il router collegato ad Internet è il Server/Gateway: cioè un piccolo computer (senza tastiera e mouse) che offre la condivisione dei servizi Internet alle altre macchine della rete e mette in collegamento con Internet la mini LAN interna. L'hardware di rete necessario per realizzare la piccola LAN è costituito, oltre che dal Router, dalle schede di rete, da un concentratore, Hub o Switch, che distribuisce fisicamente i dati (a meno che il router non svolga anche la funzione di concentratore) e, naturalmente, dai cavi di rete (Twisted Pair) da collegare al concentratore e alle schede di rete.
Dallo schema della rete, si deduce chiaramente che l'architettura è, in questo caso, del tipo CLIENT/SERVER; la topologia fisica a stella.
I PC Client dispongono di un indirizzo IP privato, mentre il router gateway possiede sia un indirizzo IP privato che un IP pubblico. Il PC Client che desidera navigare invia al router gateway, attraverso il suo browser, la richiesta di visualizzazione di un determinato sito web. Quest'ultimo viene "visto" dal PC Client grazie al suo indirizzo IP privato. La richiesta, avviene sotto forma di pacchetti dati TCP/IP: questi ultimi sono accompagnati dall'indirizzo IP del mittente e da quello del destinatario. Il router gateway riceve la richiesta ma, prima di inviarla verso l'esterno, sostituisce l'ndirizzo IP privato del Client con il suo indirizzo IP pubblico (ottenuto dal provider al momento della connessione, ad es: 62.11.4.101). In questo modo, il server web che fornisce i contenuti (pagine web) vede solo l'indirizzo IP pubblico del gateway e non quello privato del PC client. Infine, nel momento in cui il router gateway ottiene le informazioni da Internet, le analizza e le inoltra al PC Client che ha eseguito la richiesta.
L'utilizzo di un router al posto di un computer che funge da Server/Gateway con un software proxy è una soluzione ideale infatti, il Router è un dispositivo dedicato ad una sola funzione, ovvero quella di analizzare i pacchetti e di instradarli verso la corretta destinazione. Di conseguenza la esegue nel migliore dei modi e a differenza di un PC dedicato alla funzione di gateway, il router occupa poco spazio, consuma molto meno e non produce il rumore o il calore tipico di una macchina sempre accesa. Il collegamento fisico del router nella rete cambia se il dispositivo in esame dispone anche di un Hub o di uno Switch incorporato. In caso contrario, il router si dovrebbe appoggiare ad un concentratore per collegare i vari apparati della rete. In entrambe le situazioni occorre collegare il Router alla linea digitale (se si utilizza un Router ISDN) o analogica (se si impiega un Router ADSL) attraverso un cavo telefonico. Se il router funge anche da concentratore per le macchine della rete, è sufficiente collegare le schede di rete di ogni macchina alle porte Ethernet del Router con un cavo twisted pair. In quest'ultimo caso, se si desidera ampliare la rete utilizzando altri concentartori (Hub o Switch) in cascata è necessario utilizzare un cavo incrociato (cross) sulle normali porte Ethernet. Se invece il router dispone di una porta UPLink, sarà sufficiente un cavo dritto per collegare i dispositivi in aggiunta.
Qualora il router non svolga anche la funzione di concentratore, sarà necessario collegare il cavo Twisted pair alla sua unica porta Ethernet e al concentratore. Il concentratore sarà a sua volta collegato alle macchine della rete sempre con l'ausilio di altri cavi.
La configurazione del router è un'operazione necessaria e può essere eseguita da un qualsiasi PC della rete. Nella maggior parte dei casi, attraverso software proprietari messi a disposizione dal produttore del dispositivo oppure tramite un qualsiasi browser di navigazione. In quest'ultimo caso è sufficiente inserire l'indirizzo IP del router (in genere è assegnato di default, ad es: 192.168.1.1 ) nella barra degli indirizzi del browser, richiamando così l'interfaccia grafica di appositi programmi di gestione del router. Alcuni router consentono ai più esperti di configurare le loro impostazioni tramite terminali (telnet), impartendo istruzioni a linea di comando in perfetto stile UNIX o DOS. Ricordiamo inoltre che spesso l'accesso ai software di configurazione è protetto tramite password.
Le impostazioni di cui il router necessita sono più o meno simili per tutti i modelli esistenti e sono le impostazioni relative alla connessione (numero di telefono del POP, user id, password, DNS primario e secondario, ecc), l'eventuale utilizzo del server DHCP incorporato (e di conseguenza il range di indirizzi IP che il router deve gestire) o in caso contrario gli indirizzi IP assegnati manualmente alle macchine della rete.
Vi sono anche delle impostazioni opzionali, ad esempio è possibile configurare il router affinché gestisca la disconnessione automatica in caso di mancato utilizzo prolungato della connessione o la possibilità di stabilire il numero di chiamate massime e la loro durata complessiva.
La configurazione delle macchine client collegate in rete sono simili a quelle dei client di una LAN con server proxy e sono esclusivamente quelle che riguardano le proprietà del TCP/IP. Queste sono: l'indirizzo del gateway (indirizzo IP del router); gli indirizzi IP privati; i DNS. Nel caso in cui il router sia stato configurato per utilizzare il suo server DHCP, non è necessario nemmeno procedere all'assegnazione degli IP privati statici, sarà infatti il router (il server DCHP) ad assegnare indirizzi IP provati dinamici tutte le volte che la macchina verrà avviata.
Nello schema di rete rappresentato, la LAN è costituita da 3 macchine. Se tuttavia si desidera aggiungere altre postazioni di lavoro, è sufficiente assegnare ai nuovi computer un indirizzo IP privato, progressivo rispetto a quello assegnato al router Gateway. Ad esempio, se si dispone di tre PC, gli indirizzi IP privati saranno: 192.168.0.1 per il router Gateway; 192.168.0.2 per il primo PC Client; 192.168.0.3 per il secondo PC Client. Se invece la LAN è composta da un numero superiore di macchine, sarà sufficiente continuare con lo stesso metodo (192.168.0.4/.5/.6 ecc.).
Riassumendo:
• Schede di rete: Tutte le macchine collegate in rete, devono essere dotate di apposite schede o di un adattatore di rete (NIC - Network Interface Card): si tratta di un dispositivo che si collega ad un computer attraverso un'interfaccia standard interna chiamata slot.
• Hub: L'Hub (o concentratore) è un componente hardware a cui fanno capo i vari dispositivi che costituiscono una rete.
Il suo compito principale è quello di ricevere le informazioni da un dispositivo di rete e di reinoltrarle a tutti gli altri dispositivi collegati alle sue porte, senza però verificare quale sia il reale destinatario di tali dati. In pratica, saranno i dispositivi che ricevono i dati inviati dall'hub a valutare se tali informazioni sono o meno di loro pertinenza: in caso contrario, queste verranno semplicemente rifiutate.
Tale operazione naturalmente genera un traffico inutile sulla rete, crea anche incertezze sulla sicurezza dei dati stessi. Infatti, bisogna considerare che tutte le informazioni potranno essere lette anche dai dispositivi a cui non sono realmente destinate.
• Switch: Gli switch sono pìù intelligenti rispetto agli hub e differiscono da questi ultimi per le modalità con cui trattano e reinoltrano i dati ricevuti. Essi sono in grado di analizzare il contenuto dei pacchetti di dati ricevuti e di reinotrarli solo ai reali destinatari, riducendo in tal modo il traffico superfluo nella rete e garantendo, di conseguenza, una maggiore ampiezza di banda. Per svolgere la loro funzione utilizzano il cosiddetto MAC (Media Access Control - Controllo di Accesso al Mezzo): un indirizzo fisico e univoco a 48 bit stampato nella scheda di rete del dispositivo hardware. In pratica leggono l’indirizzo MAC di destinazione dai pacchetti circolanti nella rete e riescono a capire chi è il destinatario.
• Router: E’ un dispositivo Hardware che si occupa di scegliere quale sia il percorso migliore per far comunicare due computer connessi ad una rete. In pratica un router è un computer di commutazione (IMP) che prende parte all'instaurazione di un collegamento in una rete di computer con commutazione di pacchetti come è la rete Internet. Questi dispositivi instradano (il nome router deriva proprio dal verbo inglese "to rout", instradare) i pacchetti di dati verso il relativo host di destinazione, servendosi dell'indirizzo IP del protocollo di instradamento: il TCP/IP.
L'indirizzo IP di un pacchetto di dati comunica a quale sottorete, a quale altro router o computer si devono inviare i dati. Una volta che il router determina dove il pacchetto deve essere spedito, determina la ‘strada’ più veloce per spedire i dati a destinazione. Il router inoltre spedisce i pacchetti di dati nel formato più adatto per il trasferimento delle informazioni. Quindi può reimpacchettare i pacchetti o frammentarli in pezzi più piccoli, in funzione del tipo di rete che i dati dovranno attraversare per giunger al destinatario.
Interfaccia a SOCKET
L’interfaccia a socket è un sistema di comunicazione tra i programmi applicativi e il protocollo Tcp/Ip, attraverso i socket i programmi applicativi possono accedere ai servizi di rete con operazioni molto simili a quelle utilizzate per la lettura e la scrittura su file. Letteralmemte socket significa “presa” , in pratica il socket è una sorta di porta comunicazione utilizzabile da qualunque “cosa” utilizzi il protocollo standard Tcp/Ip. Più correttamente si definisce come un’entità astratta di I/O che può essere invocata e utilizzata attraverso delle primitive di trasporto che sono qui elencate (le prime quattro primitive sono eseguite generalmente in sequenza nello stesso ordine):
- SOCKET: si tratta di una primitiva che viene invocata quando in un programma si ha la necessità di creare delle connessioni con entità remote. Con essa si chiede al sistema operativo di creare un’interfaccia socket, i paramentri della chiamata specificano il formato d’indirizzamento da utilizzare, il tipo di servizio desiderato (es.: flusso di byte affidabile) e il protocollo che si intende utilizzare. La primitiva restituisce un numero che se 0 indica che è impossibile creare un socket, viceversa fornisce un identificatore numerico di file che verrà utilizzato nel programma per tutte le operazioni successive alla socket
- BIND: è la primitiva cha associa un indirizzo di rete ad un socket,
- LISTEN: è la primitiva che alloca dello spazio per accodare le chiamate in ingresso
- ACCEPT: è la primitiva che serve per bloccarsi in attesa di comunicazioni in ingresso
- CONNECT: è la primitiva che tenta di stabilire una connessione
- SEND: serve per inviare dati sulla connessione (può essere utilizzata anche la WRITE)
- RECEIVE: serve per ricevere dati sulla connessione (può essere utilizzata anche la READ)
- CLOSE: è la primitiva usata per rilasciare la connessione
Ovviamente Java mette a disposizione alcune classi per l’utilizzo delle socket, tra cui la classe Socket. Usando questa classe per esempio un client può facilmente stabilire un canale di comunicazione con un host remoto.
L’uso delle socket risulta particolarmente indicato per l’implementazione di server concorrenti, in grado di accettare e gestire le richieste di più client remoti contemporaneamente.
(Java e le socket: http://www.latoserver.it/java/socket_tcp/ (creazione di server-client in Java con le socket))
1

Esempio