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


Laboratorio 3cfu INFORMATICA, Appunti di Elementi di Informatica

Appunti precisi sul Laboratorio di Informatica

Tipologia: Appunti

2019/2020

Caricato il 06/06/2020

claudia-casadei-1
claudia-casadei-1 🇮🇹

4.6

(45)

22 documenti

1 / 24

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
INFORMATICA
Informatica = disciplina scientifica dai tre aspetti:!
1. operativo: un insieme di applicazioni e manufatti (i computer)!
2. tecnologico: una tecnologia che realizza le applicazioni;!
3. culturale: una disciplina scientifica che fonda e rende possibile quella tecnologia."
che si occupa di:!
studio dei fondamenti teorici della scienza dell'informazione;!
definizione di algoritmi per l'elaborazione automatica delle informazioni;!
realizzazione di questi algoritmi;!
uso del calcolatore.!
Lo studio dell'informatica è importante perché:!
accresce le facoltà creative, logiche e cognitive dell'individuo!
è multidisciplinare!
ore strumenti per modellare formalmente problemi e poterne arontare la
risoluzione !
è strategica in numerosi ambiti applicativi.!
Storia del computer
Generazione 0: I calcolatori meccanici
abaco, 4000 anni fa, Cina !
1702, Gottfried Wilhelm Leibniz: logica —> disciplina matematica. Sistema
numerico binario: l’uno e lo zero rappresentano i valori%vero!e%falso. !
1804 Joseph Marie Jacquard: nuova tecnologia per i telai in grado di controllare il
movimento di aghi, filo e tessuto attraverso schede perforate, automatizzando così
la procedura di tessitura.!
metà del XIX secolo, Charles Babbage: macchina di calcolo in grado di compiere
operazioni aritmetiche, ma mai realizzata. !
Ada Lovelace (prima programmatrice della storia): macchina di Babbage —> Ada
riconosce la possibilità di%programmare%la macchina per altri fini (dierenza tra
una%calcolatrice tradizionale%e un calcolatore)!
1854, George Boole, pubblica la propria%algebra booleana, creando un sistema nel
quale è possibile trattare ogni relazione logica attraverso l'utilizzo di formule
algebriche!
fine del XIX secolo, Herman Hollerith: macchina tabulatrice, per automatizzare le
operazioni di censimento!
anni 30, Memex: macchina immaginaria progettata da Vannevar Bush —> scrivania
dotata di schermi traslucidi, una tastiera, un set di pulsanti e delle leve.%!
anni '30,%Kurt Gödel: teoremi di incompletezza che fecero da base per il lavoro di
Alan Turing, il quale dimostrò come ogni funzione calcolabile si possa eseguire
attraverso un algoritmo installato su una Macchina di Turing. Per alcuni algoritmi
però non è possibile sapere a priori se siano eseguibili in un tempo finito o infinito
—> netta separazione tra la macchina fisica!e i dati e gli algoritmi astratti.!
Generazione 1: I tubi a vuoto (valvole)
1939, John Vincent Atanaso e Cliord Berry —>l’Atanaso Berry Computer,
meglio noto come ABC (primo calcolatore digitale totalmente elettronico, mai
brevettato)!
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18

Anteprima parziale del testo

Scarica Laboratorio 3cfu INFORMATICA e più Appunti in PDF di Elementi di Informatica solo su Docsity!

INFORMATICA

Informatica = disciplina scientifica dai tre aspetti:

