News
  • Nuovo portale
    Alastor.biz - [leggi]
  • Nuovi Progetti per
    Web And Translation - [leggi]
  • Nuovo Portale Cresci
    Gioielli On.Line - [leggi]
  • Parte lo sviluppo di
    un nuovo portale:
    Plug&Play.it - [leggi]
  • Parte lo sviluppo di
    un nuovo portale:
    Cresci gioielli - [leggi]

image Iscriviti ai FeedRss Per rimanere sempre aggiornato su news e articoli.

Lezione 1 : Web And Http

Il World Wide Web – 1

! Una possibile soluzione alla proliferazione di differenti protocolli utilizzati su Internet

! Origini

– Tim Berners-Lee propose il WEB al CERN (Conseil Européen pour la Recherche Nucléaire - Consiglio Europeo per la Ricerca Nucleare) nel 1989

! Sito Web

– Insieme coordinato di pagine, relative ad uno stesso tema, che risiedono tipicamente su uno stesso server HTTP

!Il Web è l’insieme di siti web interconnessi con hyperlink

 

Il World Wide Web – 2

! Scopo del WWW secondo T.B.L.

– Permettere a studiosi di avere accesso a molti database di lavori scientifici attraverso i propri computer. Studiosi da tutto il mondo potrebbero ricercare e recuperare documenti su un qualsiasi numero di server.

! Le basi furono gettate su un computer NeXT, implementazione alla fine del 1990, nel 1991 il sistema fu portato su altre piattaforme e reso disponibile a tutti

 

 

