Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Social Media Technologies, Appunti di Reti informatiche

Gli appunti sono completi di tutto, già integrati con registrazioni e slide. Contengono tutte le esercitazioni con lo svolgimento e le soluzioni.

Tipologia: Appunti

2020/2021

In vendita dal 20/10/2022

michela.delben
michela.delben 🇮🇹

4.4

(17)

35 documenti

1 / 40

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Michela Del Ben
1
Michela Del Ben
Social Media Technologies
15.03 (Lezione 1)
CODIFICA BINARIA DELL’INFORMAZIONE
Nel computer tutta l’informazione dev’essere salvata e codificata come sequenze di BIT (BINARY DIGIT) = è una cifra
binaria che può assumere il valore di 0 o di 1.
I SISTEMI DI NUMERAZIONE si chiamano SISTEMI POSIZIONALI = il valore del numero che si può comporre è calcolato
usando le cifre del numero e in più ogni cifra ha un peso diverso a seconda della posizione in cui compare all’interno del
numero
La NOTAZIONE POSIZIONALE (metodo di scrittura dei numeri) consente di scrivere un numero N di una certa base
generica b come una sequenza di cifre. Es. 156 = 6 * 100 + 5 * 101 + 1 * 102
Esempi di sistema posizionale:
SISTEMA DI NUMERAZIONE BINARIO = codice binario composto solo da 0 e 1
SISTEMA DI NUMERAZIONE DECIMALE: quello che siamo abituati a utilizzare normalmente
- È posizionale (unità, decine, centinaia)
- È costituito da 10 cifre: da 0 a 9 base = 10
Nel sistema posizionale, un numero si calcola:
1. Prendendo ogni cifra e moltiplicandola per la potenza della base
2. Facendo la somma dei prodotti
c
SCOMPOSIZIONE DECIMALE
= somma di prodotti delle potenze per le cifre del numero
- Cifra a Dx = cifra meno significativa
- Cifra a Sx = cifra più significativa
SISTEMA DECIMALE base decimale = 10
156 = 6 * 100 + 5 * 101 + 1 * 102 = 156
DA SISTEMA BINARIO (base binaria = 2) A DECIMALE
10101 = 1 * 20 + 0 * 21 + 1 * 22 + 0 * 23 + 1 * 24 1 + 4 + 16 21
(quando devo moltiplicare per 0 posso anche non scriverlo)
Nel computer si utilizzano i numeri binari perché funziona con l’elettricità; quindi, si può codificare l’informazione a seconda
che l’elettricità stia passando o meno in un circuito (in una componente del computer che si chiama transistor)
- Se passa l’elettricità = 1
- Se non passa = 0
Posso codificare l’informazione nel PC usando una codifica binaria = passa o meno l’elettricità?
SISTEMI POSIZIONALI
SISTEMA DI NUMERAZIONE BINARIO: La usano i PC elettricità che
passa o meno
SISTEMA DI NUMERAZIONE DECIMALE: La usiamo come umani perché
abbiamo 10 dita
SISTEMA DI NUMERAZIONE ESADECIMALE: Può essere usata per
raggruppare numeri binari in maniera più compatta lettere per i numeri
a 2 cifre: A = 10, B = 11, C= 12, D = 13, E = 14, F = 15
Dato un sistema di numerazione di base b, il massimo numero intero positivo rappresentabile in una sequenza di N cifre
è 𝑏𝑁.
Es. Se ho 4 cifre decimali, il numero massimo che posso scrivere è 9.999 cifre (non 10.000 perché sarebbero 5 cifre) il
numero di elementi interi fatti con 4 cifre decimali è 104 (4 = N, 10 = b)
Con 4 cifre il sistema decimale può rappresentare interi positivi da 0 a 9999, ovvero 104 valori diversi
Es. Se ho base 10 e posso usare una cifra, posso scrivere solo i numeri da 0 a 9
Es. Se ho base 10 e posso usare due cifre, posso andare oltre al 9 fino al 99 (non 100 perché sarebbero 3 cifre) 102
(2 = N, 10 = b)
La stessa cosa vale per la base binaria base 2
Es. Con 3 cifre posso scrivere 000, 001, 010, 011, 100, 101, 110, 111 posso rappresentare 23 valori = 8 numeri che si
possono scrivere
(Fare questo elevamento permette di calcolare tutte le possibilità)
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28

Anteprima parziale del testo

Scarica Social Media Technologies e più Appunti in PDF di Reti informatiche solo su Docsity!

Social Media Technologies

15.03 (Lezione 1) CODIFICA BINARIA DELL’INFORMAZIONE Nel computer tutta l’informazione dev’essere salvata e codificata come sequenze di BIT (BINARY DIGIT) = è una cifra binaria che può assumere il valore di 0 o di 1. I SISTEMI DI NUMERAZIONE si chiamano SISTEMI POSIZIONALI = il valore del numero che si può comporre è calcolato usando le cifre del numero e in più ogni cifra ha un peso diverso a seconda della posizione in cui compare all’interno del numero → La NOTAZIONE POSIZIONALE (metodo di scrittura dei numeri) consente di scrivere un numero N di una certa base generica b come una sequenza di cifre. Es. 156 = 6 * 100 + 5 * 101 + 1 * 102 Esempi di sistema posizionale: SISTEMA DI NUMERAZIONE BINARIO = codice binario composto solo da 0 e 1 SISTEMA DI NUMERAZIONE DECIMALE: quello che siamo abituati a utilizzare normalmente

  • È posizionale (unità, decine, centinaia)
  • È costituito da 10 cifre: da 0 a 9 → base = 10 Nel sistema posizionale, un numero si calcola:
  1. Prendendo ogni cifra e moltiplicandola per la potenza della base
  2. Facendo la somma dei prodotti c SCOMPOSIZIONE DECIMALE = somma di prodotti delle potenze per le cifre del numero
  • Cifra a Dx = cifra meno significativa
  • Cifra a Sx = cifra più significativa SISTEMA DECIMALE → base decimale = 10 156 = 6 * 100 + 5 * 101 + 1 * 102 = 156 DA SISTEMA BINARIO (base binaria = 2) A DECIMALE 10101 = 1 * 20 + 0 * 21 + 1 * 22 + 0 * 23 + 1 * 24 → 1 + 4 + 16 → 21 (quando devo moltiplicare per 0 posso anche non scriverlo) Nel computer si utilizzano i numeri binari perché funziona con l’elettricità; quindi, si può codificare l’informazione a seconda che l’elettricità stia passando o meno in un circuito (in una componente del computer che si chiama transistor )
  • Se passa l’elettricità = 1
  • Se non passa = 0 → Posso codificare l’informazione nel PC usando una codifica binaria = passa o meno l’elettricità? SISTEMI POSIZIONALI SISTEMA DI NUMERAZIONE BINARIO: La usano i PC → elettricità che passa o meno SISTEMA DI NUMERAZIONE DECIMALE: La usiamo come umani perché abbiamo 10 dita SISTEMA DI NUMERAZIONE ESADECIMALE: Può essere usata per raggruppare numeri binari in maniera più compatta → lettere per i numeri a 2 cifre: A = 10, B = 11, C= 12, D = 13, E = 14, F = 15 Dato un sistema di numerazione di base b, il massimo numero intero positivo rappresentabile in una sequenza di N cifre è 𝑏𝑁. Es. Se ho 4 cifre decimali, il numero massimo che posso scrivere è 9.999 cifre (non 10.000 perché sarebbero 5 cifre) → il numero di elementi interi fatti con 4 cifre decimali è 104 (4 = N , 10 = b ) → Con 4 cifre il sistema decimale può rappresentare interi positivi da 0 a 9999, ovvero 104 valori diversi Es. Se ho base 10 e posso usare una cifra, posso scrivere solo i numeri da 0 a 9 Es. Se ho base 10 e posso usare due cifre, posso andare oltre al 9 fino al 99 (non 100 perché sarebbero 3 cifre) → 102 (2 = N , 10 = b ) La stessa cosa vale per la base binaria → base 2 Es. Con 3 cifre posso scrivere 000, 001, 010, 011, 100, 101, 110, 111 → posso rappresentare 23 valori = 8 numeri che si possono scrivere (Fare questo elevamento permette di calcolare tutte le possibilità)

