Copy Link
Add to Bookmark
Report

Networking

hacker's profile picture
Published in 
Spippolatori
 · 26 Jul 2020

Storia


Da tempo i computer sono utilizzati per portare a termine gli obbiettivi delle organizzazioni e del cittadino comune diventando, così, un mezzo di massa. Questo utilizzo smisurato, ha portato gli ingegneri ad inventare un metodo per semplificare la vita alle grosse organizzazioni, ovvero, come poter collegare due o più computer fra di loro per effettuare semplici e veloci scambi di dati.

Da qui nasce l'idea "rete di computer", cioè, una serie di computer collegati fra di loro tramite un mezzo trasmissivo che dialogano tramite un preciso protocollo di rete.
La tecnologia oggi acquisita per una standardizzazione della comunicazione è Ethernet.
Ethernet è il tipo più diffuso di rete locale che esista al mondo. Tale sistema consente ciò che si cercava, ovvero, lo scambio diretto di dati in formato elettronico tra più di due computer. Il numero di stazioni (computer collegati in rete) deve essere per lo meno tre, in caso minore (due stazioni) non si avrebbe più a che fare con una rete, ma con un collegamento diretto punto punto.

La natura generale di qualsiasi LAN (Local Area Network) , e quella di Ethernet in particolare, è di consentire il libero colloquio con qualsiasi macchina collegata e di trasmettere la stessa informazione contemporaneamente a tutte le altre macchine in ascolto (broadcasting).

Purtroppo lo sviluppo di tale tecnologia è andato molto a rilento nei primi anni; questo perché le varie società di sviluppo volevano sopraffare la tecnologia rivale senza cercare un accordo per svilupparne una standard.

La storia di Ethernet ha inizio nei primi anni settanta presso il Palo Alto Research Center (PARC), il laboratorio di ricerca Xerox, per opera di Robert Metcalfe e David Blogs. Il loro lavoro iniziò intorno al 1972, ma la sua prima definizione pubblica risale a un articolo pubblicato nel 1976 con la firma dei due inventori. Ma Xerox non ebbe l'intraprendenza di trasformarla immediatamente in un prodotto commerciale e bisogna aspettare il dicembre 1980 per averne una prima versione utilizzabile.

