











































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Appunti leizione anno 2020-2021
Tipologia: Appunti
1 / 51
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!












































Servizi offerti al livello sopra Transport Network E’ il livello che si occupa di far arrivare il pacchetto dei dati a destinazione risolvendo due problemi: come si scrive un indirizzo (cosa significa) e come Si occupa del problema del corriere di Amazon, di portare il pacco al giusto destinatario, e del problema di come fare a portarlo, scrivendo l’indirizzo giusto Servizi per il trasporto Il livello di trasporto deve funzionare indipentemente dalla topologia delle reti presenti (se é wifi o ethernet non deve importare)
faccio arrivare il pacchetto Data link Trasporta i pacchetti da un estremo all’altro del cavo Physical
Reti a stella ● Permettono collegamenti veloci tra mittente e ricevente ● Hanno buona espandibilitá, nel senso che é possibile aggiugnere nuovi host alla rete con relativa semplicitá ● Concentra le comunicazioni sul nodo centrale crendo possibili colli di bottiglia nel sistema Reti ad albero ● La criticitá del nodo dipende dalla posozione che occupa Rete interconnessa (a maglia completa) ● Permette comunicazioni veloci senza nodi intermedi ● é molto robusta per la ridondanza di collegamenti ● richiede un grande numero di collegamenti N(N-1)/2 link Nelle reti broadcast il canale di comunicazione é condiviso e il messaggio é ricevuto da tutti i componenti della rete anche se il destinatario é uo solo. LA tipologia piú usata é la topologia a bus, dove il problema é di fare in modo che ci sia un solo mittente alla volta, regolando la comunicazione. LA seconda topologia é ad anello che peró non é molto robusta dal momento che se si rompe un noo salta tutta la rete bus
● PAN - Personal area Network, reti in una stanza. Di solito la tecnologie é wireless a corto raggio con velocitá medie differenti perché se consideriamo il bluetooth a seconda della versione abbiamo B1.0 723 kbit/s, B2. 3Mbit/s, B3.0 24 Mbit/s (che si appoggia a una rete esterna wifi), il B4.0 aggiunge una comunicazione sicura basandosi su un sistema di cifratura AES-128 (che indica la lunghezza dlela chiave a 128 bit), B5.0 ha velocitá di 4Mbit/s ma aumenta l’estensione geografica arrivando anche a un centinaio di metri (quindi trasmette a una velocitá nominale maggiore del 2.0 - il 3.0 si appoggia al wifi - e aumenta l’estensione). ● LAN - Local area Network, reti in un edificio, con limiti, a seconda dell’ethernet usato, di 200 o 500 m. Sono reti di solito private che hanno estensione variabile dai 10m ai 10km e velocitá molto variabile con un min 10 Mbit/s fino a 10Gbit/s, anche se queste sono velocitá nominali e non reali che sono molto inferiori). Gli standard della lan ethernet sono raccolti nello standard IEEE 802.3, in generale lo standard IEE 802 raccoglie gli standard LAN, e .3 é specifico per ethernet. .5 in fibra ottica FDDI. Nel
altri. E’un modello che nelle reti di calcolatore viene utilizzato quando si necessita di interazioni real time, con un tempo di reazione minimo. Il fatto che il canale sia allocato non vuol dire che ci passino informazioni (telefonata muta, ad esempio). Normalmente la somma delle linee in entrata in uno switch di N utenti é maggiore della capacitá della linea dorsale che collega i due switch. In questo modello il numero di collegamenti disponibili é finito dato dalla capacitá del canale centrale, quando la sommatoria delle connessioni degli utenti aggiunge la capacitá della linea centrale devo riprogettare la linea. Queste reti usano due tecniche diverse, TDM e FDM. Time Division Multiplexing (TDM) : un’unitá temporale (1 sec) viene diviso in frame (intervalli temporali) a loro volta divisi in slot. Quindi se ho k frame, ciascuno composto da s slot ciascuno composto da m bit, la velocitá sará ksm/sec. Un canale di comunicazione puó utilizzare per ciascun frame uno slot e normalmente si assegna lo stesso slot per ciascun frame (tipo sempre lo slot 3 di ogni frame). In questo modo posso avere 4 comunicazioni (date dai 4 slot in ogni frame). Da un punto di vista di percezione dell’utente le comunicazioni sono parallele e contemporanee, ma dal punto di vista fisico non é cosí. L’utente percepisce che due suoni non sono contemporanei se sono trasmessi a 40millisecondi di distanza, quindi se io sono in grado di trasmettere due segnali con tempo di ritardo inferiore a 40-50 ms i dati viaggiano in sequenza ma chi ascolta lo streaming audio non si accorge e li percepisce come sincroni. Stesso discorso per il video. L’occhio ha uan capacitá di percepire il ritardo nell’ordine di 1/125 al secondo, quindi sempre in termini di milisecondi. Quindi bisogna sempre calcolare il tempo di ritardo minimo che dev’essere garantito perché l’impulso venga percepito correttamente. Questo modello mi permette di utilizzare la rete a pacchetti internet come una rete a commutazione di circuito, allocando parti di banda solo per me. Se ho un canale che trasmette 810^3 frame/sec e di default (se non é indicato diversamente) c’é uno slot per frame e che lo slot sia composto da 8 bit (caso reale) allora la velocitá e’ di 810^3 * 1 * 8. La verifica dimensionale permette di controllare che le grandezze fisiche siano quelle corrette nelle operazioni. Nel caso della velocitá il risultato dev’essere in bit/sec quindi Se la mia applicazione avesse bisogno di 90 kbit/sec io dovrei contattare la compagnia delle comunicazioni la quale, banalmente, alloca un altro slot per frame raddoppiando quindi la mia velocitá iniziale. Il dimensionamento, quindi lo fa chi progetta l’applicazione multimediale richiedendo la velocitá minima, altrimenti non si garantisce il corretto funzionamento. Esercizio Rete a commutazione di circuito con link R di velocitá 1536 kbit/sec con tecnica trasmissiva TDM organizzata in 24 slot per frame e slot composti da 8 bit. C’é la necessitá di fare streaming audio tra due host A e B di un file L di 640 kbit. Il circuito tra A e B puó usare un solo slot. Prima che A inizi a trasmettere sono necessario 500msec (il tempo di allocazione del canale). Determinare quanto tempo serve per trasmettere il file. Determinare poi quale
dev’essere la velocità e gli slot da assegnare per trasmettere lo stesso file con tempo pari o inferiore a 50 msec Canale = 153610^3 bit/sec = bit/slot * slot/frame * frame/sec Frame / sec = (153610^3) / 8 * 24 = 8 frame/sec Velocitá slot = (1536*10^3) / 8 * 24 = 8 In maniera più veloce la velocità di un circuito può essere calcolata come la velocità totale del canale (R_link) diviso il numero degli slot totali per frame (N_slotTot) ed eventualmente moltiplicato per il numero di slot usati se questo è diverso da 1 (N_slotUsati). Questo perchè 𝑅 𝑙𝑖𝑛𝑘 𝑏𝑖𝑡 𝑠𝑒𝑐 =^ 𝑅𝑓𝑟𝑎𝑚𝑒 𝑓𝑟𝑎𝑚𝑒 𝑠𝑒𝑐 *^ 𝑁𝑠𝑙𝑜𝑡 𝑡𝑜𝑡𝑎𝑙 𝑠𝑙𝑜𝑡 𝑓𝑟𝑎𝑚𝑒 *^ 𝑆^ 𝑏𝑖𝑡 𝑠𝑙𝑜𝑡 𝑅 𝑓𝑟𝑎𝑚𝑒
𝑅𝑙𝑖𝑛𝑘 𝑁𝑠𝑙𝑜𝑡 𝑡𝑜𝑡𝑎𝑙𝑖 * 𝑆 𝑅𝑐𝑖𝑟𝑐𝑢𝑖𝑡𝑜 = 𝑅𝑓𝑟𝑎𝑚𝑒 * 𝑁𝑠𝑙𝑜𝑡 𝑢𝑠𝑎𝑡𝑖 * 𝑆 = 𝑅𝑙𝑖𝑛𝑘 𝑁𝑠𝑙𝑜𝑡 𝑡𝑜𝑡𝑎𝑙𝑖 * 𝑆 *^ 𝑁𝑠𝑙𝑜𝑡 𝑢𝑠𝑎𝑡𝑖 *^ 𝑆^ =^ 𝑅𝑙𝑖𝑛𝑘 𝑁𝑠𝑙𝑜𝑡 𝑡𝑜𝑡𝑎𝑙𝑖 Packet switching (commutazione a pacchetto) I dati da trasferire (informazione) vengono suddivisi in pacchetti alla sorgente e vengono inviati uno alla volta lungo la linea che può essere usata anche da altri utenti. E’ possibile la trasmissione contemporanea di più sorgenti che mandano pacchetti a destinatari distinti. Questo modello ha un vantaggio significativo dato dal fatto che non è necessario aspettare l’allocazione del canale al circuito di cui noi facciamo parte perché i dati vengono inviati ai nodi e sono poi loro ad avere il ruolo più complesso dovendo gestire i dati che arrivano anche contemporaneamente da più host per trasmetterli in linea d’uscita (in questo caso il fatto che la linea sia totalmente o parzialmente occupata non é rilevante per l’utente perché si inviano i dati al nodo e poi é il nodo che gestirá la comunicazione). Il destinatario una volta ricevuti i pacchetti si occuperà di ricostruire il messaggio inviato. Ogni pacchetto ha due parti: un header che contiene i parametri di controllo (indirizzo IP, destinatario, MAC…) e che vengono aggiunti e una seconda parte che contiene i bit relativi ai dati veri e propri. All’interno del packet switching ci sono due tecniche che determinano come i pacchetti vengono fatti viaggiare: circuito virtuale e datagram.
E’ una sorta di ibrido tra la commutazione a pacchetto e quella a circuito. Si determinano quali sono i nodi del percorso (si determina il percorso in pratica) e tutti i pacchetti passeranno attraverso quei nodi. In più i pacchetti vengono trasmessi in ordine, come vagoni di un treno. Questo ci ricorda la commutazione a circuito dove un canale viene allocato per una comunicazione. La differenza è che il flusso di bit non è continuo quindi il canale può essere utilizzato da più comunicazioni. Per determinare il percorso viene inviato
Le reti sono generalmente organizzate in livelli ciascuno costruito sopra il precedente. Ciascun livello offre servizi al livello superiore (il livello inferiore risolve un problema per il livello superiore che, di fatto, ignora come il livello inferiore abbia fatto, si bea solo della soluzione). Livelli dello stesso grado appartenenti ad host diversi si parlano tra loro, quindi i livelli piú bassi parlano con livelli piú bassi attraverso convenzioni che governano la conversazione e che si chiamano protocolli. Ogni livello ha uno o piú protocolli caratteristici di quel livello. Lo strato piú basso é quello che dialoga con l’apparato fisico mentre il livello n-esimo (l’ultimo) puó essere considerato la nostra applicazione finale. L’insieme dei livelli e dei protocolli é definito architettura di rete. La specifica dell’architettura di rete dev’essere sufficientemente dettagliata per consentire la realizzazione di SW e HW ad ogni livello. Immaginiamo un messaggio che dev’essere passato da host A a host B. Il livello 5 dell’host A consegna il messaggio al livello inferiore. Quando il messaggio viene passato da un livello
superiore a uno inferiore il livello inferiore aggiunge un suo header in testa al messaggio (viene “inserito nella busta” del livello inferiore) che contiene informazioni di controllo come la dimensione del messaggio, il numero di sequenza del messaggio e l’indirizzo. Quindi a questo punto al messaggio M che é arrivato dal livello superiore (liv 5) vengono aggiungi bit con informazioni di controllo. Il messaggio passa quindi al livello 3 che puó dover spezzettare il pacchetto superiore (H4 + M) in pacchetti a cui aggiunge il proprio header H3. Scendendo ancora di livello al 2 che aggiunge il proprio header H2 ma anche un trailer, dei pattern di bit che mi indicano l’inizio e la fine del pacchetto (un po’ come le sequenze di codons nel dna che determinano la chiusura di un gene). I pacchetti vengono inviati e nell’host di destinazione B seguono il percorso inverso e ciascun livello prende l’header ed il trailer di propria competenza. Un livello é quindi un service provider per il livello superiore e un service user per il livello che sta sopra. Tra i livelli ci sono delle interfacce che si chiamano SAP (service access point) e i punti di accesso tra livelli prendono il nome di SAP del livello n o n-SAP. Ogni n-SAP ha un indirizzo univoco a livello di architettura di rete. L’informazione che passa dal livello n al livello n-1 attraverso il (n-1)-SAP é definita Protocol Data Unit ( PDU ) di livello n o n-PDU e che contiene sia le informazioni di controllo nell’header che i dati veri e propri. A seconda del livello questi PDU possono essere segmenti (TPDU, transport PDU) a livello di trasporto, pacchetti a livello di rete, frame a livello di data link. PCI = protocol control information (header, informazioni di controllo) SDU = service data unit (i dati che vengono passati dal livello precedente, i DATI) PDU = protocol data unit (i dati complessivi, formati da header e dati) SAP = service access point (interfaccia) Servizi e protocolli (ESAME) Il servizio opera sull’architettura di rete ed é una serie di operazioni che un livello offre a quello superiore. I servizi quindi viaggiano bottom-up o top-down. I protocolli invece viaggiano tra livelli equivalenti, orizzontalmente se vogliamo, e si possono pensare come l’insieme di regole che governano il significato e il formato delle informazioni. Le varie entitá usano i protocolli per implementare i servizi e sono quindi trasversali all’architettura di rete. Tipologie di servizi Ci sono due tipi di servizi che si distinguono per essere o non essere orientati alla connessione e che possono essere immaginati come simili ai modelli di packet switching a circuito virtuale (nel primo caso) o datagram (nel secondo caso. I servizi orientati alla connessione si ispirano al sistema telefonico (si stabilisce la connessione, si usa la connessione, si libera la connessione). I servizi privi di connessione si rifanno al sistema postale. Ogni messaggio ha un indirizzo completo di destinazione e attraversa il sistema in maniera indipendente il che significa che un pacchetto inviato dopo puó arrivare prima (datagram).
di trasmissione (che possono essere rilevati o no, corretti o no, e di cui si puó informare il mittente o no), ● meccanismi per il mantenimento dell’ordine originario dei dati ● meccanismi per regolare la velocitá ● meccanismi e decisioni per dimensionare i messaggi da inviare e i pacchetti in cui suddividerli ● meccanismi di multiplexing di diverse conversazioni su un’unica connessione ● meccanismi di routing in caso di piú strade alternative e l’eventuale divisione di un messaggio in piú connessioni contemporanee
La trasmissione dei dati avviene attraverso canali fisici (cavi elettrici o fibre ottiche). Trasmettere un’informazione significa produrre fenomeni (o effetti) che possono essere misurati a distanza attraverso il mezzo stesso. L'informazione puó essere trasmessa a distanza variando una caratteristica fisica del mezzo. Questa variazione si propaga nel mezzo a una certa velocitá arrivando alla fine del mezzo dove puó essere rilevata. I mezzi fisici possono essere elettrici (quindi il fenomeno fisico utilizzato é l’energia elettrica che si muove con velocitá ⅔C, ⅔ velocitá della luce, quindi ⅔ * 3 * 10^3), mezzi wireless (che utilizzano il fenomeno delle onde radio, elettromagnetiche, un’onda che si propaga nello spazio e induce a distanza una corrente elettrica in un dispositivo ricevente e viaggia alla velocitá della luce) e i mezzi ottici (in cui il fenomeno fisico usato é la luce che viaggia alla velocitá della luce). Equazioni di maxwell Le reti si stanno sempre piú muovendo verso tecnologie wireless il cui mezzo elettromagnetico é regolato dalle 4 equazioni di Maxwell (E = campo elettrico, B = campo magnetico). ● Legge di Maxwell-Faraday: un campo magnetico che vari nel tempo produce un campo elettrico. ● Legge di Ampere-Maxwell: se io ho una variazione di campo elettrico (per esempio facendo passare elettricitá in un cavo) si crea un campo magnetico. La trasmissione puó avvenire attraverso segnali analogici che possono assumere tutti i valori (sono funzioni che variano con il variare del tempo e sono normalissime funzioni) e con segnali digitali i cui valori possono essere solo finiti (1 o 0 per segnale binario a due livelli, o -1, 0, 1 per tre livelli, quattro livelli… fino a qualche decina di livelli). Un segnale periodico é quello che si ripete in uguale in un intervallo temporale detto periodo (e il vantaggio é che si puó studiare il segnale solo sul periodo e non all’infinito. Una funzione sinusoidale (periodica) ha un’ ampiezza A (differenza tra valore massimo e minimo), periodo T (misurata in secondi) e frequenza f (numero di periodo in un secondo e si misura in Hz). 𝐹 = Le unitá di misura di tempo e frequenza sono inverse (millisecondi 10^- 1 𝑇 corrispondono a kiloHertz)
La lunghezza d’onda (landa) mette in relazione il periodo T o la frequenza f e la velocitá c del mezzo che la trasporta e che nel vuoto é 3*10^8 m/s. Il riferimento di un laser é espresso in landa (lnghezza d’onda). λ = 𝑐𝑥𝑇 = 𝑐 𝑓 Analisi di Fourier Fourier dimostró che una funzione periodica in un intervallo T questa puó essere espressa come una sommatoria di funzioni sinusoidali (quindi g(x) = sommatoria che va da - infinito a
Dal momento che dopo la frequenza di taglio Fc il segnale si annulla bisogna fare in modo che la maggior parte dell’energia del segnale passi prima del cutoff e, di conseguenza, bisogna selezionare l’appropriata lunghezza d’onda. Scegliere la larghezza di banda adatta alla trasmissione su un determinato canale di trasmissione significa fare una codifica di canale. Trasformazione di Fourier Nel caso il segnale sia periodico per calcolare la larghezza di banda si usa l’analisi di Fourier mentre se il segnale non é periodico si usa la trasformata di Fourier. La trasformazione di Fourier permette di spostare un segnale dal dominio del tempo al dominio delle frequenze, quindi di fatto svincolandolo dalla sua durata. La maggior parte dell’energia é distribuita tra 0 e 1/T (sta cosa é il risultato di Fourier) Teorema di Nyquist (esame) Sia assegnato un segnale arbitrario tempo variante x(t) fatto passare attraverso un canale con larghezza di banda H (quindi conoscendo la frequenza di cutoff fc). Il segnale filtrato y(t) puó essere ricostruito completamente utilizzando almeno 2H campioni al secondo. In pratica se io ho un segnale che é stato filtrato con cutoff H e che ha quindi una frequenza di banda definita, posso trasformare questo segnale da analogico a digitale senza perdere dati (e viceversa ritrasformare il file digitale in analogico) se utilizzo una frequenza di campionamento che sia uguale o maggiore a 2H. 𝐹 𝑠𝑎𝑚𝑝𝑙𝑖𝑛𝑔
𝑠𝑒𝑔𝑛𝑎𝑙𝑒 Se il campionamento é maggiore di fatto si raccolgono informazioni che sono un surplus e non servono, se invece il campionamento é piú basso il numero delle informazioni non sará sufficiente per ricostruire accuratamente il segnale originale. Questo peró non é necessariamente un male, se le variazioni non sono percepibili dalle persone (suoni ad alta frequenza non udibili, piuttosto che minime variazioni nei colori), una perdita di dati, una compressione, puó essere una scelta consapevole e voluta volta a ridurre il totale delle informazioni scambiate.
Io non posso trasformare un segnale analogico in digitale, devo passare per un passaggio intermedio che é il dato discreto. Quindi a intervalli regolari determinati dalla frequenza di campionamento vengono prelevati i dati discreti della frequenza analogica. Fisicamente significa usare un interruttore che preleva il valore del segnale per n intervalli. Se violo la condizione di Nyquist, quindi se il mio campionamento é inferiore a quello che prevede il teorema avrà come conseguenza l’aliasing, una distorsione dell’onda originale dovuta al fatto che al momento di ricostruire i segnali le onde, o meglio ancora le code delle onde, si sovrapporranno, causando appunto una distorsione. Nel caso di sovracampionamento invece le onde saranno distanziate. Il segnale quindi sará corretto ma io avró sprecato spazio utile. Posso rappresentare un segnale g(t) di durata T attraverso la sua scomposizione in sinusoidi a diverse frequenze (ossia il suo spettro di frequenze). Posso quindi determinare la sinusoide che approssima la frequenza minima (quella con l’onda piú lunga sulla linea temporale) e quella con la frequenza piú alta (quella piú corta sulla linea temporale, e calcolare l’intervallo tra queste due frequenze che é conosciuto anche come la larghezza di banda del segnale. La larghezza della banda dipende dalle caratteristiche fisiche del mezzo di trasmissione (es. larghezza del cavo) e per le connessioni wireless 802.11 di solito il limite della larghezza di banda é 20MHz Grazie all’analisi di Fourier é possibile che un segnale periodico g(t) puó essere rappresentato come una sommatoria di sinusoidi e, in particolare, Fourier ha individuato un’espressione che oltre al termine costante c e alla sommatoria di seni e coseni, ha anche due parametri caratteristici (ai e bi) che sono le ampiezze e dei valori di frequenza associati. Esempio Se io sto trasmettendo una “b” che é trasmessa in un byte (01100010 - 8 bit) so, per l’analisi di fourier che l’onda della funzione di periodo T che trasmette questa serie di bit é la sommatoria di sinusoidi e che, sempre per quanto determinato da Fourier si possono determinare an e bn. Sappiamo che 𝑎 = + … + 𝑛
2 𝑇 0 𝑇 ∫ 𝑔(𝑡) 𝑠𝑖𝑛(2π𝑛𝑓𝑡) 𝑑𝑡 2 𝑇 0 𝑇/ ∫ 𝑔(𝑡) 𝑠𝑖𝑛(2π𝑛𝑓𝑡) 𝑑𝑡 2 𝑇 7𝑇/ 𝑇 ∫ 𝑔(𝑡) 𝑠𝑖𝑛(2π𝑛𝑓𝑡) 𝑑𝑡 𝑏 = (^2) 𝑇 = + … + 0 𝑇 ∫ 𝑔(𝑡) 𝑐𝑜𝑠(2π𝑛𝑓𝑡) 𝑑𝑡 (^2) 𝑇 0 𝑇/ ∫ 𝑔(𝑡) 𝑐𝑜𝑠(2π𝑛𝑓𝑡) 𝑑𝑡 (^2) 𝑇 7𝑇/ 𝑇 ∫ 𝑔(𝑡) 𝑐𝑜𝑠(2π𝑛𝑓𝑡) 𝑑𝑡 𝑐 = 2 𝑇 0 𝑇 ∫ 𝑔(𝑡) 𝑑𝑡
rapporto tra la potenza del segnale S e la potenza del rumore N. Dato che é una misura che sale molto velocemente normalmente viene calcolata come 10 𝑙𝑜𝑔 10 𝑆/𝑁 e misurata in decibels (dB). Quindi se S/N = 10 si hanno 10 dB, se S/N = 100 si hanno 20dB, se S/N = 1000 si hanno 30dB… Il teorema quindi adatta le conclusioni di Nynquist per i canali ideali dicendo che in un canale con rumore il numero massimo di bit trasmessi al secondo é 𝑚𝑎𝑥 𝑑𝑎𝑡𝑎 𝑟𝑎𝑡𝑒 = 𝐻 𝑙𝑜𝑔 2 (1 + 𝑆/𝑁) 𝑏𝑖𝑡/𝑠𝑒𝑐 Quindi se io ho una ADSL con una banda di 1 MHz e un rumore stimato di 40 dB so che S/N é 10.000 = 10 e H = la massima velocitá di trasmissione dei dati sará di 4 10 6 10 6 𝑙𝑜𝑔 2 ( 4
Questo livello si occupa di trasferire i dati da A a B e deve considerare sia gli errori che possono potenzialmente accadere e i ritardi temporali tra invio e ricezione. Deve quindi
Framing Nel livello data link i dati vengono suddivisi in frame che possono avere lunghezza fissa o variabile. Nel caso di lunghezza variabile é necessario fare in modo che il sistema capisca quando un frame finisce e comincia il successivo, quindi si devono usare degli appositi marcatori che segnalino inizio e fine dei frame. Esistono diversi protocolli che compiono questo tipo di azione con differenti modalitá ● Protocolli orientati ai byte: ○ byte count: in questo caso si esplicita il numero di byte che caratterizza la lunghezza del frame ma se questa informazione viene corrotta per qualunque motivo la divisione in frame finisce fuori synch. ○ flag byte with byte stuffing: in questo caso si usa un byte particolare (un flag-byte) per indicare inizio e fine del frame. Se questo byte si trova anche nel contenuto del frame, per’, é necessario indicare al sistema che quel byte non é un flag di apertura o chiusura e lo si fa inserendo un escape byte davanti al byte incriminato nel contenuto del frame. Questa tecnica é conosciuta come byte stuffing. ● Protocolli orientati ai bit: ○ flag bits with byte stuffing: é una soluzione alternativa usata per esempio nel High Level Data Link Control (HDLC). Ogni free inizia e finisce con una specifica sequenza di bit (01111110 - 0x7E esadecimale). Per evitare sempre che dati interni al frame vengano interpretati come flag, se ci sono cinque 1 nel frame il sistema inserisce uno 0 come escape. E’ lo stesso principio trasportato a livello di bit. Ovviamente in questo come nel caso precedente i bit/byte trasportati adesso dipendono dal contenuto del frame e da quanti escape é necessario inserire al loro interno ○ physical layer coding violations: si usano alcuni segnali che non vengono utilizzati per i dati per segnalare inizio e fine del frame Molti protocolli utilizzano un mix di varie tecniche, per esempio ethernet 802.11 ha un frame che comincia con una sequenza denominata preambolo (di solito 72 bit) ed é seguito dal conteggio della lunghezza del frame che determina la fine del frame stesso Controllo degli errori (error control) Uno dei modi per capire se un frame é arrivato a destinazione ed é arrivato correttamente é far mandare al destinatario un messaggio positivo o negativo al mittente. In questo caso, peró, se peró il frame non arriva mai al destinatario si rischia che il mittente resti per sempre in attesa di una risposta (positiva o negativa) che non arriverá mai. Per questo nel data link layer sono stati inseriti dei timer. Se il tempo impostato passa senza che alcuna risposta sia stata ricevuta il mittente il pacchetto viene reinviato differenziandolo dall’originale (tipo, copia 1, reinvio 2…) in questo modo il ricevente é in grado anche di capire se si tratta di reinvii nel caso si ritrovi con due pacchetti identici.
ogni codeword ha due differenze con ogni altra parola del codice (ma anche se avessi avuto 111 che ha 2 differenze con 2 codeword e 3 differenze con la terza codeword) la distanza di Hamming minima é 2 e questa corrisponde alla distanza di Hamming del codice. La distanza di Hamming del codice é la distanza di Hamming minima tra tutte le parole del codice scelto, confrontate tra loro. Questa distanza del codice é importante perché ci permette di determinare quanti erori possiamo rilevare o correggere sapendo che ● un codice con distanza di Hamming d = (k+1) permette di RILEVARE k errori ● un codice con distanza di Hamming d = (2h + 1) permette di CORREGGERE h errori Quindi nell’esempio di prima con distanza di codice = 2 potremmo solo rilevare 1 errore e correggerne nessuno (vedi sotto), con distanza d= 5 si possono correggere 2 errori e rilevarne 4. Nel caso qui sotto, se io ho una distanza d = 2 e ho una codeword intermedia che differisce di 1 bit da due diverse codeword valide che loro volta differiscono di d = 2, io non saró in grado di capire quale delle due codeword valide é quella corretta quindi non potró correggere l’errore Per correggere un errore la distanza d minima richiesta é di 3 perché se io ho due codeword valide che hanno distanza d = 3, posso trovare 3 codeword non valide cambiando uno alla volta i 3 bit che compongono la parola (parole rosse e rosa). Queste parole non valide a loro volta differiscono tra loro di un bit, quindi si trovano tra loro a distanza d = 1. Per cui le parole rosa si trovano a d = 1 e d = 2 da due parole valide. Se io invio 000 e ho un errore che lo fa arrivare come 100, confronto questa parola con la lookup table e vedo che non é una parola valida, capisco che c’é un errore e so che l’unica parola valida a d = 1 e 000 quindi posso ricostruire il messaggio originale correggendo l’errore. Ma se io invio 111 e ricevo 100, vedo che non é una parola valida e cerco di correggere due errori, in realtá mi accogo che la parola ricevuta potrebbe essere sia 111 (con due errori) o 000 (con un errore) e quindi non posso scegliere o correggere la parola. La conclusione é che solo se le parole del mio codice sono piú distanti mi permettono di scegliere una strada univoca per correggere l'errore.
Per correggere un singolo errore su m bit si devono impiegare r check bit con 2 𝑟 ≥ 𝑚 + 𝑟 + 1 𝑜𝑠𝑠𝑖𝑎 𝑠𝑒𝑟𝑣𝑜𝑛𝑜 (𝑙𝑜𝑔 2 𝑚) 𝑏𝑖𝑡 si stabilisce in questo modo il limite inferiore al numero di bit di controllo necessari per correggere un errore singolo. Come detto una codeword é formata da m bit del messaggio e r bit di controllo. Questi bit di controllo sono posizionati nelle posizioni che sono potenze di due (1, 2, 4, 8, 16…) quindi se io trasmetto n bit con n = 7 avró che i bit di controllo (che indico con p perché saranno parity bit) saranno P4 P2 P e gli altri bit sono occupati dal messaggio M7 M6 M5 P4 M3 P2 P Ora, come funzionano i parity bits, in pratica vengono calcolati perché pareggino il numero di 1 o 0 con cui vengono considerati. In maniera piú semplice si dice che se i bit con cui vengono confrontati (e che devono pareggiare) hanno un numero di 1 dispari allora il parity bit ha valore 1, altrimenti ha valore 0. Hamming ha deciso che ● P1 viene confrontato con M3 M5 M ● P2 viene confrontato con M3 M6 M ● P4 viene confrontato con M5 M6 M7 (é cosí e basta) Se io devo trasmettere come messaggio 1011 ho che