ALCUNE CONVENZIONI

L’unità elementare d’informazione manipolata e memorizzata da un computer è detta BIT ( BINARY DIGIT ) e può assumere i valori 1 e 0. La dimensione dei file viene misurata in BYTE (B) = sequenza di 8 BIT (b) (es. 01001011). Se si hanno 8 bit significa che si possono rappresentare 28 numeri = 256 combinazioni MA cifre da 0 a 255 Quando si salva l’informazione nel computer (= codifico i numeri nel computer), vengono fatte delle approssimazioni di numeri periodici infiniti → si perdono delle proprietà che ci sono nella matematica pura → non posso salvare informazioni infinite; nel computer si hanno INFORMAZIONI FINITE E DISCRETE INFORMAZIONE DISCRETA = ho un numero di possibilità che posso utilizzare e basta VS. La realtà in cui viviamo è CONTINUA → posso continuare a dividere a metà e riuscirò sempre trovare un punto in mezzo IL CODICE ASCII ( American Standard Code for Information Interchange ): Utilizzato per il testo = tipo di dato più semplice dopo i numeri. = È lo standard internazionalmente adottato per la codifica dei caratteri → tabella che collega ogni carattere che scriviamo (lettere dell’alfabeto ma anche caratteri speciali) a dei numeri binari corrispondenti Tutti i caratteri hanno una corrispondenza diretta con una sequenza di 7 bit e sono così salvati nel computer. Es. La lettera A corrisponde al numero 65 (base decimale) e a 100 0001 (= sequenza di 7 bit; base binaria) CODIFICA DI IMMAGINI Ogni immagine è salvata nel computer come una MATRICE DI NUMERI (struttura con righe e colonne), dove ogni numero corrisponde ad una tonalità di colore. Immagine in scala di grigio = matrice in cui in ogni cella si trova un numero che corrisponde ad una determinata tonalità di grigio (dal bianco al nero con diverse gradazioni) Es. Uso sequenze di 8 bit (con base 2) → posso usare 28 numeri = da 0 a 255 (256 combinazioni) 00000000 → combinazione di 8 bit che corrisponde allo 0 (nero) 00000001 → combinazione di 8 bit che corrisponde a 1 (grigio) 11111111 → combinazione di 8 bit che corrisponde a 255 (bianco) = 8 volte l’1 = 2^7 +2^6 +2^5 +2^4 +2^3 +2^2 +2^1 +2^0 = 255 In ogni cella della matrice abbiamo l’informazione di ogni tonalità di colore come un BYTE = numero binario da 8 bit che corrisponde ad un numero decimale che va da 0 (più scuro) a 255 (più chiaro) Immagini in scala di grigio sono immagini ad un solo canale → ho solo l’ intensità come dimensione In ogni cella (intersezione tra riga e colonna) c’è un numero che mi dà l’intensità → non ho il colore ma solo un numero che dice quanto è intenso quel PIXEL, cioè quanto è scuro/chiaro La cella di ogni immagine è chiamata PIXEL ( Picture Element = reticolo di punti). La RISOLUZIONE si misura in PIXEL perché è come se stessi calcolando la dimensione della matrice → Una tipica risoluzione è 16/9 = proporzione tra il numero di colonne e di righe = rapporto tra lunghezza e larghezza Ad ogni pixel viene associato un certo numero di bit, che indica l'intensità luminosa di ciascun colore primario, ovvero della combinazione RGB (RedGreenBlue) Nelle immagini a colori vengono utilizzati 3 canali (RGB) → in ogni pixel ci sono 3 numeri che rappresentano la Tonalità del Red, la Tonalità del Green, la Tonalità del Blue → Ogni pixel ha un colore rappresentato da una somma di questi 3 canali, sufficienti a rappresentare qualsiasi colore.

Formati di Immagini Vettoriali SVG ( Scalable Vector Graphics ) Postscript PDF (sia vettoriale che matrice dei punti) RENDERING = quando costruisco forme geometriche al computer (usato per i film d’azione) → scrivere funzioni che costruiscono oggetti geometrici CODIFICA AUDIO Immagine = segnale b idimensionale perché si sviluppa su 2 dimensioni (altezza e larghezza) → la rappresento con una matrice Audio = segnale mono dimensionale perché si sviluppa su 1 dimensione sola, il tempo → lo rappresento su una linea retta → per ogni istante di tempo della canzone c’è un numero che rappresenta un suono. CARATTERISTICHE DELL’AUDIO (E DEI SEGNALI ANALOGICI) Il suono fa parte della realtà fisica e appartiene al continuo → Quando si parla di segnale analogico s’intende Continuità

  • La retta rappresenta il tempo
  • La linea rossa è la funzione che è continua Quando voglio salvare una funzione nel computer, non posso salvare un segnale analogico (come la realtà) MA ho bisogno di un segnale discreto/digitale; questo avviene 2 passaggi:
  1. CAMPIONAMENTO (nel tempo): rendo discreta l’asse del tempo. Per creare il segnale discreto prendo dei campioni della funzione ad intervalli di tempo fissi; solo ogni tanto salvo l’informazione su che suono c’è (che valore c’è della funzione) → prendo solo una parte dell’informazione perdendone altra
  2. QUANTIZZAZIONE/DISCRETIZZAZIONE (nelle ampiezze): non permetto di avere qualsiasi valore per questi campioni (perché potrebbe essere un numero infinito, irrazionale), ma solo 1 dei valori possibili → non posso salvare infinite possibilità, devo discretizzare (passare dal continuo al discreto), prendendo solo alcuni valori e quindi approssimando. La funzione prende dei valori diversi perché sale e scende (tutti questi valori sono continui). → Quando passo dal continuo al discreto devo sia discretizzare sul tempo che sui possibili valori della funzione. FORMATI AUDIO: MP3 (MPEG-1 Layer 3) → ha dentro l’informazione su come comprimere il suono CODIFICA FILMATI FILMATO = sequenza di immagini (+ eventualmente il suono) = tri dimensionale Es. Un filmato muto è costituito da matrici che si sviluppano sul tempo: ogni istante di tempo ha una matrice che rappresenta l’immagine che cambia = singolo frame La Videocamera deve fare un campionamento e una quantizzazione su una funzione che va da sx a dx (audio) ma anche su tutta la matrice (immagine) Video compresso con tecnica intraframe : se nel video ci sono pixel che non cambiano (background fiori), non salvo tutte le matrici delle immagini intermedie MA salvo solo la parte di pixel che cambia (ape) Formati Video: AVI ( Audio Video Interleave ); MP4 (MPEG-4) Queste tecniche di compressone dei dati, oltre a modi intelligenti per salvare sequenze di bit, sfruttano anche la nostra percezione. Es. Ci sono suoni che noi non possiamo sentire (ultrasuoni) che vengono rimossi nel formato MP3 → l’informazione viene rimossa e le dimensioni si riducono. 16.03 (Lezione 2) *APPROFONDIMENTO: CODIFICA DI IMMAGINI Esistono 2 tipologie d’immagini:
    1. RASTER IMMAGES = griglia con pixel
    2. IMMAGINI VETTORIALI: codificano un’immagine attraverso una funzione matematica Trattandosi di un’immagine a scala di grigi si ha un solo canale (VS. Immagini a colori = 3 canali) In ciascuna cella c’è un numerino convertito in un colore che va dal bianco (numero massimo = 255) al nero ( 0 ) → numeri crescenti dal nero al bianco Es. Matrice 2x3 = 2 righe e 3 colonne