1. operativo : un insieme di applicazioni e manufatti (i computer) 2. tecnologico : una tecnologia che realizza le applicazioni; 3. culturale : una disciplina scientifica che fonda e rende possibile quella tecnologia. che si occupa di: ◦ studio dei fondamenti teorici della scienza dell'informazione; ◦ definizione di algoritmi per l'elaborazione automatica delle informazioni; ◦ realizzazione di questi algoritmi; ◦ uso del calcolatore. Lo studio dell'informatica è importante perché: - accresce le facoltà creative, logiche e cognitive dell'individuo - è multidisciplinare - offre strumenti per modellare formalmente problemi e poterne affrontare la risoluzione - è strategica in numerosi ambiti applicativi. Storia del computer Generazione 0: I calcolatori meccanici - abaco, 4000 anni fa, Cina - 1702, Gottfried Wilhelm Leibniz: logica —> disciplina matematica. Sistema numerico binario: l’uno e lo zero rappresentano i valori vero e falso. - 1804 Joseph Marie Jacquard: nuova tecnologia per i telai in grado di controllare il movimento di aghi, filo e tessuto attraverso schede perforate, automatizzando così la procedura di tessitura. - metà del XIX secolo, Charles Babbage: macchina di calcolo in grado di compiere operazioni aritmetiche, ma mai realizzata. - Ada Lovelace (prima programmatrice della storia): macchina di Babbage —> Ada riconosce la possibilità di programmare la macchina per altri fini (differenza tra una calcolatrice tradizionale e un calcolatore) - 1854, George Boole, pubblica la propria algebra booleana , creando un sistema nel quale è possibile trattare ogni relazione logica attraverso l'utilizzo di formule algebriche - fine del XIX secolo, Herman Hollerith: macchina tabulatrice, per automatizzare le operazioni di censimento - anni 30, Memex: macchina immaginaria progettata da Vannevar Bush —> scrivania dotata di schermi traslucidi, una tastiera, un set di pulsanti e delle leve. - anni '30, Kurt Gödel: teoremi di incompletezza che fecero da base per il lavoro di Alan Turing, il quale dimostrò come ogni funzione calcolabile si possa eseguire attraverso un algoritmo installato su una Macchina di Turing. Per alcuni algoritmi però non è possibile sapere a priori se siano eseguibili in un tempo finito o infinito —> netta separazione tra la macchina fisica e i dati e gli algoritmi astratti. Generazione 1: I tubi a vuoto (valvole) - 1939, John Vincent Atanasoff e Clifford Berry —>l’Atanasoff Berry Computer, meglio noto come ABC (primo calcolatore digitale totalmente elettronico, mai brevettato)

  • 1945, John von Neumann: architettura per calcolatori digitali programmabili tutt'ora in uso nella maggior parte dei dispositivi moderni di questo tipo —> dati e programmi condividono la stessa memoria.
  • 1946: ENIAC, primo calcolatore elettronico basato interamente su tecnologia a valvole —> operazioni molto complesse in pochissimo tempo ma pesava 300 tonnellate e occupava 170 metri quadrati
  • 1948, Claude Shannon: termine bit (contrazione di binary digit ), unità elementare binaria di informazione ( vero e falso , o 0 e 1). Generazione 2: I transistor
  • 1954, l’IBM: primo calcolatore commerciale con memoria su nastro magnetico
  • 1959: IBM 705, che usava il FORTRAN, un linguaggio di programmazione molto più vicino a quello umano rispetto alle istruzioni comprensibili dal calcolatore Generazione 3: I circuiti integrati
  • 1964, Olivetti: Programma 101 , il primo personal computer (PC) della storia, compatto da stare su una scrivania. Senza schermo: le informazioni erano trasmesse all'utente per mezzo di un nastro di carta stampata.
  • Digital Equipement Corporation: primo minicomputer (PDP-8) dotato di uno schermo molto rudimentale. Generazione 4: Il microprocessore
  • anni ’70, Intel Corporation: microprocessore , primo circuito integrato capace di contenere l’intera unità di calcolo di un calcolatore —> primo PC della storia, l’Apple II, con il suo sistema operativo chiamato Apple Dos.
  • 1981: IBM —> il suo primo PC con il sistema operativo MS-Dos prodotto dalla software house Microsoft.
  • anni '80 e ’90: interfacce grafiche, possibilità di compiere più operazioni in parallelo, avvento di Internet, incremento della potenza di calcolo e delle capacità di memorizzazione. Problemi, algoritmi e programmi
  • Algoritmo : metodo per risolvere in modo efficiente, univoco, universale, formalmente preciso e finito un problema.
  • (^) finitezza delle operazioni da svolgere;
  • (^) non ambiguità del linguaggio in cui sono scritte le operazioni da effettuare.
  • (^) universalità della procedura algoritmica,
  • (^) completezza delle operazioni = ogni operazione necessaria allo svolgimento del compito esplicitamente dichiarata. SCOPO—> fornirne una definizione formalmente corretta e non ambigua. Aspetti rilevanti di un algoritmo: ◦ la quantità di spazio occupato; ◦ la velocità con cui è possibile reperire un determinato dato; ◦ la facilità con cui si possono aggiungere, modificare o eliminare dati.
  • (^) Programma : un algoritmo scritto in un linguaggio comprensibile al calcolatore, che utilizza dati organizzati secondo una determinata strategia ed è vincolato alle
  • sicurezza dei dati, ovvero che solamente utenti autorizzati abbiano accesso alla base di dati, compiendo operazioni autorizzate.
  • possibilità di definire una visione personalizzata dei dati per le diverse tipologie di utenti/applicazioni
  • (^) può integrare le funzionalità di salvataggio e ripristino ( backup e recovery ) per garantire che non ci siano perdite di dati anche in caso di guasti e malfunzionamenti del software o degli hardware
  • è in grado di assicurare la consistenza dei dati contenuti nella base di dati, facendo in modo che vengano rispettati i vincoli di integrità sui dati stessi. es. Oracle, MySQL, Microsoft SQL Server, PostgreSQL, MariaDB. Modello dei dati : descrizione della struttura dei dati che caratterizzano la realtà di interesse a cui si riferisce la base di dati. Comprende:
  • Un insieme di costrutti,
  • Una notazione per specificare i dati tramite i suddetti costrutti,
  • Un insieme di operazioni per esprimere le interrogazioni e le modifiche da eseguire sui dati organizzati secondo quel modello.
  • (^) legami = associazioni fra oggetti
  • (^) caratteristiche = attributi degli oggetti e/o delle loro associazioni Concettualizzazione: rappresentazione di una realtà di interesse in termini di insiemi di oggetti, caratteristiche e legami. Modello relazionale : i dati sono memorizzati in tabelle, dette relazioni, composte da un certo numero di colonne, dette attributi, e da un certo numero di righe, dette tuple. tabella= relazione colonne = attributi righe = tuple Tutti i valori presenti in una colonna appartengono allo stesso tipo di dato o dominio. Ad esempio, il nome di un regista è un valore di tipo testuale, come anche il cognome e la nazione.
  • Righe = tuple —> specifici oggetti o legami fra oggetti del mondo reale
  • Colonne = Attributi —> interpretazione dei dati che compaiono nelle varie righe.

