Full Transcript

Lezione web 1 Il World-Wide Web (WWW o semplicemente il Web) è solo una parte di Internet. Internet: l’interconnessione di singole reti gestite da organizzazioni pubbliche, aziendali, di ricerca o private. Le reti utilizzano supporti fisici di trasmissione: cavi in fibra ottica, cavi telefonici—> ch...

Lezione web 1 Il World-Wide Web (WWW o semplicemente il Web) è solo una parte di Internet. Internet: l’interconnessione di singole reti gestite da organizzazioni pubbliche, aziendali, di ricerca o private. Le reti utilizzano supporti fisici di trasmissione: cavi in fibra ottica, cavi telefonici—> chiamanti anche infrastrutture o canali di comunicazione. Internet offre una serie di risorse informative e di servizi, tra cui il World Wide Web, la posta elettronica, telefonia, e scambio di file in reti tra pari. Risorse hardware (Personal Computers, Routers, Smartphone, stampanti) Risorse software (File di testo, immagini, file audio-video, file di animazione, ecc) I documenti (pagine) web sono insiemi di risorse tra loro in relazione. Esempio: una pagina web e le immagini che contiene Risorse e oggetti sono organizzati in sistemi web: Insiemi di unità hardware e software tra loro correlate e comunicanti che siano viste come un tutto unico. Esempio: sito web basato su computer che mantiene le pagine web e le rende disponibili via internet. Esempio: servizi di pagamento, file sharing, Nel WWW comunicano: soggetti umani, agenti artificiali, programmi che automatizzano l’accesso alle risorse, Web browser, Player multimediali e Spider (web crawler o robot): software che raccoglie dati da Internet. Quando visita un sito web rileva tutto il contenuto che può analizzare, tutti i collegamenti interni ed esterni e li memorizza in un database. L’obiettivo dei bot è quello di conoscere di cosa tratta ogni pagina in modo che le informazioni possano essere recuperate quando è necessario. (Google, Bing, Yahoo, ecc.) Cenni storici L’invenzione del WWW e’ solitamente attribuita al britannico Tim Barners-Lee, che nel 1990, quando lavorava al CERN, propose un sistema ipertestuale distribuito. Ipertesto = testo a sviluppo non lineare Distribuito = dislocato sui nodi di una rete di calcolatori Nel 1994 fu fondato il World Wide Web Consortium (W3C) con l’obiettivo di sviluppare appieno le potenzialità del web. Ipertesto Un ipertesto è formato da un insieme di documenti, collegati tra loro tramite riferimenti ipertestuali, denominati link I collegamenti permettono all’utente di passare da una parte all’altra del testo. È un testo digitale. È composto da più parti che sono testi digitali (chiamati nodi o topics o blocchi di testo) Le unità minimali di informazione con le seguenti caratteristiche: Autonomia Completezza Ipertesto struttura: Struttura lineare Struttura circolare Struttura gerarchica Le parti sono in relazione tramite connessioni digitali detti collegamenti o link. Tipi di link: Text Hyperlink: Questi collegamenti utilizzano parole o frasi all’interno di un testo per indirizzare l’utente verso altre risorse o pagine. Image Hyperlink: Simili ai text hyperlink, ma utilizzano un’immagine come collegamento. Bookmark o Segnalibri: Memorizzati nel browser o in un’applicazione, consentono di accedere rapidamente a pagine specifiche. Link interni: Indirizzano l’utente verso altre pagine all’interno dello stesso sito web. Ancore interne: Portano l’utente a parti specifiche della stessa pagina (come gli indici dei contenuti). Link esterni: Mandano l’utente verso altri siti rispetto a quello in cui si trova (chiamati anche “outbound link”). Permalink: Indirizzi di pagine che non possono essere modificati. La struttura dell’ipertesto determina il modo in cui se ne può fruire, chiamata navigazione. La struttura è legata a un autore/gruppo di autori che hanno scritto/scelto i testi e li hanno collegati tra loro. Ciò nonostante si parla si struttura aperta in quanto il lettore può passare da un ipertesto all’altro. Caratteristiche del Web Subito dopo la sua proposta iniziale, Berners-Lee sviluppò quali dovevano essere le principali caratteristiche del Web: Identificare univocamente una risorsa sul Web (URL) Un protocollo per descrivere come richiedere una richiesta e ottenere una risposta (HTTP). Un linguaggio per la pubblicazione di documenti web: HTML. Una programma software (successivamente chiamato web server) che risponde a richieste HTTP. Un programma (successivamente chiamato browser) per effettuare richieste HTTP da URLs e visualizzare il codice HTML ricevuto come risposta. I principi fondamentali Tra i più importanti troviamo: Accesso universale Universo aperto Non sono indipendenti, rappresentano due aspetti di un sistema coerente di regole. Supervisionati dal W3c Accesso universale W3C accessibility initiative: rendere il web accessibile a chiunque. W3C internationalization activity: rendere il web accessibile dovunque. W3C Device Independence Activity: rendere il web accessibile in qualsiasi momento e con qualsiasi modalità. Il WWW deve essere accessibile e utilizzabile da parte di chiunque, dovunque, in qualsiasi momento e con qualsiasi modalità. Criteri fondamentali per lo sviluppo del web: Multimodalità→ compresenza di una molteplicità (multi) di mezzi (media) di comunicazione diversi, quali testo, grafica, animazione e suono, Multicanalità→ più canali per garantire il contatto con un’organizzazione o l’accesso ai servizi (social, messaggistica, video-chiamate), Semplicità/leggibilità→ funzioni facilmente comprensibili leggendo il codice sorgente Il linguaggio XML permette di descrivere risorse in modo chiaro, concentrandosi sulla definizione della struttura del documento e non sui dettagli grafici Universo aperto: Questo principio orienta lo sviluppo del web ed evoluzione del web Comporta delle conseguenze “pratiche”. Il WWW deve svilupparsi con continuità tramite l’introduzione di nuove risorse; di innovazioni tecnologiche; di adeguamenti e personalizzazioni richiesti localmente. Le conseguenze dell’universo aperto sono: Interoperabilità→ la capacità di due o più sistemi di scambiarsi informazioni e usare l’informazione che è stata scambiata. Concetto di sistema aperto, legato alla interconnessione tra computers diversi ma conformi a standard e predisposti a comunicare; Evolvibilità → la possibilità di aggiornare un sistema o componente e aggiungere nuove realizzazioni Compatibilità tra versione di un software in uso l’evoluzione di HTTP; Diffusione dell’uso di linguaggi misti → un codice misto permette di sviluppare applicazioni in modo flessibile. Html+css+javascript; Strutture aperte → questo permette di rappresentare un documento in modo flessibile e poter interpretare il documento in modo parziale. Documenti estensibili. Il linguaggio XML permette rappresentazione di dati parzialmente strutturati (detti semistrutturati). Risorse e relazioni → Il web è un contenitore enorme di oggetti diversi. Lo scopo principale è offrire un modo per recuperare queste risorse. Rappresentare e organizzare le risorse, rappresentare implica la codifica di una risorsa e la sua rappresentazione tramite metadati. I media e le codifiche → Le risorse sono classificabili in base alle modalita’ con cui sono state acquisite, cioè i media→ “definizione” = col termine latino “medium”- plurale “media”- si intendono la modalità e la tecnologia impiegata per comunicare messaggi: stampa, televisione, radio, web; oppure, il supporto: libro, file, CD-ROM. Per “multimedia” si intende l’integrazione e sincronizzazione di due o più media in un sistema che permette l’interazione con l’utente. La codifica è l’insieme di tecnologie per rappresentare risorse in modo che siano archiviate, trasmesse e riprodotte. Ogni tipo di Media ha una o più specifiche tecnologie di codifica: ES = ASCII, UNICODE, MPEG, JPEG. I metadati → “definizione” = descrivono le caratteristiche dei dati e danno loro significato, contesto e organizzazione. Le 3 categorie di metadati: descrittivi, strutturali, amministrativi. Frequente l’uso di metadati di tipo misto. XML è anche qui un'ottima soluzione. Legami di relazione: lo spazio ipermediale → è possibile stabilire un legame di riferimento tra due risorse o due parti di una stessa risorsa: reference link. Direzionale, dall’ancora al nodo destinazione. Un legame indica una affinita’ semantica (di significato) tra documenti o parti di uno stesso documento, in più il legame aggiunge ricchezza espressiva ad un insieme di risorse, facilitando la comprensione dei contenuti. Ipermedia → “definizione” = sono insiemi di oggetti multimediali, o parti di uno stesso oggetto, collegate tra loro tramite legami di riferimento. L’ipermediabilità è una caratteristica specifica del web che lo differenzia dagli altri Media. Permette di formare un cammino (path) nello spazio web tramite il browsing (consultazione) di risorse seguendo legami. Forma di comunicazione attiva: l’utente decide quali legami percorrere in base ai propri bisogni informativi. Il problema fondamentale che si riscontra nel web è l’identificazione degli oggetti senza ambiguità: assegnare loro un nome, indirizzo o entrambi. Gli identificatori devono essere definiti in modo standard per consentire accesso universale → quindi si hanno delle regole formali. Uniform Resources Identifiers (URI) → “definizione” = un identificatore URI è una sequenza di simboli che individua una risorsa web senza ambiguità. URL ( uniform resource locator) : sottoinsieme degli URI che identificano risorse tramite un indirizzo. URN (uniform resources names): URI persistenti nel tempo e indipendenti dal luogo Struttura di URI http://www.unical.it:80/search.php?name=pinco&surname=pallino Nome del protocollo (schema) -> http:// Hostname (internet node)-> www.unical.it Port number, opzionale: default associato al protocollo - >:80 Path (Risorsa richiesta all'host) -> /search.php Immagine, pagina HTML, etc. Query -> ?name=pinco&surname=pallino Parametri per la richiesta. Esempi di URI→ A. Insieme di risorse web indirizzate da un URL: cartella dei rapporti tecnici del W3C: http://www.w3.org/TR/ B. Schema Telnet: un nodo al quale ci si collega in modalità terminale remoto: telnet://nomenodo.nomedominio.it C. Schema {tp per connettersi a una libreria di documenti: ttp://ftpserver.nomedominio.it/ D. Schema gopher, un servizio di recupero di documenti alternativo al WWW gopher://gopherserver.nomedominio.it/ E. Schema mailto per la spedizione di un messaggio e-mail all’indirizzo indicato: si noti che la sintassi è diversa da quella degli schemi precedenti, e non prevede la specificazione di un indirizzo server: mailto:[email protected] F. Specificazione dell'indirizzo di uno USENET newsgroup: news:comp.infosystems.www.servers.unix Strumenti del WWW: I linguaggi formali I linguaggi formali permettono di rappresentare e manipolare le risorse software in modo automatico. Un linguaggio formale è composto da: Sintassi: regole matematiche che compongono il linguaggio Semantica: stabilire il significato del linguaggio e il suo grado di verità Diverse categorie di linguaggio nel web: di comunicazione, rappresentazione, presentazione e programmazione Linguaggi di comunicazione → chiamati anche protocolli di comunicazione, servono per trasmettere oggetti attraverso internet e realizzare servizi: HTTP è quello che interessa direttamente il web, perché consente il trasferimento di risorse. Linguaggi di rappresentazione e presentazione Sul web un documento è rappresentato tramite l’inserimento di simboli che sottolineano le parti rilevanti (struttura) e l’aspetto grafico (presentazione). Questi simboli sono detti di annotazione o markup tags. Seguono regole formali per evitare ambiguità. Linguaggio di rappresentazione: XML (eXtensible Markup Language) XHTML (eXtensible HyperText Markup Language) Linguaggio di presentazione: CSS (Cascading Style Sheets) XSL (eXtensible Stylesheet Language) SMIL (Synchronized Multimedia Integration Language) Tag di struttura e di formazione: I linguaggi di programmazione servono a creare o modificare oggetti rendendo il web dinamico, sono necessari anche a interfacciare componenti: es→ Basi di dati. Il linguaggio di programmazione principale nel web è Javascript, esso serve per dare dinamicità ai documenti. Altri linguaggi popolari sono: Java (jsp), PHP, Python, ASP Progettare sistemi web: Architetture Architettura: struttura dei componenti di un sistema/programma, le loro relazioni, I principi e le linee guida che governano il loro progetto e l’evoluzione nel tempo. L’architettura Client-Server: Client: componente software che richiede un servizio Server: componente software che fornisce il servizio Un singolo computer può fare sia da client che da server in momenti diversi. Non vi sono limitazioni sul dove questi componenti debbano fisicamente risiedere. Possono essere sullo stesso nodo o distribuiti. Architetture peer-to-peer (tra pari): i nodi non sono gerarchizzati unicamente sotto forma di client o server fissi ma anche sotto forma di nodi equivalenti o 'paritari' (peer), potendo fungere al contempo da client e server verso gli altri nodi terminali (host) della rete. Architettura Client-Server → consideriamo il sito del corso di laurea, è un esempio di sistema su architettura Client-Server. Il browser è un esempio di un client, un programma specializzato a chiedere ad un server informazioni e a permettere all'utente di interagire con tali informazioni. Il programma che risponde sul sito del corso è un esempio di server, un applicativo specializzato nell’ attendere richieste dai client e a fornire una risposta. Criteri di progettazione nel web: Usabilità → efficacia, efficienza e soddisfazione con cui categorie di utenti raggiungono precisi obiettivi in specifici contesti d’uso. Problemi comuni per gli utenti: difficoltà nel trovare informazioni contenuti del sito non chiari eccessiva densità e disordine nella presentazione dei contenuti Migliorare l’usabilità di una pagina: Gerarchia visiva (risalto alle info più importanti) Spazio rilevante ai contenuti Chiarezza sulla posizione corrente nel sito Rendere visibili i link (ancore) Usare relativamente pochi colori Opportuno spazio tra testo e immagini La sicurezza : il WWW è particolarmente esposto a violazioni di sicurezza. Sicurezza del sistema operativo. Protezione dei dati e degli accessi esterni. Sicurezza del sistema di comunicazione: integrità dei messaggi, segretezza e autenticazione, sicurezza delle applicazioni Web. Sicurezza → "definizione" = concetti, tecnologie, scelte tecniche e misure amministrative adottate per proteggere le informazioni da acquisizione, danneggiamento, pubblicazione, manipolazione, modificazione, perdita o utilizzo non autorizzati, sia deliberatamente che accidentalmente. Sicurezza del sistema operativo → Protezione dei dati = Gestione e amministrazione delle risorse di sistema è privilegi di accesso utente. Protezione degli accessi esterni da codice maligno = Virus, worm, cavalli di Troia (Trojan horse), Denial of service (DoS). Prevenzione = Antivirus, regolare aggiornamento e aggiunte (patch) forniti per il software di sistema Disattivazione di servizi meno utili e rischiosi, per esempio telnet. Sicurezza del sistema di comunicazione → Un soggetto (umano o artificiale) che interferisce con la trasmissione dei messaggi lungo il canale è detto intruso (intruder). Attacchi da intrusione: Sniffing dei pacchetti per intercettare dati sensibili (password, carte di credito) Spoofing (contraffazione) dell’indirizzo IP: alterare il mittente/destinatario di un messaggio. Prevenzione: Firewall Crittografia (codifica sicura dei dati in chiaro). Sicurezza delle applicazioni Web → Le applicazioni web comprendono programmi che operano su input fornito dagli utenti (per esempio una form html). L’input puo’ essere usato per ottenere accesso non autorizzato a risorse. Tipici attacchi sono: Command Injection → Viene passato come l’input un comando di sistema che viene eseguito sul server Cross-site scripting → Un sito può includere inconsapevolmente un programma che viene eseguito sul computer del client Prevenzione Validazione dell’input e dei tag html che trasportano codice eseguibile e.g., Recap Il web è uno spazio informativo costituito da risorse eterogenee e linguaggi per usarle. Possono accedervi agenti umani e artificiali I principi fondamentali del web sono universalità e apertura. La multimedialità conferisce al web capacità espressiva mentre l’ipermedialità ricchezza semantica e fruizione attiva. Le risorse sono identificate in modo univoco tramite indirizzi. Le risorse sono create/modificate/trasmesse tramite linguaggi formali. Nel progettare sistemi web occorre tenere conto di criteri quali usabilità e sicurezza. Lezione sulle reti internet 2 Nozioni sulle reti di calcolatori: Due categorie di nodi di rete: Nodi terminali ( host o end-systems): interagiscono con l’utente tramite programmi applicativi Nodi di commutazione (switching nodes): smistano messaggi lungo una o più linee ( es. I router) Le linee fisiche di comunicazione, chiamate anche canali o circuiti, connettono i nodi a due a due e usano mezzi trasmissivi diversi. Reti di calcolatori → “definizione” = una rete di calcolatori è un insieme di nodi e di linee di comunicazione - logiche oppure fisiche - che li connettono. Tassonomia delle reti: tecnologia di comunicazione Topologia di rete: disposizione spaziale di nodi, linee fisiche e logiche, creando la struttura di interconnessione. Reti broadcast (multipunto): canali di trasmissione condivisi da tutti i calcolatori della rete ogni calcolatore deve essere associato un identificatore univoco (indirizzo di rete), associato al dispositivo fisico utilizzato per connettersi alla rete, un messaggio inviato “sulla rete” raggiunge tutti i calcolatori della rete, ma solo il calcolatore il cui indirizzo corrisponde a quello presente nel messaggio lo tratterrà per elaborarlo. Reti punto a punto: più connessioni individuali tra coppie di calcolatori; comunicazione tra due calcolatori La dimensione delle reti: A seconda della dimensione dell'area geografica in cui sono dislocati i calcolatori, le reti possono essere classificate: BAN (Body Area Network o Body Sensor Network): sono reti che interconnettono dispositivi indossabili il cui raggio di copertura è inferiore al metro. Esempi di BAN sono le reti di sensori corporei in campo biomedico PAN (Personal Area Network): si tratta di una rete che si sviluppa intorno all'utilizzatore con una estensione di pochi metri. E' la tipica rete adoperata per collegare le periferiche ed altri dispositivi (es. macchina fotografica digitale, cellulare, etc.) al Computer. Reti locali (Local Area Network, LAN) di limitata estensione, collegano dispositivi collocati nello stesso edificio o in edifici adiacenti. Reti metropolitane (Metropolitan Area Network, MAN) collegano di dispositivi collocati nella stessa area urbana. Reti geografiche (Wide Area Network, WAN) collegano di dispositivi diffusi in un’ampia area geografica (nazione, continente, …); Reti di reti (Internetwork, GAN), collegano più reti differenti (in termini sia hardware che software) mediante opportuni elementi di interfaccia, che si possono estendere su tutto il pianeta (e.g. Internet). I mezzi di trasmissione → i mezzi fisici per realizzare i canali di trasmissione sono i mezzi guidati e i mezzi non guidati. I mezzi guidati: linee fisiche che portano il segnale fino al ricevitore, supportano la trasmissione di segnali elettrici oppure ottici, segnali elettrici: doppino telefonico o cavo coassiale; segnali ottici: fibre ottiche. supportano tecnologie come ISDN, ASDL, FIBRA, Ethernet I mezzi non guidati: irradiazione di segnali elettromagnetici nello spazio, in modo più o meno diretto; antenne, satelliti, infrarossi, … Supportano tecnologie come Wi-Fi, Bluetooth, GSM, UMTS, 4G Servizi vs. velocità bassa velocità → fonia, fax, POS (point of sale), transazioni remote (come prenotazione di tratte aeree, connessioni remote con calcolatori); media velocità→ audio Hi-Fi, video a bassa velocità, fax ad elevata risoluzione; alta velocità→ interconnessione di reti di calcolatori, trasferimento di file; altissima velocità→ distribuzione di segnali video, video on demand, TV ad alta definizione (HDTV), videoconferenze Tecniche di commutazione: Commutazione: tecniche di instradamento di un messaggio dal mittente al destinatario Commutazione di circuito: una rete stabilisce un canale dedicato (circuito). (Es. Le linee telefoniche ) Commutazione di pacchetto: I messaggi vengono segmentati in pacchetti. Ogni pacchetto ha una intestazione (header) che include informazioni di indirizzamento e controllo. I pacchetti possono essere conservati temporaneamente nella memoria interna del router. I protocollo di comunicazione: Per comunicare i calcolatori devono seguire delle regole: i protocolli di comunicazione. I protocolli di comunicazione specificano: i formati dei dati, la struttura dei pacchetti (includendo la definizione delle informazioni di controllo) la velocità di trasmissione Definire tutte queste proprietà tramite un unico protocollo è praticamente impossibile, per questo si definisce un insieme di protocolli: ogni protocollo gestisce univocamente una componente ben definita della comunicazione ogni protocollo condivide con gli altri protocolli i dati di cui essi necessitano. Come comunicare → è necessario che esista un canale fisico adatto (requisito per la connessione fisica). Occorre predisporre una infrastruttura fisica: degli strumenti per trasferire i segnali tra i comunicanti. E’ necessario avere competenze linguistiche comuni (requisito per la trasmissione), quindi occorre concordare dei protocolli di trasmissione: delle regole per interpretare i segnali “a basso livello”. E’ necessario avere competenze di contenuto comuni (requisito per la comunicazione). Occorre concordare un protocollo applicativo: delle regole per interpretare i segnali “ad alto livello”. Se le soluzioni adottate per soddisfare le tre precondizioni sono efficienti, la comunicazione si realizza come se esse non fossero più necessarie (“trasparenza” dei protocolli e dell’infrastruttura). Architettura a livelli di un insieme di protocolli La trasmissione dell’informazione avviene simulando la connessione tra i livelli corrispondenti (peer) dei due sistemi che si scambiano blocchi di dati, seguendo le regole stabilite dal protocollo definito per quel livello. Gli elementi chiave di un protocollo sono pertanto: la sintassi da seguire per la formattazione dei blocchi dei dati; la semantica, che riguarda, per esempio, le modalità di controllo della trasmissione e di gestione degli errori; Modello ISO-OSI: International Standard Organization (ISO), Open Systems Interconnect (OSI) Nel modello ISO-OSI, la comunicazione è originata dal livello più alto della stazione che invia il messaggio, passa ai livelli inferiori (sette in tutto), in cui il messaggio viene elaborato e preparato per la trasmissione, fino a giungere al livello fisico, che si occupa dell’effettiva trasmissione verso la stazione di destinazione. MODELLO ISO/OSI: TUTTI I 7 LIVELLI 1. LIVELLO FISICO: Definisce tutte le caratteristiche meccaniche, elettriche funzionali per la ricezione e trasmissione del segnale. 2. DATALINK: Il datalink è diviso in due sottolivelli, contiene lo SWITCH. Gestisce la trasmissione dei pacchetti di dati che vengono chiamati FRAMES. Verifica e gestisce gli errori che avvengono durante la trasmissione. 3. NETWORK: Si occupa dell’instradamento dei messaggi mediante il routing dei pacchetti. Questi pacchetti vengono instradati nei nodi intermedi della sottorete. A questo livello lavora il router. 4. TRASPORTO: Frammentare e assemblare i messaggi per dare un ordine e una completezza all’interno del sistema. 5. SESSIONE: Stabilire, gestire e terminare le sessioni di comunicazione tra le applicazioni di origine e destinazione. 6. PRESENTAZIONE: Si occupa di cifratura, compressione e conversione dei dati. Il livello di presentazione è responsabile della garanzia che i dati trasmessi siano comprensibili dalle applicazioni di origine e destinazione. 7. APPLICAZIONE: si occupa dell’interfaccia tra le applicazioni e il livello di rete TCP/IP Modello “Internet” impostato su un’architettura a cinque livelli: livello fisico livello di accesso alla rete livello internet – IP (Internet Protocol) livello di trasporto (host to host) – TCP (Transmission Control Protocol) livello di applicazione Il successo di questa architettura si deve alle seguenti ragioni: è stata ed è un’eccellente piattaforma per la realizzazione di applicazioni client- server affidabili ed efficienti in particolare nell’ambito di reti geografiche; ha permesso da subito di condividere informazioni tra organizzazioni diverse; è stato implementato nella gran parte dei sistemi operativi ed è stato supportato da subito dai produttori di bridge e router. TCP/IP: indirizzamento Schema di indirizzamento generale su due livelli: indirizzo IP + porta TCP: Indirizzo IP 1. indirizzo associato a ogni calcolatore collegato a una sottorete; 2. si tratta di un indirizzo Internet globale unico, utilizzato da IP per l’instradamento e la consegna dei pacchetti. 3. 32 bit (cioè 4 byte) per un totale di 232 possibili indirizzi diversi; 4. successione di quattro numeri (compreso tra 0 e 255 - uno per byte), separati da un punto (e.g. 102.54.94.97) Porta TCP 1. indirizzo unico all’interno del calcolatore che individua un processo attivo sull’host 2. utilizzato da TCP per consegnare i dati al processo giusto, per esempio 80 nel web 3. TCP aggiunge altre informazioni di controllo/servizio per controllo di errori Architettura del Web Il paradigma client-server è alla base di un'ulteriore evoluzione, in cui i protocolli e i client dedicati sono sostituiti dalle tecnologie standard del World Wide Web. Client sostituito dal browser: potenzialmente già installato anche su macchine non controllate dal gestore dell’applicazione. Possibile l’accesso ad applicazioni senza accordi tra le parti. Architetture a tre livelli 1-2. Il browser riceve la richiesta generata dall’utente e la inviata sulla rete; 3. Ricevendo la richiesta, il server stabilisce (sulla base di opportuni parametri di configurazione) che essa specifica non un documento ma una applicazione, e in conseguenza mette in esecuzione un programma, mettendosi in attesa del risultato dell’esecuzione; 4. Alla conclusione della sua esecuzione, il programma produce un risultato e lo rende disponibile al server web nella forma di un flusso di dati (generalmente un testo; potrebbe essere però per esempio un’immagine, costituita di dati in formato binario); 5. Il server acquisisce tale flusso di dati, a esso antepone un’opportuna intestazione HTTP e quindi invia il risultato come risposta al browser da cui aveva ricevuto la richiesta; il browser riceve la risposta, la interpreta e la visualizza per l’utente. Estensione: Architetture a più livelli Se la logica applicativa è complessa o richiede per motivi di prestazioni un'ulteriore distribuzione, si può realizzare un’architettura “a quattro (o più) livelli”. Ad esempio, il back end potrebbe richiedere accesso ad un database oppure ad un altro servizio web. Il back end è responsabile del carico applicativo mentre il server web fa da front end. HTTP: HyperText Transfer Protocol Protocollo di applicazione usato per trasferire risorse tra client e server Gestisce richieste (URL) dal client al server E’ un protocollo stateless: ne’ il client ne’ il server “ricordano” nulla dei messaggi precedenti. La mancanza di stato influenza la scrittura delle app. Una transazione HTTP e’ uno scambio di messaggi richiesta/risposta tra client e server. Le richieste HTTP sono solitamente multiple. Una volta ottenuta la pagina index.html il browser richiede tutte le risorse aggiuntive (immagini, files). HTTP Formato dei Messaggi Linea iniziale: nella richiesta contiene l’URI ed il “verbo” HTTP (metodo) nella risposta contiene l’esito della richiesta (codice) Corpo del messaggio: nella richiesta è vuoto o contiene la query nella risposta contiene la risorsa richiesta, codificata in un formato MIME specificato nell’header Intestazioni del messaggio: Metadati per identificare il messaggio Metodo GET: Metodo standard per richiedere una risorsa al server. E’ quello che accade specificando un URL nel browser o quando si fa click su un link. Viene specificato l’URI della risorsa Il corpo della richiesta è vuoto. La lunghezza massima dell’URI è limitata. Eventuale passaggio di parametri tramite la query visibili pubblicamente. GET /index.html HTTP/1.1 GET /informatica/InformazioniCorsi HTTP/1.1 GET /search.php?nome=Pinco&cogn=Pallo HTTP/1.1 Metodo POST Utilizzato per colloquiare con un servizio web. Per esempio per sottomettere una form o per fare update di una risorsa (e.g., carrello spesa). Viene specificato l’URI della risorsa senza parametri. Utile per dati privati o di una certa lunghezza. I parametri contenuti nel corpo del messaggio. POST /search.php? HTTP/1.1 nome=Pinco&cogn=Pallo Codice di Stato: 3 cifre, la prima indica la classe, le restanti la risposta 1xx: Messaggio informativo temporaneo (deprecato in 1.1) 2xx: Successo. La richiesta e’ stata soddisfatt 3xx: Redirezione. La richiesta e’ ok ma occorrono nuove azioni da parte del client per soddisfare la richiesta 4xx: Errore sul client. La richiesta contiene errori e non e’ autorizzata 5xx: Errore sul server. Problema interno per cui non si puo’ soddisfare la richiesta Applicazioni con stato: Cookie: Problema: Mantenere lo stato tra le diverse richieste/risposte nella “sessione” di lavoro. Idea fondamentale. Utilizzare le intestazioni HTTP per "nascondere" informazioni che vengono scambiate tra client e server. Usa due intestazioni HTTP: Set-Cookie: nelle risposte HTTP del server Cookie: nelle richieste HTTP del client Posta elettronica (email) Il mittente opera con un client (Eudora o Microsoft Outlook) e invia il messaggio al suo server incaricato della spedizione; il protocollo applicativo impiegato in questa fase è Simple Mail Transfer Protocol (SMTP); Il server del mittente invia il messaggio al server che mantiene la mailbox del destinatario, ancora mediante SMTP; il server del destinatario conserva il messaggio nella mailbox; Il destinatario accede alla sua mailbox e ottiene il messaggio in essa contenuto; i protocolli applicativi impiegati in questa fase sono alternativamente Post Office Protocol (POP) oppure Internet Message Access Protocol (IMAP). Lezione sul linguaggio XML Caratteristiche di un documento elettronico: Struttura: organizzazione logica delle parti, e.g., paragrafi e sottoparagrafi Contenuto: la parte dei dati, opportunamente codificati Presentazione: stasura e grafica, stile Molti documenti elettronici sono rappresentati in un modo che non permette di distinguere con chiarezza queste caratteristiche. Una tecnica comune è quella di inserire nel documento informazioni sulle sue caratteristiche tramite simboli di annotazione (markup tags) Markup descrittivo (o semantico) →Denota elementi significativi delle struttura tramite marcatori (tag) Markup procedurale → specificano le azioni che un programma di formattazione deve effettuare ad un certo punto, per esempio allineare caratteri, usare un certo font ecc. I marcatori sono sintatticamente differenziati dal testo ordinario: Meccanismi di annotazione Per markup si intende una tecnica di annotazione… Linguaggi di annotazione Problema: definire un insieme di simboli di markup, in modo formale, standard eaperto a sviluppi futuri. Un linguaggio di annotazione è un sistema formale per scambiare e pubblicare informazioni, costituito da: Definizione degli elementi e marcatori utilizzabili in un documento Una sintassi per I marcatori Eventualmente una semantica per i marcatori Vantaggio: un documento diventa interpretabile da un calcolatore (e non solo dall’utente), favorendo l’interscambio dei dati. XML: eXtensible Markup Language → Linguaggio principale per strutturare documenti e dare significato agli elementi che lo compongono. Viene usato anche per rappresentare e scambiare dati che solitamente risiedono su tabelle di un database. Largamente diffuso nel web. Estensibile: Chiunque può personalizzare il linguaggio aggiungendovi nuovi elementi. Metalinguaggio: insieme di regole per la definizione di un linguaggio. XML Una sintassi per costruire documenti basata su marcatori (“tag”) Modello logico sottostante: Alberi con nodi di vari tipi: elementi, valori (testo), attributi. Alberi XML: Radice (Documento), elemento principale, nodi intermedi: elementi con sottoalberi di elementi, valori e attributi Nodi foglia: attributi e valori: valori: stringhe (usate per rappresentare qualsiasi tipo di dato: numeri, date, ecc.) attributi: coppie (nome, valore) Sintassi XML In sostanza: alla nidificazione dei nodi nell’albero corrisponde la nidificazione dei tag (marcatori) nel documento tutti i valori sono codificati come stringhe Regole generali: sensibile alle maiuscole (convenzione: sempre minuscole per i nomi degli elementi e degli attributi) identificatori: iniziano per lettera, _ , o : Es.: esame _corso :partita Commenti :

Use Quizgecko on...
Browser
Browser