Quando si hanno delle matrici che rappresentano immagini, si possono fare delle operazioni sulle immagini facendo delle operazioni sulle matrici → ambito di operazione: ALGEBRA LINEARE, che si occupa dei calcoli e delle operazioni tra matrici e vettori (≠ immagini vettoriali) Es. Inversione dei colori. Presupposto: le matrici devono avere la stessa dimensione. → Sottrarre alla matrice tutta bianca (255) i numeri dell’immagine originale. Oltre ai 3 canali RGB (RedGreenBlue), ne esiste un 4: Canale Alpha che dà il parametro della TRASPARENZA. ! La scala di grigi è un canale solo, perché ha un numero solo in ogni cella. La PROFONDITÀ DI COLORE di un canale si calcola con il numero di BIT che usa quel canale. Es. 255 ha una profondità di 8 BIT perché è 28. I 3 canali RGB sono stati scelti in virtù di una caratteristica fisiologica dell’occhio umano, sulla cui retina esistono 2 tipi di cellule:

  1. Bastoncelli: consentono la visione in condizioni di scarsa luminosità (buio)
  2. Coni: sono deputati alla visione dei colori (fotopica) e alla visione distinta; ne esistono almeno tre tipi diversi, rispettivamente per il rosso, il verde e il blu Altra codifica/convenzione: CMYK = Cyan (azzurro), Magenta, Yellow, Key (nero) CONVERTIRE TRA BASI DIVERSE = da un numero binario a un decimale, e viceversa MA può esistere qualsiasi tipo di base. Da binario a decimale NUMERO BINARIO = sequenza di 0 e 1 Ad ogni posizione corrisponde una potenza di 2 e si parte da 2^0 (destra - cifra meno significativa), verso sinistra aumentando man mano l’esponente. Per fare la conversione bisogna:
  • Calcolare la corrispondenza delle potenze da dx a sx
  • Sommare il risultato delle potenze dove c’è l’1 → SOMMA PESATA: si ha la somma delle potenze che però viene moltiplicata per 0 o per 1 a seconda che la cifra corrispondente a quella posizione sia 0 o 1 A PEDICE (in basso a destra) indica il sistema: S’inserisce 2 o 10 per identificare rispettivamente la base binaria e decimale. Es. 1101 (binario) → 8 + 4 + 1 = 13 (decimale) Es. 11010011 (binario) = 128 + 64 + 16 + 2 + 1 = 211 Si fa la somma delle potenze corrispondenti alle posizioni dove c’è l’1. SISTEMI POSIZIONALI = sistemi numerici dove il peso di una cifra dipende dalla posizione in cui questa cifra si trova all’interno del numero Es. 156 10 = 610^0 + 510^1 + 1*10^2 = 6 + 50 + 100 Esercizi
    • 100102 = 02^0 +12^1 +02^2 +02^3 +12^4 = 12+1*16 = 2+16 = 18 10
    • 01101012 = 12^0 +02^1 +12^2 +02^3 +12^4 +12^5 +0*2^6 = 1+4+16+32 = 53 10
    • 01102 =^ 12^1 +12^2 = 2+4 =^610
    • 110102 = 21 +2^3 +2^4 = 2+8+16 = 26 10
    • 01101012 =^20 +2^2 +2^4 +2^5 = 1+4+16+32 = 53 10
    • 110100112 =^20 +2^1 +2^4 +2^6 +2^7 = 1+2+16+64+128 = 211 10 Da decimale a binario Per fare la conversione bisogna:
  • Prendere il numero decimale
  • Dividerlo per 2 , segnando il resto della divisione
  • Ripetere l’operazione: dividere per 2 il risultato ottenuto dalla precedente divisione
  • Andare avanti finché a che non arrivo a 0 come risultato
  • Una volta finito, tutti i resti della divisione dall’ultimo al primo daranno il numero binario corrispondente.

La SEMANTICA si rappresenta attraverso TABELLE DI VERITÀ, dando significati alle formule. Il CONNETTIVO costruisce il valore di verità della formula composta (non di quella semplice perché è vera o falsa di per sé). https://web.stanford.edu/class/cs103/tools/truth-table-tool/ ( TRUTH TABLE GENERATOR) P = variabile proposizionale P ¬ P 1 0 0 1 P/Q PQ 0/0 0 0/1 0 1/0 0 1/1 1 P/Q PQ 0/0 0 0/1 1 1/0 1 1/1 1 P/Q PQ 0/0 1 0/1 1 1/0 0 1/1 1 Nel 1° caso Q non è vera, MA l’implicazione è vera perché P è falsa. ! Se ho 2 variabili (P e Q, per esempio) le possibili combinazioni sono 4 perché ho 2n^ → 22 L’informatica teorica nasce agli inizi del ‘900 con Alan Turing: matematico, logico, crittografo e filosofo britannico, considerato uno dei padri dell'informatica. TAUTOLOGIE (deriva dalla semantica) = formule sempre vere → quando tutta la colonna è vera (quindi a 1). Se si parte dalla sintassi, regole di differenza possono calcolare nuove formule che sono la conseguenza delle formule già esistenti. Quando si riesce a costruire una formula sempre vera si ha un TEOREMA. →Se il sistema logico funziona, ogni teorema è una tautologia e viceversa. TAUTOLOGIA e TEOREMA = due modi diversi di calcolare qualcosa che è sempre vero. Una FORMULA è SODDISFACIBILE quando è vera in almeno una riga. Lo sforzo di rispondere a questo problema matematico ha portato alla nascita dell’informatica teorica = branca dell'informatica e della matematica che riguarda gli aspetti più astratti e matematici della computazione. Hilbert agli inizi ‘900 si chiese se, Data una formula logica nel linguaggio della logica del primordine, esiste un metodo automatico per decidere se questa formula è una tautologia (o formula valida)? Nella logica proposizionale (livello più basso della logica del primordine) la risposta è sì. Questa domanda fece sì che diversi matematici esplorassero meglio il concetto di computazione o calcolo automatico. Tra questi, Alan Turing nel 1936 riesce a dare una risposta pubblicando l’articolo " On Computable Numbers, with an Application to the Entscheidungsproblem ”, in cui definisce un modello di calcolo per rispondere alla domanda di Hilbert, facendo così nascere l’informatica teorica. La prima riposta che dà è negativa: esistono formule per cui non esiste una procedura automatica perché andrebbe avanti fino all’infinito. La risposta è negativa perché la logica del primordine è un linguaggio che ha delle particolarità pe le quali per alcune formule si andrebbe all’infinito, e cioè quando nel proprio linguaggio si ha la possibilità di scrivere una formula autoreferenziale (frase che fa riferimento a sé stessa. Es. “ Questa frase è falsa ” è vera o falsa?). Altri modelli di calcolo: Church, Kleene 22.03 (Lezione 3) TAUTOLOGIE Una TABELLA DI VERITÀ analizza tutti i possibili valori (di P, Q, R, per esempio) per verificare quando la formula composta complessa costruita sia vera. La TABELLA DI VERITÀ avrà 8 possibilità perché, avendo 3 variabili, sarà 2^3.