Basi di dati relazionali : collezione di tabelle che rappresentano gli oggetti e le associazioni fra oggetti che caratterizzano la realtà di interesse. I legami fra i dati di tabelle diverse vengono espressi per mezzo di valori comuni presenti nelle tuple di tali tabelle. Questi valori dovranno per forza essere univoci in entrambe le tabelle. Schema di relazione : costituito dal nome r della relazione e dall'insieme degli attributi che costituiscono la relazione. Ad esempio, lo schema di relazione della relazione "regista" è definito come segue Schema dell'intera base di dati cinematografica:

  • (^) istanza di una relazione r = insieme delle tuple definite sugli attributi di r
  • (^) istanza di base di dati = insieme delle istanze di relazione di ciascuna relazione che costituisce la base di dati. Vincoli : inseriti durante la fase di progettazione, obbligano a seguire un determinato criterio di inserimento o forniscono delle regole di inserimento per i valori degli attributi.

Linguaggi per le basi di dati

  • Linguaggio di definizione dei dati o DDL: definizione dello schema logico e degli eventuali schemi esterni.
  • Linguaggio di manipolazione dei dati o DML: per formulare estrazioni e modifiche sui dati. Spesso si indica con linguaggio di interrogazione ( query language ) il sottoinsieme delle istruzioni DML per l’estrazione di dati da una base di dati. Nei DBMS relazionali le funzionalità DDL e DML confluiscono in un unico linguaggio denominato SQL ( Structured Query Language ), che è uno standard per i DBMS relazionali. Creazione di una base di dati con l’ausilio di LibreOffice Base 1. Avviamo il programma, andiamo nel menù File > Nuovo e selezioniamo la voce Database.
  • base di dati: db_cinema 2. Definizione delle tabelle
  • (^) Definiamo la tabella regista;
  • (^) Nomi dei campi (= attributi):
  • id_regista al quale assegneremo il tipo di dato numerico Intero ,
  • nome, cognome, sesso e nazione ai quali assegneremo il tipo di dato Testo
  • (^) si dichiara la chiave primaria selezionando gli attributi che la costituiscono, posizionandosi sulla colonna più a sinistra e facendo Clic tasto destro > Chiave primaria.
  • (^) salvare la tabella e assegnarle il nome regista
  • (^) In modo analogo andremo poi a creare le tabelle film (utilizzando l’attributo titolo come chiave primaria), attore (id_attore chiave primaria) e partecipazione (la coppia titolo, id_attore è utilizzata come chiave primaria) 3. Definizione delle associazioni : le associazioni nelle basi di dati relazionali vengono espresse mediante valori di attributi opportuni. 4. Popolamento della base di dati = inserimento dei dati ATTENZIONE: ordine da seguire nel popolamento della base di dati. Per prima cosa, vanno inseriti i dati delle tabelle in cui non sono presenti chiavi esterne. Successivamente, andremo a popolare la tabella film, la cui chiave esterna fa riferimento all’attributo id_regista della tabella regista. Infine, possiamo popolare la tabella partecipazione i cui attributi sono chiavi esterne sulle tabelle film e attore, rispettivamente. Nel caso in cui non rispettassimo questo ordine, il sistema rileverebbe il nostro tentativo di inserire dati che non rispettano i vincoli di chiave esterna (ad esempio, l’inserimento di un film il cui regista non è ancora stato inserito) e ci impedirebbe di salvarli causando un messaggio di errore. 5. Operazione di interrogazione = query —> reperire i dati di interesse da una base di dati, specificando in modo dichiarativo le condizioni di selezione che tali dati devono soddisfare affinché possano appartenere al risultato dell’estrazione. Con riferimento alla base di dati db_cinema, un esempio di interrogazione è il reperimento del nominativo degli attori americani nati dopo il 1950. Il risultato di

