Uni.Sistemi History
Hide minor edits - Show changes to markup
Ciao sono Gennaro, anche io ho copiato i vostri appunti prendendo 20 punti nei primi due esercizi! Grazie!\\
.........................................\\
.........................................
.........................................
TUTTI QUI EH ORA CHE MANCAN DUE GIORNI ALL'ESAME????? Benritrovati - infami :D - su DoppioClic
Per ringraziamenti, firmare negli spazi sottostanti
.........................................
.........................................
.........................................
.........................................
.........................................
.........................................
- data sconosciuta, ma vecchio - Esercizi svolti: 3/6 (ma però i 3 esercizi mancanti parlano di argomenti mai fatti)
- data sconosciuta, ma vecchio - Esercizi svolti: 3/6 (ma i 3 esercizi mancanti parlano di argomenti mai fatti)
- http://security.polito.it/~lioy/01fqt/rpc_6x.pdf
Porte note
Lista porte note da 0 a 1024 (in realtà arrivano fino a 995, le restanti non sono state assegnate).
- data sconosciuta, ma vecchio - Esercizi svolti: 3/6 (ma però i 3 esercizi mancanti parlano di argomenti mai fatti)
- data sconosciuta, ma vecchio - Esercizi svolti: 3/6 (ma però i 3 esercizi mancanti parlano di argomenti mai fatti)
- data sconosciuta, ma vecchio - Esercizi svolti: 3/6 (ma però i 3 esercizi mancanti parlano di argomenti mai fatti)
- 20/04/2006 - Esercizi svolti: 4/5 (cmq è assodato che quello sul RIP è errore da parte loro)
- 20/04/2006 - Esercizi svolti: 5/5 (cmq è assodato che quello sul RIP è errore da parte loro)
- 12/05/2007 - Esercizi svolti: 3/4
- 12/05/2007 - Esercizi svolti: 4/4
FTP:
- http://www.pluto.it/files/ildp/HOWTO/FTP/FTP-3.html
Benritrovati - infami - su DoppioClic :D
Benritrovati - infami :D - su DoppioClic
- 11/11/2005 - Esercizi svolti: 4/4(manca una risposta)
- 11/11/2005 - Esercizi svolti: 4/4
- 20/04/2006 - Esercizi svolti: 3/5
- 20/04/2006 - Esercizi svolti: 4/5 (cmq è assodato che quello sul RIP è errore da parte loro)
WARNING
Questo avviso rimarrà fino a STASERA, il tempo che tutti possano andare su questa pagina, copiare tutto, e mandare a damiani e socia.
TUTTI QUI EH ORA CHE MANCAN DUE GIORNI ALL'ESAME?????] Benritrovati - infami - su DoppioClic :D
TUTTI QUI EH ORA CHE MANCAN DUE GIORNI ALL'ESAME????? Benritrovati - infami - su DoppioClic :D
TUTTI QUI EH ORA CHE MANCAN DUE GIORNI ALL'ESAME?????]
TUTTI QUI EH ORA CHE MANCAN DUE GIORNI ALL'ESAME?????] Benritrovati - infami - su DoppioClic :D
TUTTI QUI EH ORA CHE MANCAN DUE GIORNI ALL'ESAME?????]
Questo è il link del vecchio sito di damiani http://olaf.crema.unimi.it/crema.htm ci sono altri compitini!!!
Questo è il link del vecchio sito di damiani http://olaf.crema.unimi.it/crema.htm ci sono altri compitini!!!
Questo è il link del vecchio sito di damiani http://olaf.crema.unimi.it/crema.htm ci sono altri compitini!!!
- Tema d'esame preparato da Ceravolo (FAKE!!!!) - Esercizi svolti: 4/4 (mancano due risposte)
- Tema d'esame preparato da Ceravolo - Esercizi svolti: 4/4 (mancano due risposte)
- Tema d'esame preparato da Ceravolo (FAKE!!!!) - Esercizi svolti: 4/4 (mancano due risposte)
- 12/05/2007 - Esercizi svolti: 2/4
- 12/05/2007 - Esercizi svolti: 3/4
- 11/11/2005 - Esercizi svolti: 4/4
- 11/11/2005 - Esercizi svolti: 4/4(manca una risposta)
- http://www.cs.unibo.it/~ghini/didattica/reti_lpr/TAC007.pdf
DNS
- http://cctld.it/ARCHIVI/VANNOZZI/DOCUMENTI/presentazione-dns.pdf
Funzione fork():
I codici di stato sono i codici a tre cifre che compaiono nella status line degli HTTP response, ma anche nei messaggi restituiti dal terminale nelle comunicazioni SMTP ed FTP. Potevamo non elencarli tutti in una pagina tutta per loro?
I codici di stato sono i codici a tre cifre che compaiono nella status line degli HTTP response, ma anche nei messaggi restituiti dal terminale nelle comunicazioni SMTP ed FTP.
Potevamo non elencarli tutti in una pagina tutta per loro?
Questo avviso rimarrà fino a domani sera, il tempo che tutti possano andare su questa pagina, copiare tutto, e mandare a damiani e socia.
Questo avviso rimarrà fino a STASERA, il tempo che tutti possano andare su questa pagina, copiare tutto, e mandare a damiani e socia.
Un'integrazione sulle varie funzioni della socket library la potete trovare su questa pagina.
Se avete bisogno di delucidazioni o integrazioni sulle varie connect, accept, bind e affini, potrete trovare tutto nella pagina della Socket Library.
Qualche Link...
HTTP headers
In classe abbiamo visto solo tre o quattro header dei messaggi HTTP, ma nei temi d'esame il buon Damiani va a pescare quelli più assurdi. Direttamente dal protocollo W3, ecco tutti (credo) gli HTTP Headers.
Codici di Stato
I codici di stato sono i codici a tre cifre che compaiono nella status line degli HTTP response, ma anche nei messaggi restituiti dal terminale nelle comunicazioni SMTP ed FTP. Potevamo non elencarli tutti in una pagina tutta per loro?
Qualche link
- 9/9/2005 - Esercizi svolti: 5/5
- 11/11/2005 - Esercizi svolti: 4/4
- 9/9/2005 - Esercizi svolti: 5/5
- 11/11/2005 - Esercizi svolti: 4/4
- 20/06/2006 - Esercizi svolti: 4/4
- 20/06/2006 - Esercizi svolti: 4/4
- 9/9/2005 - Esercizi svolti: 4/5 (ma del terzo manca la seconda parte)
- 11/11/2005 - Esercizi svolti: 4/4
- 9/9/2005 - Esercizi svolti: 5/5
- 11/11/2005 - Esercizi svolti: 4/4
WARNING
Questo avviso rimarrà fino a domani sera, il tempo che tutti possano andare su questa pagina, copiare tutto, e mandare a damiani e socia.
Un'integrazione sulle varie funzioni della socket library che abbiamo visto in classe la potete trovare su questa pagina.
Un'integrazione sulle varie funzioni della socket library la potete trovare su questa pagina.
- GaPiL di Simone Piccardi
- http://www.valtellinux.it/prj/rete/rete.html
- 11/11/2005 - Esercizi svolti: 2/4
- 11/11/2005 - Esercizi svolti: 4/4
Socket:
- http://beej.us/guide/bgnet/
RPC:
- RFC di HTTP: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
Http:
- http://hell.org.ua/Docs/oreilly/webprog/webnut/ch17_01.htm
- http://www.di.univaq.it/~vincenzo.fazio/doc/Lx-RPC-2007.pdf
- http://www.lowtek.com/sockets/
- http://www.mi.infn.it/~cmp/CorsoReti/ : Bello, c'è su un sacco di roba, compresi esempi in JAVA di server Web
- http://www.mi.infn.it/~cmp/CorsoReti/
- http://www.mi.infn.it/~cmp/CorsoReti/ : Bello, c'è su un sacco di roba, compresi esempi in JAVA di server Web
Qualche Link...
Routing:
- http://netgroup.polito.it/nettuno/
Protocolli di rete:
- http://www.rigacci.org/docs/biblio/online/netproto/06rout/rip.htm
- 20/06/2006 - Esercizi svolti: 3/4
- 20/06/2006 - Esercizi svolti: 4/4
- 20/06/2006 - Esercizi svolti: 2/4
- 20/06/2006 - Esercizi svolti: 3/4
- 20/06/2006 - Esercizi svolti: 1/4
- 20/06/2006 - Esercizi svolti: 2/4
- 20/04/2006 - Esercizi svolti: 2/5
- 20/04/2006 - Esercizi svolti: 3/5
- 20/04/2006 - Esercizi svolti: 1/5
- 20/04/2006 - Esercizi svolti: 2/5
- 9/9/2005 - Esercizi svolti: 3/5
- 9/9/2005 - Esercizi svolti: 4/5 (ma del terzo manca la seconda parte)
- 9/9/2005 - Esercizi svolti: 3/6
- 9/9/2005 - Esercizi svolti: 3/5
- 9/9/2005 - Esercizi svolti: 2/6
- 9/9/2005 - Esercizi svolti: 3/6
- 9/9/2005 - Esercizi svolti: 1/6
- 9/9/2005 - Esercizi svolti: 2/6
- 12/05/2007 - Esercizi svolti: 1/4
- 12/05/2007 - Esercizi svolti: 2/4
- 12/05/2007 - Esercizi svolti: 0/4
- 12/05/2007 - Esercizi svolti: 1/4
- 20/06/2006 - Esercizi svolti: 0/4
- 20/06/2006 - Esercizi svolti: 1/4
- 20/04/2006 - Esercizi svolti: 0/5
- 20/04/2006 - Esercizi svolti: 1/5
- 11/11/2005 - Esercizi svolti: 1/4
- 11/11/2005 - Esercizi svolti: 2/4
- 11/11/2005 - Esercizi svolti: 0/4
- 11/11/2005 - Esercizi svolti: 1/4
- 9/9/2005 - Esercizi svolti: 1/5
- 9/9/2005 - Esercizi svolti: 1/6
Headers
Header IP
HeaderIPv4 - HeaderIPv6 - HeaderTCP? - HeaderUDP?.
Socket library
Un'integrazione sulle varie funzioni della socket library che abbiamo visto in classe la potete trovare su questa pagina.
(:title Sistemi Anticoncezionali delle Reti e dei Damiani:)
(:title Sistemi di Elaborazione dell'Informazione:)
- 9/9/2005 - Esercizi svolti: 0/5
- 9/9/2005 - Esercizi svolti: 1/5
Indice
Lezioni:
Prima parte
Prima parte
Seconda parte
Seconda parte
Temi d'esame svolti:
- 12/5/2007 - Esercizi svolti: 4/5 (ma uno è svolto per due terzi)
Temi d'esame svolti da noi
Non garantiamo l'assoluta correttezza di tutte le soluzioni, è solo come le faremmo noi.
Prima parte
- 12/5/2007 - Esercizi svolti: 5/5 (ma uno è svolto per due terzi)
Header IP
Tutti ne parlano. Tutti lo vogliono. Tutti lo cercano. Perché non dedicargli una pagina tutta per lui?
HeaderIP?.
Headers
Tutti ne parlano. Tutti li vogliono. Tutti li cercano. Perché non dedicargli una pagina ad hoc?
HeaderIPv4 - HeaderIPv6 - HeaderTCP? - HeaderUDP?.
!Prima parte
Prima parte
!Seconda parte
Seconda parte
!Prima parte
!Seconda parte
- 14/9/2006 - Esercizi svolti: 4/6
- 14/9/2006 - Esercizi svolti: 4/6 (ma uno parla di cose mai viste)
- 14/9/2006 - Esercizi svolti: 3/6
- 14/9/2006 - Esercizi svolti: 4/6
- 30/1/2007 - Esercizi svolti: 3/4 (ma uno parla di cose mai fatte)
- 30/1/2007 - Esercizi svolti: 3/4 (ma uno parla di cose mai viste)
- 20/6/2006 - Esercizi svolti: 1/6
- 11/11/2005 - Esercizi svolti: 6/8 (ma due parlano di cose mai fatte)
- 20/6/2006 - Esercizi svolti: 4/6 (ma uno parla di cose mai viste)
- 11/11/2005 - Esercizi svolti: 6/8 (ma due parlano di cose mai viste)
- 12/5/2007 - Esercizi svolti: 4/5
- 12/5/2007 - Esercizi svolti: 4/5 (ma uno è svolto per due terzi)
- 11/11/2005 - Esercizi svolti: 5/8
- 11/11/2005 - Esercizi svolti: 6/8 (ma due parlano di cose mai fatte)
- 30/1/2007 - Esercizi svolti: 2/4
- 30/1/2007 - Esercizi svolti: 3/4 (ma uno parla di cose mai fatte)
- 12/5/2007 - Esercizi svolti: 3/5
- 12/5/2007 - Esercizi svolti: 4/5
- 20/6/2006 - Esercizi svolti: 0/6
- 20/6/2006 - Esercizi svolti: 1/6
- 14/9/2006 - Esercizi svolti: 1/6
- 14/9/2006 - Esercizi svolti: 3/6
- 9/9/2005 - Esercizi svolti: 1/4
- 9/9/2005 - Esercizi svolti: 4/4
Frame Ethernet ed Header IP
Tutti ne parlano. Tutti li vogliono. Tutti li cercano. Perché non dedicargli una pagina tutta per loro?
Frame Ethernet? - HeaderIP?.
Header IP
Tutti ne parlano. Tutti lo vogliono. Tutti lo cercano. Perché non dedicargli una pagina tutta per lui?
HeaderIP?.
Sunto tabellare del CIDR
Che maschera hanno, che range di host consentono, a quale classe corrispondono... a tutte queste domande verrà data una risposta nella mega tabellona riassuntiva del CIDR.
- 14/9/2006 - Esercizi svolti: 0/6
- 14/9/2006 - Esercizi svolti: 1/6
- 9/9/2005 - Esercizi svolti: 0/4
- 9/9/2005 - Esercizi svolti: 1/4
- 11/11/2005 - Esercizi svolti: 4/8
- 11/11/2005 - Esercizi svolti: 5/8
- 11/11/2005 - Esercizi svolti: 1/8
- 11/11/2005 - Esercizi svolti: 4/8
Ho pdf-ato le pagine di manuale (le pagine MAN di cui parlava il professore) per i comandi arp, netstat, route, traceroute altrimenti detto tracert, ping, ifconfig altrimenti detto ipconfig. Sono in inglese, spero non ci siano problemi. In italiano non le ho.
Ho pdf-ato le pagine di manuale (le pagine MAN di cui parlava il professore) per i comandi arp, netstat, route, traceroute altrimenti detto tracert, ping, ifconfig altrimenti detto ipconfig. Sono in inglese, spero non ci siano problemi.
Qualcosa in italiano lo potete trovare qui.
- 11/11/2005 - Esercizi svolti: 0/8
- 11/11/2005 - Esercizi svolti: 1/8
- 12/5/2007 - Esercizi svolti: 3/5
- 30/1/2007 - Esercizi svolti: 2/4
- 14/9/2006 - Esercizi svolti: 0/6
- 20/6/2006 - Esercizi svolti: 0/6
- 11/11/2005 - Esercizi svolti: 0/8
Tutti ne parlano. Tutti li vogliono. Tutti li cercano. Perché non dedicargli una pagina tutta per loro? Frame Ethernet? - HeaderIP?.
Tutti ne parlano. Tutti li vogliono. Tutti li cercano. Perché non dedicargli una pagina tutta per loro?
Frame Ethernet? - HeaderIP?.
Header IP
Tutti ne parlano. Tutti lo vogliono. Tutti lo cercano. Damiani lo chiede all'esame. Perché non dedicargli una pagina tutta per lui??
Frame Ethernet ed Header IP
Tutti ne parlano. Tutti li vogliono. Tutti li cercano. Perché non dedicargli una pagina tutta per loro? Frame Ethernet? - HeaderIP?.
Temi d'esame svolti:
Esercizi:
Esercizi:
Possibili Domande
Durante le lezioni di Sistemi capitava spesso che Damiani dicesse una frase del tipo "Ecco, questa potrebbe essere una domanda da compitino...". Raccogliamo tutte queste domande e relative risposte su questa pagina
MAN pages
MAN pages
Ho pdf-ato le pagine di manuale (le pagine MAN di cui parlava il professore) per i comandi arp, netstat, route, traceroute altrimenti detto tracert, ping, ifconfig altrimenti detto ipconfig. Sono in inglese, spero non ci siano problemi. In italiano non le ho.
Tutti ne parlano. Tutti lo vogliono. Tutti lo cercano.
Damiani lo chiede all'esame. Perché non dedicargli una pagina tutta per lui??
Tutti ne parlano. Tutti lo vogliono. Tutti lo cercano. Damiani lo chiede all'esame. Perché non dedicargli una pagina tutta per lui??
Tutti ne parlano. Tutti lo vogliono. Tutti lo cercano. Damiani lo chiede all'esame. Perché non dedicargli una pagina tutta per lui??
Tutti ne parlano. Tutti lo vogliono. Tutti lo cercano.
Damiani lo chiede all'esame. Perché non dedicargli una pagina tutta per lui??
Header IP
Tutti ne parlano. Tutti lo vogliono. Tutti lo cercano. Damiani lo chiede all'esame. Perché non dedicargli una pagina tutta per lui??
Sistemi è una materia indubbiamente affascinante, ma portatrice sana di una valanga di acronimi, abbreviazioni e siglette. Se ti trovi in alto mare e non sai più distinguere un GSM da un MAC, clicca su questa pagina.
Sistemi è una materia indubbiamente affascinante, ma portatrice sana di una valanga di acronimi, abbreviazioni e siglette. Se ti trovi in alto mare e non riesci più a distinguere un GSM da un MAC, clicca su questa pagina.
Lezioni:
Lezioni:
Sigle
Sistemi è una materia indubbiamente affascinante, ma portatrice sana di una valanga di acronimi, abbreviazioni e siglette. Se ti trovi in alto mare e non sai più distinguere un GSM da un MAC, clicca su questa pagina.
...anche detto Sistemi per l'elaborazione delle Informazioni, conduce Ernesto Damiani.
...anche detto Sistemi per l'elaborazione delle Informazioni, conduce Ernesto Damiani.
Nota dell'appuntatore: "qui sto mettendo tutti i miei appunti. Non so quanto ci metto, è veramente un sacco di roba. La formattazione non è ottimale, ci pensi qualche anima pia. Inoltre, ho cercato di essere chiaro e di spiegare ciò che il Damiani enumera ad altissimo bau-rate (abbaia). Il mio interlocutore ideale è Patrizia?. Spero 1) che sia utile e 2) che qualcuno lo legga!"
Nota dell'appuntatore: "qui sto mettendo tutti i miei appunti. Non so quanto ci metto, è veramente un sacco di roba. La formattazione non è ottimale, ci pensi qualche anima pia. Inoltre, ho cercato di essere chiaro e di spiegare ciò che il Damiani enumera ad altissimo bau-rate (abbaia). Il mio interlocutore ideale è Patrizia. Spero 1) che sia utile e 2) che qualcuno lo legga!"
Nota di Dario: qui sto mettendo tutti i miei appunti. Non so quanto ci metto, è veramente un sacco di roba. La formattazione non è ottimale, ci pensi qualche anima pia. Inoltre, ho cercato di essere chiaro e di spiegare ciò che il Damiani enumera ad altissimo bau-rate (abbaia). Il mio interlocutore ideale è Patrizia. Spero 1) che sia utile e 2) che qualcuno lo legga!
Sistemi
25 settembre 2007
La trasmissione consiste di segnali su reti che portano sequenze di bit. Queste sequenze possono essere dati, files, video etc. etc.
Nei computer i bit sono statici: sono rappresentati fisicamente da cariche immagazzinate in piccoli condensatori nelle varie memorie del computer. La trasmissione invece deve rappresentare questi bit statici nel dominio del tempo, cioè trasmetterli uno dopo l'altro.
Il segnale è una grandezza fisica che varia nel tempo, come le onde (sinusoidali, quadrate, a dente di sega. NOTA: è ovvio che fisicamente non saranno mai onde perfette, perché la perfezione non è di questo mondo etc.etc.
Un segnale è periodico quando si ripete uguale a se stesso dopo un certo periodo di tempo. La frequenza mi dice appunto quante sono le ripetizioni di un segnale nell'arco di un secondo: 1 Hz = 1 ripetizion al secondo. Il periodo è invece il tempo che passa tra l'inizio di una forma d'onda e la sua ripetizione. È l'opposto della frequenza.
Le onde sinusoidali sono proiezioni sull'asse y di un punto sulla circonferenza, il quale punto ruota in senso antiorario. Non c'è lo schemino. Un'onda sinusoidale si può determinare univocamente in base ad ampiezza (cioè la lunghzza del raggio, ovvero quanto è alta la cresta dell'onda), frequenza e fase, cioè quando inizia, ovvero se all'istante di tempo 0 l'onda è a 0, a 1 oppure in qualche posizione intermedia. Le onde sinusoidali sono importanti perché
- facili da generare
- perché c'è Fourier.
Fourier era un matematico francese il quale dice che ogni onda periodica può essere ottenuta con la somma di un certo numero di componenti sinusoidali. Onda periodica vuol dire un'onda dal profilo qualsiasi, ma che abbia un periodo. Queste componenti sinusoidali sono dette armoniche. Ecco che ogni onda periodica è quindi scomponibile in onde sinusoidali, dette armoniche del segnale, e se prendo un treno di bit e lo vedo come un'onda periodica, ecco che posso scomporlo in onde sinusoidali facilmente riproducibili.
Problema: Fourier vale per i segnali periodici, ma in genere le sequenze di bit non sono periodiche. Quindi? Vedi dopo.
Le varie armoniche, tutte a frequenze diverse, sono dette componenti spettrali, e l'ampiezza delle armoniche sull'asse delle frequenze si chiama spettro. Per far capire ciò uso dei numeri a caso: se per generare un segnale periodico uso 10 armoniche, ed ognuna lavora a 10 Hz più dell'altra, ecco che il mio spettro ha un'ampiezza di 10 onde * 10 Hz = 100Hz. Questa differenza di Hz si chiama banda. Da notare che è una differenza: vuol dire che è la differenza tra l'armonica con frequenza più alta e l'armonica con frequenza più bassa. Se la più bassa è a 1000Hz e la più alta è a 1100Hz, l'ampiezza è 100Hz. Se la più bassa è a 2000Hz e la più alta è a 2100Hz, l'ampiezza è sempre 100Hz. L'armonica più bassa si chiama fondamentale.
NOTA: secondo la teoria, ci possono essere infinite armoniche, ma è chiaro che occorre approssimare, e in genere ci si ritiene soddisfatti quando si sono generate abbastanza armoniche da coprire il 90% del segnale originale. Posso immaginare le armoniche esattamente come le bande verticali di un equalizzatore, che sia l'eq di uno stereo o di un lettore multimediale etc. Questo equalizzatore ha degli slider verticali, ognuno con la sua brava etichetta che dice "100Hz", "300Hz", "1500Hz" e così via. Se alzo uno di questi slider, vuol dire che tutte le onde che lavorano intorno alla frequenza dello slider stesso avranno un'ampiezza più alta: ciò vuol dire che se alzo lo slider dei 100Hz, le frequenze che lavorano intorno ai 100Hz saranno più grandi in ampiezza.
Posso quindi rappresentare un segnale graficamente tramite un istogramma delle sue armoniche, in cui in genere l'altezza di un segmento è proporzionale al quadrato dell'ampiezza max dell'armonica corrispondente. Ripassando, lo spettro è la distanza tra la fondamentale (l'armonica più bassa) e la più alta armonica. Questo istogramma si chiama spettrogramma.
Una situazione frequente è che il mio spettro va per esempio dai 1000Hz ai 20000Hz, ma il mezzo che uso per la riproduzione non abbia la stessa risposta in frequenza. Per esempio, le casse dei computer in genere hanno pochi bassi: vuol dire che rispondono solamente a frequenze che partono dai 500Hz in su, per esempio. Ciò vuol dire che il mio segnale originale viene tagliato, e quindi perdo una parte di informazione (in questo caso, il tum tum delle canzoni, che lo sento come se fosse un toc toc). Praticamente, le mie casse fanno da filtro, e si può immaginare di creare filtri da usare deliberatamente. I filtri fermano certe armoniche e ne fanno passare altre. Che utilità hanno? Per esempio, se sto registrando da un microfono che ha un brusio di fondo, posso tagliare dai 50Hz in giù per eliminarlo, perché in genere è dovuto alla corrente elettrica che da noi è a 50Hz.
Quando il segnale NON è periodico, Fourier non trasforma più l'onda complessa in componenti sinusoidali che si sommano (cioè una serie), ma la trasforma in integrali: è la famosa trasformata di Fourier. Questi integrali appartengono alla matematica del Cariboni e quindi sono continui, non discreti come le barre di un istogramma.
Rete telefonica
La rete telefonica trasforma la voce in corrente e poi di nuovo in suono. Lo fa perché la corrente si può trasportare per lunghe distanze, la voce che non sia di Patrizia? no.
La voce quando esce dalla cavità orale è aria che si muove con più o meno pressione: questa variazione di pressione può essere captata comodamente in diversi modi. Uno dei più banali è l'orecchio. L'orecchio ha una membrana che reagisce allo spostamento d'aria, la quale muove vari ossicini che sono collegati al nervo, il quale poi trasmette queste vibrazioni al cervello, il quale le interpreta come suoni.
Antonio Meucci ebbe l'idea di sfruttare l'effetto piezoelettrico per generare corrente a partire dalla variazione di pressione. Ci sono certi materiali che quando vengono compressi generano una tensione elettrica proporzionale alla compressione. Uno di questi materiali è quella roba di carbone che si trova nelle cornette del telefono, o almeno, in quelle vecchie. Il segnale elettrico così generato viaggia sul filo e alla fine del percorso viene catturato da un'altra membrana, simile a quella in partenza, che vibra a sua volta in funzione della corrente, riproducendo così la voce originale.
Buona idea. Problema: va bene per i citofoni. Il filo deve andare direttamente da una membrana all'altra. Finché ho due ricevitori (il citofono, appunto) va bene, ma se ho devo parlare con più persone, che faccio? Tiro un filo da ogni casa ad ogni casa? Qui entra in gioco l'idea di Graham Bell, il quale ha usato le sinusoidi in questo modo. Prende un segnale periodico con frequenza fissa, ed utilizzo il segnale della voce per modificarlo e creare così un'onda diversa: si chiama modulazione. Il segnale fisso è detto portante, e il segnale che lo modifica si chiama modulante.
Se ho due microfoni, uso semplicemente due portanti diverse, così che posso su una portante moltiplicare il segnale della mia voce, e sull'altra moltiplicare il segnale della voce di qualcun altro: stesso filo, due conversazioni. Se ho più voci, uso più portanti. Come faccio a distinguere tra due portanti diverse? Occorre usare le formule di prostaferesi, che si trovano nel Necronomicon.
Quindi, posso avere una portante a 100 Hz, una a 200Hz, una a 300 Hz etc. etc. Se il mio filo ha una risposta in frequenza che va da 100 a 1000 Hz, ecco che posso avere 10 conversazioni contemporanee con 10 portanti diverse.
Questo procedimento si chiama multiplexing a divisione di frequenza, FDM come acronimo inglese.
Siccome le portanti non sono infinite, c'erano le centraliniste che collegavano fisicamente i cavi per far comunicare utenti lontani l'uno dall'altro, nel caso in cui un utente era su di una linea e l'altro su di un'altra (ovvero sempre a meno che non si abiti nello stesso quartiere).
Telefonia digitale
Si campiona la voce, si trasforma il campione in bit, e poi si modula il treno di bit...
Il campione è la frequenza con cui vado ad analizzare la voce per analizzarne l'onda. Se sto campionando a 22Khz vuol dire che ogni secondo prelevo 22000 piccoli campioni dalla forma d'onda della mia voce. La frequenza di campionamento non è scelta a caso. Secondo il teorema di Nyquist, per mantenere un segnale identico dopo il campionamento, mi occorre una frequenza di campionamento che sia pari almeno al doppio dell'armonica più alta del mio segnale.
La voce ha l'armonica più alta a 4Khz, quindi vuol dire che per rappresentarla fedelmente mi occorre campionare a 8khz, cioè raccogliere ogni secondo 8000 immagini diverse della forma d'onda della voce. Il CDROM funziona a 44.1 Khz, il che vuol dire che può rappresentare, al massimo, frequenze che si aggirano intorno ai 22050 Hz. Non è un valore scelto a caso, dato che in generale l'orecchio umano discerne suoni che arrivano a un po' prima dei 20000 Hz, e le frequenze superiori vengono comunque percepite inconsciamente e servono ad arricchire il suono.
Ma non basta campionare 8000 volte al secondo. Ogni singolo campione è una piccola porzione della forma d'onda che la voce assume. Questo piccolo campione, quanti valori può assumere? Supponendo di disegnare la voce come un'onda su di un grafico, e di dividerla in tante piccole torri verticali che rappresentano i campioni, la domanda di questo paragrafo è: quanto deve essere alta ogni torre?
La risposta a questa domanda viene data tramite la risoluzione del campione. I sistemi di telefonia digitale campionano a 8Khz e 8 bit. 8 bit significa 2^8 = 256 valori, il che vuol dire che le mie piccole torri saranno tutte divise più o meno brutalmente in 256 classi. La classe con valore minimo ha ampiezza 0, la classe con valore massimo ha ampiezza 256. Quindi, ogni singolo campione porterà con sé il suo valore in bit, che ne rappresenta l'ampiezza, ed in questo caso questo valore può assumere 256 valori diversi. Per tornare all'esempio del CDROM, questo lavora invece a 16 bit, cioè ogni singolo campione dei 44100 che analizzo ogni minuto può assumere 2^16 = 65536 valori diversi.
È chiaro che più la risoluzione in bit è alta, più il segnale sarà fedele. Il limite degli 8 bit è che non è vero che l'orecchio umano discerne solo 256 livelli di volume. Già 16bit è più accettabile.
La frequenza e la risoluzione mi permettono anche di determinare quanti bit al secondo mi servono per codificare la mia informazione originale, in questo caso, la voce. Il bitrate è la misura della trasmissione di bit al secondo: bit / secondo. Se ho 8000 campioni, ciascuno con 8 bit, vuol dire che ogni secondo avrò 8 * 8000 = 64000 bit da trasmettere, ovvero 64Kbps (64 kilo bit per secondo).
Ora, la mia modulante non sarà più la forma d'onda originale della mia voce, ma sarà questo treno di bit: ogni singolo bit determinerà una variazione di una forma d'onda, variazione che viene decisa dagli standard, e l'onda risultante sarà utilizzata per modulare la portante come abbiamo visto prima, cioè col metodo FDM di Graham Bell.
Il sistema che si usa per portare la voce digitalizzata è il PSTN: da casa fino alla centralina la voce corre analogicamente sul filo, che è detto local loop. Poi nella centralina si digitalizza la voce e la si mette su di una portante FDM fino alla centrale di zona, e poi lì viene smistata bla bla fino al destinatario, finché la sua centralina non riconverte la portante modulata con la mia voce digitalizzata in segnale analogico, il quale alla fine viene ritrasformato in suono dal suo apparecchio telefonico... puff puff!
I collegamenti tra le centrali sono detti trunk, e sono interamente digitali. Se i vari collegamenti sono fatti bene, tra le varie centraline a livello gerarchico, ciò significa che io da casa posso raggiungere qualsiasi altro numero telefonico in tutta Italia, o anche nel mondo. Una volta c'era la centralinista che connetteva nel pannello di fronte a sé i fili: uno veniva dalla mia centrale di zona, l'altro dalla centrale di zona della mia morosa, e lei li univa fisicamente con degli spinotti. Invece adesso c'è la teleselezione: compongo un numero, il quale viene analizzato: il prefisso mi dice la zona, i primi due numeri la sottozona etc. fino a scegliere l'abbonato, e i computer mi hanno connesso automaticamente. Una volta ho letto un racconto di un telefono che si era innamorato della centralinista, e quando sono passati alla teleselezione e non c'era più la centralinista, si era rifiutato di funzionare ancora.
Per far funzionare la teleselezione occorre che il sistema telefonico capisca, in base al numero che io digito sulla tastiera del mio telefono, come trovare l'altro numero. Una volta c'era la centralina che commutava manualmente i circuiti, e questa operazione viene detta circuit switching: metteva fisicamente in contatto il circuito del mio telefono col circuito del telefono della morosa. Invece adesso c'è la teleselezione, e al posto della centralina si usano dei messaggi di controllo che automaticamente uniscono i nostri due telefoni nel modo spiegato nel paragrafo sopra.
Per inviare questi messaggi di controllo, posso adoperare 2 strategie differenti. La prima è quella di usare dei suoni particolari, all'interno dello spettro che effettivamente viene usato dai telefoni, per dare ordini alle varie centraline. Si chiama in-band sygnaling. Vuol dire questo: lo spettro dei suoni viene filtrato, supponiamo, dai 300Hz fino ai 4Khz per farci passare la mia voce. In questo spettro, si è scelto di dedicare (dico a caso) un fischio dell'ampiezza di 3800 Hz per indicare il numero 0, uo a 3820Hz per indicare il numero 1 e così via. Questo sistema lo si usava in America, e non è leggenda ma verità che c'era gente che era riuscita a interpretare questo linguaggio di fischi, e trovato il modo di riprodurlo con fischietti vari, riusciva a dare gli ordini che voleva alla centralina, come per esempio chiamare gratis.
Da noi invece si usa la seconda strategia, che è quella dell' Out of band sygnaling, ovveri c'è una piccola banda dedicata a far funzionare la teleselezione e le altre amenità. Le reti di computer, tra l'altro, sono In-band, perché ovviamente non val la pena tirare un cavo per i dati e un altro per le informazioni di controllo, oltre a essere irrealizabile.
Per concludere, c'è il PBX, che vuol dire Private Branch Exchange, che altro non è che una centralina come quelle che ci sono in ogni quartiere, solo che non è in un quartiere, ma è installata all'interno di un'azienda o simili. In questo modo quando alzo il telefono il numero che compongo non viene passato alla Telecom, ma viene teleselezionato all'interno degli uffici dell'azienda. Con questo sistema in genere se voglio chiamare all'esterno devo prima fare lo 0, così che il PBX mette in comunicazione il mio telefono col mondo circostante. È quello che succede quando le segretarie compongono il numero 126 e risponde il grande capo nell'altro ufficio e gli annunciano visite, come nei film. Il PBX può essere uno scatolo fisico, oppure una simulazione che la Telecom ti fa attraverso la rete normale.
Multiplexing Digitale
Se la voce viene digitalizzata, perché devo usare ancora l'FDM analogico? Non posso usare un sistema direttamente digitale? È la domanda che si sono fatti alla Bell, in America.
La risposta è stata l'idea di fare multiplexing non nel dominio delle frequenze (cioè una portante a frequenza diversa per ogni segnale) ma nel dominio del tempo (cioè ogni segnale ha una sua finestra temporale, e ad ogni segnale ne segue un altro in rapida successione). C'è una portante ad alta frequenza, che trasmette modulanti una dopo l'altra.
Questo affare si chiama TDM, cioè time division multiplexing. Ha il vantaggio di essere facilmente standardizzabile, e di essere facilmente scalabile (cioè si può aumentare la dimensione dell'installazione in modo coerente). Infatti, posso fare TDM su un altro TDM, e così via, a livelli gerarchici. In America ciò è stato chiamato T1, da noi in Europa si chiama E1. Avviene che da loro le linee telefoniche siano a 7 bit, quindi con un bitrate di 56kbps. Una linea T1 trasmette ogni secondo 24 linee normali, ovvero 24 * 56kbps. Ciò vuol dire che trasmetto io, poi il mio vicino di casa, poi l'altro vicino ancora etc. e dopo 24 persone tocca ancora a me, poi ancora al vicino e così via. In Europa le E1 lavorano invece con 24 utenti, ma a 8 bit.
Quando dicevo "fare il TDM del TDM" vuol dire quanto segue. Prendo una T1, e la metto su di un cavo T2, che porta 4 T1 una dopo l'altra. Ciò vuol dire che il cavo T2 mi porta fino a 24 * 4 = 96 utenti finali, uno dopo l'altro. È chiaro che una linea T2 deve essere 4 volte più veloce di una linea T1. A sua volta, la T3 porta 7 T2, cioè 7 * 4 * 24 = 672 utenti, e la T4 porta 6 T3. NOTA: sugli appunti sta scritto DS0, DS1 etc. devo ancora capire se i nomi sono intercambiabili. C'è da far rilevare che siccome in America usano 7 bit e non 8, a parità di portata della singola linea, loro avranno più bit sprecati.
Tecniche di Multiplexing
FDMA
Frequency Division Multiple Access
- portanti diverse
- i segnali non si sovrappongono
TDMA
Time Division Multiple Access
- le stazioni trasmettono a turno, un bit ciascuna, una dopo l'altra
- i segnali non si sovrappongono
- c'è un numero finito di slot
CDMA
Code Division Multiple Access
- ogni stazione ha un codice diverso
- i segnali sono sovrapposti ma intelligibili tramite al codice (Cocktail Party Effect: tutti parlano insieme, c'è rumore, ma io capisco comunque quello che mi dice l'interlocutore che ho di fronte).
Le reti cellulari usano il CDMA e non gli altri sistemi di multiplexing, perché questi altri hanno un numero finito di slot disponibili, siano essi portanti o slot temporali diversi, mentre non sai mai quanti cellulari diversi posso avere sotto la stessa cella.
SONET
SONET = Synchronous Optical Network. È un sistema TDM ma usa tecnologia a fibre ottiche, con tutto il suo sistema gerarchico simile a quello delle DS0, DS1 etc.
Ogni 810 byte che trasmette, SONET ne usa altri 27 per il sincronismo, perché con un alto bitrate è possibile che si perda qualche byte per strada. Ecco qui che introduciamo il concetto di overhead.
L'overhead è la percentuale di informazioni, in una trasmissione, che non contengono i dati che sto inviando, ma contengono informazioni per il sincronismo. Nel caso di SONET, 27 byte su 810 = 3,33% di dati di overhead. È da notare che gli overhead esistono per ogni protocollo che vado ad utilizzare, a catena. Se ho una rete fisica come il SONET, ogni 810 byte ne "perdo" 27 per overhead, e 810 sono i miei dati. Di questi 810, supponiamo che uso un protocollo internet, un'altra percentuale se ne va per il suo overhead etc. etc. => gli overhead si sommano, e alla fine può rimanermi poca cosa...
ATM
ATM = Asynchronous Transfer Mode Il TDM mi garantisc l'isocronia: il tempo di intervallo tra due bit consecutivi provenienti dalla stessa sorgente è sempre lo stesso. Se ho una linea a 64kbps, vuol dire che ogni bit proveniente da me arriverà garantito tra 1/64000 di secondo, così come per quello del mio vicino etc. Questo è il tempo reale, ed è una delle carateristiche del TDM: ho un tempo garantito tra un bit e l'altro. Chiaro che se poi ho schede T5 etc. il tempo tra un bit e l'altro è ancora più piccolo, e quindi la scheda sarà molto più costosa.
C'è invece il sistema ATM, che al momento attuale non so a che tipo di rete si riferisca. Non è isocrono, il che vuol dire che non passa lo stesso identico tempo tra un bit e l'altro della mia trasmissione. Gli apparecchi riceventi hanno un buffer: quando il buffer viene riempito, lo svuotano, e poi attendono che si riempia ancora. È chiaro che questo sistema non funzioni bene per il telefono, perché potrei avere delle attese ora che il buffer si riempie, e mi arriva la voce a sprazzi. Questo sistema non usa trame (si chiamano trame le finestrelle temporali del TDM) ma celle con una propria intestazione, e questa intestazione indica il destinatario del pacchetto. Chiaro che qui l'overhead è più alto, perché ogni cella ha byte sprecati per l'indirizzo etc.
27 settembre 2007
Introduzione a livello di Data Link
Le reti tra computer nascono come reti private, per l'ovvio motivo che non si possono tirare in giro i cavi per l'Italia etc.
Tecniche standard per i computer
Gli standard offrono dei pro e dei contro. Il pro è che ci può essere intercomunicabilità fra produttori diversi, mentre il contro è che in genere, una volta che si è fatto uno standard, poi non lo si cambia più per un bel pezzo e la tecnologia viene per così dire congelata; inoltre è possibile che ci siano più standard per la stessa funzione.
Gli standard vengono inventati, per esempio, dalla Internet Society, dall'ISO, dal CCITT, dal forum ATM (Azienda Trasporti Milanese, lo standard del degrado della linea dei pullman è loro...).
Come dicevo all'inizio, all'interno del computer i bit sono organizzati spazialmente: ogni bit è una carica in una certa porzione piccola ma fisicamente reale all'interno del computer. Ma devo spostarli 1 alla volta, nel dominio del tempo, affinché io possa trasmetterli lungo una rete. Per fare ciò, occorre codificare in qualche modo la presenza e l'assenza di carica (cioè lo 0 e l'1 nella memoria del computer) in un segnale.
Un modo per farlo è stabilire che 0 Volt = 1, e 5 Volt = 0. Bene. Bello. Problema: lungo un filo è più che probabile che il segnale si attenuerà, perché il filo ha una sua resistività e così via. Quindi è possibile che fra 10 metri non arrivino più 5 volt, ma 2,5, e a questo punto l'apparecchio ricevente potrebbe interpretare i 2,5 Volt arrotondandoli per difetto, e ricevendo 0 al posto di 1. I dati si perdono. La perdita di dati è ancora accettabile durante le conversazioni telefoniche, perché anche se perdiamo addirittura pezzi interi di parola, si capisce lo stesso. Ma non è assolutamente accettabile perdere pezzi durante la trasmissione di dati informatici.
Quindi, per evitare sto problema del voltaggio, si è pensato di inviare i bit non come livelli diversi di corrente, ma come variazioni del livello di corrente, ovvero come fronti di salita e fronti di discesa. Un fronte di salita si ha quando il voltaggio sale, mentre un fronte di discesa si ha quando il voltaggio scende. Ecco quindi che abbiamo scoperto il baud rate, ovvero la quantità di fronti che si inviano per secondo. Da notare che il baudrate non è necessariamente uguale al bitrate.
Nel caso dei calcolatori, NON si fa multiplexing come abbiamo visto finora: semplicemente, le varie stazioni si danno il turn nel comunicare, secondo un sistema detto Statistical Division Multiplexing, che vuol dire semplicemente che ci si dà il turno. Un altro modo per indicare questa faccenda del parlare a turni è il MAC: Medium Access Control, ovvero il modo per controllare l'accesso al medium, che non è chi comunica coi morti ma il mezzo di trasmissione.
Il DLL, che sta per Data Link Layer, è il formato in cui vengono inviati i singoli blocchi di comunicazione. Come abbiamo visto prima per il misterioso ATM, se non c'è isocronia, le trasmissioni avvengono a blocchi, e ogni blocco deve essere autosufficiente nel senso che deve saper arrivare a destinazione in modo autonomo. Le informazioni per andare in giro per la rete sono distribuite nel blocco in un certo formato, detto appunto DLL. La differenza con le trame del TDM è che le trame sono i pezzi di dati circondati dai bit di sincronimo.
Nelle reti di computer il controllo degli errori è fondamentale, per il motivo che ho detto prima. Occorre quindi anche un sistema per accertarsi che i blocchi siano stati ricevuti senza errori.
Responsabilità del Data Link
- deve fare il multiplexing finto dei flussi di dati, cioè saper dire: ora parlo io, ora parli tu
- deve controllare l'accesso al mezzo di trasmissione
- deve controllare gli errori.
La necessità del multiplexing finto di qualche paragrafo fa nasce da una semplice constatazione amichevole. Se ho due computer, posso benissimo immaginare di tirare un cavo tra uno e l'altro ed è morta lì. Se ho tre computer idem: ho un cavo per ogni coppia di computer. Ma quando comincio ad avere 20 computer, che faccio? Un cavo per ogni coppia è improponibile. Ecco perché si usa un filo solo, e si usa questo multiplexing a turni per decidere chi parla e chi sta zitto: è il controllo di accesso al mezzo.
Protocolli MAC Collision Free
In questi protocolli, si fa in modo che non ci sia del tutto la possibilità che due stazioni si mettano ad inviare contemporaneamente dati sulla rete, rendendoli di fatto inutilizzabili. Occorre quindi stabilire dei turni: la stazione che vuole comunicare "alza la mano" (handrising) e invia a tutte le altre stazioni il segnale che indica la sua volontà di comunicare. Ogni scheda dice la sua in proposito, e quando si sono messe d'accordo quello che vince la trattativa (in base a certe regole) è quello che invia il messaggio.
In questo caso si ha tanto overhead, perché si perde tanto tempo a mandare microframes per queste trattative.
Protocolli MAC a contesa
Con i protocolli MAC a contesa, invece, è ammesso il caso che si parli tutti insieme: nel caso Collision Free si evita a priori la collisione, qui invece la si risolve dopo che è successa.
Slotted Aloha
È il sistema inventato all'Università delle Hawaii, dove usavano le onde radio per collegare i diversi campus presenti su isole diverse. Avevano 1 solo canale, e le collisioni succedevano frequentemente.
La parola slotted si rifà all'idea di voler dare ad ogni stazione un suo tempo di trasmissione che abbia una lunghezza fissa: ognuno può inviare messaggi solo all'inizio del suo slot temporale. Ci sono poche probabilità che due computer si mettano ad inviare segnali nello stesso istante. Però, in caso di collisione, non è affatto stabilito quando una singola stazione potrà di nuovo comunicare.
La rilevazione delle collisioni è semplice: una stazione invia dei dati, e li confronta con i dati che sta ricevendo. Se i due stream coincidono, vuol dire che solo lei sta inviando dati sulla rete. Se invece ci sono discrepanze, vuol dire che c'è una collisione in corso, e che il messaggio è da reinviare.
Un altro problema dello Slotted Aloha è che le onde elettromagnetiche, per quanto veloci, hanno un tempo finito di propagazione, che è di 2*10^8 m/s. Quindi, può accadere che una stazione senta il canale libero quando invece un'altra stazione sta già inviando, proprio perché il segnale radio ci mette tempo a viaggiare da un'isola all'altra, e questo tempo è apprezzabile dalle apparecchiature elettroniche.
CSMA / CD
Carrier Sensing Multiple Access / Collision Detection.
Inventato da Bob Metcalfe, è il sistema che sta alla base di Ethernet. Nella stessa parola Ethernet, si ritrova Ether, cioè etere, ovvero il richiamo alle onde radio del sistema Slotted Aloha.
Carrier Sensing vuol dire che si rileva (sensing) la portante (carrier): quando questa è pulita, vuol dire che posso cercare di trasmettere i dati che voglio. Come con Aloha, si fa il confronto tra dati inviati e ricevuti: se coincidono, allora la trasmissione non è disturbata, altrimenti c'è stata una collisione da qualche parte.
Che cosa avviene quando c'è una collisione? Certo, si deve aspettare un certo po' di tempo per riprovare, ma quanto? Ci sono diverse strategie:
- non persistent = aspetto un tempo random. Siccome è poco probabile che tutte le stazioni selezioneranno lo stesso tempo random, è quasi come darsi i turni ed evitare le collisioni.
- 1 persistent = aspetto un tempo determinato
- p-persistent = una via di mezzo tra le due precedenti.
Da notare che tutti sti protocolli a contesa funzionano bene se il carico totale sulla rete è basso. In effetti, il rapporto tra banda impegnata e non impegnata non deve superare il 30%, nel caso dell'Ethernet. Questo perché altrimenti le collisioni diventerebbero tante, e si sprecherebbe tantissimo tempo. In caso di traffico più elevato occorrono protocolli Collision Free. Una delle ragioni del successo di Ethernet si è avuta nel fatto che ci sono state molte schede a basso costo: costando così poco la banda, non c'era problema anche se la si usava solo al 30%.
Negli ultimi tempi, tuttavia, con gli switch che vedremo più sotto, non c'è quasi più bisogno di gestire le collisioni, quindi la banda viene sfruttata completamente.
Soluzione adattiva
Questo titolo altisonante e vagamente misterioso si riferisce ad un sistema di gestione del traffico di rete che è una specie di misto di quelli visti finora. Non appena si rileva una collisione, si mette il gruppo su cui si è verificata la collisione in modalità Collision Detection, mentre le comunicazioni tra gruppi avvengono con Collision Free. Questo cambio di modalità dipende dalle condizioni del traffico, per questo viene detto adattivo.
Visione unificante
Per tirare un po' le somme di questi sistemi, e vedere dove e come sono utili, viene buono il seguente schema:
- Si ha basso carico & si vuole poca latenza => Protocollo a contesa
- Si ha alto carico & si vuole massima efficienza => Collision Free
- Carico variabile & Problemi assortiti => Ibridi vari
Perché il protocollo a contesa ha il vantaggio di avere poca latenza? Innanzitutto, la latenza è l'intervallo di tempo che passa dalla richiesta di trasmissione all'effettivo invio dei dati. Nei sistemi Aloha e derivati, quando voglio trasmettere trasmetto, saranno gli altri a fermarsi, e tipicamente essendo il carico non superiore al 30% questo avviene quasi sempre: invio subito. Il problema sta invece nell'efficienza: non appena il carico si alza, allora le collisioni diventano così tante che continuo a inviare roba e non arriva mai! Ecco perché se voglio inviare tanta tanta merce, è meglio usare un protocollo Collision Free: quando partono i dati, nessuno li ferma. Lo svantaggio dei sistemi Collision Free al converso sta nella latenza: siccome tutte le stazioni si devono mettere d'accordo per decidere i turni, si perde tanto tempo dal momento in cui io esprimo la volontà di inviare i miei dati a quando effettivamente questi miei dati avranno il turno libero. Più si è in tanti, più ci si mette tempo a mettersi d'accordo.
Ether Parisi
E le cicale, cicale cicale cicale. E la formica, ci cale ci cale mica.
È proprio vero che il cavo di rete dell'Ethernet sia proprio come l'Ethere? Metcalfe ha usato questo paragone, perché si rifaceva all'Aloha: io trasmetto, e tutti sentono.
Ma c'è una differenza: se tutti sono collegati al cavo, è scontato che tutti sentano il messaggio da me inviato. Nel caso dell'Ethere vero, invece, può anche darsi che ci siano stazioni che NON si accorgano del messaggio perché sono fuori campo! Questo è proprio il caso delle reti Wireless.
È il problema dell' Hidden Terminal: A vuole parlare a B, e sente il campo libero, e invia. Allo stesso tempo anche C vuole mandare a B, e siccome è distante da A e non si accorge che A sta parlando, parla anche lui. In casi come questo Ethernet non funziona, perché cade miseramente uno dei principi base del CSMA/CD: la Collision Detection! Infatti nel caso qui citato non c'è nessuna collision detection perché né A né B se ne accorgono! Ahi ahi ahi!
E non è finita qui: c'è anche il problema inverso, quello della Stazione Esposta. A parla con B, e C vuole parlare con D. Sono tutti nello stesso campo. C vorrebbe parlare, ma sente che il campo è occupato dalla conversazione di A con B, e allora si astiene, mentre in realtà potrebbe benissimo parlare con D perché A sta parlando con B e non con D. Bia bi e e ba be bi e i babebi bi e o babebibo bi e u bu babebibobu.
La soluzione è adottare schemi più complicati. Chi vuole intavolare una discussione invia un messaggio RTS: Request To Send, un avviso di intenzione di voler parlare. Finché non ricevo un CTS, cioè un Clear To Send (libero di parlare) non comincio. Questi messaggi vanno avanti e indietro per tutto il campo, tirando in mezzo anche le stazioni che non si sentono direttamente.
1 Ottobre 2007
La lezione di oggi inizia con un bel The page cannot be displayed. Poi prosegue ricordandoci che le tecniche CSMA risolvono le collisioni NON in modo preventivo, ma dopo che sono avvenute: non fanno niente per evitare che accadano, e quando accadono cercano di porvi rimedio.
Un'importante implicazione di questo modo di rilevare le collisioni è che i messaggi abbiano una lunghezza finita e predeterminata, altrimenti chi si impossessa della rete la invade tutta lui e gli altri collideranno per sempre e taceranno per sempre, con loro somma insoddisfazione.
Inoltre, pensiamo a questa cosa. Supponiamo che A stia inviando messaggi. B sente la rete occupata e aspetta che finisca il messaggio di A, e poi tocca a lui. Non c'è stata nessuna collisione. In effetti, se ognuno aspetta che la rete si liberi, sapendo che ciò prima o poi accadrà perché i pacchetti hanno lunghezza finita e dopo aver inviato un pacchetto una stazione aspetterà un minimo di tempo, perché le collisioni avvengono ugualmente? Com'è possibile che, se una stazione invia messaggi SOLO quando la portante è libera, possa creare collisioni? Una collisione si ha quando due stazioni inviano messaggi contemporaneamente. Ma quando mai due stazioni iniziano nello stesso microtetosecondo ad inviare messagi? Mai.
Eppure le collisioni accadono, ed è un dato di fatto. Occorre quindi tirare in ballo un'altra caratteristica: la posizione reciproca delle stazioni.
Le onde elettromagnetiche che viaggiano nel cavo di rete non hanno velocità infinita, ma prossima ai 2*10^8 m/s. Per andare da un punto ad un altro ci metteranno per forza di cose un tempo, piccolo come vogliamo, ma pur sempre apprezzabile da dispositivi elettronici che lavorano velocissimamente. Quindi è possibilissimo questo scenario: A trasmette il suo messaggio. Prima che il messaggio arrivi a B (B è messo qualche metro più in là lungo il cavo), B tasta la portante e la sente libera: esulta e dice "tocca a me!". Ma dopo aver inviato qualche cosuccia ecco che arriva il segnale di A che mentre B esultava ed inviava percorreva inesorabile il cavo di rete. Ecco come avvengono le collisioni: perché il segnale ha una velocità finita di trasmissione!
Così facendo, il CSMA/CD si accorge della collisione, e A può allora reinviare il suo pacchetto, e B aspettare ancora.
Ma facciamo ancora una considerazione: A e B sono molto, molto lontani. A invia un messaggio lungo la rete, e quando termina di inviare il messaggio, e la portante è ancora libera. Per quanto ne sa, non è accaduta nessuna collisione. Invece, B è così lontana che prima che il messaggio di A arrivi a B, B ha fatto in tempo ad inviare una parte del suo. Questi due messaggi si scontreranno a metà strada. La cosa brutta è che A non si accorgerà minimamente della collisione, perché quando arriveranno i dati mischiati del suo messaggio e di quello di B, lei avrà già finito di trasmettere il suo messaggio, e non starà più rilevando le collisioni su quel messaggio. Capita la faccenda?
Questo è il motivo per cui i cavi di rete Ethernet non hanno lunghezza infinita, e perché Ethernet si chiama rete locale: più in là di certi metri il cavo non può andare, per evitare che accada quanto illustrato nel paragrafo precedente.
A questo punto si instaura nelle nostre menti matematiche un legame tra ampiezza di banda, lunghezza del messaggio e lunghezza del cavo.
L'ampiezza di banda è quanti bit al secondo può trasmettere. Nel mio protocollo di rete la lunghezza del messaggio è di 1000bit. Se supponiamo una larghezza di banda di 100 bit al secondo, vuol dire che per trasmettere 1000 bit mi ci vogliono 1000/100 = 10s. In 10 secondi, quanta strada può fare il mio impulso? Se viaggia a 100 m/s, in 10 secondi ha percorso 100 * 10 = 1000 metri, quindi vuol dire che il computer più lontano dovrà essere al max a 1000 metri. Alles klar, Herr Kommisar?
Ma c'è di più: occorre tenere conto che in un cavo di 1000 metri, il voltaggio che parte all'inizio andrà per la maggior parte a puttane durante alla strada, e magari ora che arriva al millesimo metro è già stato tutto assorbito dalla resistività del filo: occorre tenere a mente anche questo per calcolare la lunghezza massima di un cavo di rete. Nella proposta originale dell'Ethernet, il cavo poteva essere al max lungo 512 metri circa.
Questo serve anche a far capire che Ethernet non è solo CSMA/CD e basta, ci sono tante altre cose da tenere in considerazione, come per esempio le caratteristiche elettriche della portante, i cavi e tutte ste cose materiali.
Com'è fatto un frame
LLC = Logical Link Control, ed è la parte dello standard Ethernet che mi dice come è strutturato un frame. Il frame è il messaggio che viene inviato tra le NIC (Network Interface Card, ovvero semplicemente schede di rete) in una Ethernet.
Un cavo di rete Ethernet 10Mbit ha bisogno di 50Mhz di banda portante, quindi occorrono la 3a e la 5a armonica della portante. (Non so perché è scritto a questo punto, però va beh).
Un messaggio è composto da Trailer, Payload e Header. Il Trailer è la parte di coda. Il Payload è il carico, ciò che sta in mezzo, e l'Header è la parte di testa, l'intestazione.
Il Trailer contiene le informazioni che servono per cercare di correggere un eventuale messaggio corrottosi durante la strada. L'Header contiene invece le informazioni necessarie per recapitare il messaggio stesso: siccome tutte le stazioni collegate al cavo riceveranno quel messaggio, è d'uopo che sappiano quale di loro debba effettivamente leggerlo. Oggi come oggi a dire la verità non si sbaglia mai a trasmettere, quindi il Trailer sarebbe inutile, però lo standard è del 78, quindi in quei tempi preistorici serviva eccome. Sì, sì, anche io sono preistorico.
NOTA: il fatto che tutte sentano lo stesso messaggio, si chiama broadcast, cioè trasmissione, ed è lo stesso termine che si usa per le radio e le televisioni, perché funziona allo stesso modo.
La IEEE fissa gli standard di rete, sia a livello di frame (livello 2) che a livello fisico (livello 1):
- 802.3 = Ethernet a 2 Mbps (quella originale), Mbps = mega bit per secondo
- 802.3u = Ethernet 100Mbps
- 802.3z = Ethernet 1000Mbps (1 Gygabit)
La lunghezza massima è di 2500 metri, ovvero 4 cavi da 500 metri con dei Repeater (amplificatori e ripetitori) tra un cavo e l'altro.
Ci sono due topologie di connessione: BUS e STAR. Per topologia di connessione si intende, per così dire, il disegnino che rappresenta come vengono collegate le stazioni. La topologia BUS vede un bel cavo e tutti che si collegano a questo cavo. La topologia STAR invece vede un nodo centrale e tutti i cavi che si collegano a questo nodo. Una volta si usava la topologia BUS: si prendeva un filo e si tiravano le derivazioni. Adesso invece prevale la topologia STAR: da ogni computer parte un cavo che arriva ad un HUB o SWITCH o quel diavolo che volete, e ci pensa quella macchinetta a smistare l'ambaradan.
Occorre sapere però che, a parte la comodità di tirare i cavi in un modo o nell'altro, tra BUS e STAR non cambia niente. L'HUB dal punto di vista di Ethernet altro non è che un pezzo di cavo, con tante derivazioni racchiuse in pochi centimetri. Invece di tirare un cavo in mezzo al laboratorio e ogni computer si collega direttamente al cavo, si tira un cavo da ogni computer al centro della stanza. Ma la funzione è esattamente la stessa, solo che in molti casi è più comoda.
Lo SWITCH invece è ben altra cosa. Non è semplicemente un cavo. Lo Switch è un dispositivo che realizza FISICAMENTE, cioè con dei contatti, tutte le combinazioni possibili tra le porte. Se ci sono 4 porte, la porta 1 avrà un cammino dedicato alla 2, alla 3 e alla 4. La porta 2 avrà un cammino dedicato alla 1, alla 3 e alla 4 e così via. In termini matematici è un grafo completo, in cui tutti i nodi sono collegati da cammini indipendenti. Finché sono 4 porte va beh, è facile da fare. Ma quando le porte sono di più? In questo caso, non è più possibile tracciare contatti su una singola piastra di silicio, perché ci sarebbero degli accavallamenti: si dice che il grafo non è planare, ovvero non basta un piano (2 dimensioni) ad accoglierlo tutto. Lo switch ha una complessità che cresce più che linearmente nella dimensione delle porte, e così anche il suo costo...
Tutte le schede Ethernet hanno un numero che le contraddistingue. I produttori di schede mondiali si sono messi d'accordo, e hanno fatto in modo che 2 schede prodotte non possano avere lo stesso MAC ADDRESS, perché così si chiama sto numero. Si tratta di un numero di 48 bit, cosicché ci sono 2^48 numeri diversi, e sono tanti.
Dal punto di vista del protocollo Ethernet, questo numero non dice niente, se non distinguere una scheda da un'altra. Tuttavia, è bene sapere che queste 48 bit, raggruppati in 6 doppie cifre esadecimali, non sono casuali, nel senso che servono per identificare il produttore, il modello etc. della scheda.
Quindi, i frames Ethernet per arrivare a destinazione hanno indicato dentro se stessi questo indirizzo MAC, così che 1 e 1 sola scheda (a meno di pirati) riceverà quel messaggio. Inoltre, nel frame è contenuto anche il MAC Address del mittente, così si può replicare.
Nell'header è contenuto un preambolo, costituito da 7 byte così fatti: 10101010. Si tratta infatti della sequenza col maggior numero di fronti (i fronti sono le variazioni di voltaggio, vedi prima, ma anche dopo. Belli questi rimandi criptici:).
Poi ci sono 48 bit di indirizzo del destinatario e 48 bit di indirizzo del mittente.
Poi c'è un campo che identifica il tipo di messaggio, in modo tale che il sistema operativo ricevente è in grado di capire a quale suo sottosistema inviarlo.
Se l'indirizzo è FF.FF.FF.FF.FF.FF, vuol dire che si manda il messaggio a tutti gli ascoltatori.
Tempo Back to Back
Il tempo Back to Back è di 9.6 microsecondi, ed è il tempo che ci mette il segnale a propagarsi sulla distanza minima prevista tra stazioni (che non so quale sia, presumo 1 metro o poco più). Una NIC attenderà 9.6 microsecondi da quando avverte la portante libera prima di inviare un nuovo messaggio. Così si cerca di evitare collisioni.
Se invece dopo aver aspettato invio, e ricevo una collisione, ecco che allora entra in campo la strategia di Backoff.
Con questa strategia, la prima volta che avverte una collisione la scheda sceglie un numero tra 1 e 4. La seconda volta tra 1 e 8 etc. Questo numero viene moltiplicato per i nostri 9.6 microsec, ed ecco che si ha il tempo random di attesa prima di ritentare l'invio. La probabilità che due schede facciano lo stesso numero è microscopica, soprattutto se si tiene conto che ci sono 10 tiri diversi, ognuno con una potenza di due in più di numeri del precedente. Se dopo il decimo tentativo c'è ancora collisione, la scheda deduce che c'è un malfunzionamento della rete e smette di funzionare.
Questa strategia di Backoff fa parte di Ethernet, non fa parte propriamente di CSMA/CD. In effetti, un'altra implementazione del CSMA/CD potrebbe usare un'altro sistema per sti tempi casuali.
Collisioni
Torniamo al discorso di prima, quello che tirava in ballo la lunghezza del cavo, il tempo di propagazione, la lunghezza del messaggio etc.
Lo standard 802.3 specifica quale deve essere il tempo di scrittura di un pacchetto: 51.2 microsecondi. È un vincolo che è stato dato per tenere sotto controllo gli altri parametri, cioè la banda, la lunghezza del cavo, le dimensioni del frame.
Il caso limite entro il quale occorre stare è il seguente: A invia un messaggio, e il primo bit di questo messaggio è vicinissimo a B quando B a sua volta invia un messaggio egli stesso, prima di accorgersi un istante dopo che la portante non è libera ma occupata. Per B ciò non importa: rileva una collisiona, rimanderà il frame più tardi. Ma il problema riguardava A, se ricordate quanto detto prima.
La stazione A deve accorgersi del messaggio di B, ma A deve accorgersene PRIMA di aver inviato tutto il suo messaggio, altrimenti non rileverà mai la collisione.
Quindi, vuol dire che 52.6 microsecondi è il tempo che ci vuole per un segnale per partire da A, arrivare a B e tornare indietro. Ed è esattamente quello che succede nel caso peggiore: B invia un messaggio un istante prima che il primo bit del messaggio di A gli arrivi, e il primo bit che B ha inviato deve tornare ad A prima che A termini di scrivere il suo messaggio.
52.6 microsecondi è quindi il tempo per fare due volte la strada. Quindi la strada deve essere percorribile nel tempo massimo di 25.8 microsecondi, ed in base a questo tempo si calcola la lunghezza massima del filo, in base all'ampiezza di banda: 2500 metri, con 4 ripetitori (che servono per amplificare il segnale che, lungo il filo elettrico, si perde).
Questa è la CONDIZIONE DI INTEGRITÀ SULLE COLLISIONI. Se il cavo è più lungo, non c'è garanzia che una stazione si accorga che un suo messaggio ha colliso con quello di qualcun altro.
Il tempo di 51.2 microsecondi è il tempo minimo di scrittura affinché una stazione si possa accorgere di una collisione. Se ci mettessi meno tempo, la condizione di integrità cadrebbe: il primo bit di B arriverebbe a me DOPO che ho già mandato via il mio ultimo bit.
È ovvio che se le schede sono più veloci, il tempo per scrivere i 1500byte del mio messaggio sarà inferiore, e di conseguenza anche la lunghezza del cavo dovrà essere inferiore, per preservare questa condizione di integrità. Quindi, l'Ethernet 100Mb arriva a qualche centinaio di metri, mentre la Gigaethernet arriva a pochi metri.
Filtraggio
Nel protocollo originario, a mandare e ricevere messaggi sono solo le schede. Leggono il destinatario dal frame, e decidono che cosa farne, se è accettabile. Gli indirizzi accettabili sono quelli che indicano un host, un indirizzo di broadcast(tutti 1, vedi sopra) o un indirizzo di multicast (un pacchetto leggibile da più stazioni, un po' in disuso ultimamente).
Bisogna però ricordare che Ethernet è un broadcast: TUTTE le schede ricevono TUTTI i messaggi, quindi ogni scheda fa del filtraggio sui frame che riceve: se le vanno bene, li accetta, se no semplicemente li scarta.
Quando una scheda è in modalità promiscua, invece, legge tutti i pacchetti che le arrivano, anche se non dovrebbero interessarle.
Throughput
Letto truput. Senza switch e con 4 repeater, secondo i progettisti di Ethernet si potrebbe arrivare fino a 1024 host, in realtà si arriva a 200 poi non ce la fa più. Infatti, più aumentano gli host, più aumentano le collisioni.
Se ho pacchetti troppo piccoli, si perde troppo tempo a tirare i dadi per la strategia di backoff. Se ho fili troppo lunghi mi ci vuole troppo tempo per controllare le collisioni.
Insomma, occorre una combinazione ottimale di numero di host, pacchetti sufficientemente grandi e fili abbastanza corti, e ottengo il truput massimo.
Il truput è la capacità effettiva di ricezione di un host. Il truput di una rete è la capacità globale della rete, al netto di tutte queste caratteristiche (cavi, numero host etc.). Ricordo sempre che Ethernet senza switch lavora decentemente fino a che il carico non supera il 30% della banda massima.
...anche detto Sistemi per l'elaborazione delle Informazioni, conduce Ernesto Damiani.
Appunti di Dario?
Nota dell'appuntatore: "qui sto mettendo tutti i miei appunti. Non so quanto ci metto, è veramente un sacco di roba. La formattazione non è ottimale, ci pensi qualche anima pia. Inoltre, ho cercato di essere chiaro e di spiegare ciò che il Damiani enumera ad altissimo bau-rate (abbaia). Il mio interlocutore ideale è Patrizia?. Spero 1) che sia utile e 2) che qualcuno lo legga!"
Lezioni:
Il segnale è una grandezza fisica che varia nel tempo, come le onde (sinusoidali, quadrate, a dente di sega?. NOTA: è ovvio che fisicamente non saranno mai onde perfette, perché la perfezione non è di questo mondo etc.etc.
Il segnale è una grandezza fisica che varia nel tempo, come le onde (sinusoidali, quadrate, a dente di sega. NOTA: è ovvio che fisicamente non saranno mai onde perfette, perché la perfezione non è di questo mondo etc.etc.
:: Sistemi Anticoncezionali delle Reti e dei Damiani ::
Tutte le schede Ethernet hanno un numero che le contraddistingue. I produttori di schede mondiali si sono messi d'accordo, e hanno fatto in modo che 2 schede prodotte non possano avere lo stesso MAC ADDRESS, perché così si chiama sto numero. Si tratta di un numero di 48 bit, cosicché ci sono 2^48 numeri diversi, e sono tanti.
Dal punto di vista del protocollo Ethernet, questo numero non dice niente, se non distinguere una scheda da un'altra. Tuttavia, è bene sapere che queste 48 bit, raggruppati in 6 doppie cifre esadecimali, non sono casuali, nel senso che servono per identificare il produttore, il modello etc. della scheda.
Quindi, i frames Ethernet per arrivare a destinazione hanno indicato dentro se stessi questo indirizzo MAC, così che 1 e 1 sola scheda (a meno di pirati) riceverà quel messaggio. Inoltre, nel frame è contenuto anche il MAC Address del mittente, così si può replicare.
Nell'header è contenuto un preambolo, costituito da 7 byte così fatti: 10101010. Si tratta infatti della sequenza col maggior numero di fronti (i fronti sono le variazioni di voltaggio, vedi prima, ma anche dopo. Belli questi rimandi criptici:).
Poi ci sono 48 bit di indirizzo del destinatario e 48 bit di indirizzo del mittente.
Poi c'è un campo che identifica il tipo di messaggio, in modo tale che il sistema operativo ricevente è in grado di capire a quale suo sottosistema inviarlo.
Se l'indirizzo è FF.FF.FF.FF.FF.FF, vuol dire che si manda il messaggio a tutti gli ascoltatori.
Tempo Back to Back
Il tempo Back to Back è di 9.6 microsecondi, ed è il tempo che ci mette il segnale a propagarsi sulla distanza minima prevista tra stazioni (che non so quale sia, presumo 1 metro o poco più). Una NIC attenderà 9.6 microsecondi da quando avverte la portante libera prima di inviare un nuovo messaggio. Così si cerca di evitare collisioni.
Se invece dopo aver aspettato invio, e ricevo una collisione, ecco che allora entra in campo la strategia di Backoff.
Con questa strategia, la prima volta che avverte una collisione la scheda sceglie un numero tra 1 e 4. La seconda volta tra 1 e 8 etc. Questo numero viene moltiplicato per i nostri 9.6 microsec, ed ecco che si ha il tempo random di attesa prima di ritentare l'invio. La probabilità che due schede facciano lo stesso numero è microscopica, soprattutto se si tiene conto che ci sono 10 tiri diversi, ognuno con una potenza di due in più di numeri del precedente. Se dopo il decimo tentativo c'è ancora collisione, la scheda deduce che c'è un malfunzionamento della rete e smette di funzionare.
Questa strategia di Backoff fa parte di Ethernet, non fa parte propriamente di CSMA/CD. In effetti, un'altra implementazione del CSMA/CD potrebbe usare un'altro sistema per sti tempi casuali.
Collisioni
Torniamo al discorso di prima, quello che tirava in ballo la lunghezza del cavo, il tempo di propagazione, la lunghezza del messaggio etc.
Lo standard 802.3 specifica quale deve essere il tempo di scrittura di un pacchetto: 51.2 microsecondi. È un vincolo che è stato dato per tenere sotto controllo gli altri parametri, cioè la banda, la lunghezza del cavo, le dimensioni del frame.
Il caso limite entro il quale occorre stare è il seguente: A invia un messaggio, e il primo bit di questo messaggio è vicinissimo a B quando B a sua volta invia un messaggio egli stesso, prima di accorgersi un istante dopo che la portante non è libera ma occupata. Per B ciò non importa: rileva una collisiona, rimanderà il frame più tardi. Ma il problema riguardava A, se ricordate quanto detto prima.
La stazione A deve accorgersi del messaggio di B, ma A deve accorgersene PRIMA di aver inviato tutto il suo messaggio, altrimenti non rileverà mai la collisione.
Quindi, vuol dire che 52.6 microsecondi è il tempo che ci vuole per un segnale per partire da A, arrivare a B e tornare indietro. Ed è esattamente quello che succede nel caso peggiore: B invia un messaggio un istante prima che il primo bit del messaggio di A gli arrivi, e il primo bit che B ha inviato deve tornare ad A prima che A termini di scrivere il suo messaggio.
52.6 microsecondi è quindi il tempo per fare due volte la strada. Quindi la strada deve essere percorribile nel tempo massimo di 25.8 microsecondi, ed in base a questo tempo si calcola la lunghezza massima del filo, in base all'ampiezza di banda: 2500 metri, con 4 ripetitori (che servono per amplificare il segnale che, lungo il filo elettrico, si perde).
Questa è la CONDIZIONE DI INTEGRITÀ SULLE COLLISIONI. Se il cavo è più lungo, non c'è garanzia che una stazione si accorga che un suo messaggio ha colliso con quello di qualcun altro.
Il tempo di 51.2 microsecondi è il tempo minimo di scrittura affinché una stazione si possa accorgere di una collisione. Se ci mettessi meno tempo, la condizione di integrità cadrebbe: il primo bit di B arriverebbe a me DOPO che ho già mandato via il mio ultimo bit.
È ovvio che se le schede sono più veloci, il tempo per scrivere i 1500byte del mio messaggio sarà inferiore, e di conseguenza anche la lunghezza del cavo dovrà essere inferiore, per preservare questa condizione di integrità. Quindi, l'Ethernet 100Mb arriva a qualche centinaio di metri, mentre la Gigaethernet arriva a pochi metri.
Filtraggio
Nel protocollo originario, a mandare e ricevere messaggi sono solo le schede. Leggono il destinatario dal frame, e decidono che cosa farne, se è accettabile. Gli indirizzi accettabili sono quelli che indicano un host, un indirizzo di broadcast(tutti 1, vedi sopra) o un indirizzo di multicast (un pacchetto leggibile da più stazioni, un po' in disuso ultimamente).
Bisogna però ricordare che Ethernet è un broadcast: TUTTE le schede ricevono TUTTI i messaggi, quindi ogni scheda fa del filtraggio sui frame che riceve: se le vanno bene, li accetta, se no semplicemente li scarta.
Quando una scheda è in modalità promiscua, invece, legge tutti i pacchetti che le arrivano, anche se non dovrebbero interessarle.
Throughput
Letto truput. Senza switch e con 4 repeater, secondo i progettisti di Ethernet si potrebbe arrivare fino a 1024 host, in realtà si arriva a 200 poi non ce la fa più. Infatti, più aumentano gli host, più aumentano le collisioni.
Se ho pacchetti troppo piccoli, si perde troppo tempo a tirare i dadi per la strategia di backoff. Se ho fili troppo lunghi mi ci vuole troppo tempo per controllare le collisioni.
Insomma, occorre una combinazione ottimale di numero di host, pacchetti sufficientemente grandi e fili abbastanza corti, e ottengo il truput massimo.
Il truput è la capacità effettiva di ricezione di un host. Il truput di una rete è la capacità globale della rete, al netto di tutte queste caratteristiche (cavi, numero host etc.). Ricordo sempre che Ethernet senza switch lavora decentemente fino a che il carico non supera il 30% della banda massima.
CSMA / CD
Carrier Sensing Multiple Access / Collision Detection.
Inventato da Bob Metcalfe, è il sistema che sta alla base di Ethernet. Nella stessa parola Ethernet, si ritrova Ether, cioè etere, ovvero il richiamo alle onde radio del sistema Slotted Aloha.
Carrier Sensing vuol dire che si rileva (sensing) la portante (carrier): quando questa è pulita, vuol dire che posso cercare di trasmettere i dati che voglio. Come con Aloha, si fa il confronto tra dati inviati e ricevuti: se coincidono, allora la trasmissione non è disturbata, altrimenti c'è stata una collisione da qualche parte.
Che cosa avviene quando c'è una collisione? Certo, si deve aspettare un certo po' di tempo per riprovare, ma quanto? Ci sono diverse strategie:
- non persistent = aspetto un tempo random. Siccome è poco probabile che tutte le stazioni selezioneranno lo stesso tempo random, è quasi come darsi i turni ed evitare le collisioni.
- 1 persistent = aspetto un tempo determinato
- p-persistent = una via di mezzo tra le due precedenti.
Da notare che tutti sti protocolli a contesa funzionano bene se il carico totale sulla rete è basso. In effetti, il rapporto tra banda impegnata e non impegnata non deve superare il 30%, nel caso dell'Ethernet. Questo perché altrimenti le collisioni diventerebbero tante, e si sprecherebbe tantissimo tempo. In caso di traffico più elevato occorrono protocolli Collision Free. Una delle ragioni del successo di Ethernet si è avuta nel fatto che ci sono state molte schede a basso costo: costando così poco la banda, non c'era problema anche se la si usava solo al 30%.
Negli ultimi tempi, tuttavia, con gli switch che vedremo più sotto, non c'è quasi più bisogno di gestire le collisioni, quindi la banda viene sfruttata completamente.
Soluzione adattiva
Questo titolo altisonante e vagamente misterioso si riferisce ad un sistema di gestione del traffico di rete che è una specie di misto di quelli visti finora. Non appena si rileva una collisione, si mette il gruppo su cui si è verificata la collisione in modalità Collision Detection, mentre le comunicazioni tra gruppi avvengono con Collision Free. Questo cambio di modalità dipende dalle condizioni del traffico, per questo viene detto adattivo.
Visione unificante
Per tirare un po' le somme di questi sistemi, e vedere dove e come sono utili, viene buono il seguente schema:
- Si ha basso carico & si vuole poca latenza => Protocollo a contesa
- Si ha alto carico & si vuole massima efficienza => Collision Free
- Carico variabile & Problemi assortiti => Ibridi vari
Perché il protocollo a contesa ha il vantaggio di avere poca latenza? Innanzitutto, la latenza è l'intervallo di tempo che passa dalla richiesta di trasmissione all'effettivo invio dei dati. Nei sistemi Aloha e derivati, quando voglio trasmettere trasmetto, saranno gli altri a fermarsi, e tipicamente essendo il carico non superiore al 30% questo avviene quasi sempre: invio subito. Il problema sta invece nell'efficienza: non appena il carico si alza, allora le collisioni diventano così tante che continuo a inviare roba e non arriva mai! Ecco perché se voglio inviare tanta tanta merce, è meglio usare un protocollo Collision Free: quando partono i dati, nessuno li ferma. Lo svantaggio dei sistemi Collision Free al converso sta nella latenza: siccome tutte le stazioni si devono mettere d'accordo per decidere i turni, si perde tanto tempo dal momento in cui io esprimo la volontà di inviare i miei dati a quando effettivamente questi miei dati avranno il turno libero. Più si è in tanti, più ci si mette tempo a mettersi d'accordo.
Ether Parisi
E le cicale, cicale cicale cicale. E la formica, ci cale ci cale mica.
È proprio vero che il cavo di rete dell'Ethernet sia proprio come l'Ethere? Metcalfe ha usato questo paragone, perché si rifaceva all'Aloha: io trasmetto, e tutti sentono.
Ma c'è una differenza: se tutti sono collegati al cavo, è scontato che tutti sentano il messaggio da me inviato. Nel caso dell'Ethere vero, invece, può anche darsi che ci siano stazioni che NON si accorgano del messaggio perché sono fuori campo! Questo è proprio il caso delle reti Wireless.
È il problema dell' Hidden Terminal: A vuole parlare a B, e sente il campo libero, e invia. Allo stesso tempo anche C vuole mandare a B, e siccome è distante da A e non si accorge che A sta parlando, parla anche lui. In casi come questo Ethernet non funziona, perché cade miseramente uno dei principi base del CSMA/CD: la Collision Detection! Infatti nel caso qui citato non c'è nessuna collision detection perché né A né B se ne accorgono! Ahi ahi ahi!
E non è finita qui: c'è anche il problema inverso, quello della Stazione Esposta. A parla con B, e C vuole parlare con D. Sono tutti nello stesso campo. C vorrebbe parlare, ma sente che il campo è occupato dalla conversazione di A con B, e allora si astiene, mentre in realtà potrebbe benissimo parlare con D perché A sta parlando con B e non con D. Bia bi e e ba be bi e i babebi bi e o babebibo bi e u bu babebibobu.
La soluzione è adottare schemi più complicati. Chi vuole intavolare una discussione invia un messaggio RTS: Request To Send, un avviso di intenzione di voler parlare. Finché non ricevo un CTS, cioè un Clear To Send (libero di parlare) non comincio. Questi messaggi vanno avanti e indietro per tutto il campo, tirando in mezzo anche le stazioni che non si sentono direttamente.
1 Ottobre 2007
La lezione di oggi inizia con un bel The page cannot be displayed. Poi prosegue ricordandoci che le tecniche CSMA risolvono le collisioni NON in modo preventivo, ma dopo che sono avvenute: non fanno niente per evitare che accadano, e quando accadono cercano di porvi rimedio.
Un'importante implicazione di questo modo di rilevare le collisioni è che i messaggi abbiano una lunghezza finita e predeterminata, altrimenti chi si impossessa della rete la invade tutta lui e gli altri collideranno per sempre e taceranno per sempre, con loro somma insoddisfazione.
Inoltre, pensiamo a questa cosa. Supponiamo che A stia inviando messaggi. B sente la rete occupata e aspetta che finisca il messaggio di A, e poi tocca a lui. Non c'è stata nessuna collisione. In effetti, se ognuno aspetta che la rete si liberi, sapendo che ciò prima o poi accadrà perché i pacchetti hanno lunghezza finita e dopo aver inviato un pacchetto una stazione aspetterà un minimo di tempo, perché le collisioni avvengono ugualmente? Com'è possibile che, se una stazione invia messaggi SOLO quando la portante è libera, possa creare collisioni? Una collisione si ha quando due stazioni inviano messaggi contemporaneamente. Ma quando mai due stazioni iniziano nello stesso microtetosecondo ad inviare messagi? Mai.
Eppure le collisioni accadono, ed è un dato di fatto. Occorre quindi tirare in ballo un'altra caratteristica: la posizione reciproca delle stazioni.
Le onde elettromagnetiche che viaggiano nel cavo di rete non hanno velocità infinita, ma prossima ai 2*10^8 m/s. Per andare da un punto ad un altro ci metteranno per forza di cose un tempo, piccolo come vogliamo, ma pur sempre apprezzabile da dispositivi elettronici che lavorano velocissimamente. Quindi è possibilissimo questo scenario: A trasmette il suo messaggio. Prima che il messaggio arrivi a B (B è messo qualche metro più in là lungo il cavo), B tasta la portante e la sente libera: esulta e dice "tocca a me!". Ma dopo aver inviato qualche cosuccia ecco che arriva il segnale di A che mentre B esultava ed inviava percorreva inesorabile il cavo di rete. Ecco come avvengono le collisioni: perché il segnale ha una velocità finita di trasmissione!
Così facendo, il CSMA/CD si accorge della collisione, e A può allora reinviare il suo pacchetto, e B aspettare ancora.
Ma facciamo ancora una considerazione: A e B sono molto, molto lontani. A invia un messaggio lungo la rete, e quando termina di inviare il messaggio, e la portante è ancora libera. Per quanto ne sa, non è accaduta nessuna collisione. Invece, B è così lontana che prima che il messaggio di A arrivi a B, B ha fatto in tempo ad inviare una parte del suo. Questi due messaggi si scontreranno a metà strada. La cosa brutta è che A non si accorgerà minimamente della collisione, perché quando arriveranno i dati mischiati del suo messaggio e di quello di B, lei avrà già finito di trasmettere il suo messaggio, e non starà più rilevando le collisioni su quel messaggio. Capita la faccenda?
Questo è il motivo per cui i cavi di rete Ethernet non hanno lunghezza infinita, e perché Ethernet si chiama rete locale: più in là di certi metri il cavo non può andare, per evitare che accada quanto illustrato nel paragrafo precedente.
A questo punto si instaura nelle nostre menti matematiche un legame tra ampiezza di banda, lunghezza del messaggio e lunghezza del cavo.
L'ampiezza di banda è quanti bit al secondo può trasmettere. Nel mio protocollo di rete la lunghezza del messaggio è di 1000bit. Se supponiamo una larghezza di banda di 100 bit al secondo, vuol dire che per trasmettere 1000 bit mi ci vogliono 1000/100 = 10s. In 10 secondi, quanta strada può fare il mio impulso? Se viaggia a 100 m/s, in 10 secondi ha percorso 100 * 10 = 1000 metri, quindi vuol dire che il computer più lontano dovrà essere al max a 1000 metri. Alles klar, Herr Kommisar?
Ma c'è di più: occorre tenere conto che in un cavo di 1000 metri, il voltaggio che parte all'inizio andrà per la maggior parte a puttane durante alla strada, e magari ora che arriva al millesimo metro è già stato tutto assorbito dalla resistività del filo: occorre tenere a mente anche questo per calcolare la lunghezza massima di un cavo di rete. Nella proposta originale dell'Ethernet, il cavo poteva essere al max lungo 512 metri circa.
Questo serve anche a far capire che Ethernet non è solo CSMA/CD e basta, ci sono tante altre cose da tenere in considerazione, come per esempio le caratteristiche elettriche della portante, i cavi e tutte ste cose materiali.
Com'è fatto un frame
LLC = Logical Link Control, ed è la parte dello standard Ethernet che mi dice come è strutturato un frame. Il frame è il messaggio che viene inviato tra le NIC (Network Interface Card, ovvero semplicemente schede di rete) in una Ethernet.
Un cavo di rete Ethernet 10Mbit ha bisogno di 50Mhz di banda portante, quindi occorrono la 3a e la 5a armonica della portante. (Non so perché è scritto a questo punto, però va beh).
Un messaggio è composto da Trailer, Payload e Header. Il Trailer è la parte di coda. Il Payload è il carico, ciò che sta in mezzo, e l'Header è la parte di testa, l'intestazione.
Il Trailer contiene le informazioni che servono per cercare di correggere un eventuale messaggio corrottosi durante la strada. L'Header contiene invece le informazioni necessarie per recapitare il messaggio stesso: siccome tutte le stazioni collegate al cavo riceveranno quel messaggio, è d'uopo che sappiano quale di loro debba effettivamente leggerlo. Oggi come oggi a dire la verità non si sbaglia mai a trasmettere, quindi il Trailer sarebbe inutile, però lo standard è del 78, quindi in quei tempi preistorici serviva eccome. Sì, sì, anche io sono preistorico.
NOTA: il fatto che tutte sentano lo stesso messaggio, si chiama broadcast, cioè trasmissione, ed è lo stesso termine che si usa per le radio e le televisioni, perché funziona allo stesso modo.
La IEEE fissa gli standard di rete, sia a livello di frame (livello 2) che a livello fisico (livello 1):
- 802.3 = Ethernet a 2 Mbps (quella originale), Mbps = mega bit per secondo
- 802.3u = Ethernet 100Mbps
- 802.3z = Ethernet 1000Mbps (1 Gygabit)
La lunghezza massima è di 2500 metri, ovvero 4 cavi da 500 metri con dei Repeater (amplificatori e ripetitori) tra un cavo e l'altro.
Ci sono due topologie di connessione: BUS e STAR. Per topologia di connessione si intende, per così dire, il disegnino che rappresenta come vengono collegate le stazioni. La topologia BUS vede un bel cavo e tutti che si collegano a questo cavo. La topologia STAR invece vede un nodo centrale e tutti i cavi che si collegano a questo nodo. Una volta si usava la topologia BUS: si prendeva un filo e si tiravano le derivazioni. Adesso invece prevale la topologia STAR: da ogni computer parte un cavo che arriva ad un HUB o SWITCH o quel diavolo che volete, e ci pensa quella macchinetta a smistare l'ambaradan.
Occorre sapere però che, a parte la comodità di tirare i cavi in un modo o nell'altro, tra BUS e STAR non cambia niente. L'HUB dal punto di vista di Ethernet altro non è che un pezzo di cavo, con tante derivazioni racchiuse in pochi centimetri. Invece di tirare un cavo in mezzo al laboratorio e ogni computer si collega direttamente al cavo, si tira un cavo da ogni computer al centro della stanza. Ma la funzione è esattamente la stessa, solo che in molti casi è più comoda.
Lo SWITCH invece è ben altra cosa. Non è semplicemente un cavo. Lo Switch è un dispositivo che realizza FISICAMENTE, cioè con dei contatti, tutte le combinazioni possibili tra le porte. Se ci sono 4 porte, la porta 1 avrà un cammino dedicato alla 2, alla 3 e alla 4. La porta 2 avrà un cammino dedicato alla 1, alla 3 e alla 4 e così via. In termini matematici è un grafo completo, in cui tutti i nodi sono collegati da cammini indipendenti. Finché sono 4 porte va beh, è facile da fare. Ma quando le porte sono di più? In questo caso, non è più possibile tracciare contatti su una singola piastra di silicio, perché ci sarebbero degli accavallamenti: si dice che il grafo non è planare, ovvero non basta un piano (2 dimensioni) ad accoglierlo tutto. Lo switch ha una complessità che cresce più che linearmente nella dimensione delle porte, e così anche il suo costo...
(:title Sistemi Anticoncezionali delle Reti e dei Damiani:) Nota di Dario: qui sto mettendo tutti i miei appunti. Non so quanto ci metto, è veramente un sacco di roba. La formattazione non è ottimale, ci pensi qualche anima pia. Inoltre, ho cercato di essere chiaro e di spiegare ciò che il Damiani enumera ad altissimo bau-rate (abbaia). Il mio interlocutore ideale è Patrizia. Spero 1) che sia utile e 2) che qualcuno lo legga!
Sistemi
25 settembre 2007
La trasmissione consiste di segnali su reti che portano sequenze di bit. Queste sequenze possono essere dati, files, video etc. etc.
Nei computer i bit sono statici: sono rappresentati fisicamente da cariche immagazzinate in piccoli condensatori nelle varie memorie del computer. La trasmissione invece deve rappresentare questi bit statici nel dominio del tempo, cioè trasmetterli uno dopo l'altro.
Il segnale è una grandezza fisica che varia nel tempo, come le onde (sinusoidali, quadrate, a dente di sega?. NOTA: è ovvio che fisicamente non saranno mai onde perfette, perché la perfezione non è di questo mondo etc.etc.
Un segnale è periodico quando si ripete uguale a se stesso dopo un certo periodo di tempo. La frequenza mi dice appunto quante sono le ripetizioni di un segnale nell'arco di un secondo: 1 Hz = 1 ripetizion al secondo. Il periodo è invece il tempo che passa tra l'inizio di una forma d'onda e la sua ripetizione. È l'opposto della frequenza.
Le onde sinusoidali sono proiezioni sull'asse y di un punto sulla circonferenza, il quale punto ruota in senso antiorario. Non c'è lo schemino. Un'onda sinusoidale si può determinare univocamente in base ad ampiezza (cioè la lunghzza del raggio, ovvero quanto è alta la cresta dell'onda), frequenza e fase, cioè quando inizia, ovvero se all'istante di tempo 0 l'onda è a 0, a 1 oppure in qualche posizione intermedia. Le onde sinusoidali sono importanti perché
- facili da generare
- perché c'è Fourier.
Fourier era un matematico francese il quale dice che ogni onda periodica può essere ottenuta con la somma di un certo numero di componenti sinusoidali. Onda periodica vuol dire un'onda dal profilo qualsiasi, ma che abbia un periodo. Queste componenti sinusoidali sono dette armoniche. Ecco che ogni onda periodica è quindi scomponibile in onde sinusoidali, dette armoniche del segnale, e se prendo un treno di bit e lo vedo come un'onda periodica, ecco che posso scomporlo in onde sinusoidali facilmente riproducibili.
Problema: Fourier vale per i segnali periodici, ma in genere le sequenze di bit non sono periodiche. Quindi? Vedi dopo.
Le varie armoniche, tutte a frequenze diverse, sono dette componenti spettrali, e l'ampiezza delle armoniche sull'asse delle frequenze si chiama spettro. Per far capire ciò uso dei numeri a caso: se per generare un segnale periodico uso 10 armoniche, ed ognuna lavora a 10 Hz più dell'altra, ecco che il mio spettro ha un'ampiezza di 10 onde * 10 Hz = 100Hz. Questa differenza di Hz si chiama banda. Da notare che è una differenza: vuol dire che è la differenza tra l'armonica con frequenza più alta e l'armonica con frequenza più bassa. Se la più bassa è a 1000Hz e la più alta è a 1100Hz, l'ampiezza è 100Hz. Se la più bassa è a 2000Hz e la più alta è a 2100Hz, l'ampiezza è sempre 100Hz. L'armonica più bassa si chiama fondamentale.
NOTA: secondo la teoria, ci possono essere infinite armoniche, ma è chiaro che occorre approssimare, e in genere ci si ritiene soddisfatti quando si sono generate abbastanza armoniche da coprire il 90% del segnale originale. Posso immaginare le armoniche esattamente come le bande verticali di un equalizzatore, che sia l'eq di uno stereo o di un lettore multimediale etc. Questo equalizzatore ha degli slider verticali, ognuno con la sua brava etichetta che dice "100Hz", "300Hz", "1500Hz" e così via. Se alzo uno di questi slider, vuol dire che tutte le onde che lavorano intorno alla frequenza dello slider stesso avranno un'ampiezza più alta: ciò vuol dire che se alzo lo slider dei 100Hz, le frequenze che lavorano intorno ai 100Hz saranno più grandi in ampiezza.
Posso quindi rappresentare un segnale graficamente tramite un istogramma delle sue armoniche, in cui in genere l'altezza di un segmento è proporzionale al quadrato dell'ampiezza max dell'armonica corrispondente. Ripassando, lo spettro è la distanza tra la fondamentale (l'armonica più bassa) e la più alta armonica. Questo istogramma si chiama spettrogramma.
Una situazione frequente è che il mio spettro va per esempio dai 1000Hz ai 20000Hz, ma il mezzo che uso per la riproduzione non abbia la stessa risposta in frequenza. Per esempio, le casse dei computer in genere hanno pochi bassi: vuol dire che rispondono solamente a frequenze che partono dai 500Hz in su, per esempio. Ciò vuol dire che il mio segnale originale viene tagliato, e quindi perdo una parte di informazione (in questo caso, il tum tum delle canzoni, che lo sento come se fosse un toc toc). Praticamente, le mie casse fanno da filtro, e si può immaginare di creare filtri da usare deliberatamente. I filtri fermano certe armoniche e ne fanno passare altre. Che utilità hanno? Per esempio, se sto registrando da un microfono che ha un brusio di fondo, posso tagliare dai 50Hz in giù per eliminarlo, perché in genere è dovuto alla corrente elettrica che da noi è a 50Hz.
Quando il segnale NON è periodico, Fourier non trasforma più l'onda complessa in componenti sinusoidali che si sommano (cioè una serie), ma la trasforma in integrali: è la famosa trasformata di Fourier. Questi integrali appartengono alla matematica del Cariboni e quindi sono continui, non discreti come le barre di un istogramma.
Rete telefonica
La rete telefonica trasforma la voce in corrente e poi di nuovo in suono. Lo fa perché la corrente si può trasportare per lunghe distanze, la voce che non sia di Patrizia? no.
La voce quando esce dalla cavità orale è aria che si muove con più o meno pressione: questa variazione di pressione può essere captata comodamente in diversi modi. Uno dei più banali è l'orecchio. L'orecchio ha una membrana che reagisce allo spostamento d'aria, la quale muove vari ossicini che sono collegati al nervo, il quale poi trasmette queste vibrazioni al cervello, il quale le interpreta come suoni.
Antonio Meucci ebbe l'idea di sfruttare l'effetto piezoelettrico per generare corrente a partire dalla variazione di pressione. Ci sono certi materiali che quando vengono compressi generano una tensione elettrica proporzionale alla compressione. Uno di questi materiali è quella roba di carbone che si trova nelle cornette del telefono, o almeno, in quelle vecchie. Il segnale elettrico così generato viaggia sul filo e alla fine del percorso viene catturato da un'altra membrana, simile a quella in partenza, che vibra a sua volta in funzione della corrente, riproducendo così la voce originale.
Buona idea. Problema: va bene per i citofoni. Il filo deve andare direttamente da una membrana all'altra. Finché ho due ricevitori (il citofono, appunto) va bene, ma se ho devo parlare con più persone, che faccio? Tiro un filo da ogni casa ad ogni casa? Qui entra in gioco l'idea di Graham Bell, il quale ha usato le sinusoidi in questo modo. Prende un segnale periodico con frequenza fissa, ed utilizzo il segnale della voce per modificarlo e creare così un'onda diversa: si chiama modulazione. Il segnale fisso è detto portante, e il segnale che lo modifica si chiama modulante.
Se ho due microfoni, uso semplicemente due portanti diverse, così che posso su una portante moltiplicare il segnale della mia voce, e sull'altra moltiplicare il segnale della voce di qualcun altro: stesso filo, due conversazioni. Se ho più voci, uso più portanti. Come faccio a distinguere tra due portanti diverse? Occorre usare le formule di prostaferesi, che si trovano nel Necronomicon.
Quindi, posso avere una portante a 100 Hz, una a 200Hz, una a 300 Hz etc. etc. Se il mio filo ha una risposta in frequenza che va da 100 a 1000 Hz, ecco che posso avere 10 conversazioni contemporanee con 10 portanti diverse.
Questo procedimento si chiama multiplexing a divisione di frequenza, FDM come acronimo inglese.
Siccome le portanti non sono infinite, c'erano le centraliniste che collegavano fisicamente i cavi per far comunicare utenti lontani l'uno dall'altro, nel caso in cui un utente era su di una linea e l'altro su di un'altra (ovvero sempre a meno che non si abiti nello stesso quartiere).
Telefonia digitale
Si campiona la voce, si trasforma il campione in bit, e poi si modula il treno di bit...
Il campione è la frequenza con cui vado ad analizzare la voce per analizzarne l'onda. Se sto campionando a 22Khz vuol dire che ogni secondo prelevo 22000 piccoli campioni dalla forma d'onda della mia voce. La frequenza di campionamento non è scelta a caso. Secondo il teorema di Nyquist, per mantenere un segnale identico dopo il campionamento, mi occorre una frequenza di campionamento che sia pari almeno al doppio dell'armonica più alta del mio segnale.
La voce ha l'armonica più alta a 4Khz, quindi vuol dire che per rappresentarla fedelmente mi occorre campionare a 8khz, cioè raccogliere ogni secondo 8000 immagini diverse della forma d'onda della voce. Il CDROM funziona a 44.1 Khz, il che vuol dire che può rappresentare, al massimo, frequenze che si aggirano intorno ai 22050 Hz. Non è un valore scelto a caso, dato che in generale l'orecchio umano discerne suoni che arrivano a un po' prima dei 20000 Hz, e le frequenze superiori vengono comunque percepite inconsciamente e servono ad arricchire il suono.
Ma non basta campionare 8000 volte al secondo. Ogni singolo campione è una piccola porzione della forma d'onda che la voce assume. Questo piccolo campione, quanti valori può assumere? Supponendo di disegnare la voce come un'onda su di un grafico, e di dividerla in tante piccole torri verticali che rappresentano i campioni, la domanda di questo paragrafo è: quanto deve essere alta ogni torre?
La risposta a questa domanda viene data tramite la risoluzione del campione. I sistemi di telefonia digitale campionano a 8Khz e 8 bit. 8 bit significa 2^8 = 256 valori, il che vuol dire che le mie piccole torri saranno tutte divise più o meno brutalmente in 256 classi. La classe con valore minimo ha ampiezza 0, la classe con valore massimo ha ampiezza 256. Quindi, ogni singolo campione porterà con sé il suo valore in bit, che ne rappresenta l'ampiezza, ed in questo caso questo valore può assumere 256 valori diversi. Per tornare all'esempio del CDROM, questo lavora invece a 16 bit, cioè ogni singolo campione dei 44100 che analizzo ogni minuto può assumere 2^16 = 65536 valori diversi.
È chiaro che più la risoluzione in bit è alta, più il segnale sarà fedele. Il limite degli 8 bit è che non è vero che l'orecchio umano discerne solo 256 livelli di volume. Già 16bit è più accettabile.
La frequenza e la risoluzione mi permettono anche di determinare quanti bit al secondo mi servono per codificare la mia informazione originale, in questo caso, la voce. Il bitrate è la misura della trasmissione di bit al secondo: bit / secondo. Se ho 8000 campioni, ciascuno con 8 bit, vuol dire che ogni secondo avrò 8 * 8000 = 64000 bit da trasmettere, ovvero 64Kbps (64 kilo bit per secondo).
Ora, la mia modulante non sarà più la forma d'onda originale della mia voce, ma sarà questo treno di bit: ogni singolo bit determinerà una variazione di una forma d'onda, variazione che viene decisa dagli standard, e l'onda risultante sarà utilizzata per modulare la portante come abbiamo visto prima, cioè col metodo FDM di Graham Bell.
Il sistema che si usa per portare la voce digitalizzata è il PSTN: da casa fino alla centralina la voce corre analogicamente sul filo, che è detto local loop. Poi nella centralina si digitalizza la voce e la si mette su di una portante FDM fino alla centrale di zona, e poi lì viene smistata bla bla fino al destinatario, finché la sua centralina non riconverte la portante modulata con la mia voce digitalizzata in segnale analogico, il quale alla fine viene ritrasformato in suono dal suo apparecchio telefonico... puff puff!
I collegamenti tra le centrali sono detti trunk, e sono interamente digitali. Se i vari collegamenti sono fatti bene, tra le varie centraline a livello gerarchico, ciò significa che io da casa posso raggiungere qualsiasi altro numero telefonico in tutta Italia, o anche nel mondo. Una volta c'era la centralinista che connetteva nel pannello di fronte a sé i fili: uno veniva dalla mia centrale di zona, l'altro dalla centrale di zona della mia morosa, e lei li univa fisicamente con degli spinotti. Invece adesso c'è la teleselezione: compongo un numero, il quale viene analizzato: il prefisso mi dice la zona, i primi due numeri la sottozona etc. fino a scegliere l'abbonato, e i computer mi hanno connesso automaticamente. Una volta ho letto un racconto di un telefono che si era innamorato della centralinista, e quando sono passati alla teleselezione e non c'era più la centralinista, si era rifiutato di funzionare ancora.
Per far funzionare la teleselezione occorre che il sistema telefonico capisca, in base al numero che io digito sulla tastiera del mio telefono, come trovare l'altro numero. Una volta c'era la centralina che commutava manualmente i circuiti, e questa operazione viene detta circuit switching: metteva fisicamente in contatto il circuito del mio telefono col circuito del telefono della morosa. Invece adesso c'è la teleselezione, e al posto della centralina si usano dei messaggi di controllo che automaticamente uniscono i nostri due telefoni nel modo spiegato nel paragrafo sopra.
Per inviare questi messaggi di controllo, posso adoperare 2 strategie differenti. La prima è quella di usare dei suoni particolari, all'interno dello spettro che effettivamente viene usato dai telefoni, per dare ordini alle varie centraline. Si chiama in-band sygnaling. Vuol dire questo: lo spettro dei suoni viene filtrato, supponiamo, dai 300Hz fino ai 4Khz per farci passare la mia voce. In questo spettro, si è scelto di dedicare (dico a caso) un fischio dell'ampiezza di 3800 Hz per indicare il numero 0, uo a 3820Hz per indicare il numero 1 e così via. Questo sistema lo si usava in America, e non è leggenda ma verità che c'era gente che era riuscita a interpretare questo linguaggio di fischi, e trovato il modo di riprodurlo con fischietti vari, riusciva a dare gli ordini che voleva alla centralina, come per esempio chiamare gratis.
Da noi invece si usa la seconda strategia, che è quella dell' Out of band sygnaling, ovveri c'è una piccola banda dedicata a far funzionare la teleselezione e le altre amenità. Le reti di computer, tra l'altro, sono In-band, perché ovviamente non val la pena tirare un cavo per i dati e un altro per le informazioni di controllo, oltre a essere irrealizabile.
Per concludere, c'è il PBX, che vuol dire Private Branch Exchange, che altro non è che una centralina come quelle che ci sono in ogni quartiere, solo che non è in un quartiere, ma è installata all'interno di un'azienda o simili. In questo modo quando alzo il telefono il numero che compongo non viene passato alla Telecom, ma viene teleselezionato all'interno degli uffici dell'azienda. Con questo sistema in genere se voglio chiamare all'esterno devo prima fare lo 0, così che il PBX mette in comunicazione il mio telefono col mondo circostante. È quello che succede quando le segretarie compongono il numero 126 e risponde il grande capo nell'altro ufficio e gli annunciano visite, come nei film. Il PBX può essere uno scatolo fisico, oppure una simulazione che la Telecom ti fa attraverso la rete normale.
Multiplexing Digitale
Se la voce viene digitalizzata, perché devo usare ancora l'FDM analogico? Non posso usare un sistema direttamente digitale? È la domanda che si sono fatti alla Bell, in America.
La risposta è stata l'idea di fare multiplexing non nel dominio delle frequenze (cioè una portante a frequenza diversa per ogni segnale) ma nel dominio del tempo (cioè ogni segnale ha una sua finestra temporale, e ad ogni segnale ne segue un altro in rapida successione). C'è una portante ad alta frequenza, che trasmette modulanti una dopo l'altra.
Questo affare si chiama TDM, cioè time division multiplexing. Ha il vantaggio di essere facilmente standardizzabile, e di essere facilmente scalabile (cioè si può aumentare la dimensione dell'installazione in modo coerente). Infatti, posso fare TDM su un altro TDM, e così via, a livelli gerarchici. In America ciò è stato chiamato T1, da noi in Europa si chiama E1. Avviene che da loro le linee telefoniche siano a 7 bit, quindi con un bitrate di 56kbps. Una linea T1 trasmette ogni secondo 24 linee normali, ovvero 24 * 56kbps. Ciò vuol dire che trasmetto io, poi il mio vicino di casa, poi l'altro vicino ancora etc. e dopo 24 persone tocca ancora a me, poi ancora al vicino e così via. In Europa le E1 lavorano invece con 24 utenti, ma a 8 bit.
Quando dicevo "fare il TDM del TDM" vuol dire quanto segue. Prendo una T1, e la metto su di un cavo T2, che porta 4 T1 una dopo l'altra. Ciò vuol dire che il cavo T2 mi porta fino a 24 * 4 = 96 utenti finali, uno dopo l'altro. È chiaro che una linea T2 deve essere 4 volte più veloce di una linea T1. A sua volta, la T3 porta 7 T2, cioè 7 * 4 * 24 = 672 utenti, e la T4 porta 6 T3. NOTA: sugli appunti sta scritto DS0, DS1 etc. devo ancora capire se i nomi sono intercambiabili. C'è da far rilevare che siccome in America usano 7 bit e non 8, a parità di portata della singola linea, loro avranno più bit sprecati.
Tecniche di Multiplexing
FDMA
Frequency Division Multiple Access
- portanti diverse
- i segnali non si sovrappongono
TDMA
Time Division Multiple Access
- le stazioni trasmettono a turno, un bit ciascuna, una dopo l'altra
- i segnali non si sovrappongono
- c'è un numero finito di slot
CDMA
Code Division Multiple Access
- ogni stazione ha un codice diverso
- i segnali sono sovrapposti ma intelligibili tramite al codice (Cocktail Party Effect: tutti parlano insieme, c'è rumore, ma io capisco comunque quello che mi dice l'interlocutore che ho di fronte).
Le reti cellulari usano il CDMA e non gli altri sistemi di multiplexing, perché questi altri hanno un numero finito di slot disponibili, siano essi portanti o slot temporali diversi, mentre non sai mai quanti cellulari diversi posso avere sotto la stessa cella.
SONET
SONET = Synchronous Optical Network. È un sistema TDM ma usa tecnologia a fibre ottiche, con tutto il suo sistema gerarchico simile a quello delle DS0, DS1 etc.
Ogni 810 byte che trasmette, SONET ne usa altri 27 per il sincronismo, perché con un alto bitrate è possibile che si perda qualche byte per strada. Ecco qui che introduciamo il concetto di overhead.
L'overhead è la percentuale di informazioni, in una trasmissione, che non contengono i dati che sto inviando, ma contengono informazioni per il sincronismo. Nel caso di SONET, 27 byte su 810 = 3,33% di dati di overhead. È da notare che gli overhead esistono per ogni protocollo che vado ad utilizzare, a catena. Se ho una rete fisica come il SONET, ogni 810 byte ne "perdo" 27 per overhead, e 810 sono i miei dati. Di questi 810, supponiamo che uso un protocollo internet, un'altra percentuale se ne va per il suo overhead etc. etc. => gli overhead si sommano, e alla fine può rimanermi poca cosa...
ATM
ATM = Asynchronous Transfer Mode Il TDM mi garantisc l'isocronia: il tempo di intervallo tra due bit consecutivi provenienti dalla stessa sorgente è sempre lo stesso. Se ho una linea a 64kbps, vuol dire che ogni bit proveniente da me arriverà garantito tra 1/64000 di secondo, così come per quello del mio vicino etc. Questo è il tempo reale, ed è una delle carateristiche del TDM: ho un tempo garantito tra un bit e l'altro. Chiaro che se poi ho schede T5 etc. il tempo tra un bit e l'altro è ancora più piccolo, e quindi la scheda sarà molto più costosa.
C'è invece il sistema ATM, che al momento attuale non so a che tipo di rete si riferisca. Non è isocrono, il che vuol dire che non passa lo stesso identico tempo tra un bit e l'altro della mia trasmissione. Gli apparecchi riceventi hanno un buffer: quando il buffer viene riempito, lo svuotano, e poi attendono che si riempia ancora. È chiaro che questo sistema non funzioni bene per il telefono, perché potrei avere delle attese ora che il buffer si riempie, e mi arriva la voce a sprazzi. Questo sistema non usa trame (si chiamano trame le finestrelle temporali del TDM) ma celle con una propria intestazione, e questa intestazione indica il destinatario del pacchetto. Chiaro che qui l'overhead è più alto, perché ogni cella ha byte sprecati per l'indirizzo etc.
27 settembre 2007
Introduzione a livello di Data Link
Le reti tra computer nascono come reti private, per l'ovvio motivo che non si possono tirare in giro i cavi per l'Italia etc.
Tecniche standard per i computer
Gli standard offrono dei pro e dei contro. Il pro è che ci può essere intercomunicabilità fra produttori diversi, mentre il contro è che in genere, una volta che si è fatto uno standard, poi non lo si cambia più per un bel pezzo e la tecnologia viene per così dire congelata; inoltre è possibile che ci siano più standard per la stessa funzione.
Gli standard vengono inventati, per esempio, dalla Internet Society, dall'ISO, dal CCITT, dal forum ATM (Azienda Trasporti Milanese, lo standard del degrado della linea dei pullman è loro...).
Come dicevo all'inizio, all'interno del computer i bit sono organizzati spazialmente: ogni bit è una carica in una certa porzione piccola ma fisicamente reale all'interno del computer. Ma devo spostarli 1 alla volta, nel dominio del tempo, affinché io possa trasmetterli lungo una rete. Per fare ciò, occorre codificare in qualche modo la presenza e l'assenza di carica (cioè lo 0 e l'1 nella memoria del computer) in un segnale.
Un modo per farlo è stabilire che 0 Volt = 1, e 5 Volt = 0. Bene. Bello. Problema: lungo un filo è più che probabile che il segnale si attenuerà, perché il filo ha una sua resistività e così via. Quindi è possibile che fra 10 metri non arrivino più 5 volt, ma 2,5, e a questo punto l'apparecchio ricevente potrebbe interpretare i 2,5 Volt arrotondandoli per difetto, e ricevendo 0 al posto di 1. I dati si perdono. La perdita di dati è ancora accettabile durante le conversazioni telefoniche, perché anche se perdiamo addirittura pezzi interi di parola, si capisce lo stesso. Ma non è assolutamente accettabile perdere pezzi durante la trasmissione di dati informatici.
Quindi, per evitare sto problema del voltaggio, si è pensato di inviare i bit non come livelli diversi di corrente, ma come variazioni del livello di corrente, ovvero come fronti di salita e fronti di discesa. Un fronte di salita si ha quando il voltaggio sale, mentre un fronte di discesa si ha quando il voltaggio scende. Ecco quindi che abbiamo scoperto il baud rate, ovvero la quantità di fronti che si inviano per secondo. Da notare che il baudrate non è necessariamente uguale al bitrate.
Nel caso dei calcolatori, NON si fa multiplexing come abbiamo visto finora: semplicemente, le varie stazioni si danno il turn nel comunicare, secondo un sistema detto Statistical Division Multiplexing, che vuol dire semplicemente che ci si dà il turno. Un altro modo per indicare questa faccenda del parlare a turni è il MAC: Medium Access Control, ovvero il modo per controllare l'accesso al medium, che non è chi comunica coi morti ma il mezzo di trasmissione.
Il DLL, che sta per Data Link Layer, è il formato in cui vengono inviati i singoli blocchi di comunicazione. Come abbiamo visto prima per il misterioso ATM, se non c'è isocronia, le trasmissioni avvengono a blocchi, e ogni blocco deve essere autosufficiente nel senso che deve saper arrivare a destinazione in modo autonomo. Le informazioni per andare in giro per la rete sono distribuite nel blocco in un certo formato, detto appunto DLL. La differenza con le trame del TDM è che le trame sono i pezzi di dati circondati dai bit di sincronimo.
Nelle reti di computer il controllo degli errori è fondamentale, per il motivo che ho detto prima. Occorre quindi anche un sistema per accertarsi che i blocchi siano stati ricevuti senza errori.
Responsabilità del Data Link
- deve fare il multiplexing finto dei flussi di dati, cioè saper dire: ora parlo io, ora parli tu
- deve controllare l'accesso al mezzo di trasmissione
- deve controllare gli errori.
La necessità del multiplexing finto di qualche paragrafo fa nasce da una semplice constatazione amichevole. Se ho due computer, posso benissimo immaginare di tirare un cavo tra uno e l'altro ed è morta lì. Se ho tre computer idem: ho un cavo per ogni coppia di computer. Ma quando comincio ad avere 20 computer, che faccio? Un cavo per ogni coppia è improponibile. Ecco perché si usa un filo solo, e si usa questo multiplexing a turni per decidere chi parla e chi sta zitto: è il controllo di accesso al mezzo.
Protocolli MAC Collision Free
In questi protocolli, si fa in modo che non ci sia del tutto la possibilità che due stazioni si mettano ad inviare contemporaneamente dati sulla rete, rendendoli di fatto inutilizzabili. Occorre quindi stabilire dei turni: la stazione che vuole comunicare "alza la mano" (handrising) e invia a tutte le altre stazioni il segnale che indica la sua volontà di comunicare. Ogni scheda dice la sua in proposito, e quando si sono messe d'accordo quello che vince la trattativa (in base a certe regole) è quello che invia il messaggio.
In questo caso si ha tanto overhead, perché si perde tanto tempo a mandare microframes per queste trattative.
Protocolli MAC a contesa
Con i protocolli MAC a contesa, invece, è ammesso il caso che si parli tutti insieme: nel caso Collision Free si evita a priori la collisione, qui invece la si risolve dopo che è successa.
Slotted Aloha
È il sistema inventato all'Università delle Hawaii, dove usavano le onde radio per collegare i diversi campus presenti su isole diverse. Avevano 1 solo canale, e le collisioni succedevano frequentemente.
La parola slotted si rifà all'idea di voler dare ad ogni stazione un suo tempo di trasmissione che abbia una lunghezza fissa: ognuno può inviare messaggi solo all'inizio del suo slot temporale. Ci sono poche probabilità che due computer si mettano ad inviare segnali nello stesso istante. Però, in caso di collisione, non è affatto stabilito quando una singola stazione potrà di nuovo comunicare.
La rilevazione delle collisioni è semplice: una stazione invia dei dati, e li confronta con i dati che sta ricevendo. Se i due stream coincidono, vuol dire che solo lei sta inviando dati sulla rete. Se invece ci sono discrepanze, vuol dire che c'è una collisione in corso, e che il messaggio è da reinviare.
Un altro problema dello Slotted Aloha è che le onde elettromagnetiche, per quanto veloci, hanno un tempo finito di propagazione, che è di 2*10^8 m/s. Quindi, può accadere che una stazione senta il canale libero quando invece un'altra stazione sta già inviando, proprio perché il segnale radio ci mette tempo a viaggiare da un'isola all'altra, e questo tempo è apprezzabile dalle apparecchiature elettroniche.