TAUTOLOGIA: AA perché saranno O entrambe vere O entrambe false. Formula mai soddisfatta (= sempre falsa): A¬A = non saranno mai vere entrambe La sua negazione sarà una TAUTOLOGIA: ¬(A¬A) = perché sarà sempre vero che A∧¬A è falso Alan Turing

  • 1936 : formalizzazione delle macchine di Turing = modello di calcolo che rappresenta ciò che può fare un PC → può essere utilizzato per studiare i limiti di ciò che si può e non si può calcolare.
  • Durante la Seconda Guerra Mondiale , fa parte del gruppo di criptoanalisti che si trovano a Bletchley Park (Londra) → La criptoanalisi è l’operazione inversa della CRIPTOGRAFIA = dal greco “nascosto” e “scrittura”, è un metodo che si usa per trasmettere un messaggio “segreto” in modo da non essere comprensibile → si vuole nascondere/criptare il contenuto di un messaggio che necessita di una chiave per essere decriptato CRIPTOANALISI = a partire dal testo nascosto/codificato, riuscire a decodificarlo/trovare il messaggio originale MA senza essere destinatari del messaggio, quindi non avendo la chiave → rompere la protezione. Durante la seconda guerra mondiale i nazisti si mandavano messaggi tra di loro codificandoli tramite una macchina: la MACCHINA ENIGMA. Per poter essere decodificata, venne creata la BOMBA: una speciale macchina calcolatrice utilizzata dal controspionaggio inglese per riuscire a decodificare/decifrare i messaggi criptati/segreti tedeschi codificati con la macchina Enigma.
  • 1950 : pubblica un articolo sulla rivista di filosofia Mind che s’intitola Computing a and Intelligence e che propone il TEST DI TURING = test teorico che serve a decidere se l’A.I. è sufficientemente avanzata da simulare l’intelligenza umana. Due partecipanti, uno dei quali potrebbe essere un robot, vengono fatti conversare. Uno spettatore esterno assiste alla conversazione senza vedere o sentire la voce ma avendo solo delle informazioni sulla conversazione; deve decidere se uno dei due è una macchina o no. L’intelligenza artificiale passa il test di Turing quando riesce a ingannare lo spettatore esterno. Esempio Test Di Turing = TEST CAPTCHA, acronimo di " An Automated Public Turing test to tell Computers and Humans Apart " (test di Turing pubblico e interamente automatico per distinguere esseri computer ed esseri umani): progettato per stabilire se un utente online sia realmente un essere umano e non un bot → finalità: separare utenti umani da utenti automatici. Nel momento in cui si “partecipa” a un Test Captcha, si sta facendo un lavoro di classificazione dei dati, importante per gli algoritmi di intelligenza artificiale moderni perché la classificazione permette di: - raccogliere dei dati - con i quali viene creato un modello - che viene fornito agli algoritmi - dai quali i robot possono imparare. Es. Sono spesso esempi stradali perchè servono per allenare algoritmi per le auto senza guidatore. N.B. Sono algoritmi basati su metodi statistici, quindi di raccolta dati, non sulla logica. Ci sono 2 filoni d’Intelligenza Artificiale: 1. Metodi basati sulla logica: analisi delle tabelle di verità… 2. Metodi basati sulla statistica: in cui l’algoritmo deve apprendere dai dati - RETI DI CALCOLATORI - STORIA DI INTERNET - ARCHITETTURA DI RETE: COME FUNZIONA UNA RETE DI PC - PROTOCOLLI DI BASE = convezioni su come comunicano i pc all’interno della rete (TCP/IP) - GERARCHIA DI PROTOCOLLI - TCP/IP: ESEMPIO DI PROTOCOLLO IMPORTANTE RETI DI CALCOLATORI È possibile darne 2 descrizioni:
    1. Descrizione fisica/concreta: insieme di calcolatori connessi da mezzi fisici, es. cavi nel caso di una rete cablata; es. onde radio nel caso di una rete wireless (reti cellulari, reti radio, microonde)
    2. Descrizione logica/astratta: sistema distribuito di dati, tecnologie (incluso anche il funzionamento dei protocolli) e mezzi di comunicazione; è distribuito perchè dati, tecnologie e mezzi di comunicazione non sono tutti all’interno dello stesso PC ma sono distribuite in diversi calcolatori/elaboratori TOPOLOGIE DI RETI = forme di reti Si utilizzano i GRAFI = oggetti matematici composti da un insieme di nodi (palline verdi) e archi (stanghette di collegamento).
    • Ad ANELLO: ogni nodo può comunicare solo con i due nodi vicini a sé stesso; tutta la rete è chiusa quindi è possibile propagare il messaggio verso destra o verso sinistra

Immagine della Prima Pagina Web creata nel 1989 da Tim Berners-Lee, sul WWW. UN INTERNET CHE ATTRAVERSA IL MONDO = rete diffusa in tutto il mondo il cui obiettivo originale era quello di sviluppare un mezzo per connettere PC e reti tra di loro in modo tale che fossero protetti da disastri locali: se c’è un problema alla rete, la rete continua a funzionare. Oggi si è passati dagli obiettivi militari a un progetto di ricerca accademico a una tecnologia con importanti risvolti commerciali (es. e-commerce) → L’uso della rete ha forti implicazioni commerciali perché la pubblicità è ovunque. La struttura di internet è sviluppata su almeno 3 livelli per quanto riguarda gli Internet Service Provider (ISP - Fornitori di accesso alla rete) disposti in maniera gerarchica:

  1. Provider di Tier-1: più importanti, hanno accesso esclusivo alla rete
  2. Provider di Tier-2: fanno riferimento ai Provider di Tier-1 per mandare messaggi al di fuori della porzione di rete a cui possono fare riferimento
  3. Provider del livello di accesso (es. Vodafone Italia): sono quelli finali che forniscono la connettività a Internet a noi utenti; a loro volta fanno riferimento ai Provider di Tier-2 che fanno riferimento ai Provider di Tier- 1 I SISTEMI FINALI rappresentano le foglie: qualsiasi nostro dispositivo collegato in rete tramite i provider di accesso; finali perché non forniscono l’accesso per nient’altro. 23.03 (Lezione 4) *APPROFONDIMENTI SU RETI NEURALI E IMMAGINI http://www.subsubroutine.com/sub-subroutine/2016/11/12/painting-like-van-gogh-with-convolutional-neural-networks https://towardsdatascience.com/art-style-transfer-using-neural-networks-a28f5888746b Un PC, essendo programmato in maniera logica, riesce a gestire piuttosto bene i problemi legati alla logica; ciò che l’individuo invece fa inconsciamente, basandosi sui sensi, è più difficile per l’elaboratore → ed è qui che entra in gioco la statistica con la raccolta di dati. RETI NEURALI = particolari algoritmi dell’Intelligenza Artificiale basati sulla statistica → utilizzando molti dati in input per costruire un modello matematico, utilizzato per fare riconoscimento, classificazione… Quando si dà un dato nuovo (es. mela, pera) l’algoritmo è in grado di riconoscerlo → CLASSIFICAZIONE. Si definiscono RETI NEURALI perché in origine si voleva simulare il funzionamento del cervello. VS. Algoritmi basati sulla logica: funzionano in base a delle regole prima definite poi applicate. Filone di ricerca ART STYLE TRANSFER : applicazione delle reti neurali che permettono di trasferire lo stile di un’immagine a un’altra, utilizzando il contenuto della prima immagine. Questi task hanno avuto forti miglioramenti negli ultimi anni anche grazie all’enorme quantità di dati disponibili e grazie agli avanzamenti tecnologici. Es. Dipingere come Van Gogh con le reti neurali convoluzionali: do come immagine di stile un quadro di Van Gogh di cui l’algoritmo ha tutti gli input. Considerato che un’immagine è una matrice, per fare queste operazioni si opera sulle matrici. EDGE DETECTION = rilevamento di bordi / riconoscimento dei contorni grazie a una matrice particolare: è come se la matrice che fa l’operazione fosse applicata punto per punto all’immagine e rileva quando tra due pixel vicini c’è un forte discostamento di numero, quindi di colore. Questi problemi risolti dalle reti neurali sono posti come problemi di OTTIMIZZAZIONE (o programmazione matematica, PM): branca della matematica applicata che studia teoria e metodi per trovare quando una funzione matematica ha il valore massimo o il valore minimo all'interno di un dominio specificato. Si hanno diverse funzioni definite:
  • Content Loss : perdita del contenuto
  • Style Loss : perdita di stile Sono entrambe da minimizzare in modo da perdere il minimo contenuto e il minimo stile. Per fare queste cose con le reti neurali, negli ultimi anni sono emersi strumenti che permettono di fare queste operazioni da un’interfaccia grafica → metodi di Machine Learning (= metodi basati sulla statistica, di apprendimento automatico).

