Titolo: something about networking 
 Autore: Rob3rto
 E-Mail: robcasanovi@virgilio.it
 Crew website: http://www.hackarena.net

Premessa:

Questa guida ha come unico scopo quello di fornire un infarinatura diciamo generica sul
networking e sulle reti in modo da poter trattare in seguito argomenti più
complessi. Questo articolo è quindi indirizzato a una fetta di utenti che non hanno
particolari conoscenze tecniche. Un utente esperto potrebbe trovare tutto questo noioso
e inutile. Tutto questo per dire: "avete deciso di leggerla? Beh cavoli vostri!" =)

 Indice:
  (1) Cos'è una rete
  (2) Reti fisiche e logiche
  (3) Pacchetti
  (4) Protocolli
  (5) Lo standard ISO/OSI
  (6) Trattamento dei dati
  (7) Little & big endian
  (8) Internet: aggancio di più reti
  (9) Commutazione di pacchetto
  (10) Router? No grazie!
  (11) Algoritmi di routing
  (12) Traceroute
  (13) Fondamenti dell'architettura di rete



(1) Reti

Una rete in ambito informatico è sostanzialmente sistema di collegamento tra due o 
più calcolatori. Gli elementi essenziali di una rete sono:

>almeno due calcolatori
>un interfaccia di rete per ogni calcolatore (NIC)
>un media di collegamento (mezzo di collegamento)
>il software operativo di rete


(2) Reti fisiche e logiche

Ci sono due tipi di reti: fisiche e logiche.
In una rete fisica locale possiamo distinguere tre diverse tipologie:

A STELLA:
                      +----+
                      |HOST|
                      +----+               In una rete a stella tutte le comunicazioni
                         |                 passano per un nodo principale e le zone
                         |                 periferiche restano indipendenti le une dalle   
            +----+       _       +----+    altre. Le comunicazioni quindi sono gestite e    
            |HOST|------|_|------|HOST|    controllate dal nodo principale.
            +----+               +----+
                         |
                         |
                      +----+
                      |HOST|
                      +----+

AD ANELLO:   
                       <---
                      +----+
                   /--|HOST|--\           
                  /   +----+   \
                 /              \          In una rete ad anello le macchine vengono collegate
             +----+            +----+      in modo da formare un anello. Le comunicazioni
             |HOST|            |HOST|      avvengono in un unico senso e un computer ritrasmette
             +----+            +----+      al successivo tutte le comunicazioni che non sono
                 \              /          destinate a se stesso.
                  \   +----+   /
                   \--|HOST|--/
                      +----+    
                       --->   
A BUS:

           +----+ +----+ +----+ +----+     In una rete a bus le macchine sono collegate sullo
           |HOST| |HOST| |HOST| |HOST|     stesso canale trasmittivo. Le comunicazioni sono 
           +----+ +----+ +----+ +----+     quindi intercettabili da tutti i computer. Se 
              |      |      |      |       avvengono due tentativi di comunicazione simultaneamente
            --------------------------     può avvenire una collisione.



Le reti logiche invece possono essere di due tipi:

BOARDCAST: i computer si comunicano delle trasmissioni attraverso l'utilizzo di piccoli
impulsi elettrici. Il canale di trasmissione in questo caso è condiviso da tutti: in
pratica tutti i nodi riceveranno la comunicazione ma solo uno la elaborerà: quello
che riconoscerà nel messaggio il proprio indirizzo fisico.
TOKEN PASSING: questo sistema si basa su un "gettone" (token) che passerà da un host 
all'altro. Se un host ha qualcosa da trasmettere prende il gettone altrimenti lo passa
all'host successivo.


(3)Pacchetti

In una rete i dati viaggiano sottoforma di pacchetti. I pacchetti sono unità o meglio
capsule atte a racchiudere i dati. Ogni pacchetto è contraddistinto da degli header
che serviranno a distinguere mittente, destinatario e altre informazioni al momento
della trasmissione. Più precisamente un pacchetto può essere formato da:

>intestazione 
>informazioni di controllo
>mittente
>destinatario, 
>dati di controllo degli errori 
>messaggio stesso 