un’interrogazione è presentato sotto forma di tabella dove le righe rappresentano le tuple estratte dalla base di dati che soddisfano il criterio di selezione fissato e le colonne rappresentano gli attributi di interesse fra quelli disponibili nelle tabelle della base di dati. Le operazioni di interrogazione sono espresse in linguaggio SQL mediante l’uso del comando SELECT. LibreOffice Base —> query-by-example (QBE), interrogazione formulata in modo dichiarativo descrivendo le caratteristiche che le tuple del risultato dovranno possedere. SELECT nome, cognome FROM Attore WHERE anno_nascita > 1950 AND nazione = 'USA' Ne consegue che l’istruzione SQL per eseguire un’interrogazione alla base di dati è costituita dalle clausole SELECT , FROM WHERE.

  • (^) SELECT comando SQL che permette di interrogare una base di dati per estrarne le informazioni di interesse, permette di specificare gli attributi che vogliamo ottenere nel risultato dell’interrogazione SQL
  • (^) FROM esprime il nome della tabella o delle tabelle della base di dati dalle quali saranno prelevati i dati di interesse. es. SELECT titolo, genere FROM Film
  • (^) WHERE può seguire la clausola FROM in un comando SELECT di SQL per specificare eventuali condizioni di selezione di un’interrogazione. In particolare, le tuple delle tabelle indicate nella clausola FROM sono valutate rispetto alle condizioni della clausola WHERE. Una tupla viene inserita nel risultato dell’interrogazione se soddisfa le condizioni espresse nella clausola WHERE. es. SELECT titolo FROM film WHERE genere = ‘thriller’.
  • (^) Operatori AND e OR sono utilizzati per combinare i predicati secondo il criterio congiuntivo (AND logico) disgiuntivo (OR logico), rispettivamente.
  • (^) Operatore NOT per eseguire la negazione del risultato di un’operazione di confronto. es. SELECT titolo FROM film WHERE genere = ‘thriller’ AND nazione = ‘USA’: intendiamo reperire il titolo delle pellicole di genere thriller che sono state prodotte negli Stati Uniti.
  • (^) JOIN —> ricostruire le corrispondenze tra tuple appartenenti a tabelle diverse lavorando sull’uguaglianza della chiave esterna di una tabella e la chiave primaria di un’altra tabella
  • (^) Broadcast : la trasmissione dei pacchetti è indirizzata a tutti i nodi di una rete e l’insieme dei nodi non è definito a priori (per esempio le trasmissioni dei canali radio FM) Spesso fra due nodi della rete esistono numerosi percorsi alternativi lungo i quali si potrebbe effettuare la trasmissione. Per questo motivo, i nodi fanno uso di algoritmi di instradamento (routing) che hanno lo scopo di individuare il miglior percorso per fare arrivare ciascun messaggio fino al nodo destinatario. Tipologie di rete Le reti di calcolatori possono essere classificate in base all’estensione dell’area geografica che interessano:
  • (^) Local Area Network (LAN) : rete locale. Connessione via cavo con Ethernet o via radio (WLAN Wireless Local Area Network).
  • (^) Metropolitan Area Network (MAN) : rete metropolitana, interconnette LAN geograficamente vicine tra loro. Connessione con Ethernet o fibra ottica.
  • (^) Wide Area Network (WAN) : rete geografica, interessa elaboratori distribuiti in una vasta area come quella continentale. Connessione mediante fibra ottica.
  • (^) Global Area Network (GAN) : rete globale, collega WAN appartenenti a continenti diversi. Connessione mediante dorsali sottomarine internazionali o trasmissioni satellitari. Ed eccezione della rete GAN, ciascuna tipologia di rete può essere considerata una sottorete della tipologia successiva. Di conseguenza, ogni sottorete costituisce un sistema autonomo. SISTEMA AUTONOMO : AS, autonomous system ATTENZIONE internet : generica rete di calcolatori ottenuta mediante interconnessione (internetworking) di reti o sottoreti diverse Internet che indica la rete GAN mondiale. E’ possibile che due nodi appartenenti a sistemi autonomi diversi vogliano comunicare — > ciascun AS è dotato di un Gateway : 1. ha il compito di instradare i pacchetti provenienti dai nodi di AS verso i nodi esterni appartenenti a un diverso AS 2. riceve i pacchetti provenienti da altri AS e li instrada verso i nodi del proprio. La comunicazione fra due AS avviene attraverso i rispettivi gateway. Inoltre, due nodi appartenenti a sistemi autonomi diversi che vogliono comunicare possono utilizzare una VPN (Virtual Private Network):
  • (^) VPN —> simulare una comunicazione LAN anche se i nodi coinvolti sono collocati in sottoreti diverse e potenzialmente distanti geograficamente.