GENERATORE DI FACCE (algoritmo del 2018) https://this-person-does-not-exist.com/en = Visi creati da una rete neurale, a partire da un modello matematico a sua volta costruito grazie a moltissimi visi come input → riescono produrre immagini realistiche. È quasi impossibile riconoscere l'immagine di una persona falsa. L'IA è così sviluppata che il 90% dei falsi non viene riconosciuto da una persona comune e il 50% non viene riconosciuto da un fotografo esperto. Occasionalmente, una rete neurale commette degli errori, ed è per questo che appaiono degli ARTEFATTI: sui vestiti, sul background, sui capelli perché sui visi ci sono molti dati. L'unica cosa da fare è dare un'occhiata più da vicino: i sistemi di elaborazione visiva degli esseri umani sono molto più forti di quelli dei computer; quindi, è possibile riconoscere i falsi tramite il rilevamento. Questo strumento utilizza 2 reti neurali che competono tra di loro:

  1. La prima ha l’obiettivo di generare immagini
  2. La seconda è allenata/deputata a riconoscere se un’immagine sia reale o fake/generata automaticamente In questo modo, la fase di allenamento della rete che genera immagini è conclusa solo quando riesce a ingannare la rete che ha l’obiettivo di riconoscere l’immagine generata automaticamente o reale. Es. Video in cui si riesce a sostituire il viso di una persona con quello di un’altra → è una tecnologia che dà grandi risultati MA comporta ANCHE grandi rischi (es. creare profili o video falsi per i più diversi scopi). INDIRIZZI IN RETE SU INTERNET Ogni PC in rete è identificato da un indirizzo IP ( Internet Protocol ), di cui ci sono diverse versioni; la più diffusa attualmente è la versione 4 (IPv4). IPv4 è composto da 4 numeri che vanno da 0 a 255 perché sono 4 BYTE = 4 sequenze di BIT → IPv4 è un pattern di 32 bit. Sono 32 bit divisi in 4 parti (8, 16, 24, 32) separate da un punto → 140.203.8. Il numero in codice binario corrisponde ovviamente a un codice in cifra decimale → 10001100 11001011 00001000 00010110 Esercizi:
  • 140 → 10001100 → 22 +2^3 +2^7 = 4+8+128 = 140
  • 140/2 = 70, resto 0
  • 70 /2 = 35, resto 0
  • 35/2 = 17, resto 1
  • 17/2 = 8, resto 1
  • 8/2 = 4, resto 0
  • 4/2 = 2, resto 0
  • 2/2 = 1, resto 0
  • ½ = 0, resto 1
  • 203
  • 8
  • 22 IPv6 è l’altra versione importante che è la più recente MA non ancora adottata dal pubblico; la 5 non ha preso piede. Gli indirizzi IPv6 sono lunghi 128 bit. Se con 32 bit in numeri binari posso rappresentare 2^32 indirizzi (4 miliardi), quando finiranno si passerà alla versione IPv6 perché con 128 bit si potranno rappresentare 2^128 indirizzi (numero gigantesco).
  • V = versione Gli indirizzi IPv6, essedo così gradi devono essere codificati in un modo intelligente: non più utilizzando i numeri binari MA gli esadecimali (16 cifre disponibili MA rappresento i numeri fino al 15 perché includo lo 0) → aumentando il numero dei caratteri disponibili si può esprimere la stessa informazione MA utilizzando meno caratteri (perché già il simbolo carattere esprime più informazione da solo = ogni singolo carattere ha un’espressività maggiore). Es. 2001:db8:0:1:1:1:1:1 → in ogni gruppo si hanno 16 bit (perché 128/ 8 ) che corrispondono a 4 cifre esadecimali. Gli indirizzi IPv6 sono lunghi 128 bit, divisi in 8 parti, ognuna delle quali è lunga 16 bit = 4 cifre esadecimali In base binaria con 16 bit si possono esprimere 216 combinazioni VS. In base esadecimale posso esprimerne solo 164 combinazioni → = 4 cifre esadecimali hanno la stessa espressività di 16 bit L’alfabeto della base binaria è lungo 2 (‘lettere’); quello della base esadecimale è lungo 16. Alla base si hanno numeri di elementi dell’alfabeto, alla potenza si ha la lunghezza della parola. Es. Se si hanno 2 bit, le combinazioni sono 4 = 2^2 Es. Se si hanno 3 bit, le combinazioni sono 8 = 2^3 Es. Se si hanno 16 bit, le combinazioni equivalgono a 216 = 16^4

SEGUIRE UN MESSAGGIO ATTRAVERSO INTERNET

• APPLICAZIONE :

