Passa ai contenuti principali

Reti: Il TCP-IP Parte 5


Il Datagramma IP
Il datagramma IP (IP datagram) è l'unità di trasferimento di base del TCP/IP. Esso presenta una forte analogia con i frames di una rete reale; infatti si compone di una header area e di una data area.
L'header contiene l'indirizzo di destinazione (Destination IP Address) e di origine (Source IP Address), il livello IP, inoltre, svolge funzioni di routing fondamentali per l'architettura dell'intera rete internet proprio su questi indirizzi.

La differenza con l'header del frame fisico è che quest'ultimo contiene un indirizzo fisico, quello del datagramma contiene un indirizzo IP.
Di seguito la struttura del datagramma IP: 

L'header contiene anche:
  • un type field, che identifica il contenuto del datagramma
  • un checksum field, che assicura l'integrità dei valori contenuti in esso
  • il Time To Live, che specifica quanto tempo può sopravvivere un datagramma IP nella rete.

Un altro elemento molto importante è il protocol. Un datagramma IP, infatti, può contenere al suo interno un pacchetto TCP, un UDP, un ICMP o un VMTP e quindi è necessario procedere con un demultiplex logico basato appunto su tale campo.
Fra le altre informazioni, l'header del datagramma contiene il controllo della frammentazione, delle precedenze e degli errori veri e propri.
Idealmente, un intero datagramma IP viene incapsulato in un frame fisico, per rendere efficiente la trasmissione attraverso una rete fisica reale. Ma ogni rete locale consente una dimensione minima e una massima (indicata con Maximum Transfer Unit MTU) per i pacchetti che la attraversano, ed è quindi ovvio che, siccome i datagrammi IP devono essere incapsulati in un frame, non possono prescindere da queste dimensioni per altro fortemente variabili a seconda del tipo di rete.
Quindi, per tutelarsi dalla disomogeneità delle reti, si è deciso di scegliere una dimensione dei datagrammi IP conveniente ed escogitare poi un metodo (segmentation and reassembly) di dividerli in piccoli pezzi detti frammenti per poter essere accettati da una rete con qualsivoglia piccolo MTU e, ovviamente, riassemblati in uscita. 

Il Routing
In un sistema basato sul packets switching quale il TCP/IP, il routing rappresenta il processo di scelta del percorso su cui inoltrare i pacchetti ed il router è un computer che effettua  l'instradamento.
Da sottolineare che il routing IP avviene in ambiente software, mentre in realtà il routing fisico è a livello di MAC.
Il routing IP, in un sistema ideale, dovrebbe esaminare:
  • la connessione alla rete
  • la lunghezza del datagramma
  • quando selezionare il percorso migliore.

Quando un programma applicativo su un host tenta di instaurare una comunicazione con un host remoto, sia l'host locale che i routers partecipano all'instradamento dei datagrammi IP fino alla loro destinazione. 



Si può parlare di due tipi di routing:

Diretto - se l'host locale ed il remoto appartengono alla stessa rete fisica, in questo caso non sarà necessario l'impiego di router.

Indiretto - se l'utente destinazione è connesso ad una rete fisica diversa ed è necessario instradare il datagramma sorgente attraverso un router.

Per sapere se una destinazione appartiene alla propria rete, l'utente sorgente estrae dall'indirizzo IP di destinazione la parte relativa alla rete, la cosiddetta netid, e la confronta con la propria: se differisce, evidentemente la destinazione del datagramma è esterna.

Nel primo caso, il Network Interface Layer dell'utente di origine incapsula il datagramma IP in un frame fisico, associa l'indirizzo IP al relativo fisico ed usa l'hardware della rete per trasferirlo. Un possibile meccanismo per conoscere l'indirizzo fisico corrispondente è quello di utilizzare il protocollo ARP.

Il caso del routing indiretto è più difficoltoso, perché l'utente di origine deve identificare il router a cui inviare il datagramma; se nella rete locale c'è un solo router che permette la connessione con altre reti, il routing diventa molto più semplice poiché, appena l'host locale ha capito che la destinazione non appartiene alla propria rete, indirizza il datagramma direttamente al router. 
Se è connesso a più routers, lo indirizzerà a quello più vicino.
Una volta che il frame contenente il datagramma raggiunge il router, il software del Network Interface Layer estrae il datagramma incapsulato e le routine di routing, e in base agli indirizzi internet, il software IP seleziona il prossimo router a cui inviare il datagramma, incapsulato in un nuovo frame.
I routers in Internet danno vita ad una struttura interconnessa che li pone in continuo contatto tra loro. In questa struttura il datagramma scorre finché non raggiunge quel particolare router che gli permette di giungere direttamente a destinazione.
L'algoritmo che svolge queste funzioni (IP routing algorithm) utilizza su ogni macchina una tabella di routing (IP routing table), che contiene informazioni circa le possibili destinazioni e il modo come raggiungerle. Se contenesse tutte le destinazioni possibili diventerebbe troppo ingombrante e sarebbe impossibile tenerla aggiornata.
Quindi, solitamente, ci si limita a mantenere le informazioni degli utenti sulla stessa rete o su quelle più frequentemente utilizzate, lasciando un indirizzo di default per tutti gli altri.
Dato che i router operano in base alla parte di indirizzo IP relativo alla rete di destinazione l'instradamento è molto efficace e le tabelle necessarie di dimensioni abbastanza piccole.
Una tabella di routing contiene una coppia N-R, dove N è l'indirizzo IP della rete di destinazione ed R (next-hop) è quello del successivo router che permette di raggiungere la rete N. Chiaramente tutte le R presenti nella tabella di un router indicheranno al più i routers connessi direttamente ad esso, come mostrato nell'esempio in figura, che presenta quattro reti e tre routers (Q, R, S): 



Nella tabella che segue è riportata la tabella di routing di R:


Fine della parte 5

Commenti

Post popolari in questo blog

Colossus

Colossus " Colossus fu il primo elaboratore elettronico al mondo: fu realizzato in Gran Bretagna nel 1943, alla fine della seconda guerra mondiale, dall’intuizione del Dott. Thomas Flowers. Operativo dal 1944 a Bletchley Park, sostituì Heath Robinson, un macchinario più semplice, nel decifrare le comunicazioni criptate della Germania nazista. Entro la fine del conflitto furono costruiti dieci esemplari di Colossus, un “gigante” da 1.600 valvole termoioniche. Il Dott. Flowers aveva concepito il progetto prima della guerra, però il centro di ricerca britannico non era convinto che fosse davvero realizzabile: la tenacia dell’ingegnere, alla lunga, s’è rivelata determinante. " Citazione - Tratta da:   http://www.downloadblog.it/post/16765/colossus-il-primo-elaboratore-elettronico-a-essere-stato-realizzato

EDVAC

EDVAC (Electronic Discrete Variable Automatic Computer) L' E lectronic D iscrete V ariable A utomatic C omputer ( EDVAC ) è uno dei primi computer elettronici digitali della storia, uno dei primi computer della storia basato sull'architettura di Von Neumann e uno dei primi computer a programma memorizzato della storia. L' ENIAC era veloce, ma disponeva di pochissimo spazio di archiviazione . Inoltre, per la programmazione doveva essere ricablato , un'operazione che richiedeva da poche ore a giorni interi; era, inoltre, poco affidabile, a causa delle molte valvole tubolari utilizzate, che richiedevano, tra l'altro, moltissima energia e molto spazio per funzionare e generavano molto calore. Il che faceva lievitare costi di gestione.

Storia e Caratteristiche delle Reti (1)

Un Mainframe Le origini L’era delle reti di calcolatori ha inizio intorno ai primi anni ’60, ed esattamente quando vennero prodotti i primi esemplari di mainframe , degli elaboratori che, per l’epoca, erano considerati velocissimi anche se decisamente grandi. complessi e costosi. Le dimensioni di queste macchine erano ragguardevoli: un mainframe occupava quasi sempre una o più stanze. L’elaborazione avveniva all’interno della struttura principale ed era esclusivamente di tipo batch . I calcoli venivano eseguiti rispettando sequenze di istruzioni predefinite che venivano memorizzate su schede perforate senza nessuna interazione tra utente e macchina .