(4)Protocolli

Un protocollo potrebbe essere definito come un insieme di regole atto alla trasmissione
corretta dei pacchetti. Infatti i pacchetti vengono trasmessi e ricevuti in base a delle
regole ben precise a accettate da tutti. I pacchetti si annunciano, mentre un elaboratore 
trasmette gli altri restano in attesa e a fine trasmissione mandano dei segnali per avvertire
che il contatto è terminato. Alcuni dei principali protocolli sono:

TCP/IP: è il protocollo standard di internet ed è instradabile
IPX/SPX: protocollo per reti Novell: è instradabile. In NT è conosciuto anche come NWLink.
NetBEUI: protocollo Microsoft disegnato per piccole LAN; non è instradabile. 
Non è compatibile con UNIX.
Appletalk: protocollo disegnato per le piccole reti Apple; è instradabile.
DLC: protocollo per il collegamento a Mainframe IBM e stampanti di rete HP. Non è instradabile

(5)Lo standard ISO/OSI

Le differenze hardware e software delle macchine hanno spesso causato incompatibilità tra i 
sistemi e quindi impossibilità di interazione. Per correggere questa grave falla si è 
deciso di abbandonare i sistemi proprietari e di adottare uno standard.
Il modello di riferimento OSI (Open System Interconnection), diventato parte degli standard ISO 
(International Organization for Standardization) nel 1984 lavora così: divide la gestione
della rete in sette livelli:


                COMPUTER1================================COMPUTER2
                Livello 7                   Livello 7
                Livello 6                  Livello 6
                Livello 5                       Livello 5
                Livello 4                     Livello 4
                Livello 3                       Livello 3
                Livello 2                     Livello 2
                Livello 1                     Livello 1
                ===================================================
                       MEZZO FISICO


Come si può vedere il livello più basso è quello più vicino alla macchina fisica  mentre quello
più alto + più vicino alle applicazioni. Ora vediamo in analisi i vari livelli:

LIVELLO 7 Applicazione: il livello 7 è quello che si interfaccia con le applicazioni per esempio
la posta elettronica (client per la gestione delle mail) o il trasferimento di dati (client http
o ftp)) eccetera. E' l'ultimo livello quello più lontano dalla macchina fisica e più vicino all'
utente.
LIVELLO 6 Presentazione: il livello 6 si occupa della trasformazione dei dati Insomma il livello
6 si occupa di rendere leggibile e facilmente interpretabile un dato da parte del sistema che lo
riceve (per fare un esempio entra in gioco quando due sistemi utilizzano codifiche diverse come
ASCII e EBCDIC).
LIVELLO 5 Sessione: è il livello atto al controllo della sincronizzazione/mantenimento di una
comunicazione tra due applicazione.
LIVELLO 4 Trasporto: il livello 4 si occupa dell' invio/ricezione dei dati. Il suo compito quindi
è quello di fornire un sistema di trasporto dati sicuro e affidabile. 
LIVELLO 3 Network: gestisce l'instradamento dei pacchetti controllando gli indirizzi di destinazione
e di provenienza e si preoccupa di scegliere il percorso.
LIVELLO 2 Data Link: Gestisce i pacchetti (frame), spezzoni di messaggio di lunghezza fissa. Si 
occupa di tutti i meccanismi di individuazione e correzione degli errori avvenuti nel livello 1. A 
questo livello avviene l'indirizzamento fisico basato sull'indirizzo fisico degli host (MAC).
LIVELLO 1 Fisico: è il livello più vicino alla macchina e si occupa della trasmissione dei dati sul
mezzo fisico. Tutti gli standard di voltaggio, distanze massime, connettori fisici ecc. sono qui 
attribuiti. 

TABELLA ESEMPLIFICATIVA PER ALCUNI PROTOCOLLI INTERESSATI: 


[+]------------------------------------------------[+]
 | 7 Application     SNB, NCP, FTP                  |
 | 6 Presentation    NCP, Compressione dati         |
 | 5 Session         Nessuno                        |
 | 4 Transport       Tcp/ip XNS SNA NetBIOS NetBEUI |
 | 3 Network         IP, IPX, NetBEUI, DLC, DecNET  |
 | 2 Data Link       Solo lo standard IEEE 802      |
 | 1 Physical        Solo lo standard IEEE 802      |
[+]------------------------------------------------[+]



(6) Trattamento dei dati

Vediamo come vengono trasmessi i dati attraverso un canale comunicativo seguendo i livelli che abbiamo
visto prima:

[+]----------------------------------------------------------------------------[+]
 | 7 Application     Dati                                                       |
 | 6 Presentation    Dati                                                       |
 | 5 Session         Dati                                                       |
 | 4 Transport       Segmenti(data-data-data)                                   |
 | 3 Network         pacchetti(intestazione+data)                               |
 | 2 Data Link       Frame (intestazione+indirizzo locale+Data+indirizzo locale)|
 | 1 Physical        Binario 10010101001010111010                               |
[+]----------------------------------------------------------------------------[+]

LIVELLI 7-6-5: generazione del dato (l'esempio più semplice può essere la generazione di
una mail in formato alfanumerico)
LIVELLO 4: i dati vengono spezzati in segmenti e spediti al destinatario. Una volta
ricevuti i segmenti il destinatario lancia un segnale di trasmissione avvenuta. Se
la trasmissione avviene con insuccesso il destinatario può chiedere la ritrasmissione.
LIVELLO 3: il dato viene incapsulato in un pacchetto con un header (intestazione) che 
contiene gli indirizzi di mittente e destinatario.
LIVELLO 2: i pacchetti vengono inseriti in una frame che viene spedita alle device 
connesse sulla stessa rete che ne aggiungono il proprio indirizzo di rete fisico. 
LIVELLO 1: la frame viene convertita in binario (struttura a bit 0/1) per permetterne
la trasmissione su un cavo. 

 
(7) Little & big endian

Di che stiamo parlando? Del modo che usano i pc per memorizzare un intero di 16 bit.  Per
farlo ci sono due modi: Il little endian e il big endian. Vediamoli:

Big endian:
+----------------------+ +-----------------------+     Il byte meno significativo viene memorizzato a sinistra.
|Byte più significativo| |Byte meno significativo|     Il byte più significativo è aòò'indirizzo iniziale.
+----------------------+ +-----------------------+
           A                       A+1

Little endian:

+----------------------+ +-----------------------+     Il byte meno significativo è all'indirizzo iniziale.
|Byte più significativo| |Byte meno significativo|     Il byte più significativo viene memorizzato a sinistra.
+----------------------+ +-----------------------+
         A+1                        A

I protocolli Tcp/ip XNS SNA impiegano tutti il formato big endian per ordinare i blocchi da 16
e 32 bit e li mantengono nelle intestazioni del protocollo. Questo perchè molti sistemi,
durante l'ordinamento di interi di 32 bit, scambiano i due pezzi da 16 bit dell'intero di 
32 bit e la suluzione a questo problema sta nell'indicazione da parte di un protocollo di rete
dell'ordine dei byte nella rete. 

+-------Tect.c-------------------------------------------------------------------+
|                                                                                |  
| /*                                                                             |
|   Test.c                                                                       |
|   Programma per vedere che endian utilizza il vostro sistema                   |
|   Compile with gcc test.c -o test -Wall                                        |
| */                                                                             |
|                                                                                |
|   #include                                                        |
|   #include                                                            |
|   u_int8_t                                                                     |
|   endianess()                                                                  |
|   {                                                                            |
|        u_int16_t       var = 0xbeef;                                           |
|        u_int8_t       *end = (u_int8_t *) & var;                               |
|        return (end[0] == 0xef ? 1 : 0);                                        |
|   }                                                                            |
|   int                                                                          |
|   main()                                                                       |
|   {                                                                            |
|                                                                                | 
| printf("your enviroment is %s endian\n", endianess() == 1 ? "little" : "big"); |
|         return (0);                                                            |
| }                                                                              |
+--------------------------------------------------------------------------------+


(8) Internet: aggancio di più reti