Viene preparato il messaggio e allegato l’indirizzo di destinazione

  • TRASPORTO : Il messaggio viene diviso in pacchetti E vengono aggiunte le informazioni sul protocollo di trasporto
  • RETE : Si va nel dettaglio a capire che percorso il pacchetto debba fare all’interno della rete ( ROUTING ). La rete è rappresentata come un grafo costituito da nodi e archi: il pacchetto parte da un nodo e deve arrivare a un altro nodo → in questa fase si decide quindi quali debbano essere i nodi intermedi (rappresentati da indirizzi intermedi - Intermediate Address ) del percorso dal computer sorgente a quello di destinazione. Esistono diversi tipi di nodi intermedi MA non è necessario abbiano il livello di Applicazione e di Trasporto perché non è detto che siano dei veri e propri computer; possono essere dei dispositivi utilizzati dagli Internet Service Provider e che gestiscono solo il livello di Rete e quello di Collegamento Dati → es. Router, Switch, Hub: sono nodi nel grafo della rete MA non sono computer. Ad ogni passo intermedio il livello di rete aggiorna la sua informazione sul percorso da fare → momento in cui decidere quale sarà il prossimo nodo a cui mandare il messaggio → l’informazione può essere aggiornata a livello di rete da ogni nodo. CFR. Immagine. Partendo dall’origine, il collegamento fisico Link passa il pacchetto a un altro nodo della rete che non lo passa direttamente a un altro nodo utilizzando il mezzo fisico MA fa riferimento al proprio livello di rete Network per aggiornare le proprie informazioni: da Link a Link →, poi Network ↑, Link giù di nuovo ↓.
  • COLLEGAMENTO DATI : = Livello più basso dove viene fatto il passaggio dei dati incapsulati utilizzando i mezzi fisici → fa il collegamento effettivo Quando il pacchetto arriva al livello di collegamento fisico ( COLLEGAMENTO DATI) , è il momento in cui si fa lo Spacchettamento. Il livello di RETE si accorge che si è arrivati a destinazione e s’inizia a estrarre l’informazione dal pacchetto. ORA il livello di TRASPORTO si occupa di riassemblare i pacchetti (prima si era occupato di dividerli). È a livello di APPLICAZIONE che il messaggio viene mostrato al destinatario: l’informazione viene interpetrata dall’applicazione in modo tale che sia intellegibile dall’utente finale. PROTOCOLLI (del livello) DI RETE = IP = Intenet Protocol (ci può essere versione 4 e versione 6) Tutta l’architettura di rete si può chiamare TCP/IP perché per il trasporto viene spesso usato il protocollo TCP e per la rete il protocollo IP (unico disponibile). SCEGLIERE TRA TCP E UDP A livello di trasporto ci sono 2 protocolli alternativi:
  • TCP = Transmission Control Protocol : più affidabile MA meno efficiente (è meno probabile che venga persa informazione MA ha un costo maggiore e maggiore dispendio di tempo perché i messaggi sono più pesanti) → Se si ha un’applicazione per cui è importante che i dati arrivino precisi e non interessa dover aspettare troppo (es. mail)
  • UDP = User Datagram Protocol : più efficiente MA meno affidabile → Se si ha un’applicazione Time Sensitive per la quale è importante che i dati arrivino in fretta, pur perdendone alcuni (es. streaming) 29.03 (Lezione 5) DNS Gli indirizzi IP sono composti di 4 BYTE (= 4 gruppi di 8 bit) che si possono rappresentare come 4 numeri da 0 a 255 separati da un punto (192.0.2.44). MA:
  • sono difficili da ricordare per un essere umano → si usano domini comprensibili all’essere umani ottenuti dalla traduzione dall’indirizzo IP grazie a un sistema dei nomi di dominio o DNS ( Domain Name System ) che traduce nomi comprensibili come www.amazon.com in indirizzi IP utilizzati dai computer e viceversa appunto → è un tipo particolare di grafo.
  • Se un indirizzo IP cambia, dobbiamo memorizzare il nuovo. Se si utilizza invece un ALIAS (es. Amazon), è possibile utilizzare sempre lo stesso. Un Domain Name System:
    • È uno schema che assegna nomi
    • È basato su domini
    • È gerarchico
    • Utilizza un sistema di database distribuito per ritrovare queste informazioni sul collegamento tra l’indirizzo IP e il nome di dominio Un esempio d’uso: Per mappare il nome di dominio su un indirizzo IP, un programma applicativo chiama una PROCEDURA DI LIBRERIA (= procedura di risoluzione), chiamata RESOLVER , passandole il nome come parametro. Questa procedura di risoluzione si trova sulla macchina locale (PC), sulla quale però non sono presenti le informazioni → Il resolver deve andare in rete a cercare le informazioni: invia un pacchetto UDP al server DNS locale che cerca il nome e restituisce l'indirizzo IP al resolver che poi lo usa, restituendo l'indirizzo IP all'applicazione, che può stabilire una connessione TCP/IP con la destinazione (o inviare pacchetti UDP) → vengono coinvolti i livelli di Trasporto (TCP) e di Rete (IP). DNS NAME SPACE ! ≠ Albero (Tipologia di rete), in cui ogni nodo rappresentava un dispositivo in rete. In questo caso ogni nodo rappresenta un dominio o un sottodominio. A partire dall’alto, tutti gli archi partono da un unico nodo che si chiama RADICE, nodo da cui tutti gli altri nodi scendono. L’albero si distribuisce in nodi attraverso i RAMI. I nodi finali, da cui non escono altri rami con nodi, si chiamano FOGLIE dell’albero. Internet è diviso in oltre 200 TOP LEVEL DOMAINS (Domini Di Livello Superiore), che sono i primi che s’incontrano a partire dalla radice ( ROOT ). Ogni Top Level Domain è a sua volta diviso in sottodomini fino ad arrivare alle foglie = domini che non hanno sottodomini MA alle quali può essere comunque collegata più di una macchina (PC). Come leggere l’albero: a partire dalla radice, si scorrono i rami fino ad arrivare alle foglie: edu.yale.cs.ai.robot MA quando si rappresentano nella barra degli indirizzi per andare sul sito web, vengono letti al contrario perché il Top Level Domain (.com, .it) va in fondo: robot.ai.cs.yale.edu → da destra verso sinistra si va verso categorie sempre più specifiche: edu = dominio delle università americane; yale: un’università americana, cs = computer science/dipartimento d’informatica, ai = artificial intelligence, robot. I domini di primo livello possono essere domini generici (.net, .com, .org) O rappresentare uno stato (.us, .nl). NOMI DI DOMINIO
  • DOMINIO COMPLETO / ASSOLUTO: il nome di dominio rappresentato nell’albero ha un percorso completo dalla foglia alla radice E finisce con un punto (eng.sun.com. )
  • DOMINIO RELATIVO: il nome di dominio rappresentato nell’albero non ha un percorso completo perché parte dalla foglia MA non arriva alla radice → non c’è il punto finale, che rappresenta la radice. Es. Se si fa tutti parte dell’università di Yale, non occorre specificare edu.yale .cs.ai.robot
  • Questi nomi sono insensibili al Case (= CASE INSENSITIVE ): non importa che le lettere siano maiuscole o minuscole.
  • I nomi dei componenti possono essere fino a 63 caratteri e i nomi completi non dovrebbero superare i 255 caratteri → CFR. Sistema binario, importante per tutta l’informatica: 64 e 256 sono potenze di 2.
  • Non c'è nessuna regola contro la registrazione sotto 2 Top Level Domains. Es. sony.com → sito web mondiale + sony.nl → dominio olandese
  • Ogni dominio di livello superiore può decidere come allocare/assegnare i domini sotto di esso. Es. Nel sistema americano un’azienda tipicamente ha un sito .com, un’università ha il sito .edu VS. In Giappone quest’informazione è separata in 2 domini, uno superiore e un sottodominio (.jp = Giappone; .ac = Academia; .jp e .co = commerciale) VS. In Italia i siti governativi sono .gov.it. VS. I Paesi Bassi non fanno questa distinzione.
  • Per creare un nuovo dominio, è necessario il permesso del dominio superiore che lo includerà; una volta creato, può creare sottodomini senza dover chiedere il permesso ai domini superiori.
  • HOST = dispositivo connesso in rete, nodo di rete HOST A e HOST B comunicano tra di loro MA L’utente che accede all’HOST A e all’HOST B vede solo quello che c’è al livello di Applicazione. L’informazione del livello di Applicazione viene di volta in volta impacchettata ai livelli successivi: Trasporto → Rete (internet + Network) → livello fisico. Le freccette tratteggiate fanno riferimento a com’è fatta l’informazione a quello specifico livello:
  • Livello di Applicazione: Messaggio HTTP ( HyperText Transfer Protocol)
  • Livello di Trasporto: Pacchetto TCP o UDP
  • Livello di Rete: Datagramma IP
  • Livello fisico: Frame Ethernet ! A seconda del livello, l’informazione è definita MESSAGGIO, PACCHETTO, DATAGRAMMA, FRAME. L’informazione viene impacchettata da chi invia per poter essere inviata in rete E spacchettata da chi riceve. Ci sono dei nodi all’interno della rete ai quali non si fa accesso in qualità di utenti = ROUTER: servono solo per indirizzare il traffico di rete, per scegliere i percorsi. MA siccome non vengono utilizzati da noi utenti, non arrivano fino al livello di Applicazione ma solo a quello di Rete. ROUTING = meccanismo utilizzato per trasferire i dati tra le reti in modo che raggiungano la destinazione corretta = fa riferimento al Livello di Rete / protocollo IP. SERVER WEB = PC dove sono caricate le pagine web BROWSER WEB = programma che si usa per accedere alle pagine web (Firefox, Chrome, …) ROUTER = gestiscono la maniera in cui vengono trasferiti i dati → non sono a conoscenza dei livelli sopra di Trasporto e Applicazione perché tanto gli utenti utilizzano i computer e non i router. PROTOCOLLI INTERNET VS OSI
  • PROTOCOLLI INTERNET La gerarchia/Stack (pila) di protocolli fa riferimento a 5 livelli MA normalmente se ne considerano 4 (Applicazione, Trasporto, Rete, Fisico) MA tra il livello 3 e l’1 c’è un ulteriore livello.
  • ISO/OSI
  • ISO: società che si occupa di certificazioni
  • OSI ( Open Systems Interconnection ): modello di questa società per quanto riguarda l’architettura di rete Il modello OSI conosciuto anche come modello ISO/OSI. Il livello di Applicazione viene diviso in diversi sottolivelli: 7) Applicazione, 6) Presentazione, 5) Sessione, perché i nostri programmi che comunicano in rete fanno diverse cose. A scendere: 4) Trasporto + TCP, 3) Rete + IP, 2)1) Data Link + Fisico dove avviene il passaggio effettivo dei bit nel cavo (se connessione cablata) o nell’aria (se connessione senza fili). STRATI INFERIORI/SUPERIORI
  • STRATI INFERIORI = strati 1- 4 , più concreti e si riferiscono più strettamente alla tecnologia delle comunicazioni
  • STRATI SUPERIORI = strati 5- 7 , più astratti e che fanno riferimento all’applicazione ! Il modello TCP/IP (ogni livello con proprio protocollo) e il modello ISO/OSI sono modi diversi di rappresentare la stessa cosa → il modello TCP/IP fa riferimento direttamente ai protocolli: nel modello ISO/OSI si ha TCP per il Trasporto (gestisce la trasmissione dati) e IP per la Rete (gestisce gli indirizzi). STRATO 7: LIVELLO DI APPLICAZIONE = Sede di un'ampia varietà di protocolli di applicazione che si usano in qualità di utenti:
  • Virtual Terminal Service = connessione a un server remoto → Telnet o SSH
  • File Transfer = trasferimento di file → protocollo FTP
  • E-mail = posta elettronica STRATO 6: LIVELLO DI PRESENTAZIONE Si occupa della rappresentazione dei dati trasmessi, nei diversi modi in cui vengono presentati, anche se nel PC poi devono fare tutti riferimenti alla codifica binaria perché si utilizzano i bit:
  • Tabella ASCII: utilizzata per codificare messaggi testuali in informazione binaria
  • Tabella EBCDIC: sistema/standard di codifica dei messaggi testuali utilizzato da IBM ed equivalente ad ASCII
  • Complemento di uno o di due: per rappresentare i numeri decimali negativi tramite i numeri binari
  • Byte Ordering Conventions E Floating Point Conventions (convenzioni in virgola mobile): convenzioni per rappresentare i numeri decimali con la virgola i numeri binari Il livello di Presentazione tratta e gestisce anche la compressione dei dati. STRATO 5: LIVELLO DI SESSIONE Permette di stabilire delle sessioni tra macchine, per esempio:
  • consente l'accesso remoto (remote logins): vengono gestite le informazioni sui login ottenute dal Virtual Terminal Service che permette di collegarsi in remoto (Livello 7) ! Ogni livello comunica con il livello subito sotto e subito sopra; fornisce servizi a questi livelli adiacenti e usa i servizi solo di questi livelli adiacenti. STRATO 4: LIVELLO DI TRASPORTO Funzioni di base:
  • Prendere i dati dal livello di Sessione
  • Dividerli in unità più piccole Stabilire una connessione con il nodo di destinazione e Assicurarsi che le unità arrivino correttamente al livello di Sessione della destinazione: se si hanno Source (invia il messaggio) e Destination (riceve il messaggio), i 2 livelli di Trasporto delle 2 macchine usano lo stesso protocollo per comunicare tra di loro al fine di passare l’informazione ai livelli superiori → vengono effettuati dei controlli al fine di fornire un servizio efficiente. A seconda del tipo di connessione, se non sono arrivate le unità, le rinvio → differenza tra TCP e UDP. → Il Livello di Trasporto prende i dati dal livello di Sessione e determina anche il "tipo di servizio" da fornire sempre a questo livello di Sessione. STRATO 3: LIVELLO DI RETE Sono importanti gli indirizzi IP. La responsabilità principale è il controllo del Routing nella sottorete, per passare il messaggio dalla Sorgente alla Destinazione. Per ROUTING s’intende il percorso che il datagramma deve fare per raggiungere la destinazione e può essere basato su:
  • Elementi statici come le TABELLE STATICHE: non vengono cambiate quindi sono più efficienti MA, se sussistono problemi di rete (cade la rete e non si può passare per certi nodi), diventano molto lente
  • Elementi più dinamici come le Tabelle determinate all'inizio della sessione O le TABELLE altamente DINAMICHE: variano per ogni pacchetto inviato a seconda del carico della rete → anche per arrivare alla stessa destinazione può essere che facciano percorsi diversi perchè gli algoritmi di questi protocollo vanno a controllare di frequente com’è messa la rete, dove si può passare e quanto tempo ci si metta: gli algoritmi trasportano i pacchetti segnandosi quanto tempo ci hanno messo, così che la volta successiva l’informazione sia salvata. Al massimo della dinamicità si ha anche che il diagramma viene inviato, l’algoritmo ha un tempo massimo di attesa; se non riceve conferma dell’arrivo del datagramma, lo rinvia. → Dal più statico al più dinamico Il livello di rete è anche responsabile del controllo della congestione e del monitoraggio dell'uso.
  • Controllo della CONGESTIONE: la rete può essere congestionata = una parte è sovraccaricata perché molti messaggi vengono scambiati → gli algoritmi hanno die metodi per accorgersene e far cambiare il percorso al datagramma all’interno della rete in modo da evitare le zione più congestionate
  • Monitoraggio dell’USO: algoritmi distribuiscono l’uso della rete in maniera efficiente → L’USO è un concetto generale; la CONGESTIONE è quando la rete è utilizzata troppo. STRATO 2: LIVELLO DI COLLEGAMENTO DATI Ogni datagramma del livello di rete può essere suddiviso in tanti Frame = informazione più unitaria, più atomica, più divisa più adattata ad essere trasportata in rete. I frame sono usati per gestire gli errori attraverso le conferme e l’eventuale rinvio dei frame. Il livello di collegamento dati, quindi, fornisce un servizio affidabile e senza errori in cima al livello fisico 1. STRATO 1: LIVELLO FISICO Si occupa della trasmissione dei bit sul canale fisico, che può essere un cavo o l’aria. Le questioni includono:
  • Definizione di 0/1: 0 è quando non passa l’elettrone; 1 = quando passa l’elettrone
  • Dettagli su come venga progettato il canale di comunicazione, se elettronico o meccanico SERVIZI NEL MODELLO OSI

VIDEO: What is DNS (Domain Name System)? https://www.youtube.com/watch?v=nyH0nYhMW9M IBM = Azienda leader della produzione di computer fino agli anni ’90; oggi fornisce ancora servizi di consulenza e produce software ma non più computer.

  • Il DNS traduce i nomi di dominio in indirizzi IP
  • Un DOMAIN NAME è un qualsiasi testo o stringa che inserite in una pagina web (ibm.com, google.com, abc.com).
  • Un INDIRIZZO IP è il protocollo Internet, un numero di 4 set, con un insieme di regole che aiuta milioni di dispositivi a comunicare tra loro. Gli indirizzi IP sono assegnati ad ogni singolo dispositivo su internet.
  • Il componente principale del sistema DNS è il DNS Resolver, che agisce come una rubrica telefonica: si cerca il nome e lo si abbina al numero.
  • RESOLVER è sia il metodo che permette di ottenere l’indirizzo IP sia il serve che fa quest’operazione. Primo passo: utente = dove inseriamo l'indirizzo web della nostra pagina. Il browser web ha quella che si chiama memoria cache che memorizza certi valori per un certo periodo di tempo. Il browser consulta prima la memoria cache e quando non ha il particolare sito web che stiamo cercando, inoltra la richiesta al resolver DNS principale. Il resolver DNS ha la sua propria cache; quando non ha il sito web particolare che stiamo cercando, inoltra la richiesta al root server: il server principale al livello più alto nella gerarchia DNS. Se ancora non ha quell'informazione, quello che ha è l'informazione sul server di dominio di primo livello (centinaia di essi collocati in diverse località del mondo). Da lì si ottiene l'indirizzo IP del server di dominio di primo livello e si invia la richiesta al server TLD (Top Level Domain), che ha tutte le informazioni per il Top Level Domain. Se non ha ancora queste informazioni, invia la richiesta al server dell’Autoritative Name, inviando l'indirizzo IP. Il server dell’Autoritative Name ha tutte le informazioni e tutti i registri DNS di cui abbiamo bisogno per accedere; quindi, fornisce i registri DNS di cui abbiamo bisogno per accedere. La richiesta viene inviata al server dell’Autoritative Name o Domain Name Server, che rimanda indietro l'indirizzo IP di quel particolare sito web che stiamo cercando. Ora l'indirizzo IP torna al resolver DNS che lo memorizza nella cache e lo rimanda al browser web, che ora ha l'indirizzo IP che stavamo cercando. Il resolver DNS invia la richiesta al particolare server web che punta all'indirizzo IP che è stato inviato. Ora il server web ha tutto il contenuto necessario per visualizzare la pagina web. → È come se si percorresse l’albero, salendo per andare a chiedere informazioni su un’altra zona, in modo da avere l’indirizzo IP di un PC connesso a quella sottorete. CONNECTION-ORIENTED Affinché ci sia una connessione, deve esistere una procedura che la stabilisce e che decide poi se è terminata o meno. Per creare una connessione tra un host/client locale e un server in una rete TCP/IP il metodo utilizzato è il Three - way handshake che consiste di 3 passaggi tra il CLIENT (colui che richiede informazioni al server) e il SERVER appunto:
  1. Il client, che vuole avviare la connessione, la richiede inviando un MESSAGGIO SYN ( Synchronize ) al server e così facendo richiedere di sincronizzare la Sequence Number (segmento di 32-bit del TCP che serve per riconoscere il pacchetto inviato)
  2. Quando il Server la riceve, risponde con un MESSAGGIO SYN-ACK ( Acknowledgment = riconoscimento), cioè riconosce di aver ricevuto la richiesta di connessione
  3. Il client risponde solo con un MESSAGGIO ACK, riconoscendo cioè che ha accettato la connessione e si può avviare. Per chiudere la connessione:
  4. Viene inviato un MESSAGGIO di tipo FIN che va riconosciuto con un MESSAGGIO ACK
  5. A sua volta manda un FIN così che, chi ha avviato la connessione, riconosce che si sta chiudendo con un ACK finale.
  6. Quando l’ACK finale è ricevuto, la connessione è chiusa. ! Essere Reliable o meno E Connection-oriented o Connectionless sono due cose diverse MA collegate. Se si ha una connessione (servizio Connection-oriented) , è più facile garantire un servizio affidabile perché il meccanismo della connessione fa sì che i messaggi possano essere rinviati. CHECKSUM = è una sequenza di bit che, associata al pacchetto trasmesso, viene utilizzata per verificare l'integrità di un dato o di un messaggio che può subire alterazioni durante la trasmissione sul canale di comunicazione = dato calcolato a partire da altri dati; ha lo scopo di accorgersi se ci sono stati degli errori = garantire l’integrità dei dati = è una funzione che fornisce un dato più piccolo rispetto ai dati originali MA è un dato univoco: se i dati originali sono stati corrotti/cambiati o ne mancano, anche il Checksum sarà cambiato. I dati originali vengono inviati assieme al loro Checksum, quello che li riceve prende quei dati, ricalcola il Checksum per verificare che sia analogo a quello inviato

