Linux Networking-concepts HOWTO Rusty Russell v1.0.1 Lunedì 1 Maggio 16:19:12 CST 2000 Questo documento descrive cos'è una rete (es. Internet), e i concetti base del suo funzionamento. Traduzione a cura di Masetti Marco marcomas@libero.it ______________________________________________________________________ Indice Generale 1. Introduzione 2. Che cos'è una rete di computer ? 3. Che cos'è `Internet'? 3.1 Come funziona Internet ? 4. Questa cosa dell'IP 4.1 Gruppi di indirizzi IP: maschere di rete 5. I nomi della macchine e gli indirizzi IP 6. Servizi differenti: Email, Web, FTP, Name Serving 7. Interfacce dialup: PPP 8. Come è fatto un pacchetto? 9. Sommario 10. Ringraziamenti 11. Indice ______________________________________________________________________ 1. Introduzione Benvenuto, caro lettore. Ho scritto in passato un certo numero di HOWTO sul networking e ho notato che in ciascuno di essi c'è una gran quantità di gergo. Avevo tre possibilità: due di queste erano ignorare il problema e spiegare i termini dappertutto. Entrambe però non erano attraenti. Il punto con il software free è che si dovrebbe avere la libertà di esplorare e giocare con il software del sistema che si usa. Credo che permettere alle persone di provare questa libertà sia uno scopo nobile, non solo consente di sentire il piacere di sperimentare (come modificare il motore di un'auto), ma anche di condividere le proprie esperienze con milioni di persone, attraverso Internet e appunto il software free. Bisogna in ogni caso cominciare da qualche parte, ed è per questo che siamo qui. 2. Che cos'è una rete di computer ? Una rete di computer consiste in una serie di elementi che permettono a dei nodi di dialogare tra loro (per `nodi' intendo computer, stampanti, distributori Coca-Cola, e qualsiasi altra cosa). Non ha molta importanza come sono connessi: potrebbero usare cavi in fibra ottica come anche piccioni viaggiatori. Ovviamente alcune scelte sono migliori di altre (specialmente se hai un gatto). Di norma se connetti solo due computer non hai propriamente una rete è necessario che ci siano almeno tre o più computer. Questo assomiglia abbastanza al concetto di `gruppo': due persone formano una coppia, ma tre sono già un `gruppo'. Le reti sono spesso collegate assieme per formare reti sempre più grandi, quindi ogni piccola rete, comunemente chiamata sottorete, può diventare parte di una rete più grande. La connessione tra due computer è spesso chiamata collegamento. Se ci sono dei cavi che escono dalla tua macchina diretti verso altre macchine, questo è un esempio di collegamento in rete. Ci sono quattro cose a cui dobbiamo prestare attenzione quando parliamo di una rete di computer: Dimensione Se connetti i tuoi quattro computer di casa, otterrai quella che è chiamata comunemente LAN (Local Area Network). Qualsiasi rete organizzata entro brevi distanze è una LAN, indipendentemente dal numero di macchine e dal modo con cui è stata realizzata. All'altro capo troviamo la WAN (Wide Area Network). Se hai un computer a Lahore, Pakistan, uno a Birmingham, UK, e uno a Santiago, Cile, e sei riuscito a connetterli, allora questa è una WAN. Topologia: struttura Disegniamo la mappa di una rete, le linee sono i ``collegamenti'', e ogni nodo è rappresentato con un punto. Può darsi che ogni linea conduca ad un nodo centrale formando così una grossa stella, in questo caso tutti dialogano attraverso questo punto (`topologia a stella'): o o o \_ | _/ \|/ o-----o-----o _/|\_ / | \ o o o Oppure tutti potrebbero dialogare in "linea", così: o------o------o-------o--------o | | | | | o | | o | o O ancora ci potrebbero essere tre sottoreti connesse attraverso un solo nodo: o o | o--o--o | | | o--o--o--o--o o \ | o------o / | o--o--o--o--o o | | | o | o--o o Vedrai tante topologie simili a queste nel mondo reale, e parecchie saranno anche molto più complicate. Natura fisica: di che cosa è fatta ? La seconda cosa da tenere presente è con che cosa si realizza la rete. La più economica è la `sneakernet', dove persone malvestite trasportano floppy da una macchina alle altre. La Sneakernet è quasi sempre una ``LAN''. Un floppy costa meno di 1 dollaro, e un paio di solidi sneaker si possono ottenere per circa 20 dollari. Il più comune apparecchio di rete "casalingo" usato per connettersi alle reti più grandi è il `modem' (ossia MODulatore/DEModulatore) che permuta una normale connessione telefonica in un collegamento in rete. In particolare trasforma in segnali ciò che proviene dal computer, rimane all'ascolto delle risposte provenienti dall'altra parte, e le traduce nuovamente per renderle comprensibili al computer. Come puoi immaginare non è una soluzione molto efficiente, e infatti le linee telefoniche non sono state create a questo scopo, ma sono comunque utilizzate in quanto diffuse ed economiche. I modem si vendono per meno di 50 dollari, e le linee telefoniche in genere costano un paio di centinaia di dollari l'anno. Il metodo più comune per connettere delle macchine, e creare una LAN, è quello di utilizzare le schede Ethernet. Esistono diverse tipi di Ethernet (elencate dalle più vecchie alle più recenti): Thinwire/Coax/10base2, UTP (Unshielded Twisted Pair - doppino non schermato)/10baseT e UTP/100baseT. Sono disponibili anche le più recenti schede ethernet gigabit (il nome 1000baseT cominciava ad essere frivolo). Il cavo 10base2 è normalmente coassiale e nero, chiunque si può connettere alla linea, dotata di uno speciale terminatore ai due estremi, attraverso dei connettori a T twist-on. UTP è invece in genere un cavo blu, con connettori "click" come quello dei normali telefoni: ogni cavo connette un nodo ad un `hub' centrale. Il cavo costa un paio di dollari a metro, mentre le schede 10baseT/10base2 (molte schede hanno innesti per entrambe) costano circa 30 dollari. Le schede 100baseT, che sono `compatibili' con le 10baseT, sono dieci volte più veloci, e costano circa 100 dollari. All'altro capo dello spettro troviamo la fibra, un sottile e continuo filamento di vetro avvolto da una copertura protettiva, usata per i collegamenti tra continenti. Le fibre costano migliaia di dollari. In genere definiremo ogni collegamento ad un nodo `interfaccia di rete', o più semplicemente interfaccia. Linux assegna dei nomi quale `eth0' per la prima interfaccia ethernet, e `fddi0' per la prima interfaccia che riguarda la fibra. Il comando `/sbin/ifconfig' ne mostra un elenco. Protocollo: cosa sta dicendo ? L'ultima cosa importante da conoscere è quale linguaggio è utilizzato dalle due parti connesse. Quando due ``modem'' vogliono dialogare su una linea telefonica, devono mettersi d'accordo sui differenti significati dei segnali, altrimenti non si comprenderanno. Questa convenzione è detta `protocollo'. Come vengono scoperti nuovi metodi di codifica dei dati provenienti dal computer in segnali sempre minori, nuovi protocolli sono inventati. Per il modem ne esistono almeno una dozzina tutti differenti, e la maggior parte di essi ne provano un certo numero fino a trovare quello che l'altro modem comprende. Un altro esempio è la ``100baseT'' citata prima, usa lo stesso tipo di ``collegamento'' fisico (``UTP'') usato dalla ``10baseT'', ma è 10 volte più veloce. Questi due protocolli sono noti come protocolli di `livello link' e riguardano la gestione dei collegamenti di rete individuali o di `one hop' (salto singolo). Il termine `protocollo' si riferisce anche ad altre convenzioni come vedremo successivamente. 3. Che cos'è `Internet'? Internet è una ``WAN'' che si estende in tutto il globo ed è la più grande rete di computer esistente. Con `internetworking' ci si riferisce alla connessione di reti separate per costruirne una più grande, quindi `Internet' è la connessione di un vasto numero di sottoreti. Ora diamo un'occhiata alla lista precedente e chiediamoci: quali sono la dimensione, i dettagli fisici e i protocolli di Internet ? La dimensione come visto prima è globale. I dettagli fisici sono vari, in quanto le sottoreti sono connesse in genere in modo diverso e hanno differente topologia e natura fisica. Tentativi di creare una mappa utile sono sempre falliti miseramente. I protocolli usati da ciascun collegamento sono spesso differenti, tutti i ``protocolli di livello link'' visti finora sono usati, oltre a molti altri ancora. 3.1. Come funziona Internet ? La domanda che allora ci si pone è come possa ogni nodo di Internet dialogare con gli altri, se ciascuno usa un differente protocollo di livello link. La risposta è piuttosto semplice, è necessario un ulteriore protocollo che controlli come viaggiano i dati attraverso la rete. Il protocollo di livello link descrive come arrivare da un nodo all'altro se sono connessi direttamente, il protocollo di rete ci dice invece come arrivare da una rete ad un'altra, passando se necessario attraverso altri collegamenti. Il protocollo di rete di Internet è l'Internet Protocol (versione 4) o `IP' e non è l'unico protocollo esistente (AppleTalk della Apple, IPX della Novell, DECNet della Digital, NetBEUI della Microsoft sono altri) ma è in assoluto il più utilizzato. Esiste anche una nuova versione di IP chiamata IPv6, ma non è ancora così comune. Perciò per spedire un messaggio da un capo all'altro del globo, il tuo computer facendo uso del protocollo di rete, lo invierà prima di tutto al tuo modem, che utilizzerà un protocollo di livello link per farlo arrivare al modem collegato in dialup, il quale generalmente farà parte di un terminal server (sostanzialmente un gruppo di modem). A sua volta questo lo spedirà ad un nodo presente nella rete del tuo ISP, il quale lo rispedirà ad un nodo più grande, che lo rispedirà ad un altro nodo ... e così via. Un nodo che collega due o più reti è detto `router', ed avrà una ``interfaccia'' per ogni rete. Definiremo il successivo insieme di protocolli `protocol stack' (pila di protocolli), in genere è rappresentata in questo modo: [ Applicazione: Visualizza porno ] [ Applicazione: Invia porno ] | ^ v | [ TCP: Gestisce la ritrasmissione ] [ TCP: Gestisce la ritrasmissione ] | ^ v | [ IP: Gestisce l'instradamento ] [ IP: Gestisce l'instradamento] | ^ v | [ Link: Gestisce il singolo salto] [ Link: Gestisce il singolo salto] | | +------------------------------------------+ Nel diagramma possiamo vedere come Netscape (l'applicazione in alto a sinistra) recupera una pagina web dal server web (l'applicazione in alto a destra). A questo scopo usa il `Transmission Control Protocol' o `TCP': oltre il 90% del traffico internet, tra cui Web ed Email, oggi usa TCP. Netscape invia una richiesta di connessione TCP al server web remoto, ciò è gestito dal livello TCP, che poi la passa al livello IP, il quale cerca di capire verso quale direzione deve essere inviata, quindi la passa al livello link, che la trasmetterà all'altro estremo del collegamento. All'altro estremo il livello link la passerà al livello rete, che controllerà se è destinata a questo host (se no, potrebbe passarla giù di nuovo verso il livello link, per inviarla verso un nodo successivo), quindi la passerà al livello TCP, che a sua volta la consegnerà al server. Perciò avremo le seguenti fasi: 1. L'applicazione (Netscape o il server web all'altro estremo) decide con chi vuole dialogare e che cosa vuole inviare. 2. Il livello TCP invia dei pacchetti speciali per stabilire una connessione con l'altro estremo e poi include i dati in un pacchetto TCP: pacchetto è giusto un termine per indicare una parte dei dati che poi viaggeranno attraverso la rete. Il livello TCP consegna poi questo pacchetto al livello IP: prima di passarlo al livello IP lo conserverà fino a quando il livello TCP dell'altro estremo non risponderà segnalando avvenuta ricezione. Questa è detta ritrasmissione, e ha un insieme di regole complesse che controllano quando ritrasmettere, quanto aspettare, ecc. Assegna inoltre a ciascun pacchetto dei numeri, che consentono all'altro estremo di riordinarli nel modo corretto. 3. Il livello IP guarda dove è destinato il pacchetto, e cerca di capire verso quale nodo deve inviarlo. Questa semplice azione è detta instradamento (`routing'), e può essere molto semplice (se hai solo un modem e nessun'altra interfaccia di rete, tutti i pacchetti dovrebbero uscire da questa interfaccia) oppure estremamente complessa (se hai 15 reti connesse direttamente con te). 4. Questa cosa dell'IP Il ruolo del livello IP è di capire come instradare i pacchetti verso la loro destinazione finale. Per rendere possibile ciò, ogni interfaccia nella rete ha bisogno di un indirizzo IP. Un indirizzo IP consiste di quattro numeri separati da punti, es. `167.216.245.249'. Ogni numero è compreso tra 0 e 255. Le interfacce della stessa rete tendono ad avere indirizzi IP consecutivi. Per esempio `167.216.245.250' è la macchina immediatamente successiva a destra della macchina con indirizzo IP `167.216.245.249'. Ricorda che il router è un nodo con più interfacce, una per ogni rete, quindi avrà un indirizzo IP per ogni interfaccia. Il livello IP del kernel di Linux mantiene una tabella di diversi instradamenti che descrivono come arrivare ai vari gruppi di indirizzi IP. Il più semplice è detto `default route' (instradamento di default): se il livello di rete non riesce a capire come instradare un pacchetto allora è qui che lo invierà. Puoi vedere un elenco degli instradamenti usando il comando `/sbin/route'. Gli instradamenti possono indirizzare verso un collegamento, o verso un nodo in particolare connesso ad un'altra rete. Ad esempio, quando ti colleghi al tuo ISP, il tuo default route (instradamento di default) punta all'altro modem collegato, perché è qui che si trova il mondo intero. Rusty ISP ~~~~~~~ Modem Modem { } o------------------o { La RETE } { } ~~~~~~~ Se possiedi una macchina nella tua rete connessa permanentemente con il mondo esterno allora la situazione è un po' più complicata. Nel diagramma seguente la mia macchina può dialogare direttamente con le macchine di Tridge e di Paul, e anche con il firewall, ma ha bisogno di sapere che i pacchetti destinati al resto del mondo devono passare attraverso il firewall, e da lì poi proseguire. Questo significa che ho bisogno di due instradamenti: uno dirà `se la macchina a cui sono destinati è nella mia rete, allora inviali pure lì direttamente' e quindi un instradamento di default che dirà `altrimenti, inviali al firewall'. o Macchine | di Tridge ~~~~~~~ Macchine | { } di Rusty o--------+-----------------o--{ RETE } | Firewall { } | ~~~~~~~ o Macchine di Paul 4.1. Gruppi di indirizzi IP: maschere di rete C'è ancora un ultimo dettaglio, esiste una notazione standard per i gruppi di indirizzi IP, chiamati anche indirizzi di rete. Così come un numero di telefono può essere suddiviso in prefisso e numero vero e proprio anche un indirizzo IP può essere suddiviso in prefisso di rete e il resto. Questo è il motivo per cui alcune persone parlano di `rete 1.2.3', con cui intendono in realtà tutti i 256 indirizzi da 1.2.3.0 a 1.2.3.255. Oppure se la rete è abbastanza grande, potrebbero parlare di `rete 1.2' con cui si intendono tutti gli indirizzi da 1.2.0.0 a 1.2.255.255. Normalmente non useremo `1.2.0.0 - 1.2.255.255', ma abbrevieremo usando `1.2.0.0/16'. Il `/16' presente nella notazione (nota come maschera di rete) richiede una breve spiegazione. Ogni numero compreso tra i punti in un indirizzo IP consiste attualmente di 8 cifre binarie (da 00000000 a 11111111), che scriveremo in forma decimale, più chiara e leggibile. Il `/16' viene usato per indicare che le prime 16 cifre binarie rappresentano l'indirizzo di rete, ossia la parte `1.2.' è la rete (ricorda che ogni numero rappresenta 8 cifre binarie). Allora questo significa che qualsiasi indirizzo IP che comincia per `1.2.' è parte della rete, quindi `1.2.3.4' e `1.2.3.50' sono parte della rete, mentre `1.3.1.1' no. Per facilitarci la vita, useremo indirizzi di reti terminanti con `/8', `/16' e `/24'. Per esempio, `10.0.0.0/8' è una grande rete contenente qualsiasi indirizzo da 10.0.0.0 a 10.255.255.255 (oltre 24 milioni di indirizzi!). 10.0.0.0/16 è più piccola, contiene infatti gli indirizzi da 10.0.0.0 a 10.0.255.255. 10.0.0.0/24 è ancora più piccola, contiene indirizzi da 10.0.0.0 a 10.0.0.255. Per fare ancora un po' di confusione, c'è anche un altro modo di scrivere le maschere di rete, possiamo infatti scriverle come gli indirizzi IP: 10.0.0.0/255.0.0.0 Finalmente vale la pena notare che l'indirizzo IP "maggiore" in ogni rete è riservato come `indirizzo di broadcast' ossia usato per inviare un messaggio contemporaneamente a tutte le macchine della rete. Segue una tabella delle maschere di rete: Forma Forma Massimo Commenti Breve Completa # Macchine /8 /255.0.0.0 16,777,215 Chiamata `classe A' /16 /255.255.0.0 65,535 Chiamata `classe B' /17 /255.255.128.0 32,767 /18 /255.255.192.0 16,383 /19 /255.255.224.0 8,191 /20 /255.255.240.0 4,095 /21 /255.255.248.0 2,047 /22 /255.255.252.0 1,023 /23 /255.255.254.0 511 /24 /255.255.255.0 255 Chiamata `classe C' /25 /255.255.255.128 127 /26 /255.255.255.192 63 /27 /255.255.255.224 31 /28 /255.255.255.240 15 /29 /255.255.255.248 7 /30 /255.255.255.252 3 5. I nomi della macchine e gli indirizzi IP Ogni interfaccia di ogni nodo ha un indirizzo IP. Ci si può subito rendere conto che gli umani non sono granché portati a ricordare i numeri, perciò è stato deciso (come per i numeri telefonici) di creare un elenco. La cosa migliore in questi casi è lasciare al computer il compito di cercare automaticamente i nomi. A questo scopo esistono i Domain Name System (DNS). Ci sono dei nodi con un indirizzo IP ben noto ai quali i programmi possono richiedere di cercare un nome e di restituire l'indirizzo IP corrispondente. Quasi tutti i programmi che utilizzi sono capaci di questo tipo di operazione, ed è questo il motivo per cui in Netscape si inserisce `www.linuxcare.com' al posto di `167.216.245.249'. Naturalmente devi conoscere l'indirizzo IP di almeno uno di questi `name server', in genere questi indirizzi sono collocati nel file `/etc/resolv.conf'. Poiché le richieste e le risposte ai DNS sono abbastanza contenute (1 pacchetto ciascuno), il protocollo TCP non è generalmente usato: esso provvede alla ritrasmissione automatica, al riordinamento, all'affidabilità, al costo però di un invio di pacchetti extra attraverso la rete. Al suo posto si usa invece il più semplice `User Datagram Protocol', il quale non offre nessuna delle caratteristiche extra del TCP, che in questo caso comunque non servono. 6. Servizi differenti: Email, Web, FTP, Name Serving Nel precedente esempio, abbiamo visto come Netscape invia le richieste TCP a dei web server attivi in altri nodi. Immagina ora che il nodo con il web server stia eseguendo anche un Email server, un FTP server e un name server, come fa a sapere a quale server è diretta la connessione TCP ? Questo è il motivo per cui TCP e UDP hanno il concetto di porte. Ogni pacchetto contiene un campo per la `porta destinazione' che serve a indicare a quale servizio è diretto il pacchetto. Per esempio, alla porta TCP 25 corrisponde il mail server, alla porta TCP 80 corrisponde il web server (sebbene qualche volta si possa trovare il web server anche su porte differenti). Una lista delle porte si può trovare nel file `/etc/services'. Inoltre se due finestre di Netscape stanno entrambe accedendo allo stesso sito web ma a pagine differenti, come fa la Linux box che esegue Netscape a indirizzare correttamente i pacchetti di ritorno provenienti dal web server ? E' a questo punto che interviene la `porta sorgente': ogni nuova connessione TCP si appropria sempre di una porta sorgente diversa, in questo modo possono comunicare indipendentemente, anche se devono utilizzare lo stesso indirizzo e porta di destinazione. Di solito la prima porta sorgente assegnata sarà la 1024, poi saranno assegnate le successive. 7. Interfacce dialup: PPP Quando cominci una connessione con un ISP tramite il modem, il kernel non parte subito ad inviare pacchetti IP. Esiste un protocollo detto `protocollo punto-a-punto' o `PPP' che deve essere utilizzato inizialmente per negoziare la connessione con l'altra parte collegata, solo dopo i pacchetti potranno essere inviati. Questa fase è necessaria per permettere all'ISP di identificare chi si collega: nella tua Linux box, un programma chiamato `PPP daemon' si occuperà di gestire la negoziazione. Ci sono molti utenti nel mondo che si collegano in dialup senza avere un indirizzo IP proprio, molti ISP provvederanno a fornire a ciascuno di essi un proprio indirizzo temporaneamente (il PPP daemon si occuperà della negoziazione). In questo caso si parla di `indirizzo IP dinamico', l'opposto è detto `indirizzo IP statico' ed è il caso in cui possiedi un tuo indirizzo, assegnato in modo permanente. In genere gli indirizzi dinamici sono assegnati dai modem, la volta successiva che ti collegherai in dial up, probabilmente avrai a che fare con un modem differente del pool, e quindi ti sarà assegnato un indirizzo IP diverso. 8. Come è fatto un pacchetto? Per i più curiosi, (e per le curiosità eccezionali) segue qui una descrizione di come al momento si presentano i pacchetti. Ci sono molti tool che guardano quali pacchetti entrano ed escono dalla Linux box, il più noto è `tcpdump' (che oggi comprende molto più del solo TCP). Questi programmi sono noti come `packet sniffer'. La parte iniziale di ciascun pacchetto dice dove il pacchetto è diretto, da dove proviene, che tipo è, e altri dettagli amministrativi. Questa parte è detta intestazione del pacchetto (`packet header'). Il resto del pacchetto, che contiene i dati da trasmettere, è nota come corpo del pacchetto (`packet body'). Ogni pacchetto IP comincia con un'intestazione IP lunga almeno 20 byte. Ecco come appare (questo diagramma è stato preso sfacciatamente da RFC 790): +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ I campi più importanti sono Protocol (protocollo), che indica se questo è un pacchetto TCP (numero 6), un pacchetto UDP (numero 17) o qualcos'altro, il Source Address (indirizzo IP sorgente), e il Destination Address (indirizzo IP destinazione). Se i campi dei protocolli assicurano che questo è un pacchetto TCP, allora questa intestazione sarà seguita immediatamente da un'intestazione TCP: l'intestazione TCP ha dimensione di almeno 20 byte. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port | Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acknowledgment Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | |U|A|P|R|S|F| | | Offset| Reserved |R|C|S|S|Y|I| Window | | | |G|K|H|T|N|N| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | Urgent Pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ I campi più importanti qui sono la Source Port (porta sorgente), e la Destination Port (porta destinazione), che dicono verso quale servizio sono destinati i pacchetti (o provengono, nel caso di pacchetti di risposta). I campi Sequence Number e Acknowledgment Number sono usati per mantenere i pacchetti in ordine, e per segnalare all'altra parte quali pacchetti sono stati ricevuti. I flag ACK, SYN, RST, FIN (presenti più in basso) sono dei semplici bit usati per negoziare l'inizio (SYN) e la fine (RST o FIN) delle connessioni. Dopo questa intestazione segue il messaggio che l'applicazione vuole inviare (corpo del pacchetto). Un pacchetto normale si aggira sui 1500 byte, ciò significa che la maggior parte dello spazio che i dati possono occupare è di 1460 byte (20 byte sono riservati all'intestazione IP e 20 all'intestazione TCP): oltre il 97%. 9. Sommario Le reti moderne usano pacchetti IP per comunicare, e la maggior parte di questi pacchetti incapsulano il TCP. Nodi speciali chiamati `router' connettono tutte le piccole reti assieme in reti più grandi, e fanno proseguire questi pacchetti verso la loro destinazione. La maggior parte delle macchine sono collegate ad una sola rete (es. hanno una sola interfaccia di rete), e non sono quindi dei `router'. Ogni interfaccia ha un unico indirizzo IP, tipo `1.2.3.4', e le interfacce nella stessa rete hanno indirizzi IP consecutivi, con stesso inizio, area, prefisso. Questi indirizzi di rete sono simili agli indirizzi IP, con in più una `/' per segnalare quanti di essi sono un prefisso, ad esempio `1.2.0.0/16' indica che i primi due numeri sono l'indirizzo di rete: ogni numero rappresenta 8 bit. Le macchine ricevono i nomi dal Domain Name Service: i programmi richiedono ai name server di comunicare, dato un nome es. `www.linuxcare.com', l'indirizzo IP corrispondente. Questo indirizzo IP è poi usato nei pacchetti come indirizzo IP di destinazione per dialogare con un altro nodo. Rusty è davvero pessimo nello scrivere la documentazione, specialmente per chi è alle prime armi. Enjoy! Rusty. 10. Ringraziamenti Ringrazio Alison, per essersi sorbita l'originale e terribile bozza, e per avermi detto quanto fosse squallida, nella maniera più gentile possibile. 11. Indice · ``100baseT'' · ``10base2'' · ``10baseT'' · ``Indirizzo broadcast'' · ``Coax, cavo coassiale'' · ``Reti di computer'' · ``Instradamento di default'' · ``Porta destinazione'' · ``DNS'' · ``Indirizzo IP dinamico'' · ``Ethernet'' · ``Fibra'' · ``Gigabit Ethernet'' · ``Salto'' · ``Hub'' · ``Internet'' · ``IP, Internet Protocol'' · ``Indirizzo IP'' · ``Intestazione IP'' · ``IPv4, IP versione 4'' · ``IPv6, IP versione 6'' · ``LAN, Local Area Network'' · ``Protocollo livello link'' · ``Modem'' · ``Name server'' · ``Maschera di rete'' · ``Indirizzo di rete, maschera di rete'' · ``Interfaccia di rete, interfaccia'' · ``Collegamento in rete'' · ``Protocollo di rete, protocollo'' · ``Nodo'' · ``Corpo del pacchetto'' · ``Intestazione del pacchetto'' · ``Packet sniffer'' · ``Pacchetto'' · ``Porta, porta TCP, porta UDP'' · ``PPP, Point-to-Point Protocol'' · ``PPP daemon'' · ``Pila di protocolli'' · ``Ritrasmissione'' · ``Route'' · ``Router'' · ``Instradamento'' · ``Sneakernet'' · ``Porta sorgente'' · ``Topologia a stella'' · ``Indirizzo IP statico'' · ``Sottorete'' · ``TCP, Transmission Control Protocol'' · ``Intestazione TCP'' · ``Terminatore'' · ``Topologia'' · ``UDP, User Datagram Protocol'' · ``UTP, Unshielded Twisted Pair'' · ``WAN, Wide Area Network''