Nel 1982 lo standard iniziale fu sostituito dalla versione 2.0, detta pure Ethernet II oppure DIX (Digital, Intel, Xerox. Questo perché la Xerox si unì con quest'ultime per portare avanti il progetto) che costituisce ancora oggi uno standard di riferimento per numerosi impianti. Adesso bisogna dare Ethernet ad un buon distributore, che non facesse parte della triplice alleanza, affinché Ethernet divenisse un fenomeno di massa.

Tale ruolo fu affidato all'Institute of Electrical and Electronics Engineers (IEEE), un ente statunitense con sede a New York che riunisce scienziati, ingegneri e studenti e che nella prima metà degli anni ottanta creò un comitato il cui compito è di codificare tutti i tipi di rete locale. La sua prima formulazione ufficiale risale al 1983, con la pubblicazione del documento IEEE 802.3 (802 fa riferimento ai membri che facevano parte del comitato) in cui si definiscono le specifiche elettriche e fisiche, per una rete Ethernet a 10 Mbit secondo su un cavo coassiale. Successivamente il documento è stato perfezionato a più riprese, cominciando nel 1985 con la definizione del metodo d'accesso e proseguendo, poi, con l'aggiunta di versioni capaci di funzionare anche con cavi di tipo differente e a velocità differente.

Le velocità rilasciate sono tre:

  • 1 Megabit per secondo
  • 100 Megabit per secondo
  • 1 Gigabit per secondo

L'ultima di queste velocità fu aggiunta nel 1984 determinante fu il lavoro portato da alcuni studenti del MIT.

Il MIT è una "facoltà" dell'Institute of Technology che si trova nel Massachusetts. Gli studenti di questa università che hanno lavorato per la relazione di tale tecnologia hanno rilasciato solamente un'intervista dove spiegavano che "l'abbiamo fatto per divertimento, per imparare qualcosa di nuovo e per dare una manoÖ ma soprattutto per avere qualcos'altro da hackerare" (per hackerare si intende l'atto dello spippolamento ovvero osservazione, studio e approfondimento di un qualsiasi oggetto).

Nel frattempo nel 1969 il Department of Defense (DOD) degli Statu Uniti chiede a un proprio organismo interno, DARPA, di realizzare per la comunicazione fra i computer che per tale dipartimento lavorano, una tecnologia di comunicazione; inoltre, dato il tipo di dipartimento, veniva fatta richiesta di un'affidabilità a prova di bomba.

La rete che ne nacque fu chiamata Arpanet.

Dopo una serie di esperimento e di tecnologie intermedie, utilizzate negli anni 70 su Arpanet, nei primi anni ottanta si decise di adottare per Arpanet la tecnologia basata su un insieme di protocolli "la suite TCP/IP" (Transmission Control Protocol/Internet Protocol che venne adottata anche per Ethernet).

Con l'ingresso di tale tecnologia subito Ethernet ed Arpanet trovarono un accordo, ovvero, utilizzare il protocollo TCP/IP per la comunicazione; ma mentre la prima servisse per lo più alle aziende che avessero bisogno di ottenere un efficiente e veloce scambio dati, la seconda doveva servire al Dipartimento della Difesa USA sparsi in tutto il mondo. Qui entrano in gioco altri due chiave di volta ovvero la telecomunicazione e la commutazione di pacchetto.
Le telecomunicazioni, dal 1980, iniziano a fare notevoli passi in avanti nelle comunicazioni a distanza e nelle modulazioni, ottenendo ottimi risultati, in velocità ed affidabilità, sia sull'etere che si semplici cavi di rame.

Mentre la commutazione di pacchetto altro non era che un sistema di comunicazione fra computer e reti di costruttori diversi, in cui i dati da trasmettere fra due computer connessi all'Arpanet vengono divisi e incapsulati in cosiddetti pacchetti, costituiti ciascuno da una parte di dati e da un indirizzo di destinazione; se una linea di comunicazione dell'Arpanet era bombardata, il pacchetto poteva comunque essere consegnato a destinazione, utilizzando un percorso alternativo, grazie all'indirizzo e alla gestione dell'instradamento (routing) da parte di Arpanet.

Dopo il 1980, a seguito della bontà della loro tecnologia, l'Arpanet ed il TCP/IP assunsero un peso maggiore di quello previsto originariamente dai militari dei DOD, e la loro popolarità aumentò al di fuori dell'ambito ristretto del dipartimento della difesa Americano, suo malgrado: per rispondere a richieste provenienti dai civili, nel 1983 si decise quindi di separare la parte della rete utilizzata dai militari, denominata MILNET, dalla parte destinata ai civili, che facevano parte delle università e varie organizzazioni, che continuava a chiamarsi Arpanet.

L'evoluzione poi subisce un'accelerazione verso internet nel 1985 (dopo la pubblicazione dell'IEEE), quando entra in campo dell'internetworking un'altra organizzazione pubblica statunitense, la NFS (National Science Foundation), che si occupa della promozione della ricerca scientifica USA; questa organizzazione vista la bontà della tecnologia TCP/IP di Arpanet decise di utilizzarla per la propria nuova rete internet (notare che le reti non locali che usano i doppini telefoni per lo scambio dati vengono dette internet, mentre la rete Web attuale è detta Internet), denominata NSFNET.

Tale internet ha lo scopo originale di connettere i sei centri di super calcolo scientifico alle Università, allo scopo di permettere ai ricercatori di accedere ai supercomputer senza doversi muovere dalle proprie sedi universitarie.

L'altra determinante scelta di NSF è di interconnettere la NSFNET con l'Arpanet, facendo nascere di fatto la rete virtuale che oggi noi chiamiamo Internet.

Da quel momento altri enti pubblici statunitensi e organizzazioni private decidono di seguire l'esempio di NSF, connettendo le proprie reti ad Internet.

Contemporaneamente, il concetto di internet a commutazione di pacchetto si diffonde oltre oceano, e in tutto il mondo le Università prima e gli organismi privati poi finiscono con il connettersi ad Internet, utilizzando il TCP/IP e portando Internet alle dimensioni attuali.
Una delle caratteristiche fondamentali di Internet è la possibilità di accedervi tramite un modem, un pc ed una linea telefonica normale, rendendo il nostro computer un host Internet per tutto il tempo.

Il servizio telefonico che si accetta di utilizzare quando si ci collega ad Internet utilizza due protocolli detti SLIP o PPP.

Oggi questi protocolli sono molto richiesti dagli utenti di un Service Provider, (azienda che offre il servizio di collegamento ad Internet tramite la sua rete), poiché permette a bassi costi un vero collegamento Internet con accesso a tutti i servizi.

Protocolli SLIP e PPP


Lo SLIP (Serial Line Internet Protocol) è un protocollo molto diffuso per la comunicazione IP su linee seriali; esso non è in ogni modo uno standard riconosciuto, tende ad essere sostituito dal PPP, che è invece un protocollo standard del TCP/IP.

Lo SLIP nasce nell'implementazione del TCP/IP a cura di un'azienda privata. Si tratta di un semplice protocollo di incapsulamento dei dati; non fornisce indirizzamento, tipo pacchetto, meccanismi di segnalazione errori ne di compressione. Lo SLIP deve la sua popolarità all'inclusione, nel 1984, in una versione del sistema operativo Unix. Per comunicare, l'host SLIP semplicemente comincia ad inviare dati nel pacchetto. Quando l'ultimo byte nel pacchetto è stato trasmesso, è inviato uno speciale carattere detto END. Una possibilità è quella di mettere END anche all'inizio per eliminare, ad esempio, dati presenti per colpa dei rumori di linea.

Per quanto concerne l'indirizzamento, ambedue i computer che si connettono tramite SLIP devono conoscere i propri indirizzi IP. In oltre quando ci si collega ad un router con un protocollo SLIP, lo schema di indirizzamento può essere dinamico, ed il router dovrà informare l'host del suo indirizzo IP.

Non è neanche previsto un identificatore di tipo dei dati per cui un solo protocollo alla volta può essere usato a livello di rete. Infine, meccanismi di correzione di errore non sono previsti nello SLIP, mentre sarebbero utilissimi sulle linee telefoniche, in quanto presentano molti disturbi.

Il PPP è stato creato per fornire uno standard di comunicazione del TCP/IP su linee seriali punto-punto, per l'incapsulamento dei datagrammi IP su tale rete, a livello dati; esso ha sostituito lo SLIP precedentemente utilizzato.

Ma il PPP è più che un semplice metodo di incapsulamento su linee seriali di datagrammi IP, qual è invece lo SLIP. Infatti il PPP comprende anche l'LCP (Link Control Protocol), per stabilire, configurare e testare il collegamento e una famiglia di protocolli detta NCP (Network Control Protocol), per permettere l'uso simultaneo di più protocolli a livello di rete; qualora il protocollo sia l'IP, come nel nostro caso, il protocollo della famiglia NCP utilizzato è noto come IPCP.

Per stabilire la comunicazione IP, si invia dapprima un pacchetto LCP per configurare e testare il collegamento. Dopo che il collegamento è stato stabilito, si inviano i pacchetti IPCP per configurare l'IP a livello di rete. Quindi i datagrammi IP, incapsulati nei frame PPP da ciascun lato del collegamento possono essere trasmessi. Il collegamento rimane configurato finchè i pacchetti LCP e IPCP non lo chiudono.

Il PPP usa l'HDLC uno standard OSI per lo strato a livello di collegamento dati.

Internet/Ethernet working IP


Per realizzare Internet come una grande rete virtuale la tecnologia deve permettere:

  • Connessione Globale
  • Indirizzi e nomi omogenei
  • Inoltro fra reti non direttamente collegate
  • Espansibilità senza connessione diretta a tutte le reti preesistenti
  • Indipendenza interfacce applicativi da luogo e da hardware

Per ottenere una rete globale bisogna interconnettere tutte le reti per creare una sola grande rete. Ma come interconnettere tutte queste reti ?

La soluzione finale è una cooperazione fra le reti componenti. Per ottenere questa cooperazione Internet ha bisogno di "router".

I router sono dei computer dedicati a garantire la consegna dei pacchetti dati Internet su reti fisiche diverse, fra punti distanti migliaia di chilometri, attraverso reti non direttamente connesse, basate su hardware e software di base diversi.

Il router è un computer che collega due o più reti fisiche connesse e che cooperando con gli altri router Internet, fa transitare attraverso le proprie porte il traffico dati, anche se esso non è diretto alle reti di cui esso fa parte. Il router consegna i dati, se il computer di destinazione appartiene ad una delle reti a cui esso appartiene, o li fa "saltare" al router successivo e più vicino alla destinazione. Questa operazione di smistamento è detta instradamento o routing.
Anche se i router giocano un ruolo fondamentale in Internet, essi non sono dei computer molto potenti ho dotati di chissà quali capacità di memoria. Il motivo è semplice.

Il router non conosce la topologia completa di Internet, ne tanto meno quella propria, infatti esso utilizza, per consegnare il dato, solamente i dati di destinazione, questo metodo verrà spiegato più avanti andando ad analizzare affondo come è fatto un datagramma IP.

Ethernet, a differenza di Internet, usa un solo cavo per collegare decine di stazioni di lavoro, ciascuna delle quali riceve contemporaneamente tutto quel che passa sulla rete, mentre solo una stazione alla volta ha la facoltà di trasmettere.

Ogni stazione (o host) è indipendente e non esiste una singola entità che funzioni da arbitro.
Esiste anche una particolare versione di Ethernet che consente la trasmissione contemporanea da diverse stazioni multiple, usando canali separati che occupano contemporaneamente lo stesso cavo coassiale. In tal caso si parla di Ethernet broadband (a banda larga) e ogni scheda di rete deve montare speciali modem ad altra frequenza per trasmettere e ricevere sul cavo (viene usato di rado per l'elevato costo delle schede).

Tornando all'Ethernet convenzionale, vediamo che le informazioni sono trasmesse nella forma d'impulsi, che si propagano a partire dall'host emittente verso i due estremi della rete, fino a raggiungere il punto in cui il cavo termina ai due estremi. In questo percorso incontrano altri nodi che sono collegati lungo il cavo e che ascoltano tutto quello che passa, cercando di scoprire se è indirizzato a loro (lo scoprono quando nell'intestazione del pacchetto c'è il loro nome. Come succede in Internet). Ogni messaggio in transito sulla rete (detto frame) reca al proprio interno l'indirizzo di origine e quello di destinazione, perciò ogni macchina lo copia in una piccola porzione di memoria (buffer) di cui dispone nella scheda di destinazione e, se non coincide con il proprio, lo scarta.

Con questo meccanismo si costruisce in modo semplice una rete in cui è facile aggiungere nodi, acquistando anche la facoltà di trasmettere ogni volta che la linea è libera.

Ogni scheda di rete disponibile in commercio dispone di un proprio indirizzo permanente, unico al mondo, espresso in numeri esadecimali e lungo 12 Byte. I primi 6 Byte di questo indirizzo indicano il costruttore e vengono conservati in un registro mondiale così da evitare duplicazioni.

Gli altri 6 Byte vengono assegnati dal costruttore medesimo, scheda per scheda, così da creare una combinazione univoca per ciascun pezzo.

Altra nota importante è la tecnica di trasmissione. Qualunque sia la topologia fisica e qualunque sia la velocità, la tecnica di trasmissione su rame rimane invariate e consiste nel trasmette un segnale che assomiglia a un'onda quadra e che oscilla tra i valori di tensione negativi e positivi e ogni transizione indica la presenza di una cifra binaria, rispettivamente 1 e 0. Questo sistema prende il nome di codifica Manchester e ha il vantaggio di rendere molto più sicuro il riconoscimento degli 1 e degli 0 visto che non si misura l'ampiezza dell'impulso ma si usa l'inversione di polarità, facilmente riconoscibile anche in caso di presenza di disturbi. Nelle reti Ethernet non esiste un arbitro degli accessi bensì un meccanismo in base al quale le singole stazioni di lavoro si "autodisciplinano", astenendosi a trasmettere quando qualcun'altra lo sta già facendo. Tecnicamente questo sistema prende il nome di CSMA/CD, (Carrier Sense Multiple Access/Collision Detection ñ accesso multiplo a rivelazione di portante con segnalazione di collisione).

Interpretando tale sigla, si può comprendere che la prima azione che qualsiasi scheda d'interfaccia esegue consiste nell'ascoltare se qualcuno lo stia già facendo. Nel caso ci sia qualcuno che trasmette, sul cavo sarà presente un segnale a 20 MHz su cui viaggiano 10 Mbit/sec, l'host desiste e tenta di trasmettere più tardi. L'accesso alla rete è multiplo, perciò tutte le stazioni hanno la stessa facoltà di parlare a condizione di accettarsi prima che la linea sia libera. Supponiamo che due stazioni siano pronte a trasmettere e che abbiamo trovato la linea libera. La trasmissione parte nello stesso momento e quella della prima inevitabilmente collide con quella della seconda, provocando un accavallamento del segnale elettrico e l'impossibilità di riconoscere i bit che vi erano contenuti. Se non esistesse nessun sistema che segnalasse l'avvenuta collisione, le due stazioni continuerebbero a trasmettere i rispettivi messaggi per intero, nella convinzione che i dati arrivino a buon fine.

Per questo motivo i progettisti hanno inserito nella scheda un ulteriore circuito che rimane sempre in ascolto, anche quando la propria scheda sta trasmettendo, per verificare che non siano avvenute collisioni. Tale circuito non farà altro che verificare le tensioni nel cavo, infatti, nel caso di trasmissione contemporanea da parte di due host, visto che il segnale si mescolerà la tensione aumenterà. L'aumento di tensione significa collisione. A questo punto le schede rompono subito la trasmissione, ma continuano ad inviare bit fino a raggiungere la dimensione minima di un pacchetto ovvero 64 Byte. Questo serve a far capire a tutti gli altri host che si è verificata una collisione e di stare in "silenzio". Dopo di chè interrompono la trasmissione ed attivano un timer, di durata casuale, prima di tornare in trasmissione. Se, nonostante l'uso di un timer casuale, la collisione si verifica ancora, il timer verrebbe allungato progressivamente fino ad un punto in cui il continuare delle collisioni indicherebbe un guasto fisico sulla rete e le singole schede d'interfaccia comunicherebbero al rispettivo computer l'impossibilità di trasmettere.

All'aumentare della grandezza della LAN aumenterebbero il numero di collisioni nella rete questo perché se un host sta trasmettendo ce ne può essere un'altra che fa la stessa cosa, diciamo circa, a 90 m.

Siccome il segnale che circola nel cavo è un segnale elettrico, anche se viaggi alla velocità della luce, ha bisogno di un po' di tempo per propagarsi (ritardo di propagazione) questo porta a varie complicazioni e con due può esserci una terza ed una quarta stazione. Per evitare questi problemi si sono decide delle grandezze massime per le reti. Per concludere una rete tipo LAN a 10 Mbit/sec non è una rete affidabile, specialmente se ci sono molti host collegati, per i collegamenti multimediali. Per chi deve usale dei software multimediali nella propria rete esiste IsoENET che aggiunge un cavo di 6 Mbps al già presente cavo a 10 Mbps. Il cavo a 6 Mbps sarà usato solamente per i dati multimediali.

Comunque meno host trasmetteranno meglio il segnale arriverà.

Internet invece è più idonea per i dati multimediali visto che i due host non "ragioneranno" più tramite le leggi di Ethernet ma tramite le leggi di Internet la quale inizia a far mandare i pacchetti e se questi arrivano a destinazione significa che l'host ricevente è connesso e si può continuare a inviare i dati. Ma anche Internet non presenta grosse definizioni per i dati multimediali, specialmente per grosse quantità, anche per questo si prediligono connessioni velocità (l'ideale sarebbe a 100 Mbps anche in Internet).

Internetworking e stratificazione


Prima di procedere è necessario dare qui due definizioni utili in quanto segue:

Protocollo: insieme di regole che definiscono il flusso di informazioni all'interno di un sistema di comunicazione. I protocolli sono sottoposti al concetto della interazione paritaria,
in base al quale elementi del sistema che svolgono la stessa funzione in punti diversi del sistema sono correlati da un singolo protocollo. Essi definiscono il formato dei dati passati da un protocollo al successivo.

Stratificazione del software del protocollo: nello sviluppo dei moderni protocolli si adopera una metodologia basata sulla cosiddetta stratificazione, che può essere visualizzata come un pila di protocolli sovrapposti verticalmente. Ogni livello gestirà una parte del problema. I protocolli di internetworking, e quindi anche il TCP/IP di Internet, sono realizzati per stratificazione. La metodologia impone che data una suite composta di N protocolli, il software che realizza il livello n del destinatario riceve esattamente lo stesso oggetto trasmesso dal software del livello n del mittente.

Il ruolo fondamentale nella realizzazione di Internet è giocato dal software IP.
Da un esame di tutte le tecnologie di rete presenti al mondo, interconnesse ad Internet, è emersa la eterogeneità di tecnologie impiegate nelle reti fisiche interconnesse.
Supponiamo ora che due host remoti debbano comunicare attraverso un'applicazione Internet, per esempio posta elettronica. Anche se i due utenti utilizzano lo stesso tipo di macchina e lo stesso sistema operativo, è comunque estremamente probabile che il traffico fra i due utenti debba attraversare una moltitudine di reti eterogenee, nei salti fra i router intermedi.

Se il software che realizza nella pratica l'applicazione posta elettronica, utilizzata dai due host, dovesse preoccuparsi del tipo di rete attraversata dai pacchetti dati, risolvendo esso il problema dell'eterogeneità, la dimensione e la complessità dei programma di posta elettronica sarebbe enorme, comprendendo pezzi di programma che nulla hanno a che fare con il livello di applicazione, e che invece sono più vicini al software di base per la gestione di rete.

Poiché la gestione della eterogeneità dell'hardware sottostante sarebbe delegata ai programmi applicativi, se si scegliesse un approccio di questo tipo, si parlerebbe di interconnessione di rete a livello applicativo.

Per evitare questo approccio irrazionale, si è scelta una strada diversa basata sul concetto di interconnessione a livello di rete, o "internetworking".

Questo secondo approccio ha il vantaggio di scaricare il programmatore del software applicativo Internet dal problema della conoscenza nel dettaglio delle reti fisiche sottostanti, lasciandolo al programmatore del software di rete che ne ha le competenze.

Quando due applicativi "parlano" le informazioni "filtrano" dal primo applicativo verso il basso, attraverso i protocolli sottostanti, fino al protocollo di interfaccia con l'hardware della rete fisica. Giunti sulle reti fisiche, essi viaggiano all'interno dei frame sulle reti interconnesse e infine, giunti al secondo host, risalgono la catasta dei protocolli dal basso fino allo strato degli applicativi.

Gli strati del protocollo TCP/IP sono:

  
Applicazione---|
\--Trasporto---
|
\--Internet---
|
\--Interfaccia rete---
|
\--Hardware

Il router, nell'assolvere al loro ruolo di instradamento su Internet, utilizzano i protocolli TCP/IP fino al livello di Internet, e non sono interessati al 4∞ e al 5∞ livello (a partire dal basso). Questo comporta una notevole semplificazione del problema dell'instradamento.

Confronto tra interworking TCP/IP e OSI

E' obbligatori ricordare un'altra famiglia di protocolli alternativa al TCP/IP proposta dall'ISO (International Organization for Standards). In questa suite le stratificazioni sono divise in sette e non cinque come nel TCP/IP:

  
Applicazione---

|
\--Presentazione---

|

\--Sessione---

|

\--Trasporto---

|

\--Rete---

|

\--Interfaccia---

|

\--Hardware

La maggiore complessità della stratificazione è dovuta a sostanziali differenze fra i due modelli; si tratta di concezioni diverse su dove andare a depositare l'affidabilità e dove il potere e l'intelligenza di rete. In pratica, mentre l'OSI garantisce l'affidabilità a partire dal secondo livello (interfaccia), il TCP/IP rinvia il problema della rivelazione degli errori e della correzione degli stessi fino al quarto livello (trasporto), trascurandolo negli strati inferiori del protocollo. Questo significa nodi di commutazione più complessi per l'OSI, con utenti finali meno impegnati nell'internetworking; nell'OSI l'intelligenza è concentrata nei commutatori di rete per la complessa gestione dell'affidabilità a livello di collegamento.

Nel TCP/IP l'affidabilità è garantita a livello di trasporto, fase a carico degli host di destinazione e di partenza e non dei router.

I router risultano più semplici da realizzare dei commutatori OSI, ed inoltre il software di interfaccia è molto più semplice da realizzare perché libero dal ruolo di assicurare l'affidabilità.

L'IP (Internet Protocol)


Il protocollo che occupa il livello internet nel modello a strati del TCP/IP è noto come IP.
Essendo Internet una rete virtuale basata sul concetto di interworking, l'IP gioca un ruolo fondamentale.

I compiti principali che spettano all'IP all'interno della comunicazione TCP/IP sono:

  • definire gli indirizzi IP utilizzati su Internet, detti anche IP dinamici
  • definire il formato dei pacchetti di Internet, detti datagrammi IP
  • instradare i datagrammi IP verso la loro destinazione


Indirizzi IP e fisici


In una rete a commutazione di pacchetto piuttosto che di circuito i dati viaggiano sullo stesso canale "mescolandosi" a dati per destinazioni diverse (il segnale non viene elettronicamente mescolato. Infatti i segnali uscenti dal modem subiscono una modulazione senno non potremmo mai utilizzare un collegamento).

Da questo fatto nasce l'esigenza di incapsulare (in inglese "to frame") i dati in pacchetti che abbiano in intestazione anche l'indirizzo fisico di partenza e di arrivo dei dati. Un datagramma IP è l'unità fondamentale d'informazione che viaggia a livello di Internet, e contiene assieme indirizzo IP della macchina di partenza e di arrivo del pacchetto.

Nello studio degli indirizzi IP, cominciamo vedendo le differenze fra un indirizzamento su una singola rete fisica (esempio Ethernet) e su una internet.

Su una Ethernet, ogni macchina possiede un indirizzo fisico (o indirizzo hardware) che è stato stabilito una volta che per tutte dal costruttore dell'interfaccia macchina-rete, costituito per le Ethernet da 48 bit; tale indirizzo serve a distinguere le varie macchine connesse alla LAN.

Di contro su una internet TCP/IP, composta da più reti fisiche connesse, l'indirizzo di una macchina deve contenere anche l'identificativo della rete fisica di appartenenza di questa macchina. Un indirizzo IP per Internet si presenta così:

  
11011100 01111100 11000011 10011001
/------------------------------------\/--------------------------------\
| Parte di internet (netID) || Parte di host (hostID) |
\------------------------------------/\--------------------------------/

Su Internet potrebbero esistere benissimo due macchine diverse con lo stesso indirizzo hardware a livello locale, ma il loro indirizzo IP deve essere differente, per un corretto instradamento dei messaggi Internet; se oltre ad un identificativo di macchina, l'indirizzo IP contiene anche un identificativo di rete, per la parte riguardante la rete i due indirizzi differiscono, permettendo comunque la consegna del traffico Internet.

L'indirizzo IP è un oggetto costituito da 32 bit, diviso in una parte locale (detta hostID) ed una parte di rete o di internet (netID). La parte locale e la parte internet dell'indirizzo IP hanno pesi diversi per le varie reti, all'interno dei 32 bit complessivi.

Su Internet esistono infatti poche reti fisiche grandi (omettendo grandi colossi che ultimamente stanno emergendo. Vedi TIN), costituite da moltissime macchine, e moltissime reti fisiche piccole, con un numero inferiore di macchine collegate. Si scelse dunque di tenere in considerazione questo fatto nella progettare gli indirizzi IP; nel caso di grandi reti, dei 32 bit totali, quelli dedicati all'identificativo della rete o di internet saranno meno che nel caso delle reti più piccole.

All'origine, le reti vennero distinte da un punto di vista dell'indirizzo IP in tre categorie. Alla prima categoria, A, appartenevano le reti con più di 2^16 host (cioè più di 65.536 host), e ad esse sono dedicati 7 bit al netID e 24 all'hostID; il primo dei 32 bit è sempre uno 0. Alla categoria B (reti con numero di host compreso fra 256 e 65.536), appartenevano reti che hanno un netID di 14 bit ed un hostID di 16 bit; i primi due bit sono sempre 1 e 0 rispettivamente. Alla classe C appartenevano le reti con numero di host inferiore a 256 e nel cui indirizzo IP vi erano 21 bit al netID e 8 all'hostID; i primi tre bit sono1,1 e 0.

Si stabilì poi che l'indirizzo di Broadcast, ovvero l'indirizzo che identifica tutte le macchine appartenenti ad una particolare rete fisica, ha un hostID costituito da tutti 1, (il broadcast è un mezzo per distribuire li stessi dati a tutte le macchine all'interno di una rete, operazione utilizzata per alcuni fini specifici di interworking), mentre l'indirizzo della sola rete ha un hostID di tutti 0.

Per semplificare la comunicazione di indirizzi IP fra gli esseri umani, si è poi stabilita la seguente convenzione: l'indirizzo IP di 32 bit viene diviso in quattro ottetti di bit, e trasformato nei corrispondenti quattro numeri decimali, separati poi da punti.
ESEMPIO:

  
\--------------------/\--------------------/\--------------------/\--------------------/
| 11011110 || 00000010 || 00000011 || 00001100 |
/--------------------/\--------------------/\--------------------/\--------------------\

\--------------------/\--------------------/\--------------------/\--------------------/
| 192 || 2 || 7 || 12 |
/--------------------/\--------------------/\--------------------/\--------------------\

NIC ñ NIS ñ GARR

Per evitare che due reti connesse ad Internet abbiano lo stesso netID, è necessaria una gestione coerente che assegna i netID alle reti connesse ad Internet, evitando duplicazioni. All'inizio, tutti gli indirizzi di rete IP erano assegnati dal NIC (Network Information Center), un organismo centrale che aveva, ed ha tutt'oggi, il ruolo di gestire una parte del sistema del DNS e di gestire documentazione tecnica ed amministrativa su Internet, mettendola a disposizione degli utenti.

Dato lo sviluppo impetuoso ed imprevedibile che ha avuto in seguito Internet, si è in seguito stabilito che il NIC deleghi le sue funzioni in parte ad organi periferici; in Italia tale ruolo è svolto dal NIS del GARR.

Il NIS GARR


Il servizio informativo NIS (Network Information Service) del GARR (Gruppo Armonizzazione Reti Ricerca) ha come compito primario il supporto informativo per l'insieme delle reti accademiche e di ricerca italiane. Esso offre un supporto diretto ai gestori dei poli GARR e delle reti regionali ed indirette, favorendone la circolazione delle informazioni, a tutta l'utenza. Il NIS è il punto di riferimento per le varie procedure di registrazione per l'accesso alla rete GARR ed ad Internet dall'Italia.

Le sue funzioni principali sono:

  • predisporre le procedure e la modulistica di registrazione tenendo presenti le informazioni richieste da altri NIS europei ed americani in relazione alle norme stabilite dal GARR ed in accordo con i responsabili delle reti internazionali
  • acquisire le informazioni e mantenere database e servizi di directory per renderle accessibili via rete
  • agire come "Internet Delegated Registry" per l'Italia
  • gestire i servizi di nameserver (Internet-dns) coordinando la loro gestione distribuita a livello nazionale
  • replicare, pubblicizzare e migliorare l'accessibilità le informazioni utili all'utenza disponibili presso altri NIS od information-servers;

Il NIS riceve, allo stato attuale, dal CNR (Istituto CNUCE) tutte le risorse che gli necessitano.

Indirizzi IP e Subnetting


Con i ritmi di crescita verificatisi nell'ultimo periodo, il rischio di esaurire lo spazio degli indirizzi delle classi B e C andava, giorno dopo giorno, aumentando.

Si è pertanto cercato un meccanismo che permetta il collegamento di nuove reti, tramite altre già collegate ad Internet, senza utilizzare nuovi indirizzi di rete rilasciati dal NIC. L'idea è stata portata avanti sino alla specificazione di uno standard TCP/IP che risolve questo problema, e che prende il nome di Subnetting.

  
____________________________________________
|
|
|
/-------------\ /-------\
/-------\
-------| Router | | PC1 |
| PC2 |
\-------------/ \-------/
\-------/
|____________________________________________

| |
/-------\ /-------\
| PC1 | | PC2 |
\-------/ \-------/


Supponiamo di essere in presenza di una struttura come quella in figura. Assegniamo ad essa un indirizzo di classe B, prendiamo la parte netID di quest'indirizzo, ed invece di associarla ad una rete la associamo al router il quale connette la struttura di sottorete ad Internet.

Supponiamo ora di utilizzare il terzo ottetto dell'indirizzo IP per distinguere fra le due reti ed il quarto per distinguere fra le macchine connesse a ciascuna delle due reti.

In questo caso basta assegnare alla reti 1 il terzo ottetto diverso da quello della rete 2, per potere distinguere fra le due reti componenti.

Poiché con il terzo ottetto di bit di un indirizzo B possiamo così distinguere fino a 256 reti, in realtà al router possono essere connesse fino a 256 reti composte da 256 macchine ciascuna,
utilizzando un solo indirizzo di classe B.

Il resto di Internet non conosce questi dettagli (quelli della sottorete), ma indirizza il traffico al router di ingresso, come se fosse un router di una semplice rete di classe B.

Il router d'ingresso alla struttura di sottorete possiede una Maschera di Sottorete, che contiene l'informazione sulla struttura reale, e permette l'instradamento nelle sottoreti, mediante un indirizzamento tipo IP.

Collegamenti fra indirizzi IP ed indirizzi di host, ARP e RARP


Abbiamo detto che Internet costituisce una unica grande rete virtuale che nasconde all'utente finale i dettagli delle reti fisiche sottostanti, i pacchetti dati trasferiti viaggiano, in realtà, incapsulati nei frame delle reti fisiche, e fanno riferimento nel loro trasferimento ad indirizzi fisici di host e router, e non ad indirizzi IP.

Supponiamo che un programma applicativo TCP/IP generi una serie di dati a livello di applicazione, tali dati vengono incapsulati in pacchetti IP, che a loro volta vengono incapsulati in frame di rete fisica, contenente l'indirizzo fisico delle macchine di partenza e di destinazione. Una volta che il frame è giunto alla macchina di destinazione, esso viene aperto e si estrae il pacchetto IP, dal quale si estraggono i dati dell'applicativo. L'utente di Internet non deve conoscere l'indirizzo fisico dell'host di destinazione dei suoi messaggi, e quando li deve inviare specifica solo l'indirizzo IP di tale host; i dati non hanno bisogno dell'indirizzo fisico dell'host di destinazione fino al momento in cui saltando da un router Internet ad un altro, non giungono al router finale connesso direttamente alla rete fisica corrispondente al netID.

A questo punto, il router deve consegnare i dati ad una delle macchine, ma sul pacchetto da smistare non è indicato quale sia l'indirizzo fisico di tale macchina, esso presente solo l'indirizzo IP.

Vediamo come viene risolto questo problema; sul router è presente una memoria cache destinata a contenere le coppie indirizzo IP indirizzo fisico della macchina della rete che per ultime hanno ricevuto pacchetti IP in arrivo. Così facendo si possono verificare due situazioni:

  • l'host di destinazione è fra quelli il cui indirizzo di trova già nella cache del router, nel quale caso l'indirizzo fisico è subito acquisito e il pacchetto parte per la consegna
  • l'host non riceve messaggi IP da molto tempo, ed i suoi due indirizzi, fisico ed IP non sono sulla cache del router, in tale caso vi sono due strade da seguire
  • richiedere un algoritmo che permetta di calcolare l'indirizzo fisico conoscendo quello IP mediante una funzione di conversione
  • Utilizzare il protocollo ARP permettendo una conversione dinamica da indirizzo IP ad indirizzo fisico

Il primo metodo è applicabile solo per reti fisiche nelle quali gli indirizzi fisici sono stabiliti sulla rete dall'amministratore di rete, in questo caso è possibile numerare gli indirizzi fisici in modo da poterli far corrispondere agli indirizzi IP in modo semplice, purché la rete sia piccola e non cresca rapidamente il numero degli host connessi.

Ma si pensi ora ad una grande rete Ethernet, nella quale gli indirizzi fisici dei computer sono stabilita al momento del montaggio dell'interfaccia Ethernet su ciascuna macchina; in questo caso l'indirizzo fisico può essere qualunque indipendentemente dalla volontà dell'amministratore, e ciò rende difficile l'identificazione di una semplice funzione di corrispondenza indirizzi IP indirizzi fisici.

In questo secondo caso, è necessario un metodo dinamico, che tenga anche conto del cambiamento dell'indirizzo fisico di una macchina, dovuto alla sostituzione dell'interfaccia Ethernet; la tecnica di soluzione è definita da un protocollo della suite TCP/IP a livello d'interfaccia hardware detto ARP.

Il router IP incaricato della consegna invia una richiesta ARP (Address Resolution Protocol), in broadcast, sulla rete dove si trova l'host di destinazione.

Essendo una richiesta in broadcast, la richiesta viene ricevuta da tutti gli host, e quindi anche da quello ricercato.

Gli host confrontano l'IP richiesto con il proprio ed, ovviamente, uno solo trova che i due indirizzi coincidono; in questo caso l'host è obbligato ad inviare in risposta al router il proprio indirizzo fisico.

In alcuni casi pratici si può porre il problema inverso che viene risolto con il protocollo RARP.

Formato dei datagrammi IP


In una rete fisica come Ethernet, l'unità ho pacchetto di trasferimento è un frame che contiene un'intestazione e i dati: l'intestazione fornisce gli indirizzi fisici di provenienza e destinazione dati. L'Internet definisce datagramma Internet la sua unità fondamentale di trasferimento, talvolta denotata semplicemente con datagramma IP.

Al pari di un tipico frame di rete fisica, un datagramma è suddiviso nelle aree di intestazione e di dati.

Inoltre, al pari ad esempio di un frame Ethernet, l'intestazione contiene un campo tipo che identifica il contenuto del datagramma (autoidentificazione).

La differenza principale fra datagrammi d'IP e frame di rete fisica, è che l'intestazione del datagramma contiene gli indirizzi IP mentre quella del frame indirizzi fisici.

Vediamo ora il formato dei datagrammi IP.


Nel datagramma IP è contenuto, come si vede nella figura, un campo VERS, che indica la versione del software IP adoperata dall'host di provenienza del datagramma; tale versione deve essere condivisa da host di destinazione e dai router intermedi.

Troviamo poi un campo LUNGHEZZA TOTALE che indica la lunghezza totale del datagramma misurata in ottetti.

La lunghezza dei datagrammi varia in funzione della rete di transito in cui ci troviamo nel tragitto dalla partenza alla destinazione dei messaggi. Quando una macchina invia un datagramma su Internet, abbiamo visto che il datagramma viene in effetti incapsulato in un frame, prima di essere inviato sulla rete fisica; all'inizio del percorso, l'intero datagramma compresi indirizzi IP e tutto il resto dell'intestazione (che per la rete fisica non hanno alcun significato) vengono inseriti nella parte dati del frame.

La dimensione del datagramma è legata alla massima dimensione di frame trasportati sulla rete fisica (MTU, Maximum Transfer Unit).

Dato che un datagramma incapsulato nei frame può dovere attraversare decine di reti fisiche basate su tecnologie diverse (e quindi con MTU diversi) prima di essere consegnato a destinazione, se lungo il tragitto fra i router il datagramma si trova ad attraversare una rete fisica che richiede frame più corti (MTU inferiori), il frame originale sarà (con il suo contenuto) diviso in più che frame, ad opera del software del router di confine interessato; questi datagrammi non verranno riuniti se passeranno da una rete che accetta dei MTU più grandi, perciò viaggeranno con l'MTU minore a cui sono stati sottoposti. Questo meccanismo è detto frammentazione dei datagrammi.

Il campo TIPO DI SERVIZIO nell'intestazione del datagramma serve ad indicare alla rete le priorità d'inoltro del particolare datagramma, in funzione appunto del tipo di servizio Internet al quale esso è destinato.

Troviamo poi i campi TTL che misura il tempo di permanenza di un certo datagramma su Internet. Si utilizza un tempo di vita per potere eliminare quei datagrammi persi in eterno per l'Internet, a causa di un errore di consegna. L'host di partenza fissa un valore di TTL positivo intero. Ad ogni passaggio attraverso un router, il router che elabora il datagramma decrementa il valore di TTL e i datagrammi vengono eliminati qualora prima di essere giunti a destinazione, il valore di TTL diventa zero.

Ovviamente, nell'intestazione dei datagramma IP troviamo i campi I DIRIZZO DI PROVENIENZA IP e INDIRIZZO DI DESTINAZIONE IP e il campo DATI che contiene il vero dato da trasmettere.

Infine, il campo OPZIONI permette al datagramma di acquisire informazioni quali ad esempio la registrazione dei percorso fra mittente e destinatario.

INSTRADAMENTO (ROUTING) IP


Una volta che al datagramma IP sono stati intestati un indirizzo di provenienza e di destinazione, dato che su Internet non esiste in generale un percorso unico fra i due host (affidabilità militare volle che i percorsi fra due punti dovessero essere più di uno per garantire la consegna dei dati), si pone ai router IP il problema di trovare il percorso di consegna migliore fra i due punti: la soluzione di questo problema è appunto I'instradamento o routing IP.

Abbiamo visto che nella suite TCP/IP il protocollo a livello internet è l'IP (Internet Protocol).
Abbiamo visto che l'IP svolge una serie di ruoli strategici; il più delicato è quello dell'instradamento o routing. Dato un datagramma ed il suo indirizzo di destinazione, l'IP tramite l'instradamento, stabilisce attraverso quali router fare transitare tale pacchetto per portarlo alla destinazione finale.

L'IP fornisce un servizio di consegna dei datagrammi inaffidabile e senza connessione; i messaggi fra due host vengono divisi in più datagrammi, (spediti dall'IP singolarmente), i quali si possono perdere, possono non potere essere consegnati per problemi di connessione etc. I datagrammi possono seguire percorsi diversi fra i due punti ed in genere la sequenza con cui giungono non coincide con quella di spedizione.

Il routing, come gli altri aspetti della tecnologia del TCP/IP, ha fortemente risentito nel tempo dello sviluppo imprevisto avuto dalla rete; modelli di routing semplici che andavano bene per Arpanet o per Internet nei primi tempi, si sono mostrati inapplicabili su Internet nel momento in cui si è verificato il boom dei collegamenti; gli organismi che si occupano della gestione tecnica di Internet hanno di conseguenza dovuto correre ai ripari, realizzando nuovi modelli di routing.

Tali organismi hanno verificato che il problema dell'instradamento dei datagrammi (su una Internet in rapido sviluppo) può essere semplificato riducendo idealmente la dimensione delle reti. Questo può essere ottenuto dividendo la rete in livelli gerarchici. In particolare essi hanno definito per Internet tre livelli gerarchici; le backbone, le reti intermedie di transito e i sistemi periferici (che non sono di transito verso altre reti connesse).

Le backbone (le reti di lunga percorrenza che attraverso i continenti) sanno come instradare il traffico verso le varie reti intermedie o regionali , le reti intermedie come instradarlo verso i sistemi periferici presenti nella regione, e i sistemi periferici come instradarlo al proprio interno.

Un'instradamento di questo tipo è detto gerarchico, ed è il modello oggi applicato su Internet.
Il modello gerarchico dell'instradamento è analogo al modello che è stato scelto per la gestione degli indirizzi IP. Qualunque sia il modello scelto per l'instradamento Internet, esso è un compito assolto dai router.

Più precisamente la consegna di un datagramma IP passa tramite due tipi di consegna, una diretta ed una indiretta.

Nella consegna diretta il router a cui è arrivato il datagramma appartiene alla stessa rete dell'host di destinazione.

Nella consegna indiretta il datagramma non è ancora giunto ai confini della rete di destinazione finale.

Mentre la consegna diretta coinvolge l'uso dell'indirizzo fisico dell'host di destinazione, che
viene ad esempio ottenuto dal router mediante l'ARP sulla rete di destinazione, nella consegna indiretta si pone il problema dell'instradamento fra router. Il datagramma viene fatto saltare da un router ad un altro più vicino alla rete finale. Si tratta quindi di determinare il router più conveniente per il salto successivo di avvicinamento alla destinazione finale.
Per la fase di consegna indiretta, visto che si tratta di una serie di salti fra router, sono necessari gli indirizzi IP dei router direttamente connessi a quello a cui è giunto il datagramma.

Per il routing il router IP utilizza le così dette tabelle di instradamento; si tratta di tabelle dati memorizzate nei router e negli host connessi ad Internet, contenenti informazioni atte alla consegna dei datagrammi IP fra due punti della rete.

Tali tabelle contengono coppie (netID di destinazione)_(indirizzo IP del router successivo), e mettono quindi in corrispondenza il netID di una rete di destinazione con l'indirizzo IP di un secondo router, che avvicinerà il pacchetto di un salto alla destinazione finale.
poiché l'instradamento su Internet è analogo al sistema di indicazioni stradali che incontriamo quando viaggiamo in automobile, il rischio è di trovare ad ogni router quarantamila indicazioni per altrettante destinazioni diverse. Dato l'altro numero di reti connesse, nello scegliere un modello di instradamento, si è deciso che nella tabelle di instradamento su un router non debba esistere per tutte le quarantamila reti di destinazioni possibili un indicazione specifica.

Se giunto ad un determinato router, il datagramma ha un netID di destinazione finale che non si trova nella tabella d'instradamento del router, scatta il meccanismo dell'instradamento di default; il router conosce l'indirizzo IP di un router al quale deve inviare i datagrammi con netID non contenuto nella sua tabella d'instradamento. poiché su Internet si utilizza il meccanismo di instradamento di default, e poiché per l'instradamento su Internet si usa solo la parte netID di un indirizzo IP, si dice che l'instradamento su Internet è un'instradamento con informazioni parziali; ciò permette di ridurre ovviamente di molto la dimensione delle tabelle di instradamento e di semplificare il loro aggiornamento. Per garantire la raggiungibilità di tutti i punti di Internet, si pone però a questo punto un ovvio problema di coerenza nell'instradamento che eviti ad esempio la creazione di loop senza uscita per datagrammi in cerca della loro destinazione.

I messaggi ICMP (Internet Control Message Protocol, protocollo dei messaggi di controllo)


L'IP è un servizio di consegna inaffidabile dei datagrammi. » stato comunque previsto che l'IP debba potere comunicare eventuali problemi di consegna o fornire la possibilità del controllo dei percorsi di instradamento. Questa parte dell'IP è nota come ICMP.
La necessità di questo pezzo di protocollo nasce dal fatto che mentre in una singola rete fisica, un malfunzionamento di una parte della rete viene automaticamente segnalato dall'hardware, su una rete virtuale come Internet deve essere presente un meccanismo di rilevazione dei malfunzionamenti basato sul software di internetworking.

Problemi di consegna potrebbero nascere dalla sconnessione temporanea o definitiva dell'host destinatario dei datagrammi, o da una congestione grave in un router di transito; i router operano il trasferimento dei pacchetti autonomamente e il routing va bene finche tutti i router e gli host interessati ad una cerca consegna non hanno problemi. Inoltre su una rete grande come Internet, le cause di errori sono molto più frequenti e varie che su una singola LAN.

I messaggi ICMP, nel momento in cui vengono prodotti, viaggeranno fino all'host o al router a cui devono essere segnalati dentro datagrammi IP.

Per inviare i segnali di errore l'ICMP stabilisce che se un router rivela un problema nel consegnare un datagramma proveniente dall'host A, esso segnalerà ad A direttamente tale problema e sarà poi compito di A risolverlo. Questa scelta dipende dal fatto che il datagramma IP sul quale si è verificato il particolare problema contiene solo l'indirizzo IP di provenienza e di destinazione, e non ha in generale traccia di tutti quei router intermedi incontrati durante la fase di consegna.

Visto che l'indirizzo di destinazione è inutilizzabile, non rimane che comunicare il problema all'host di partenza A.

Ecco qui di seguito alcuni tipi di messaggi ICMP:

  • ECO
  • Destinazione irraggiungibile
  • Smorzamento provenienza
  • Ridirezione
  • TTL scaduto

IL massaggio di richiesta ECO fornisce una serie di dati statistici sul percorso dall'host A di partenza all'host B di destinazione; alcuni di questi dati sono:

  • raggiungibilità del destinatario
  • velocità di risposta del destinatario
  • ect

I messaggi di irraggiungibilità specificando invece il tipo di problema che causa l'irraggiungibilità, ad esempio host irraggiungibile, rete irraggiungibile, rete sconosciuta, irraggiungibilità per motivi dell'amministratore etc.

La congestione è un problema che si può verificare perché i pacchetti arrivano su un router ad un ritmo maggiore di quello che il router possa smistare. Il router li accoda nella propria coda di memoria, ed invia contemporaneamente all'host di provenienza iniziale dei datagrammi un messaggio ICMP di richiesta di smorzamento di provenienza.

Il messaggio di ridirezione ICMP viene avviato quando un router si accorge che un host sta usando un percorso per giungere alla destinazione che non è quello ottimale.

Protocolli di trasporto


L'UDP (User Datagram Protocol)

Risalendo idealmente i livelli del TCP/IP, sopra l'IP nella suite sono presenti due protocolli a livello di trasporto, l'UDP ed il TCP.

Nelle macchine connesse ad Internet è possibile fare funzionare contemporaneamente più programmi applicativi di comunicazione. Non appena giunto all'host di destinazione, un datagramma IP deve sapere a quale dei programmi attivi in quel momento sull'host deve essere consegnato. Dunque, esso deve contenere un riferimento che permetta questa assegnazione.

L'indirizzo IP non permette tale distinzione.

Risolvere questo problema è compito dei protocolli a livello di trasporto della suite TCP/IP. La differenza fra UDP ed IP sta nel fatto che mentre l'IP consegna datagrammi ad un host, l'UDP consegna i datagrammi IP ad uno dei programmi applicativi su tale macchina.
L'Udp utilizza per la consegna i datagrammi IP, e non prevede un meccanismo che garantisca l'affidabilità della consegna; esso è di fatto un protocollo di consegna inaffidabile, da applicativo ad applicativo.

Su una rete locale, il sistema funzionerebbe meglio che su una rete virtuale come Internet, dove l'alta possibilità di errori di trasmissione comporta che molti degli applicativi Internet ricorrono al TCP.

Tuttavia per la sua semplicità e velocità, alcuni applicativi che utilizzano il TCP/IP usano l'UDP come meccanismo di trasporto su Internet. La distinzione fra applicativo ed un altro viene fatta dall'UDP attraverso un numero di porta, dove il numero della porta è per convenzione un numero assegnato a ciascun tipo di programma applicativo che può essere utilizzato sull'host.

Il TCP (Transfer Control Protocol)

Abbiamo appena visto che l'UDP è un protocollo di consegna fra applicazioni inaffidabile, che quindi non sempre può essere utilizzato dagli applicativi su una rete complessa come Internet.

In casi in cui l'affidabilità possa essere evitata l'UDP viene scelto per la sua velocità e semplicità, ma quando il servizio richiede l'affidabilità alla consegna, si utilizza il TCP; che prende in consegna i datagrammi dall'IP sottostante e si occupa di trasformarli in una comunicazione affidabile fra applicativo di partenza e di destinazione. Il TCP permette di fare comunicare più programmi applicativi contemporaneamente utilizzando a tale fine un numero di porta per ogni applicazione, dove per porta si intende un numero concordato fra trasmettitore e ricevitore che distingue i diversi applicativi.

Diversamente dall'UDP, supponendo che sulle due macchine ci siano due applicativi, non esiste una connessione, ma due, ciascuna identificata da una coppia di punti terminali, dove per punto terminale si intende l'insieme di un indirizzo IP e di una porta.

Una connessione è una coppia (IP,P1<>IP2,P2) dove IP1 ed IP2 sono gli indirizzi IP delle due macchine, mentre P1 e P2 sono i due numeri di porta sulle due macchine.
Ecco qui di seguito le caratteristiche fondamentali del protocollo TCP:

  • Orientamento alle stream
  • Connessione di circuito virtuale
  • Trasferimento bufferizzato
  • Trasferimento Full Duplex

Per stream si intendono i dati suddivisi in byte, nella corretta sequenza con cui sono stati inviati in partenza. Il TCP di partenza numera i byte nell'ordine nel quale essi vengono prodotti. Il TCP di destinazione prende i byte contenuti nei datagrammi consegnatigli dall'IP di destinazione, e ricrea le stream originarie, controllando contemporaneamente se mancano byte, inoltre il protocollo TCP invia al mittente un riscontro per tutti i byte ricevuti correttamente.

Avevamo detto che l'IP è un metodo di consegna inaffidabile e senza connessione, al contrario il TCP della macchina mittente stabilisce una connessione con il TCP di destinazione, prima di cominciare a inviare i dati.

Ciò viene ottenuto dal TCP dell'host che vuole attivare la comunicazione, inviando un segnale di richiesta e ricevendone una eventuale risposta affermativa.

Il meccanismo del TCP realizza via software su Internet l'equivalente di un circuito fisico fra partenza e destinazione. Questo circuito di dice virtuale.

Il trasferimento TCP è bufferizzato, nel senso che le stream di dati passati dagli applicativi al TCP per il trasferimento vengono raggruppate, in modo da ottimizzare la trasmissione attraverso Internet, in datagrammi IP della lunghezza più opportuna; dunque il TCP ha una funzione di assemblaggio da stream a datagramma alla partenza e disassemblaggio da datagramma a stream all'arrivo, che compie agendo da buffer.

I collegamenti TCP sono tipo Full Duplex, cioè permettono il trasferimento dati bidirezionale contemporaneamente, da un estremo all'altro della connessione virtuale. Le stream viaggiano su un collegamento full-duplex in direzioni opposte senza ovviamente interagire.

Nei pacchetti trasferiti fra i moduli TCP su due macchine è contenuto un elemento di verifica dell'integrità dei dati. Si usa a tale fine una checksum. Sono poi ovviamente implementati tramite il TCP meccanismi di ritrasmissione in caso di mancato riscontro di pacchetti, a causa di errato percorso o di scadenza del tempo di vita TTL del pacchetto.

Ma il TCP deve anche farsi carico della soluzione di problemi di congestione di Internet, ed in effetti esso implementa meccanismi di gestione di tali problemi.

I punti terminali si accorgono di una congestione quando aumenta fortemente il tempo di riscontro dei dati. Se il TCP trascurasse questo segnale, in caso di congestione, continuando ad inviare dati al ritmo invariato, provocherebbe un aggravamento della congestione che al limite potrebbe far collassare una qualche rete collegata ad Internet.

Per questo motivo il TCP diminuisce gradualmente il ritmo di invio dati se aumenta il tempo di riscontro e lo aumenterà di nuovo quando il riscontro diminuirà.

Meccanismo a finestre scorrevoli del TCP


In un sistema di trasmissione affidabile, l'affidabilità nella consegna è ottenibile nel modo più semplice se il ricevente invia un riscontro al trasmettitore, per ogni pacchetto ricevuto correttamente. Se il riscontro non è ricevuto entro un certo tempo massimo, il trasmettitore rinvia il pacchetto che si è perduto. Ottenuto il riscontro per il precedente pacchetto, il trasmettitore ne invia uno successivo.

Una operazione di questo tipo porta ovviamente a notevoli perdite di tempo, poiché il pacchetto 2 non parte se non è stato riscontrato il pacchetto 1 e così via.

Dunque, nella pratico il sistema di garanzia dell'affidabilità trasmissiva è sempre più elaborato.

Il meccanismo utilizzato nel TCP per ottenere l'efficienza è cosiddetto meccanismo della finestra scorrevole; il riscontro non viene fatto fra un byte ed il successivo, ma ogni N (N = ampiezza della finestra). Ad esempio per una finestra di ampiezza 8, il byte 9 non parte se non è giunto il riscontro del byte 1, e così via.

La dimensione della finestra varia dinamicamente in funzione del carico della rete, e questo permette di ottimizzare l'utilizzo di Internet e di controllare il flusso ai due estremi della connessione, meccanismo fondamentale in Internet dove le reti attraversate sono eterogenee per velocità e soggette a carichi variabili fortemente nel tempo.

Livello degli applicativi TCP/IP


Il socket, interfaccia fra applicativi e trasporto nella suite TCP/IP

Risalendo ancora i livelli della suite TCP/IP, veniamo ora all'interfaccia fra applicativi e TCP/IP. Esiste un meccanismo, che è divenuto uno standard, il cosiddetto Socket che pur essendo nato in ambiente Unix oggi viene utilizzato come modello di interfaccia fra applicativi e trasporto TCP/IP sulle piattaforme non Unix.

Quando si pensò al socket, si voleva realizzare una interfaccia fra programmi applicativi e TCP/IP che funzionasse in base ad un meccanismo analogo a quello della tradizionale lettura_scrittura su file, questa volta per fare operazioni di I/O verso il TCP/IP. Rispetto al semplice meccanismo di apertura, lettura, scrittura e chiusura di un file, l'I/O verso il TCP/IP richiede però una maggiore quantità di funzioni.

Il meccanismo del socket funziona nel modo seguente; un applicativo Internet sulla macchina A, che desideri comunicare con il corrispondente applicativo su un'altra macchina B, apre un socket e scrive i dati dall'alto su tale socket; il socket li passa al TCP/IP su A, il quale a sua volta attraverso l'interfaccia di rete su A li trasferisce sulla rete fisica verso il primo router.

Come sappiamo i dati saltano da router a router fino a giungere al TCP/IP sulla macchina B, il quale li scrive dal basso sul socket B, dal quale infine l'applicativo B dall'alto li legge.
In pratica, la prima operazione da fare è l'apertura del socket, per la quale va specificato il tipo di dati.

Una volta aperto il socket, esso va associato ad una porta specifica UDP o TCP; abbiamo visto che il TCP e l'UDP lavorano con il paradigma delle porte per i vari tipi di servizi. Assieme alla porta l'applicativo passa al socket l'indirizzo IP della macchina locale.

Tramite un successovi comando di connect, utile solo se l'applicativo usa il TCP per il trasporto, il socket viene connesso ad un indirizzo di destinazione.

Dopo avere attivato il socket, averlo agganciato a porta ed indirizzo locale, e eventualmente connesso alla destinazione dei dati siamo quindi pronti a scriverci sopra; sono previsti vari comandi di scrittura, a seconda delle esigenze; lo stesso dicasi per la lettura dal socket dei dati provenienti da Internet.

Esistono computer che gestiscono più tipi di servizio; in questo caso essi aprono un socket per ciascun servizio, e li utilizza a seconda del tipo di servizio richiesto loro.

Il modello Client-Server


Il modello Client-Server è il modello di interazione a livello di sistema distribuito, in cui due postazioni interagiscono a distanza, al fine dell'ottenimento di un servizio; la prima, Client, invia una richiesta di servizio e la seconda, Server, soddisfa tale richiesta.

Internet è per definizione, un sistema virtuale distribuito nel quale interagiscono milioni di host che compiono i compiti più disparati, dai più semplici ai più complessi.

In generale, i programmi che utilizzano il modello Client-Server possono essere realizzati a qualunque livello degli strati concettuali in cui si divide il software di comunicazione, e possono quindi implementare una parte vicina all'hardware. Il TCP/IP stabilisce che tutti i suoi protocolli applicativi utilizzino il modello Client-Server.

In genere i programmi Server, che implementano i servizi previsti dai protocolli applicativi, sono più complessi da realizzare dei Client, anche perché devono potere gestire più richieste del servizio in contemporanea. In tale caso Server in realtà si divide in più componenti, ed utilizza un ulteriore modello, detto Master-Slave; l'organizzazione di un programma Server Master-Slave vede un Master, che raccoglie, ordina e manda in esecuzione le varie richieste in arrivo, e più Slave che rispondono materialmente ed in parallelo alle richieste, nel momento in cui il Master le passa loro.

Vediamo la relazione tra il socket ed un Server Master-Slave che usi per il trasporto il TCP.
poiché, come abbiamo visto a proposito del TCP, una connessione è stabilita fra una coppia di punti terminali, identificati a loro volta ciascuno da una coppia (indirizzo IP_numero della porta), se l'applicativo che stiamo considerando è appunto un Server, esso può utilizzare il suo socket per comunicare con più Client; in tal caso il Server Master passa ai Server Slave le richieste che gli arrivano attraverso il socket del Master.

Gli Slave, dopo avere aperto ognuno un proprio socket, risponderanno materialmente alle richieste dei Client, e alla fine chiuderanno i socket Slave.

La complessità del Server è inoltre accresciuta dal fatto che esso deve gestire la sicurezza di accesso alla macchina sulla quale è ospitato e prevedere correzioni di errori nel proprio operare.

I programmi software che implementano i protocolli applicativi della suite TCP/IP avranno la caratteristica di appoggiarsi agli strati inferiori del software; dunque, saranno sganciati dalla conoscenza dei dettagli di rete e questo garantisce la possibilità che lo stesso programma applicativo giri su hardware diversi connessi alla rete.

Il Domain Name System


Allo scopo di agevolare gli utenti umani di Internet, accanto agli indirizzi IP numerici è stato elaborato un sistema di identificazione della macchina connesse ad Internet basato sui nomi al posto dei numeri. Questo sistema di denominazione è noto come DNS.

Come per l'assegnazione degli indirizzi IP e per la gestione dell'instradamento, anche in questo caso una gestione iniziale manuale dei nomi convenzionali su Internet, divenne ben presto impraticabile, data la crescita di Internet; ci si è quindi dovuti affidare per la gestione dei nomi convenzionali a database distribuiti, organizzati gerarchicamente, aggiornati in modo automatico, e che sono interpellabili tramite client DNS. Il DNS serve dunque per mettere in corrispondenza di un indirizzo IP un nome convenzionale più semplice da ricordare; una corrispondenza compete in linea di principio a ciascun host connesso ad Internet.

Alcuni esempi:

i nomi posso scelti da chi apre il proprio dominio. Di solito se si apre un dominio in Italia verrà data "l'estensione" .it, per quelli commerciali .com, per le organizzazioni .org e così via.

Tutto sta, comunque, a cosa scegli l'utente quando apre il dominio.

Telnet


Telnet è il protocollo di accesso remoto di Internet.

Esso consente di accedere ad un computer remoto tramite la rete.

Il collegamento può essere, indifferentemente con una macchina nella stessa stanza, nello stesso edificio, o in un angolo sperduto del mondo; quando si è collegati è come se la propria tastiera fosse direttamente collegata a quel computer remoto e il proprio monitor fosse quello del computer remoto.

Si può accedere a qualsiasi servizio la macchina fornisca ai suoi terminali locali purché questi funzionino in line mode.

Si può aprire una normale sessione interattiva o si può accedere a molti servizi speciali che il computer remoto offre: si possono consultare i cataloghi di una biblioteca o ordinare un libro in una libreria telematica, l'importante e che i programmi siano programmi senza interfaccia grafica ma solo testo, perché questo protocollo non fa visualizzare le immagini.

Telnet è un'applicazione client/server. Consiste cioè di due parti di software che cooperano.
Il client, che funziona nel computer che sta richiedendo il servizio, e il server che funziona nel computer remoto.

Telnet non ha dei comandi specifici, questo perché a seconda della macchina remota cambiano i set di comandi da digitare.

FTP


Come Telnet, ftp è una applicazione client/server.

Consiste cioè di due parti di software che cooperano.

L'ftp si basa sul secondo modello, che presenta il vantaggio di una maggiore semplicità di realizzazione, data l'eterogeneità della macchina presenti su Internet, e la conseguente complessità nel rendere accessibili i file in linea da macchine diverse.

Oltre a trasferire i file, l'ftp permette al tempo stesso un accesso interattivo alla macchina remota (utilizzando telnet), un controllo dell'autenticazione e una specificazione del formato dei dati da trasferire.

L'accesso interattivo alla macchina remota che gestisce il Server ftp permette la navigazione interattiva nelle directory della stessa alla ricerca dei file utili, mentre il controllo dell'autenticazione permette di gestire gli accessi ai file, potendo il Server ftp selezionare chi e a quali file fare accedere, e richiedendo una password di accesso valida prima di fare accedere comunque le richieste del Client.

La connessione di controllo ftp si basa sul telnet per la comunicazione fra Client e Server e serve a trasferire fra le due macchine tutte le informazioni atte a preparare e permettere il trasferimento dei file.

Come funziona la posta elettronica


Anche la posta elettronica si basa sul meccanismo client/server; in questo caso il Client si occupa della spedizione dei messaggi, mentre il Server si occupa della ricezione degli stessi ed ospita le cassette postali elettroniche.

La posta elettronica, universalmente nota come e-mail, è fra le applicazioni di internetworking quella più tradizionale e famosa; la sua fortuna nasce dal fatto di poter fare viaggiare per il mondo documenti in tempi brevi.

Rispetto agli altri protocolli applicativi TCP/IP esistono delle differenze sostanziali; una di queste è data dall'assicurare in ogni caso la consegna.

La posta elettronica ha due caratteristiche particolarmente importanti per un servizio di internetworking:

  • è doppiamente affidabile perché si basa sul TCP e sullo spooling (prova di consegna ripetuta fino al successo); per questo motivo esso è denominato servizio end_to_end
  • è un servizio universale, nel senso che permette una comunicazione anche su reti che non usano il TCP/IP e quindi anche al di fuori di Internet, purché esista ovviamente un punto di contatto fra le due internet

Gli indirizzi e-mail sono composti da due parti separate dal simbolo @ (in inglese at) e più precisamente abbiamo:

nome_locale@nome_dominio

dove la parte locale è la parte utente dell'indirizzo postale.

← previous
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT