Parte 2: livell Applicazine (http) Obiettivi: Aspetti cncettuali ed implementativi di prtclli di applicazini di rete Paradigma client-server Mdell dei servizi Imparare cncetti sui prtclli esaminand un prtcll a livell applicazine mlt diffus 2: HTTP 1
Applicazini e prtclli a livell applicazine Applicazine: prcessi distribuiti cmunicanti vengn eseguiti sugli hst di rete cme prcessi utente scambi di messaggi per implementare l applicazine e.g., email, ftp, Web Prtclli a livell Applicazine una parte di un applicazine definiscn i messaggi scambiati dall applicazine e le azini intraprese Usan i servizi di cmunicazine frniti da prtclli a livell sttstante (TCP, UDP) applicaz. trasprt rete data link fisic applicaz. trasprt rete data link fisic applicaz. trasprt rete data link fisic 2: HTTP 2
Applicazini di rete: terminlgia Prcess: prgramma in esecuzine in un hst. prcessi in esecuzine su hst diversi (distanti) cmunican cn un prtcll a livell applicazine user agent: prcess sftware, che si interfaccia cn l utente vers l alt e cn la rete vers il bass. implementa il prtcll a livell applicazine Web: brwser E-mail: mail reader streaming audi/vide: media player 2: HTTP 3
Paradigma Client-server Una tipica applicazine di rete si cmpne di due parti: client e server Client: Avvia il cntatt cn il server ( parla per prim ) Slitamente, richiede un servizi al server Web: il client è implementat nel brwser; e-mail: in mail reader Server: applicaz. trasprt rete data link fisic Frnisce il servizi richiest al client e.g., il Web server spedisce la pagina Web richiesta, il mail server recapita l e-mail request reply applicaz. trasprt rete data link fisic 2: HTTP 4
Di quale servizi di trasprt necessita un applicazine? Perdita di dati Alcune applicazini (e.g., audi) pssn tllerare perdite Altre applicazini (e.g., trasferiment file, telnet) richiedn un trasferiment dati affidabile al 100% Time-sensitive Alcune applicazini (e.g., telefnia su Internet, gichi interattivi) richiedn piccli ritardi Larghezza di banda Alcune applicazini (e.g., multimediali) richiedn un ammntare minim di larghezza di banda per essere efficaci Altre applicazini ( applicazini elastiche ) fann us di qualunque larghezza di banda riescn ad ttenere 2: HTTP 5
Requisiti del servizi di Trasprt di applicazini cmuni Applicazine Perdite dati Larghezza di banda Time Sensitive trasferiment file e-mail dcumenti Web real-time audi/vide stred audi/vide gichi interattivi applicazini finanziarie senza senza tllerante tllerante tllerante tllerante senza elastica elastica elastica audi: 5Kb-1Mb vide:10kb-5mb cme spra alcuni Kbps elastica n n n si, alcuni 100 msec si, pchi secs si, alcuni 100 msec si e n 2: HTTP 6
Servizi di trasprt in Internet Servizi TCP: cnnectin-riented: fase iniziale di setup necessaria tra client e server trasprt affidabile tra prcess mittente e destinatari cntrll di fluss: il mittente nn svraccaricherà il ricevitre cntrll di cngestine: reglazine della velcità del mittente quand la rete è svraccarica nn frnisce: tempi, garanzie su larghezza di banda minima Servizi UDP: trasferiment dati nn affidabile tra prcess mittente e prcess destinatari nn frnisce: setup della cnnessine, affidabilità, cntrll di fluss, cntrll di cngestine, tempi larghezza di banda garantiti Dmanda: perché mai esiste UDP? 2: HTTP 7
Applicazini Internet: prtclli a livell applicazine e trasprt Applicazine e-mail access a terminale remt Web trasferiment file streaming multimedia file server remt telefnia su Internet Prtcll a livell applicazine smtp [RFC 821] telnet [RFC 854] http [RFC 2068] ftp [RFC 959] prprietari (e.g. RealNetwrks) NSF prprietari (e.g., Vcaltec) Prtcll a livell trasprt sttstante TCP TCP TCP TCP TCP r UDP TCP r UDP slitamente UDP 2: HTTP 8
Il Web: il prtcll http http: hypertext transfer prtcl Prtcll a livell applicazine per il Web Mdell client/server client: il brwser che richiede, riceve e mstra ggetti Web server: Web server che spedisce ggetti in rispsta ad una richiesta http1.0: RFC 1945 http1.1: RFC 2068-2616 PC che esegue Explrer Mac che esegue Navigatr http request http respnse http request http respnse Server che esegue NCSA Web server 2: HTTP 9
Il WEB: terminlgia pagina WEB (dcument): cllezine di ggetti ggett: un file (HTML, JPEG, ) file HTML base: cn direttive e riferimenti ad altri ggetti URL (Unifrm Resurce Lcatr): meccanism di identificazine risrse. Si cmpne del nme del hst sul quale risiede l ggett e il path-name dell ggett www.di.unit.it/varius/presentatin_en.html nme hst path-name 2: HTTP 10
Il prtcll http http: usa servizi TCP: il client avvia una cnnessine TCP (crea un scket) cn il server, prta 80 il server accetta la cnnessine TCP dal client vengn scambiati messaggi http (messaggi del prtcll di livell applicazine) tra il brwser (client http) ed il Web server (server http) la cnnessine TCP viene chiusa http è stateless il server nn mantiene alcuna infrmazine sulle richieste passate dei client nta I prtclli che mantengn l stat sn cmplessi! Tutta la stria passata della cnnessine (stat) deve essere mantenuta, memrizzata se server client subiscn un crash, la lr cnscenza dell stat può essere incnsistente e deve essere ricstruita 2: HTTP 11
temp http: esempi Suppniam l utente digiti l URL www.smeschl.edu/smedepartment/hme.index 1a. il client http inizia una cnnessine TCP al server http (che è un prcess) all indirizz www.smeschl.edu. La prta 80 è il default per i server http. 2. il client http spedisce il messaggi http request message (cntenente l URL) usand la cnnessine TCP (cntiene test e 10 riferimenti ad immagini jpeg) 1b. il server http sull hst www.smeschl.edu in attesa di cnnessini TCP alla prta 80. accetta la cnnessine, ntificandla al client 3. il server http riceve il messaggi di richiesta, frma un messaggi http respnse message cntenente l ggett richiest (smedepartment/hme.index), e spedisce un messaggi usand la cnnessine TCP 2: HTTP 12
http: esempi (cntinuazine) temp 5. il client http riceve il messaggi di rispsta cntenente il file html e l mstra. Parsifica (analizza) il file html, trva i riferimenti a 10 ggetti jpeg. 6. passi 1-5 si ripetn per gnun dei 10 ggetti jpeg. 4. il server http chiude la cnnessine TCP. 2: HTTP 13
Cnnessini persistenti e nn persistenti Nn persistenti http/1.0: il server parsifica le richieste, rispnde, chiude la cnnessine TCP 2 RTT (rund trip time) per ttenere l ggett cnnessine TCP richiesta/trasferiment ggett Ogni trasferiment risente della bassa velcità iniziale di trasferiment di TCP mlti brwser aprn cnnessini multiple in parallel Persistenti default per http/1.1 usand la stessa cnnessine TCP: il server, parsifica richieste, rispnde, parsifica nuve richieste il client spedisce le richieste per tutti gli ggetti a cui si fa riferiment nn appena riceve il file HTML base. Cn senza pipelining 2: HTTP 14
Frmat dei messaggi http: request due tipi di messaggi http: request, respnse http request message: ASCII (frmat human-readable) request line (cmandi GET, POST, HEAD) linee header GET /smedir/page.html HTTP/1.0 Hst: www.smeschl.edu User-agent: Mzilla/4.0 Accept: text/html, image/gif,image/jpeg Accept-language:fr Carriage return, line feed indican la fine del messaggi (extra carriage return, line feed) 2: HTTP 15
http request message: frmat generale 2: HTTP 16
Frmat dei messaggi http: respnse status line (cdice di stat del prtcll frase di stat) dati, e.g., file html richiest linee header HTTP/1.0 200 OK Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Mdified: Mn, 22 Jun 1998... Cntent-Length: 6821 Cntent-Type: text/html data data data data data... 2: HTTP 17
http respnse message: frmat generale versin status cde phrase status line 2: HTTP 18
Cdici di stat per http respnse Nella prima linea del respnse message server->client. Alcuni cdici d esempi: 200 OK richiesta cn success, l ggett richiest segue in quest messaggi 301 Mved Permanently L ggett richiest è stat spstat, la nuva lcazine è specificata dp in quest messaggi (Lcatin:) 400 Bad Request request message nn cmpres dal server 404 Nt Fund Dcument richiest nn trvat su quest server 505 HTTP Versin Nt Supprted 2: HTTP 19
Prvate http (lat client) 1. Cllegatevi cn telnet ad un Web server: telnet www.eurecm.fr 80 Apre una cnnessine TCP sulla prta 80 (prta di default per un http server) su www.eurecm.fr. Qualunque csa si digiti viene spedita sulla prta 80 a www.eurecm.fr 2. Digitate un http request GET: GET /~rss/index.html HTTP/1.0 Digitand quest (digitate due vlte carriage return), spedite un minimale (ma cmplet) GET request al server http 3. Guardate il respnse message spedit dal server http! 2: HTTP 20