Definizione di protocollo di rete

  • (^) Protocolli : permettono lo scambio di messaggi, governano tutti gli aspetti che interessano la comunicazione tra nodi; un protocollo definisce il formato e l’ordine dei messaggi scambiati tra due o più entità in comunicazione, così come le azioni intraprese in fase di trasmissione e/o di ricezione di un messaggio o di un altro evento. I protocolli sono organizzati in livelli, il cui numero è variabile per tipo e funzione a seconda della tipologia di rete considerata. In ogni caso, è sempre rispettato il principio generale per il quale lo scopo di un livello è fornire servizi ai livelli superiori, nascondendo loro i dettagli relativi al servizio svolto. Modello OSI - Open System Interconnection (ISO/OSI): architettura logica disegnata su 7 livelli
  • (^) Fase di spedizione di un messaggio da parte di un nodo mittente = incapsulamento —> incapsula l’informazione prodotta al livello precedente e aggiunge l’informazione relativa al servizio svolto in quel livello
  • (^) Fase di ricezione del messaggio da parte di un nodo destinatario = estrazione —> ogni livello estrae l’informazione di sua pertinenza e passa il contenuto del messaggio al livello successivo. Livello più alto = livello applicativo, nel quale si genera il messaggio che si vuole inviare e si riceve il messaggio da leggere Livello più basso = livello fisico e definisce il mezzo di trasporto (ad esempio, cavo di rete e onde radio). Connettersi a una rete internet
  • Calcolatori = host, offrono servizi
  • Apparati di comunicazione: costituiti da linee di trasmissione (via cavo o via radio) ed elementi di commutazione.
  • Router = elaboratore dedicato a funzioni di instradamento dei messaggi tra due reti alle quali appartiene contemporaneamente. Consideriamo l’esempio di una rete domestica. ATTENZIONE un gateway è responsabile della traduzione di protocollo quando due dispositivi appartenenti a reti diverse devono comunicare e il protocollo utilizzato non coincide. Al contrario, un router è semplicemente un dispositivo che permette l'instradamento e lo scambio di messaggi tra due reti adiacenti. Spesso le funzioni svolte dal gateway e dal router sono assolte da un medesimo dispositivo che viene comunemente chiamato router. I pericoli della comunicazione in rete
  1. Evitare intrusioni non autorizzate nella propria rete (si può evitare utuluzzando Firewall )
  2. Assicurare che ciascun messaggio sia letto solo dal destinatario autorizzato,
  3. Permettere a un nodo di accertare che il messaggio ricevuto da un mittente sia stato inviato proprio da quel mittente. I pacchetti viaggiano in rete e attraversano numerosi nodi intermedi prima di arrivare al destinatario. Per evitare la lettura del contenuto di un messaggio da parte di utenti/nodi indesiderati, è possibile utilizzare un meccanismo di cifratura del contenuto —> chiave di cifratura pubblica e chiave di cifratura privata.

e ai contenuti condivisi dagli altri nodi. es. BitTorrent. I protocolli di Internet Funzionamento della comunicazione sulla rete Internet affidata:

  1. Applicazione (OSI)
  2. Trasporto (TCP, UDP)
  3. Rete (IP: Internet Protocol)
  4. Accesso alla Rete: mezzo fisico (cavo o segnale radio) TCP/IP o UDP/IP: dal nome dei protocolli di livello Trasporto e Rete che caratterizzano lo scambio di messaggi sulla rete Internet. Instradamento dei messaggi (protocollo IP) Il livello Internet del modello TCP/IP si occupa di trovare il percorso per la trasmissioni di pacchetti tra due host tramite il protocollo IP ( Internet Protocol ). Per fare ciò utilizza due importanti funzioni:
  • (^) Inoltro ( forwarding ), che prevede la trasmissione di un pacchetto ricevuto a un altro nodo della rete in base a regole di propagazione prestabilite;
  • (^) Instradamento ( routing ) che prevede l’impiego di algoritmi di instradamento per selezionare il nodo al quale inoltrare un pacchetto ricevuto in base alla destinazione da raggiungere. Al fine di identificare gli host della rete Internet, ogni nodo possiede indirizzo IP univoco. L’indirizzo IP viene assegnato dal gestore di ciascuna sottorete in modo da evitare conflitti sull’uso del medesimo indirizzo. Esistono due versioni di indirizzi IP: IPv4 e IPv6 che si differenziano per la lunghezza degli indirizzi assegnati e dunque per la numerosità dei dispositivi ai quali è possibile assegnare un indirizzo.
  • (^) Indirizzo IPv4 : lungo 32 bit, permette di rappresentare 2^32 indirizzi differenti, rappresentati in notazione decimale e suddivisi in 4 blocchi separati da un punto. Ciascun blocco ha lunghezza 8 bit e può rappresentare numeri decimali nell’intervallo 0-255.
  • (^) Indirizzo IPv6 : lungo 128 bit e può indirizzare un numero molto superiore di dispositivi rispetto a IPv4. Trasporto dei messaggi (protocollo TCP/UDP) 1. Protocollo di trasporto TCP (Transfer Control Protocol): consente lo scambio di messaggi tra due nodi (host) basato su una connessione affidabile. I due nodi interessati stabiliscono la connessione mediante una procedura di handshake costituita da una sequenza di pacchetti mirati a concordare le modalità che caratterizzeranno il successivo scambio di messaggi. La connessione TCP viene utilizzata dai due nodi per comunicare e scambiare dati appartenenti al livello Applicazione. Il protocollo TCP è dotato di meccanismi di ri-trasmissione e verifica di consegna dei pacchetti mirati a garantisce la consegna dei messaggi: il protocollo è in grado di verificare che ciascun messaggio in partenza da un nodo mittente su una

connessione TCP sia ricevuto dal nodo destinatario all'altro capo della connessione. A tal scopo, ogni pacchetto TCP possiede due campi molto importanti: ◦ Il^ sequence number^ e^ l' acknowledgement number^ rappresentano rispettivamente il numero progressivo di invio e il numero di conferma di ricezione di un pacchetto nell'ambito di una trasmissione. Essi sono utili a controllare l’integrità delle informazioni trasmesse, e cioè che le informazioni non siano state compromesse durante il trasferimento dei dati tra i due nodi; ◦ la^ receive window^ fornisce una stima del tempo di trasmissione del pacchetto, cioè del tempo necessario affinché la trasmissione da mittente a destinatario sia completata. Se il nodo mittente di un messaggio non riceve risposta entro il tempo previsto nella receive window , esso provvederà a inviare nuovamente l’informazione assumendo che il primo invio non sia andato a buon fine. Una volta terminata lo scambio di messaggi tra i due nodi, la connessione TCP viene chiusa. Il protocollo TCP è adatto a situazioni dove l'affidabilità della trasmissione costituisce un aspetto cruciale, come ad esempio il servizio di navigazione web e la posta elettronica.

2. Protocollo di trasporto UDP (User Datagram Protocol) consente lo scambio di messaggi tra due nodi basato su una connessione non affidabile. UDP non richiede che due nodi stabiliscano una connessione per poter comunicare e quindi non è prevista alcuna procedura di handshake. Il vantaggio di UDP rispetto a TCP è che la comunicazione tra i nodi è più semplice e snella: non sono previsti meccanismi di ri- trasmissione o verifica di consegna dei pacchetti. Per contro, UDP non è in grado di garantire la consegna dei messaggi da un nodo mittente a un nodo destinatario. Il protocollo UDP è adatto a situazioni dove l'affidabilità della trasmissione non costituisce un aspetto cruciale, come ad esempio la telefonia su Internet (VoIP - Voice Over IP) e lo streaming di file multimediali. Servizi e applicazioni di rete Interfaccia socket: si occupa dell’invio dei messaggi dal livello Applicazione al livello Trasporto e viceversa. Smista le comunicazioni che i vari servizi hanno con i diversi interlocutori. Ciascun servizio di livello Applicazione è associato a un numero di porta univoco che permette alle socket di gestire molteplici comunicazioni contemporaneamente anche se associate a servizi diversi a livello Applicazione. World Wide Web (Web o WWW). Ideato dal CERN nel 1989, il web offre un metodo standard per condividere informazioni su Internet: - metodo standard con cui rappresentare le informazioni e condividere risorse dando la possibilità di unire testo, grafica, audio e video; - utilizzo di collegamenti ipertestuali (link) che consentono di indirizzare il navigatore verso altre pagine web del medesimo sito o di siti web differenti; - introduzione dei browser web, software semplici e intuitivi che con un’interfaccia grafica permettono all’utente di passare da un sito a un altro e visualizzarne le pagine. Mentre il web è un servizio della rete internet, il protocollo di rete a livello applicativo del Web si chiama HTTP. Altri famosi servizi sono la posta elettronica e il file sharing (condivisione file).