Ricordiamo ancora una volta che le reti sono classificabili anche in base alle dimensioni.                        
Local Area Network (LAN): una rete locale mette in comunicazione varie macchine collocate
a una distanza abbastanza breve l'una dall'altra situate in uno stesso edificio. Le lan
spesso adoperano una connessione ad alta velocità (il protocollo Ethernet va a 10mbps).
Wide Area Network (WAN): questo tipo di reti collega tra di loro nazioni, città o comunque
aree geografiche diverse. 
Meno conosciute sono le reti che collegano tra di loro una città. Anch'esse operano spesso
ad alta velocità e sono propriamente dette MAN (Metropolitan Area Network).
Internet fa in modo che vengano collegate tra loro tipi diversi di rete. Questo è possibile
grazie a dei veri e propri "adattatori di dati" detti gateway. Un gateway quindi è una 
macchina fisica che fa sì che due reti vengano agganciate tra di loro.
Il termine adottato per 
descrivere l'interconnessione dipende dal livello del modello OSI in cui ha luogo la
connessioni.
-Il ripetitore (repeater) opera nel liveello fisico e si limita molto spesso a copiare
 i segnali elettrici (incluso il rumore) da un segmento della rete al successivo.
-Il bridge che spesso opera nel livello  di collegamento dati copiando i frame da una
 rete a quella sucessiva.
-Il router che opera a livello della rette e non solo trasferisce i pacchetti da una
 rete all'altra ma prende anche delle decisioni sul percorso che le informazioni
 dovrebbero seguire.
-Il gateway è un termine generico che deenota un'entità utilizzata per interconnettere
 due o piu' reti.In Internet spesso si associa il termine di "gateway" al router,ma
 spesso il termine "gateway" è usato per descrivere il software che esegue conversioni 
 specifiche in livelli al di sopra di quello di rete.Ad  esempio esistono software
 che provvedono alla conversione di vari formati di e-mail in maniera che il 
 trasferimento  possa avvenire in tutte le macchine.

                             
===FUNZIONE==========================PROTOCOLLO======================
7 Applicazione
6 Presentazione
5 Sessione          
4 Trasporto              ---->       Tcp/ip XNS SNA NetBIOS UUCP
3 Rete                   ---->       IP
2 Collegamento dati      ---->       Ethernet/token ring
1 Fisica                 ---->       Ethernet/token ring
=====================================================================


(9) Commutazione di pacchetto

Tra le varie reti si distinguono quelle a commutazione di circuito e a commutazione 
di pacchetto. La rete telefonica è a commutazione di circuito: quando si fa una chiamata la 
centralina "decide" un percorso dal telefono dell'utente che chiama al telefono 
dell'utente chiamato riservato esclusivamente a loro. Internet invece impiega delle tecniche a 
commutazione di pacchetto, e invece di tentare di stabilire una linea di comunicazione 
dedicata fra un computer ed un altro i computer condividono collegamenti comuni. Per
questo ruolo fondamentale nelle reti hanno i router.

(10) Router? No grazie!

Cos'è un router? I router sono macchine che si scambiano pacchetti e informazioni e
si occupano dell'instradamento degli stessi: in pratica decidono il prcorso da far loro 
seguire in modo che la consegna vada a buon fine. Ecco come potrebbe essere uno schema
del viaggio di un pacchetto di dati:

+------+             +-------+              +------+
|HOST A| ----------> |Router1| ---------->  |HOST B|
+------+             +-------+              +------+
     \                                       /
      \              +-------+              / 
       \<----------- |Router2| <-----------/
                     +-------+

Oppure ecco uno chema più complesso:


+------+             +-------+             +-------+             +------+
|HOST A| ----------> |Router1| ----------> |Router2| ----------> |HOST B|
+------+             +-------+             +-------+             +------+
   |                                                               /
+-------+             +-------+             +-------+             /
|Router6| <---------- |Router5| <---------- |Router4| <----------/
+-------+             +-------+             +-------+


In pratica il blocco di dati viene diviso in pacchetti e passa per i punti decisi dal
router che saranno i più scorrevoli e veloci, i meno intasati. Se per caso un host 
crasha o si forma un intasamento in un nodo della reteallora subentra una deviazione in 
modo da garantire ugualmente l'accesso ai vari servizi. I router per svolgere il loro
compito devono essere sontinuamente informati su flood intasamenti  crash o altre 
calamità che possono colpire internet o la LAN in questione. I router sono sempre in
contatto tra loro e si scambiano continuamente informazioni (ogni 30 secondi).


(11) Algoritmi di routing

Quando si devono prendere decisioni di routing si possono impiegare diversi tipi 
di algoritmi:

Routing statico: sceglie il percorso in base a delle predeterminate informazioni e
non considera il carico di lavoro del gateway.
Routing dinamico isolato: tiene in considerazione il carico della rete. Le sue
scelte si basano esclusivamente su informazioni locali.

   


routing statico: sceglie un percorso in base ad informazioni predeterminate e non 
                  considera il carico di lavoro del gateway.
> routing dinamico isolato : tiene conto del carico corrente sulla rete.Questo tipo di
                              routing basa le sue decisioni soltanto su informazioni locali.
> routing dinamico centralizzato :Tiene conto del carico corrente sulla rete.Qui invece
                                   c'è  un'autorità centrale  che utilizza tutte le 
                                   informazioni  ricevute per scegliere i percorsi.
> routing dinamico distribuito: Questo tipo di routing dinamico distribuito utilizza
                                 una mescolanza di informazioni globali e locali per
                                 prendere le decisioni d'instradamento.Per poter ottener
                                 questo tipo di informazioni  i gateway devono avere 
                                 qualche modo di scambiarsi queste informazioni.
                                 Internet adotta ad esempio il routing dinamico distribuito.

(12) Traceroute

Premessa: è impossibile conoscere in anticipo che percorso farà un pacchetto.
Il traceroute stabilisce il percorso verso una destinazione inviando pacchetti con valori 
di TTL (Time to live) variabili. Ogni instradatore lungo il percorso abbassa il TTL di 
un pacchetto di almeno un unità prima di portarlo a destinazione. Quando il TTL di un 
pacchetto arriva a 0, l'instradatore dovrebbe mandare indietro un messaggio al sistema 
di origine. In base ai messaggi di reply viene determinato il percorso del pacchetto. 
E' un tool avviabile dal prompt del dos. La sintassi è:
                                                                                                         
tracert [-d] [-h max_salti] [-j elenco host] [-w timeout] nome_destinazione 

Le opzioni possibili sono:

COMANDO         DESCRIZIONE                                                     
======================================================================================

  -d            Non risolve gli indirizzi in nome host.                         
  -h            Numero massimo di hops (salti) per ricercare la destinazione.   
  -j            Libera route di origine lungo l'elenco host.                    
  -w 		Intervallo di timeout in millisecondi per ogni risposta.        

=======================================================================================

L'output di un tracert sarà una cosa del genere:

racing route to [221.223.24.54]
over a maximum of 30 hops.
1       147ms   122ms   132ms your.isp [222.222.22.21]
2       122ms   143ms   123ms isp.firewall [222.222.22.20]
3       156ms   142MS   122ms aol.com [207.22.44.33]
4       *       *       *       Request timed out
5       101ms   102ms   133ms cisco.router [194.33.44.33]
6       233ms   143ms   102ms something.ip [111.11.11.11]
7       222ms   123ms   213ms netcom.com [122.11.21.21]
8       152ms   211ms   212ms blahblah.tts.net [121.21.21.33]
9       122ms   223ms   243ms altavista.34.com [121.22.32.43] 
10      101ms   122ms   132ms 221.223.24.54.altavista.34.com [221.223.24.54] 
Trace complete.

(Questo è un esempio inventato al momento, ogni riferimento alla realtà è puramente casuale...)

