Terzo Articolo
TCP/IP, protocolli ed altri misteri
Parte 3
NOMI degli HOSTS
Nella puntata precedente abbiamo visto come sia fatta la
numerazione della rete IP: ogni attacco fra un computer Host e
la rete viene individuato da un numero formato da 32 bit, e in
questo numero viene codificata sia la rete che l'utente.
I computer se la cavano molto bene coi numeri, ma gli umani no,
quindi, Š consuetudine assegnare ad ogni Host, oltre al numero
IP, anche un nome facile da ricordare.
Il fatto di avere dei nomi assegnati ai computer permette di
costruire un "elenco telefonico", possibilmente elettronico,
posto su qualche nodo della rete e, quindi, fornire agli utenti
un servizio centralizzato per la conversione dei nomi in numeri
IP. I nomi, comunque, sono utili soptrattutto per gli umani.
Quando i computer erano pochi era facile assegnare i nomi: in
genere ogni organizzazione aveva un solo grande computer. Oggi
le cose sono cambiate profondamente: in ogni organizzazione ci
sono copmuter grandi e piccoli, distribuiti nelle varie
divisioni e perfino su ogni scrivania. Tutta questa
proliferazione ha reso indispensabile usare delle regole anche
nell'assegnazione dei nomi.
I nomi per la rete IP hanno una struttura gerarchica. Questo
vuol dire che il nome Š composto da varii sottonomi che
identificano l'organizzazione, e le sottostrutture organizzative
responsabili per quel computer.
I nomi si scrivono da sinistra verso destra partendo dalle
strutture (dominii) gerarchicamente pi— basse verso le pi— alte.
La parte del nome pi— a destra, quindi, indica il dominio pi—
alto. I nomi dei dominii sono separati da un punto.
Esempio elett.poli.edu
I nomi dei dominii Top-Level sono:
COM Organizzazioni commerciali
EDU Enti scolastici
GOV Enti governativi
MIL Enti Miltari
NET Centri di supporto rete
ARPA Dominii ARPANET temporanei
ORG Altre organizzazioni
La nostra rete 44, che si chiama AMPR, appartiene alle "org",
quindi i nomi dei nostri computer devono terminare con:
....ampr.org
Il nome completo Š quindi di questo tipo:
i2kfx.ampr.org
Il nominativo, per come Š costruito, porta gi… le informazioni
sulla nazione e sulla regione, quindi l'identificazione Š
completa. Se richiesto il nominativo pu• portare anche l'SSID
come in ik1che-10.ampr.org
Gli OM con pi— di un computer, se lo desiderano, possono far
precedere il nominativo da una parolina identificativa:
pc1.i0vuq.ampr.org
Tale parolina aggiuntiva pu• essere scelta a piacere, ma si
consiglia di scegliere fra "pc", "mac","amig", "laptop" ecc.
PROTOCOLLI STRATIFICATI
Abbiamo accennato nella puntata precedente al fatto che l'IP
riceve i dati da trasmettere e li passa al protocollo della rete
fisica sottostante dopo averli opportunamente arricchiti di
informazioni utili all'instradamento sulla rete fisica.
(Fig. 1.3)
ÚÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄ¿
³ ³ ³ ³ ³ ³
³ TCP ³ ³ IP ³ ³rete ³
ÄÄÄ´ ÃÄÄÄÄÄ´ ÃÄÄÄÄÄ´ ÃÄ-----
³ ³ ³ ³ ³fisica³
³ ³ ³ ³ ³ ³
ÀÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÙ
La struttura pu• essere pensata come un familiare circuito a
blocchi in cui un segnale entra in un blocco, viene da questo
opportunamente "lavorato" e quel che ne esce va ad alimentare il
blocco successivo.
La lavorazione che ogni blocco esegue consiste nel prendere un
segmento di dati ed aggiungervi un'opportuna TESTATA. Tale
operazione si chiama IMBUSTAMENTO. E' un p• quello che avviene
con la corrispondenza postale: la lettera viene inserita in una
busta che porta scritto sopra il destinatario ed il mittente, la
busta viene poi inserita in un sacco postale; i sacchi postali
vengono messi nel vagone che li porta a destinazione...e cos
via.
Allo stesso modo ogni blocco della figura 1.3 prende i dati dal
blocco a monte e li passa a quello a valle dopo avervi aggiunto
in testa un gruppo di byte, la TESTATA appunto.
Nella realt… dei protocolli ogni blocco viene realizzato con un
programma o un processo e questi si scambiano i dati attraverso
i meccanismi messi a disposizione dal sistema operativo del
computer che li ospita.
La testata contiene un certo gruppo di informazioni che servono
all'espletamento del compito che il protocollo si prefige.
Queste informazioni vengono lette ("consumate") dal protocollo
omologo sul lato ricevente.
(Fig. 2.3)
La figura 2.3 rappresenta globalmente i protocolli fra due
computer attaccati alla stessa rete. Mentre i dati fluiscono
secondo le verticali i colloqui logici per l'espletamento delle
funzioni, avvengono secondo le linee orizzontali fra protocolli
di pari livello.
L'IP della macchina A parla con l'IP della macchina B servendosi
dei protocolli di interfacciamento alla rete (PRF) e la rete
stessa. Lo scopo del colloquio Š far viaggiare i datagram
attraverso la rete.
Il TCP della macchina A parla col TCP della macchina B
servendosi degli IP sottostanti. Lo scopo di questo colloquio Š
verificare la consegna di tutti i datagram ed il loro ordine.
Ovviamente tutta questa struttura non Š fine a se stessa, ma
serve allo scambio di dati fra gli applicativi che siedono sopra
ai TCP. Gli applicativi possono essere la posta elettronica
(SMTP), il file transfer (FTP) ecc., ma di questi parleremo
in seguito.
La figura 2.3 pu• essere ridisegnata come in Fig. 3.3 che rende
meglio l'idea del perchŠ questi protocolli siano detti
"Stratificati". Di strati o livelli perleremo pi— in dettaglio
parlando del modello di Riferimento OSI. Va comunque ricordato
che il TCP/IP Š precedente alla definizione del modello OSI ed
ha dato a quest'ultimo le idee di base.
TESTATA dell'IP
La testata dell'IP Š composta in genere da 20 byte. Ogni datagram,
quindi, Š formato dalla testata seguita dai dati provenienti dal
TCP:
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Testata 20 byte ³ Dati da trasportare ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
I byte della testata trasportano varie informazioni. La Fig.
3.4
mostra i dettagli.
bit 0 8 16 31
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Version³ IHL ³Type of Service³ Total Length ³
ÃÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ Identification ³Flags³ Fragment Offset ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ Time to Live ³ Protocol ³ Header Checksum ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ Indirizzo IP del Mittente ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ Indirizzo IP del Destinatario ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ Opzioni ³ riempitivo ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ testata TCP, dati applicativi... ³
³ ³
Fig. 3.4
Il campo IHL (IP Header Length) dice quanto Š lunga tutta la
testata e normalmente Š posto a 5 : le unit… sono da 32 bit
l'una. In genere quindi la zona "Opzioni" non Š usata.
Si notino gli indirizzi IP del mittente e del destinatario.
Queste sono le informazioni pi— importanti ai fini
dell'instradamento da un gateway all'altro.
Un altro dato importante che il datagram si porta dietro nel suo
viaggio da un gateway all'altro Š il Time-to-Live. Ricordate
dalla prima puntata il problema che hanno le reti datagram con i
loop !? Ad ogni passaggio in un gateway il TTL viene
decrementato. Quando arriva a zero il datagram viene ucciso.
Il valore iniziale di TTL si imposta nel file di configurazione
di NET.EXE.
Un altro campo interessante Š il "Type of Service". All'interno
di questo campo c'e' un numero che indica la "Precedenza".
Precedenza 0 vuol dire normale, la pi— bassa. Precedenza 7 Š la
pi— alta e dovrebbe essere riservata ai datagram di controllo e
supervisione della rete. Purtroppo questo campo Š per lo pi—
ignorato dai gateway, ma il suo uso Š essenziale per
l'implementazione di procedure di Congestion Control nelle quali
i messaggi di controllo non vengono bloccati dalla congestione
che cercano di controllare.
Il campo Total Length dice quanto Š lungo, in byte, tutto il
datagram. Ricordate, per•, che un gateway pu• dover spezzare un
datagram per adattarlo alla massima lunghezza consentita su una
certa rete. Se originariamente il datagram prodotto dall'Host Š
di 1000 byte, per esempio, e la rete in uso pu• trasportare solo
paccketti da 200 byte allora il datagram va spezzato in cinque
frammenti (pi— o meno). L'operazione di frammentazione e
ricostruzione dei datagram Š controllata dai campi
Identification, Flags e Fragment Offset.
Il campo Identification contiene un numero che identifica il
datagram in modo univoco. I vari frammenti dello stesso datagram
si individuano dal fatto che hanno tutti lo stesso numero.
Il campo Fragment Offset marca lo scostamento rispetto
all'inizio, del frammento nel datagram originale. I Flags sono
vari bit di cui il More Fragments Bit indica che un certo
frammento Š l'ultimo della serie appartenente ad un certo
datagram originale. (nei frammenti la Total Length indica la
lunghezza totale del frammento stesso )
Tutte queste informazioni sono necessarie all'IP ricevente per
ricostruire correttamente il datagram originale da una sequenza
di frammenti, lo ricordo, che possono arrivare fuori ordine o
duplicati...e, come al solito, le informazioni costano.
La Header Checksum, infine, serve ad accertarsi che le
informazioni contenute nella testata siano esenti da errori di
trasmissione: Š un p• la stessa funzione svolta dal CRC nel
protocollo di link AX.25. Ovviamente sulle nostre reti, che
hanno una correzione degli errori di trasmissione efficiente,
questa checksum Š superflua, ma, se due gateway fossero connessi
con l'RTTY allora questo campo assumerebbe una grande
importanza.
Riassumendo:
L'IP svolge le funzioni di:
Instradamento
Frammentazione e ricomposizione
Congestion Control
I Demoni (buoni) che si agitano dentro i livelli IP realizzano
le funzioni dianzi elencate con l'ausilio di informazioni
contenute nelle testate dei singoli datagram.
L'instradamento viene portato a termine leggendo apposite
tabelle (aggiornate manualmente od automaticamente) di ROUTE e
di ARP e scambiando informazioni nei campi "Indirizzo IP" e IHL.
La frammentazione e la ricomposizione dei frammenti avviene
utilizzando le informazioni contenute nei campi Identification,
Flags, Fragment Offset.
Il controllo della congestione, quando Š implementato, avviene
scambiando fra gateway opportune informazioni che viaggiano in
datagram speciali ad alta priorit…. La priorit… Š scritta nel
campo Type Of Service. La rete IP realizza una forma di
controllo del flusso e gestione degli errori attraverso lo
scambio, fra i gateway, di appositi messaggi che vanno sotto il
nome di ICMP (Internet Control Message Protocol). La
trattazione di questo protocollo esula da questa serie di
articoli.
NETROM
Abbiamo visto nella seconda puntata che la rete logica IP si pu•
appoggiare per il trasporto dei dati alla rete fisica costituita
dalle NETROM. Abbiamo anche visto che la funzione ARP consiste
del determinare l'indirizzo della rete fisica dato l'indirizzo
logico IP. Vediamo ora in cosa consiste l'indirizzo di una rete
NETROM.
La rete telefonica utilizza un numero per individuare ogni
abbonato. La rete ETHERNET, che Š una LAN su cavo coassiale usa
un numero formato da 48 Bit. Anche le reti pubbliche a
commutazione di pacchetto secondo lo standard X.25 utilizzano un
numero, che si chiama NUA, codificato in cifre decimali su
quattro bit e di lunghezza variabile. Ogni rete ha una sua
tecnica diversa per individuare in modo univoco ogni utente.
E per le NETROM ? WA8DED, il progettista delle NETROM ha voluto
mantenere la compatibilit… con il preesistente AX.25 e quindi ha
dato un "Nominativo" ad ogni TNC NETROM e ha permesso che
l'utente, col suo proprio nominativo, potesse avere una
connessione diretta col nodo NETROM. Ne consegue che
l'indirizzo di ogni utente sulla rete NETROM Š formato da due
parti:
il nominativo della NETROM associato al nominativo della
stazione finale.
Possiamo scriverlo cos, per esempio:
I2KFX@IR2MI-2
usando la stessa notazione in voga per i BBS.
E' unico un tale indirizzo ? Purtroppo no !
Se sulla stessa frequenza ci sono pi— NETROM, nessuno lega un
utente ad un suo proprio nodo NETROM, ma l'utente, di volta in
volta pu• collegarsi a quello che preferisce.
Nella zona di Milano, a 144.675 si possono utlizzare i seguenti
nodi: IR2MI-2, IR2LC-2, IR4PR-2, IR1AT-2 e IR1CN-2...decisamente
troppi e tutti che si contendono il canale radio. Ogni
possibile utente ha quindi, praticamente, almeno 5 indirizzi
sulla rete NETROM.
PROBLEMA:
Come fa l'IP col suo ARP ad individuare l'indirizzo di rete,
dato quello Internet, visto che gli indirizzi possibili sono
cos tanti ?
Questo problema non ha soluzione. L'unica possibilit… di fuga
per W9NK, il realizzatore della parte NETROM, Š stata quella di
inglobare in ogni Host connesso alla rete NETROM un altro nodo
NETROM, in modo che la connessione Utente-NetromInglobata
potesse essere unica. Questo ha permesso, inoltre, di escludere
la funzione di trasporto insita nelle NETROM, che fa apparire
una rete Datagram come se fosse una VC, funzione non molto
efficace che, per di pi—, blocca i pacchetti col PID dell'IP.
Un altro buon motivo per includere la funzione "netrom" dentro
il package del TCP/IP deriva da modo con cui si ottengono le
funzioni di rete dalle NETROM: per stabilire una connessione di
rete (terzo livello) occorrono almeno tre comandi:
Connessione del nodo pi— vicino
Connessione del nodo remoto
Connessione del destinatario
Il primo comando stabilisce una connessione di secondo livello
tra il proprio TNC e la NETROM pi— vicina. Il secondo ed il
terzo sono la vera connessione di terzo livello.
( Sarebbe stato bello vere un comando del tipo: C i2bjs@IR2MI-2)
Tutte queste operazioni sono adatte agli umani, ma scomode da
implementare in un sistema automatico.
Ecco perchŠ, con l'introduzione del TCP/IP via NETROM, Š cos
aumentato il numero dei nodi, con la conseguente saturazione
delle tabelle NODES. All'inizio abbiamo assistito a parecchie
baruffe e reciproche accuse in perfetto stile radioamatoriale,
poi, pian piano, i SYSOP hanno allargato lo spazio disponibile
per tali tabelle sui nodi, per cui ora, se date ad una NETROM il
comando "NODES *" vi arriva gi— una bella sbrodolata di 200
nominativi (in pratica quasi tutti irraggiungibili).
Gli utenti del TCP/IP che hanno iniziato a fare Telnet o FTP via
NETROM hanno immediatamente scoperto che tali connessioni erano
di gran lunga pi— stabili ed affidabili di quelle fatte nel modo
originario. Questa, credo, Š stata la vera spinta all'uso del
TCP/IP. Si direbbe che l'unico modo di far passare qualcosa
attraverso una sequenza di tre o pi— nodi NETROM sia proprio
quello di usare il nostro buon TCP/IP.
C'Š un motivo per tutto questo : il TCP, che come abbiamo
accennato si occupa del trasporto End-to-End, rimpiazza il
trasporto insito nelle NETROM. Le connessioni applicative
risultano, cos, stabilissime, infatti se anche due NETROM si
sconnettono perchŠ i messaggi di conferma non sono arrivati in
tempo, il TCP le obbliga a ricollegarsi, senza che le
connessioni fra gli applicativi vengano abbattute.
L'aver introdotto un nodo NETROM del programma del TCP/IP ha
complicato parecchio i file di configurazione ed ha ingenerato
una serie di incomprensioni fra quelle che sono le funzioni
proprie dell'IP e quelle proprie delle NETROM. La spiegazione
che segue tenta di buttare un p• di luce su questo argomento
cos ingarbugliato.
La confusione principale, credo, deriva dal fatto che si
confonde il ROUTE dell'IP con quello della NETROM.
All' IP si dice:
route add ik1che netrom
e
arp add ik1che netrom ik1che-2
che vuol dire: per raggiungere ik1che devi servirti
dell'interfaccia "netrom" e l'indirizzo fisico di ik1che
(44.134.1.2) Š il nodo netrom ik1che-2.
Poi bisogna istruire la propria netrom a conoscere la rete
esterna e questo lo si fa o aspettando di ricevere il broadcast
NODES da una NETROM vicina o dando l'opportuno comando:
netrom route add #che ik1che-2 144 192 IR2MI-2
per significare che il nodo netrom ik1che-2 lo puoi
raggiungere attraverso IR2MI-2.
Definizioni ad effetto multiplo si possono dare solo per l'IP
il quale accetta in tutti i posti in cui ci va l'indirizzo
intero di 32 bit anche un sottoinsieme: (Nota che nei
comandi scrivere ik1che Š equivalente a scrivere l'indirizzo
44.134.1.2 come da corrispondenza nel file HOSTS.NET)
route add [44.134.1.0]/24 netrom ...ecc.
Per far s che tutti gli indirizzi i cui primi 24 bit sono
44.13.1 vengano instradati sull'interfaccia netrom.
Per le netrom non Š possibile dare comandi ad effetto multiplo !
La ragione risiede nel fatto che gli indirizzi IP sono numeri, o
meglio, sequenze di bit, con un certo significato, mentre gli
indirizzi netrom sono nominativi alfanumerici.
Per convenzione in Italia si usa dare l'SSID -2 ai nodi NETROM
in gamma 2 metri. Ecco perchŠ tutte le stazioni che utilizzano
l'interfaccia netrom usano il nominativo col -2. Sarebbe
opportuno estendere l'uso del -2 ad indicare "NETROM"
indipendentemente dalla banda usata e utilizzare il nominativo
liscio (SSID = 0) per la funzione di TNC vecchio stile.
ROSE
Non ci sono solo le NETROM per fare le reti! Le reti si possono
anche fare molto bene con i nodi ROSE.
I nodi ROSE sono stati sviluppati da W2VY in conformit… al
modello di riferimento OSI e sono di pubblico dominio per uso
radioamatoriale. Lo sviluppo ha richiesto pi— di tre anni, ma
ora hanno raggiunto un un livello di funzionamento adatto alla
grande diffusione.
La rete di nodi ROSE Š una rete a canali virtuali (VC) e la
politica di instradamento Š ISOLATA: questo vuol dire che i nodi
ROSE non si parlano fra di loro e che le tabelle di
instradamento (routing) debbono essere scritte e aggiornate dal
SYSOP in base alle connessioni possibili con i nodi vicini.
Quindi non pi— tabelle lunghissime e tentativi di instradamento
su cammini impossibili, ma tutto sotto lo stretto controllo
della mente umana ! (sar… poi un vantaggio ?!)
Ogni nodo ROSE ha un indirizzo composto da un numero secondo lo
standard internazionale del CCITT X.121 e questo rende
ipotizzabile una rete mondiale tutta di nodi ROSE.
L'uso della rete ROSE Š molto facile e non Š possibile
girovagare per i nodi come sulle NETROM. Oltre all'indirizzo di
rete ogni nodo ha anche un nominativo che serve alle connessioni
di secondo livello come prescrive l'AX.25.
Il servizio di tale rete si ottiene con un comando unico che Š
del tutto uguale ai comandi dei vecchi buoni digipeaters, solo
che l'effetto Š del tutto diverso. Supponiamo che in Brianza ci
sia il nodo IR2MZ-3 con indirizzo 203920 ed a Roma ci sia
IR0RM-3 con indirizzo 000610, allora col comando
cmd: C I0VUQ VIA IR2MZ-3,000610
La connessione Š fatta...supponendo che di mezzo ci sia
qualcosa !
L'uso del TCP/IP sulla rete ROSE Š immediato perchŠ
l'instradamento via digipeaters Š gi… incluso nel package fin
dalle prime versioni, quindi baster… istruire l'IP con i
seguenti comandi:
route add [44.134.0.0]/24 AX25
arp add i0vuq ax25 i0vuq IR2MZ-3 000610
C'Š un solo inghippo: con la presente versione 1/90 della ROSE
quanto sopra non funziona per il motivo che nelle connessioni IP
i frame di tipo I portano un PID speciale che individua il
proptocollo IP sovrapposto. All'uscita della rete ROSE,
purtroppo, il PID diventa di tipo Text (Quello del normale
AX.25). Il risultato Š che la stazione che riceve la chiamata
invia i frame IP al mailbox !! [NET KA9Q versione 8904]. C'Š
solo da sperare che W2VY corregga rapidamente questo problema.