Cosa è il W3C (http://www.w3.org)

    !  Il World Wide Web Consortium (W3C) è un consorzio di aziende e centri di ricerca che si occupa dello sviluppo e della standardizzazione del Web

    !  Mission

    – Condurre il World Wide Web al suo pieno potenziale sviluppando protocolli e linee guida per assicurare la crescita a lungo termine del Web

     

 

WEB browser

! Mosaic

    –  Sviluppato da NCSA (National SuperComputing Applications presso l’Università dell’Illinois)

    –  Il primo ad utilizzare una GUI, ha portato all’esplosione dell’uso del WEB

    –  All’inizio funzionava solo per X-Windows sotto Unix, alla fine del 1993 fu portato sotto altre piattaforme

    ! Oggi:
    – Firefox, Netscape, IE, Opera, Safari, Mozilla,

    Amaya, ..

     

 

WEB server

! Un Server Web è un programma che fornisce documenti ai browser che ne fanno richiesta.

! I documenti possono essere statici o dinamici. I documenti dinamici sono costruiti da programmi che sono “memorizzati” sul server.

!Ad esempio, un browser invia al server un modulo compilato e richiede ad un programma, che risiede “dal lato del server” (server-side), di elaborare i dati specificati nel modulo

 

Apache

    http://httpd.apache.org

    Gratuito, distribuito con Linux

    Disponibile anche sotto Mac OS X, Windows,

    Unix, ...

    Usato dal 70% dei server

    ! ISS (Internet Information Server) • http://www.microsoft.com

    • A pagamento, Microsoft • Usato dal 21% dei server

... altri WEB server

! Netscape-Enterprise
! IBM HTTP SERVER
! SunOne – Sun Java System ! Jigsaw

– reference server di W3C

 

    !  Nel febbraio del 1995, il più popolare “web server” era il daemon per HTTP (httpd), di pubblico dominio, sviluppato da Rob McCool presso il National Center for Supercomputing Applications (NCSA) dell’University of Illinois

    !  Lo sviluppo di questo daemon era in stallo da metà del 1994 perché McCool aveva lasciato NCSA.

     

         Molti webmaster avevano sviluppato le proprie estensioni e corretto vari bug

        !  Un piccolo gruppo di questi webmaster iniziarono a collaborare per coordinare i loro cambiamenti al server (sotto forma di pach)

        !Alla fine del febbraio 1995, otto di tali webmaster gettarono le basi dell’Apache Group originario.

        – http://httpd.apache.org/ABOUT_APACHE.html

    Caratteristiche di Apache

    ! Apache: A PAtCHy sErver ! Stabilità ed affidabilità

    – Processo di sviluppo open source (disponibilità del codice sorgente)

    ! Portabilità
    – Supporto dei SO Linux, Unix, Microsoft

    Windows, OS/2, Solaris
    ! Efficienza, flessibilità
    ! Supporto dei più recenti protocolli

    – compatibilità con HTTP/1.1

 

URL (Uniform Resource Locator )

!Per poter individuare ed accedere a risorse sul WEB è necessario un meccanismo per poterle identificare (tramite un nome) e localizzare (tramite un indirizzo)

!Una URL indica la collocazione reale di una risorsa accessibile mediante uno dei protocolli (HTTP) attualmente in uso su Internet

 

Sintassi di una URL – 1

SCHEMA:// [username:password@]identificatore.host[:NumeroPorta]/[path]

! Le parti di colore rosso sono opzionali ! Una URL è divisa in tre parti

– identificatore dello schema di indirizzamento, seguito dal simbolo ':// '

• http://

–identificatore dell'host sul quale risiede la risorsa, espresso mediante un nome di dominio o un indirizzo IP

• carprera.dia.unisa.it

 

Sintassi di una URL – 2

SCHEMA:// [username:password@]identificatore.host[:NumeroPorta]/[path]

! Terza parte di una URL

–stringa di identificazione della risorsa sul server (path) preceduta dal simbolo '/';

    la sua interpretazione dipende dallo schema di denominazione;

    il simbolo '/' viene utilizzato per denotare una struttura gerarchica, con la parte a sinistra indicante il livello superiore

    • /TSW/index.shtml

Tipi di schemi di indirizzamento

    !  http per il protocollo HTTP

    !  ftp: per il File Transfer Protocol

    !  gopher: per il Gopher protocol

    !  mailto: per gli indirizzi di posta elettronica

    !  news: per i messaggi dei newsgroup NNTP

    !  wais: per i server WAIS

    !  file: per l'accesso a file locali

    !  telnet, rlogin, tn3270: per riferirsi a sessioni interattive in modalità terminale

 

HTTP

Hypertext Transfer Protocol

 

HTTP

! “Protocollo di livello applicativo per sistemi di informazione distribuiti, collaborativi ed ipermediali”

– Esso viene utilizzato dal web server e dal client (user agent) per comunicare

– Si colloca al di sopra di TCP/IP

–Permette di costruire sistemi di accesso all’informazione indipendenti dal tipo dell’informazione stessa

 

 

Apertura della connessione

    !  Il browser (user agent) analizza l’URL e ne estrae il dominio

    !  Il browser consulta il DNS per ottenere l’indirizzo IP corrispondente al dominio

    !  Il browser apre una connessione TCP con il web server (usa la porta 80)

    !  I messaggi HTTP sono di 2 tipi: – request / response

    !Una volta stabilita la connessione, il browser richiede una risorsa al web server (request) e il server risponde inviando o la risorsa richiesta oppure un messaggio di errore (response)

     

 

Caratteristiche di HTTP

! HTTP è esistito in tre versioni: – 0.9

– 1.0 (RFC 1945)

– 1.1 (RFC 2616)

!La differenza principale tra HTTP 1.0 e 1.1 è stata la possibilità di specificare coppie multiple di richiesta e risposta nella stessa connessione

 

Ulteriori caratteristiche di HTTP

! HTTP è “stateless”
– Il server non mantiene alcuna informazione

sulle richieste passate del client

– I protocolli che conservano lo “stato” sono molto complessi

• La storia passata (stato) deve essere mantenuta
–Se il server od il client interrompe la connessione, allora la visione degli stati di server e client possono essere

inconsistenti e deve essere riconciliata

 

 

Messaggi HTTP

! Il protocollo definisce il formato dei messaggi

! request e response hanno lo stesso formato e seguono la struttura di un messaggio di email (RFC 822):

start-line
• può essere o una request-line o una status-line

HEADER (contiene informazioni corpo del messaggio)

• Content-length

• Content-type

<Linea Vuota>

BODY (può mancare)

 

 

Metodi HTTP

! Un metodo HTTP può essere

– Sicuro: non genera cambiamenti allo stato di una risorsa

– Idempotente: l’effetto sul server di più richieste identiche è lo stesso di quello di una sola richiesta

! Analizzeremo solo:

    –  GET (Richiesta di dati)

    –  HEAD (Richiesta al server di header

    HTTP contenenti informazioni)

    –  POST (Invio di dati all’URL indicato)

    –  PUT (Colloca i dati contenuti nel BODY all’URL indicato)

Il metodo GET

! È il metodo più utilizzato, si attiva quando
– Si segue un link
– Si scrive un URL nell’apposito campo del browser

! GET è sicuro ed idempotente, e può essere:

– assoluto (utilizzo di default, la risorsa viene richiesta senza specificare altro)

– condizionale (se la risorsa corrisponde ad un criterio indicato negli header If-match, If-range If-modified-since, etc.)

– parziale (se la risorsa richiesta è una sottoparte di una risorsa memorizzata sul server).

 

 

Il metodo HEAD
! Simile al GET, ma non viene restituita una

risorsa

! Si usa per ottenere informazioni sulla risorsa

! HEAD è sicuro ed idempotente, e viene usato per verificare:

– la validità di un URI: la risorsa esiste e non è di lunghezza zero,

– l’accessibilità di un URI: per accedere alla risorsa presso il server non sono richieste procedure di autenticazione

– la coerenza di cache di un URI: la risorsa non è stata modificata nel frattempo, non ha cambiato lunghezza, valore hash o data di modifica

 

GET ed HEAD

! GET e HEAD devono essere implementati dal server

! Gli altri metodi sono facoltativi

 

 

Il metodo POST – 1
! POST, pur essendo una request,

contiene un message body
!POST serve per inviare una risorsa a

un URL senza crearne una nuova ! POST non è sicuro né idempotente ! Ad esempio, si utilizza per:

–Inviare un messaggio a un indirizzo di posta elettronica

– Inviare il contenuto di un modulo ad un programma che risiede sul server

 

Il metodo POST – 2
! Non effettua necessariamente una

lettura di informazioni dal server
!Il server, in risposta ad una POST, può

Ancora su GET e POST

    !  Anche GET può essere utilizzato per inviare dati al server o per modificare/creare nuove risorse

    – La risorsa invocata con GET è un programma che • modifica se stesso
    • estrae dati da una form HTML e crea un nuovo file HTML

    che li contiene
    – Dato che ciò non era intenzionale da parte

    dell’utente, allora GET è considerato sicuro

    !  POST invia i dati nel corpo del messaggio di

    richiesta

    !  GET invia i dati come parte dell’URL

Cosa riceve il server con POST

POST /cgi-bin/registra.cgi HTTP/1.1

Host: caprera.dia.unisa.it:12345 [. . .]
Connection: keep-alive

Referer: http://caprera.dia.unisa.it/LASD/prenota.html
Content-Type: multipart/form-data; boundary= ---------------------------41184676334 Content-Length: 438

-----------------------------41184676334

Content-Disposition: form-data; name="nome" carlo
-----------------------------41184676334 Content-Disposition: form-data; name="cognome" blundo

-----------------------------41184676334 Content-Disposition: form-data; name="matricola" 53/7777
-----------------------------41184676334

 

 

Il metodo PUT

!Il metodo PUT serve per trasmettere delle informazioni dal client al server, creando o sostituendo la risorsa specificata.

! In generale, l’argomento del metodo PUT è la risorsa che ci si aspetta di ottenere facendo un GET in seguito con lo stesso nome.

!PUT è idempotente ma non sicuro, e comunque non offre nessuna garanzia di controllo degli accessi o locking.

 

Esempio di response

HTTP/1.1 200 OK

Date: Wed, 12 Feb 2003 12:43:01 GMT
Server: Apache/1.3.22 (Unix) (Red-Hat/Linux) Last-Modified: Wed, 16 Oct 2002 09:47:40 GMT ETag: "dbca-2-3dad35bc"
Accept-Ranges: bytes
Content-Length: 2
Connection: close
Content-Type: text/html

<HTML> <BODY>
Ciao mondo!
</BODY></HTML>

 

 

Status Code – 1

!Lo status code è un numero di tre cifre, di cui la prima indica la classe della risposta, e le altre due la risposta specifica. Esistono le seguenti classi:

– 1xx: Informational
• Una risposta temporanea alla richiesta, durante

il suo svolgimento.

– 2xx: Successful
• Il server ha ricevuto, capito e accettato la

richiesta.

 

Status Code – 2

– 3xx: Redirection

• Il server ha ricevuto e capito la richiesta, ma sono necessarie altre azioni da parte del client per portare a termine la richiesta.

– 4xx: Client error

• La richiesta del client non può essere soddisfatta per un errore da parte del client (errore sintattico o richiesta non autorizzata).

– 5xx: Server error

• La richiesta può anche essere corretta, ma il server non è in grado di soddisfare la richiesta per un problema interno (suo o di applicazioni CGI).

 

 

Esempi di status code

100 Continue (se il client non ha ancora mandato il body)

    200  OK (GET con successo)

    201  Created (PUT con successo)

301 Moved permanently (URL non valida, il server conosce la

nuova posizione

    400  Bad request (errore sintattico nella richiesta)

    401  Unauthorized (manca l’autorizzazione)

    403  Forbidden (richiesta non autorizzabile)

    404  Not found (URL errato)

    500  Internal server error (tipicamente un CGI mal fatto)

    501  Not implemented (metodo non conosciuto dal server)

Status code reason-phrase Codice di stato motivazione

 

I cookie – 1

! HTTP è stateless
– Il server non mantiene alcuna informazione sulle

vecchie richieste del client
!Un cookie è una stringa scambiata tra il

server ed il client

    –  Il client mantiene con un cookie lo stato di precedenti connessioni, e lo invia al server di pertinenza ogni volta che richiede un documento.

    –  Non è previsto in HTTP, ma è un’estensione di Netscape, proposta nell’RFC 2109

    –  Per questioni di sicurezza/privacy si possono spedire cookies solo al server che li ha settati

     

    I cookie – 2

    ! I cookies usano due extension-header1, uno per la risposta, ed uno per richieste successive:

    – Set-Cookie: header della risposta, il client può memorizzare il valore del cookie indicato e rispedirlo alla prossima richiesta.

    – Cookie: header della richiesta contenente il valore del cookie.

    • Il client decide se spedirlo sulla base del nome del documento, del

Scritto il 15/08/2011

Lascia un Commento



Lascia un commento

N.B. I messaggi sono soggetti a controllo preventivo, quindi non saranno pubblicati direttamente, ma solo dopo conferma da parte dell'amministratore di sistema. Si prega di non lasciare commenti offensivi, o che possano ledere la dignità di alcuno, si ricorda che verranno salvati i dati (IP,ecc..) per eventuali azioni legali,in caso di illeciti, agli organi competenti.

Nome
Mail (Non verrà pubblicata)
WWW:
Messaggio:
Pagina Creata in 1.5699 secondi.