dall’altro nodo della rete. Se dovessero essere diversi sicuramente c’è stato un problema e viene chiesto di rinviarli. Es. il protocollo http ha il suo Checksum. TTL ( Time to Leave ) = limite temporale dato ad un messaggio in rete; dopo quel limite, il messaggio viene cestinato. Se il messaggio ha superato il proprio TTL, significa che ci sono stati dei problemi quindi ha senso rinviarlo. Anche questo viene indicato all’interno dell’HEADER* e corrisponde a un campo di 8 bit. ToS ( Terms Of Service ): fa riferimento al livello 3 di Rete (CFR. Protocollo IP). È un campo in cui si possono specificare informazioni sul tipo di servizio richiesto dal livello 3: il servizio può essere più o meno affidabile. HL ( Header Length ) è la lunghezza dell’Header e dove iniziano i dati veri e propri. ISO / OSI

  • ISO ( International Organization for Standardization ) = Istituto per gli standard
  • OSI ( Open Systems Interconnection ) = standard creato per le architetture di rete = Modello astratto rispetto al TCP/IP (in cui ci sono già i nomi dei protocolli) DATAGRAMMA IP ↑ In alto: Parte dedicata all’Header (indirizzo IP di sorgente e destinazione) ↓ In basso: Parte dedicata ai dati (contiene tutto il segmento TCP) Anche per il DATAGRAMMA IP c’è il Checksum, HL, ToS; c’è un ID per ogni datagramma, TTL, Protocol (IPv4 e IPv6); ci sono anche l’Indirizzo IP della sorgente e della destinazione. FORMATO DEL SEGMENTO TCP Gli indirizzi IP sono solo al livello 3 di Rete; al livello 4 di Trasporto la comunicazione avviene tramite PORTE: Porta Sorgente e Porta Destinazione. Ai livelli più alti, come al livello di Applicazione, un’applicazione specifica fa riferimento a una porta specifica: ad ogni porta corrisponde un’applicazione che può usare quella porta lì. Mettendo insieme le informazioni del livello 3 e 4, per comunicare in rete con un’applicazione di un altro PC, si usa una COPPIA: indirizzo IP + Porta → identificano sia il PC che l’applicazione che si sta usando. La parte dei Dati del livello 3 contiene tutto il segmento TCP, anche con il suo Header, perché si va dall’alto verso il basso ↓. TCP VS UDP = Sono protocolli diversi MA entrambi per il livello di Trasporto; avranno dunque anche un Header diverso perché ogni Header è definito dal protocollo. FORMATO DEL SEGMENTO TCP L’Header del protocollo UDP è molto più piccolo perchè l’UDP è meno efficiente, fa meno controlli quindi il Messaggio è più leggero. VIDEO: How does TCP enable reliable delivery? https://www.youtube.com/watch?v=3Iy4EQpGnpo TCP è un meccanismo affidabile perché prende l’intera immagine e la divide in chunks (pacchetti d’informazione), attribuendo a ciascuno di essi un numero. Il receiver informa il sender di quello che ha ricevuto e dell’informazione che invece manca. Il sender ritrasmette le parti mancanti. Se ad andare persa è invece l’informazione di ciò che si è ricevuto e ciò che manca (Data Pack), il sender s’”insospettisce” perché non riceve feedback dal receiver e quindi rinvia dopo un certo periodo di tempo tutto il contenuto. → La comunicazione tra i due nodi permette di rendersi conto se mancano chunks (pacchetti d’informazione), che eventualmente rinvia. SPECIFICA DEL PROTOCOLLO IP https://datatracker.ietf.org/doc/html/rfc = Documento legale e ingegneristico in cui ci sono le specifiche di com’è fatto il protocollo IP; va talmente in dettaglio da poterlo implementare. Risale agli inizi anni ’80 e venne preparato da un’università americana per la DARPA ( Defense Advanced Research Projects Agency ), un'agenzia governativa del Dipartimento della Difesa degli Stati Uniti incaricata dello sviluppo di nuove tecnologie per uso militare.
  • A cosa serve, vengono descritte le funzioni, i servizi da fornire (riferimenti a TCP) MA SOPRATTUTTO com’è fatto un indirizzo IP E Cosa c’è nell’Header. DIVERSI LIVELLI: Dall’Applicazione (livello più astratto) ai livelli più bassi (concreti/fisici). SOMMARIO DELL’ARCHITETTURA