Ora vediamo le componenti dell'output in modo da capirci qualcosa:
    
 1  |                                                                                               
 2  |                              
 3  |                              
 4  |                             
 5  |--->Numero di TTL (hops)                                   
 6  |  
 7  |                             
 8  |                           
 9  |                            
 10 |                               

 147ms   122ms   132ms your.isp [222.222.22.21]                        |
 122ms   143ms   123ms isp.firewall [222.222.22.20]                    |
 156ms   142MS   122ms aol.com [207.22.44.33]                          |
 *       *       *       Request timed out                             |
 101ms   102ms   133ms cisco.router [194.33.44.33]                     |    Millisecondi (ms) di andata e
 233ms   143ms   102ms something.ip [111.11.11.11]                     |--->ritorno per raggiungere l'host
 222ms   123ms   213ms netcom.com [122.11.21.21]                       |    remoto (ultima colonna)
 152ms   211ms   212ms blahblah.tts.net [121.21.21.33]                 |
 122ms   223ms   243ms altavista.34.com [121.22.32.43]                 |
 101ms   122ms   132ms 221.223.24.54.altavista.34.com [221.223.24.54]  |

(Dove c'è un asterisco il tempo per il tentativo è scaduto.)

L'ultimo hops è il server da noi analizzato (tin.it), mentre gli hops intermedi sono vari 
routers che instradano il pacchetto. Attraverso un traceroute potete anche arrivare all'
indirizzo di un router (vedi quinta riga dell'output).

NOTA: Con Unix il comando non è tracert ma traceroute


(13) Fondamenti dell'architettura di rete

Quando ci troviamo a dover creare una rete dobbiamo scegliere tra hub, switch e lan wireless.
Vediamo ora in questa parte le tecnologie che è meglio scegliere in base alle nostre esigenze.
La scelta della tecnologia poi dipende da molti fattori:
Quanto a lungo si rimmarrà nello stesso edificio?
Quanto dovrà essere grande la rete?
Ci sarà bisogno di fare degli spostamenti di macchinari?
La rete necessita di un livello di sicurezza elevato?
Qual'è la velocità della connessione a internet dell'azienda?
Sono previste installazioni di strumenti multimediali?

Qui ci limiteremo ad analizzare in modo generale i tipi di tecnologia.

HUB: sono dei dispositivi di connessione che permettono la comunicazione di due computer in una
tipologia di rete. POssiamo dire che un hub condivide la comunicazione in quanto ogni macchina
connessa all'interno della rete può vedere qualunque dato appartenga ad un altra macchina sempre
facente parte della medesima rete. Gli hub a seconda della grandezza supportano da da 2 a 8 quelli
più piccoli fino ad arrivare a centinaia di connessioni con quelli più grandi. Nota importante:
gli hub permettono di trasferire i dati a 10Mbps ma se due computer tentano di trasferire alla
velocità di 10Mbps ciascuno non sarà possibile ittenere questp risultato e la velocità calerà.

SWITCH: hanno il vantaggio di permettere la segmentazione del traffico: un computer non può 
accedere ai dati che vengono trasferiti tra altri due. La sicurezza aumenta rispetto alle reti
hub. Ogni switch di base offre 24 porte e ogni porta permette una connessione che può variare da 
10 a 100 Mbps.

LAN WIRELESS: questo nuovo tipo di tecnologia permette di collegare i computer attraverso un antenna
anxichè attraverso cavi utilizzando degli impulsi radio. Il vantaggio quindi è la capacità di 
spostamento delle macchine: infatti, non essendoci cavi le antenne devono rimanere fisse ma i
computer si possono spostare con facilità (devono rimanere comunque a una distanza abbastanza
ravvicinata con l'antenna).




Beh siamo arrivati alla fine. Spero di esservi stato di aiuto e di aver oddisfatto, almeno
in parte la vostra curiosità. Probabilmente scriverò una seconda parte che porti avanti questi 
concetti ulteriormente. Beh ci vediamo al rpossimo txt!
 _    _   ____   _____    
| \  | | | ___| |_   _| 
|  \ | | | |_     | |   
| |\\| | |  _|_   | |   
|_| \__| |_____|  |_|    
-------W O R K-------

Beh? Ho detto che è finito! Cazzo leggi ancora? =)



 

    Source: geocities.com/it/songbook2003

               ( geocities.com/it)