com descrive risorse associate ad attività commerciali, edu è tipicamente impiegato da enti educativi, org da organizzazioni non a scopo di lucro;

  • Dominio di secondo livello ( wikipedia ): è un insieme virtualmente infinito di domini gestito da organizzazioni nazionali. Un dominio di secondo livello viene assegnato a un soggetto che ne fa richiesta per identificare il contenuto o il servizio fornito dal server associato al nome di dominio;
  • Dominio di terzo livello ( it ): è un dominio gestito dal soggetto a cui viene assegnato il dominio di secondo livello. Lo scopo è fornire un livello ulteriore rispetto al secondo per qualificare le eventuali specializzazioni dei servizi offerti. URI e URL
  • (^) URI (Uniform Resource Identifier): standard per rappresentare l'indirizzo univoco e completo di una risorse sulla rete Internet. Composta dal nome di dominio del server presso il quale la risorsa è ospitata e dal percorso (path) sul disco del server che permette di raggiungere la risorsa.
  • (^) URL (Uniform Resource Locator): tipologia di URI che oltre a identificare la risorsa descrive anche il protocollo da utilizzare per reperirla. es. http://www.di.unimi.it/ecm/home in cui:
  • (^) http identifica il protocollo di comunicazione da utilizzare per il reperimento;
  • (^) www.di.unimi.it identifica il nome di dominio del server che ospita la risorsa;
  • (^) /ecm/home è il percorso sul server per accedere alla risorsa. GET E POST Il protocollo HTTP offre due meccanismi per consentire a un utente di inviare parametri in un messaggio di richiesta HTTP.
  1. GET: permette di inserire i parametri in coda alla URL della pagina richiesta. I parametri sono inseriti nell'intestazione del messaggio di richiesta HTTP
  2. POST e permette di inserire i parametri nel corpo del messaggio di richiesta HTTP.
  • (^) DNS (Domain Name System): servizio di livello Applicativo che permette la conversione di nomi di dominio nei corrispondenti indirizzi IP. Questo servizio è realizzato mediante una base di dati distribuita su numerosi server. Quando si interroga un server DNS per conoscere l'indirizzo IP di un nome di dominio di interesse, il servizio è organizzato in modo gerarchico e i vari server DNS comunicano fra di loro fino a risalire all’indirizzo IP del nome di dominio richiesto. Accedere alla rete Internet Un Autonomous System (AS) accede alla rete Internet tramite un Internet Service Provider (ISP). Esistono differenti tipi di ISP, ad esempio residenziali (come Telecom, Vodafone e Fastweb), aziendali, e dedicati a specifiche attività commerciali o istituzionali (università, aeroporti, etc.). Tramite l’ISP, si definisce la tecnologia di trasferimento dei dati (ADSL, Fibra Ottica) e la banda massima di trasferimento dati concessa al richiedente in scaricamento - download
  • e caricamento - upload.

Ogni ISP utilizza il protocollo IP e si conforma alle regole e alle convenzioni previste da questo protocollo (generalmente tramite protocollo DHCP, Dynamic Host Configuration Protocol) —> richiesta = DHCP discover , in broadcast alla rete. Quando il server DHCP riceve la richiesta, esso risponde con l'indirizzo IP che gli sarà assegnato e potrà utilizzare. Con DHCP, l'indirizzo IP sarà assegnato al dispositivo fintanto che tale dispositivo rimane collegato alla rete. Una volta scollegato, l'indirizzo IP può essere assegnato a un altro dispositivo. Riassumendo, normalmente quando un ISP permette l’accesso alla rete a un determinato host, usa il protocollo DHCP per fornirgli l’indirizzo IP. Esiste anche un meccanismo alternativo a DHCP per assegnare un indirizzo IP a un host che accede alla rete. E' possibile richiedere al proprio ISP l'assegnazione di un indirizzo IP statico. Pagine HTML HTML utilizza dei tag (marcatori) per definire le regole di formattazione che il browser deve poi interpretare per comporre la pagina web. Ad ogni tag di apertura è associato il corrispettivo tag di chiusura usualmente identificato dal simbolo “/”.

  • (^) delimita il testo
  • (^) istruisce … in modo che … sia visualizzato in grassetto corsivo HTML impone ai documenti una struttura entro la quale collocare tutti i singoli elementi.

La mia prima pagina web

Questa è la mia prima pagina in html.

Di tutto il codice scritto sopra, il browser mostrerà a video solamente il testo compreso tra gli elementi e , ovvero: Questa è la mia prima pagina in html.

  • (^) Tag : usato per inserire una singola immagine, richiede la presenza dell’attributo src per poter funzionare es. ****
  • (^) Tag ****
  • (^) Tag ** CSS** : Cascading Style Sheet , strumento designato per arricchire l’aspetto visuale ed estetico di una pagina web e al tempo stesso separare l’informazione relativa allo stile grafico degli elementi HTML dal ruolo strutturale che tali elementi hanno.
  • direttamente in linea: quando si ha la necessità di apportare delle modifiche relative al solo blocco di codice che stiamo trattando e non all’intero documento. Si

Siti web dinamici : applicazione scritta in linguaggio server-side (tipicamente PHP o ASP.net) che provvede a generare e pubblicare le pagine del sito al momento della loro richiesta da parte del browser, variano il contenuto della pagina sulla base delle scelte fatte dell’utente, le informazioni sono estratte da una base di dati che le contiene. Una volta creata la struttura che dinamicamente produce le pagine, i contenuti possono essere inseriti e variati senza conoscere tecniche di programmazione di siti web —> sistema di gestione dei contenuti (CMS: Content Management System) quali Wordpress, Joomla, Drupal ecc. ◦ I contenuti devono essere^ regolarmente^ aggiornati ◦ devono essere elaborati dei^ dati forniti dall’utente ◦ sono necessarie^ modifiche all’aspetto grafico^ del sito in qualsiasi momento e con poco know-how: l’aspetto grafico di ogni pagina è facilmente editabile, senza dover ricorrere alla scrittura di istruzioni CSS. Browser web : software usati dai client per accedere alle informazioni del World Wide Web residenti sui server web. —> è fondamentale definire regole certe sulle modalità in cui un browser cerca e successivamente ottiene le informazioni di interesse = protocollo HTTP. I browser, quindi, sono essenzialmente programmi capaci di generare una richiesta HTTP quando ricerchiamo una pagina Web e interpretare il codice HTML della pagina ottenuta in risposta, visualizzando i suoi contenuti. Web application (o web app ): interi pacchetti applicativi resi fruibili attraverso l’utilizzo di un browser web HTML5 : applicazioni che sono caricate come pagine Web, ma possono archiviare dati localmente e continuare a funzionare offline (es. webmail, software CAD, app per editing video…) Reperimento delle informazioni sul web Per visualizzare informazioni provenienti da un sito web è necessario:

  • Disporre di una connessione di rete con la quale accedere ad Internet.
  • Avviare un browser web.
  • Inserire l’URL (l’indirizzo del sito) della risorsa desiderata. Web crawler (o spider o robots ): programmi che si occupano di visitare automaticamente gli URI registrati nel database del motore e ricorsivamente seguire tutti gli indirizzi contenuti nei documenti analizzati memorizzandone una loro copia. Usare un motore di ricerca Google visualizza solo le pagine che contengono tutti i termini ricercati , aggiungendo automaticamente l’operatore booleano “ and ”. Per limitare ulteriormente la ricerca, è sufficiente quindi aggiungere altri termini. Nel caso si volesse escludere una parola dalla ricerca basta inserire il segno “-” preceduto da uno spazio.
  • Ricerca avanzata: pagina più elaborata che offre maggiori possibilità di personalizzazione della richiesta

Il motore di un motore di ricerca

  • (^) Algoritmi di classificazione: controllano quante volte le parole chiave vengono ripetute, quanti link riceve quel documento, in quali punti della pagine sono poste le parole chiave, quanti siti del database contengono link verso quella pagina… I risultati ritornati sono così ordinati in ordine decrescente ed eventualmente suddivisi in gruppi logici ( cluster ). —> risultati sponsorizzati: in maggiore evidenza nelle pagine di risultato dei motori di ricerca. Il lavoro di un motore di ricerca può essere suddiviso in fasi:
  1. gli spider trovano le pagine e ne memorizzano una copia
  2. fase di indicizzazione in cui la pagina viene prelevata dal database per essere analizzata e scomposta nelle diverse parole che la compongono
  3. Per ogni parola viene creato un piccolo registro che riporta varie informazioni: l’occorrenza (numero di ripetizioni nella pagina), la dimensione del carattere, il marcatore HTML in cui è inclusa oltre che, naturalmente, il codice identificativo della pagina (page IN).
  4. Ognuno di questi piccoli registri viene poi salvato nella memoria di uno specifico server. Il processo di interrogazione
  • (^) Interrogazione presso i server: quando un utente inserisce la propria richiesta — > alle pagine individuate viene attribuito un punteggio ( ranking ), strettamente dipendente dai criteri di base adottati dal motore di ricerca per valutare le occorrenze delle parole. Browser differenti —> risultati differenti (grandezza del database, frequenza di aggiornamento
  • (^) Algoritmi: le parole chiave che caratterizzano un sito e il posizionamento delle stesse all’interno delle pagine e i link da e verso una pagina web ( Inbound e Outbound link , rispettivamente) giocano un ruolo importante per il risultato dell’interrogazione. L'algoritmo PageRank di Google Google —> collegamenti ipertestuali per la valutazione dell'importanza di un sito web. PageRank: tecnologia con cui Google riesce a fornire risultati altamente pertinenti stabilendo in modo del tutto automatizzato una misurazione oggettiva dell'importanza di ogni singola pagina web presente nel suo database. PageRank utilizza un'equazione di circa 500 milioni di variabili e 2 miliardi di termini per creare una struttura dei link della rete. Questo sistema non esegue semplicemente un conteggio dei link verso un certo sito a partire da pagine già indicizzate (cioè la Link Popularity ) e un conteggio dei