108
Couche application HTTP Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Couche application

HTTP

Computer Networks. Tanenbaum Computer Networking. Kurose&Ross

Carole Delporte M2-Protocoles Internet 2-1

Page 2: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Http: Principes

Carole Delporte M2-Protocoles Internet 2-2

Page 3: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-3

Web et HTTP v  Une page web page contient des objets v  Objet : fichier HTML , images JPEG, applet,

fichiers audio,… v  Une page web page consiste en un fichier de base

HTML contenant des objets référencés v  Chaque objet est adressable par une URL (Uniform

Resource Locator)

www.someschool.edu/someDept/pic.gif

host name path name

Carole Delporte

Page 4: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

URL:

§  Example: http://www.phdcomics.com/comics.php

Our focus

Protocol Page on server Server

Common URL protocols Carole Delporte

M2-Protocoles Internet 2-4

Page 5: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-5

HTTP overview

HTTP: hypertext transfer protocol

v  Web’s application layer protocol

v  client/server model §  client: browser that

requests, receives, (using HTTP protocol) and “displays” Web objects

§  server: Web server sends (using HTTP protocol) objects in response to requests

PC running Firefox browser

server running

Apache Web server

iphone running Safari browser

Carole Delporte

Page 6: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Content type

Content type is identified by MIME types §  Browser takes the appropriate action to display §  Plug-ins / helper apps extend browser for new types

M2-Protocoles Internet

Page 7: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-7

HTTP overview

uses TCP: v  client initiates TCP

connection (creates socket) to server, port 80

v  server accepts TCP connection from client

v  HTTP messages (application-layer protocol messages) exchanged between browser (HTTP client) and Web server (HTTP server)

v  TCP connection closed

HTTP is “stateless” v  server maintains no

information about past client requests

protocols that maintain “state” are complex!

v  past history (state) must be maintained

v  if server/client crashes, their views of “state” may be inconsistent, must be reconciled

Carole Delporte

Page 8: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Overview

M2-Protocoles Internet

Steps a client (browser) takes to follow a hyperlink: §  Determine the protocol (HTTP) §  Ask DNS for the IP address of server §  Make a TCP connection to server §  Send request for the page; server sends it back §  Fetch other URLs as needed to display the page §  Close idle TCP connections

Steps a server takes to serve pages: §  Accept a TCP connection from client §  Get page request and map it to a resource (e.g., file

name) §  Get the resource (e.g., file from disk) §  Send contents of the resource to the client. §  Release idle TCP connections

Page 9: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-9

HTTP connections

non-persistent HTTP v  at most one object

sent over TCP connection §  connection then

closed v  downloading multiple

objects required multiple connections

persistent HTTP v  multiple objects can

be sent over single TCP connection between client, server

Carole Delporte

Page 10: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-10

Non-persistent HTTP suppose user enters URL:

1a. HTTP client initiates TCP connection to HTTP server (process) at www.someSchool.edu on port 80

2. HTTP client sends HTTP request message (containing URL) into TCP connection socket. Message indicates that client wants object someDepartment/home.index

1b. HTTP server at host www.someSchool.edu waiting for TCP connection at port 80. “accepts” connection, notifying client

3. HTTP server receives request message, forms response message containing requested object, and sends message into its socket

time

(contains text, references to 10

jpeg images) www.someSchool.edu/someDepartment/home.index

Carole Delporte

Page 11: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-11

Non-persistent HTTP (cont.)

5. HTTP client receives response message containing html file, displays html. Parsing html file, finds 10 referenced jpeg objects

6. Steps 1-5 repeated for each of 10 jpeg objects

4. HTTP server closes TCP connection.

time

Carole Delporte

Page 12: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-12

Non-persistent HTTP: response time

RTT (definition): time for a small packet to travel from client to server and back

HTTP response time: v  one RTT to initiate TCP

connection v  one RTT for HTTP request

and first few bytes of HTTP response to return

v  file transmission time v  non-persistent HTTP

response time = 2RTT+ file transmission

time

time to transmit file

initiate TCP connection

RTT

request file

RTT

file received

time time

Carole Delporte

Page 13: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-13

Persistent HTTP

non-persistent HTTP issues: v  requires 2 RTTs per object v  OS overhead for each TCP

connection v  browsers often open

parallel TCP connections to fetch referenced objects

persistent HTTP: v  server leaves connection

open after sending response

v  subsequent HTTP messages between same client/server sent over open connection

v  client sends requests as soon as it encounters a referenced object

v  as little as one RTT for all the referenced objects

Carole Delporte

Page 14: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-14

HTTP request message

v  two types of HTTP messages: request, response v  HTTP request message:

§  ASCII (human-readable format)

request line (GET, POST, HEAD commands)

header lines

carriage return, line feed at start of line indicates end of header lines

GET /index.html HTTP/1.1\r\n Host: www-net.cs.umass.edu\r\n User-Agent: Firefox/3.6.10\r\n Accept: text/html,application/xhtml+xml\r\n Accept-Language: en-us,en;q=0.5\r\n Accept-Encoding: gzip,deflate\r\n Accept-Charset: ISO-8859-1,utf-8;q=0.7\r\n Keep-Alive: 115\r\n Connection: keep-alive\r\n \r\n

carriage return character line-feed character

Carole Delporte

Page 15: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-15

HTTP request message: general format

request line

header lines

body

method sp sp cr lf version URL

cr lf value header field name

cr lf value header field name

~ ~ ~ ~

cr lf

entity body ~ ~ ~ ~

Carole Delporte

Page 16: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

HTTP

M2-Protocoles Internet

Headers:

Function Example Headers

Browser capabilities (client à server)

User-Agent, Accept, Accept-Charset, Accept-Encoding, Accept-Language

Caching related (mixed directions)

If-Modified-Since, If-None-Match, Date, Last-Modified, Expires, Cache-Control, ETag

Browser context (client à server)

Cookie, Referer, Authorization, Host

Content delivery (server à client)

Content-Encoding, Content-Length, Content-Type, Content-Language, Content-Range, Set-Cookie

Page 17: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-17

Uploading form input

POST method: v  web page often includes

form input v  input is uploaded to

server in entity body

URL method: v  uses GET method v  input is uploaded in URL

field of request line: www.somesite.com/animalsearch?monkeys&banana

Carole Delporte

Page 18: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-18

Method types

HTTP/1.0: v  GET v  POST v  HEAD

§  asks server to leave requested object out of response

HTTP/1.1: v  GET, POST, HEAD v  PUT

§  uploads file in entity body to path specified in URL field

v  DELETE §  deletes file specified in

the URL field

Carole Delporte

Page 19: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

HTTP

M2-Protocoles Internet

Request methods.

Fetch a page

Used to send input data to a server program

Page 20: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-20

HTTP response message

status line (protocol status code status phrase)

header lines

data, e.g., requested HTML file

HTTP/1.1 200 OK\r\n Date: Sun, 26 Sep 2010 20:09:20 GMT\r\n Server: Apache/2.0.52 (CentOS)\r\n Last-Modified: Tue, 30 Oct 2007 17:00:02 GMT

\r\n ETag: "17dc6-a5c-bf716880"\r\n Accept-Ranges: bytes\r\n Content-Length: 2652\r\n Keep-Alive: timeout=10, max=100\r\n Connection: Keep-Alive\r\n Content-Type: text/html;

charset=ISO-8859-1\r\n \r\n data data data data data ...

Carole Delporte

Page 21: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-21

HTTP response status codes

200 OK §  request succeeded, requested object later in this msg

301 Moved Permanently §  requested object moved, new location specified later in this msg

(Location:)

400 Bad Request §  request msg not understood by server

404 Not Found §  requested document not found on this server

505 HTTP Version Not Supported

v  status code appears in 1st line in server-to-client response message.

v  some sample codes:

Carole Delporte

Page 22: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

HTTP

M2-Protocoles Internet

Response codes tell the client how the request fared:

Page 23: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-23

Trying out HTTP (client side) for yourself 1. Telnet to your favorite Web server:

opens TCP connection to port 80 (default HTTP server port) at cis.poly.edu. anything typed in sent to port 80 at cis.poly.edu

telnet www.liafa.univ-paris-diderot.fr 80

2. type in a GET HTTP request:

GET /~cd/ HTTP/1.1 Host: www.liafa.univ-paris-diderot.fr

by typing this in (hit carriage return twice), you send this minimal (but complete) GET request to HTTP server

3. look at response message sent by HTTP server!

Carole Delporte

Page 24: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Carole Delporte M2-Protocoles Internet 2-24

$ telnet www.liafa.univ-paris-diderot.fr 80 Trying 81.194.27.176... Connected to www.liafa.univ-paris-diderot.fr. Escape character is '^]'. GET /~cd/ HTTP/1.1 Host: www.liafa.univ-paris-diderot.fr HTTP/1.1 200 OK Date: Fri, 17 Oct 2014 10:32:29 GMT Server: Apache Last-Modified: Tue, 30 Sep 2014 16:23:33 GMT ETag: "23f260-8796-5044ace01900c" Accept-Ranges: bytes Content-Length: 34710 Content-Type: text/html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com….........

Page 25: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Carole Delporte M2-Protocoles Internet 2-25

Page 26: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-26

User-server state: cookies

many Web sites use cookies four components:

1) cookie header line of HTTP response message

2) cookie header line in next HTTP request message

3) cookie file kept on user’s host, managed by user’s browser

4) back-end database at Web site

example: v  Susan always access Internet

from PC v  visits specific e-commerce

site for first time v  when initial HTTP requests

arrives at site, site creates: §  unique ID §  entry in backend

database for ID

Carole Delporte

Page 27: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-27

Cookies: keeping “state” (cont.) client server

usual http response msg

usual http response msg

cookie file

one week later:

usual http request msg cookie: 1678 cookie-

specific action

access

ebay 8734 usual http request msg Amazon server creates ID

1678 for user create entry

usual http response set-cookie: 1678 ebay 8734

amazon 1678

usual http request msg cookie: 1678 cookie-

specific action

access ebay 8734 amazon 1678

backend database

Carole Delporte

Page 28: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-28

Cookies (continued) what cookies can be used

for: v  authorization v  shopping carts v  recommendations v  user session state (Web

e-mail)

cookies and privacy: v  cookies permit sites to

learn a lot about you v  you may supply name and

e-mail to sites

aside

how to keep “state”: v  protocol endpoints: maintain state at

sender/receiver over multiple transactions

v  cookies: http messages carry state

Carole Delporte

Page 29: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Caching

M2-Protocoles Internet

To scale performance, Web servers can use: §  Caching, multiple threads, and a front end

Page 30: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Caching…

M2-Protocoles Internet

Server steps, revisited: §  Resolve name of Web page requested §  Perform access control on the Web page §  Check the cache §  Fetch requested page from disk or run program §  Determine the rest of the response §  Return the response to the client §  Make an entry in the server log

Page 31: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-31

Web caches (proxy server)

v  user sets browser: Web accesses via cache

v  browser sends all HTTP requests to cache §  object in cache: cache

returns object §  else cache requests

object from origin server, then returns object to client

goal: satisfy client request without involving origin server

client

proxy server

client origin server

origin server

Carole Delporte

Page 32: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-32

More about Web caching

v  cache acts as both client and server §  server for original

requesting client §  client to origin server

v  typically cache is installed by ISP (university, company, residential ISP)

why Web caching? v  reduce response time

for client request v  reduce traffic on an

institution’s access link v  Internet dense with

caches: enables “poor” content providers to effectively deliver content (so too does P2P file sharing)

Carole Delporte

Page 33: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-33

Caching example:

origin servers

public Internet

institutional network

100 Mbps LAN

15 Mbps access link

assumptions: v  avg object size: 1Mbits v  avg request rate from browsers to

origin servers:15request/sec v  avg RTT from institutional router to

any origin server: 2 sec v  access link rate: 15 Mbps

consequences: v  Traffic intensity on the LAN : 15%

v  access link utilization = 100% v  total delay = Internet delay + access

delay + LAN delay = 2 sec + minutes + millisecs

problem!

Carole Delporte

Page 34: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-34

assumptions:

v  avg object size: 1Mbits v  avg request rate from browsers to

origin servers:15/sec v  RTT from institutional router to any

origin server: 2 sec v  access link rate: 15 Mbps

consequences: v  LAN utilization: 15% v  access link utilization = 100% v  total delay = Internet delay + access

delay + LAN delay = 2 sec + minutes + msecs

Caching example: fatter access link

origin servers

15 Mbps access link 150 Mbps 150 Mbps

msecs

Cost: increased access link speed (not cheap!)

10%

public Internet

institutional network

100Mbps LAN

Carole Delporte

Page 35: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

institutional network

100 Mbps LAN

M2-Protocoles Internet 2-35

Caching example: install local cache

origin servers

15 Mbps access link

local web cache

assumptions:

v  avg object size: 1Mbits v  avg request rate from browsers to

origin servers:15/sec v  RTT from institutional router to any

origin server: 2 sec v  access link rate: 15 Mbps

consequences: v  LAN utilization: 15% v  access link utilization = 100% v  total delay = Internet delay + access

delay + LAN delay = 2 sec + minutes + usecs

? ?

How to compute link utilization, delay?

Cost: web cache (cheap!)

public Internet

Carole Delporte

Page 36: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-36

Caching example: install local cache Calculating access link

utilization, delay with cache: v suppose cache hit rate is 0.4

§  40% requests satisfied at cache, 60% requests satisfied at origin

origin servers

15 Mbps access link

v access link utilization: §  60% of requests use access link §  access link utilization =60%

v total delay §  = 0.6 * (delay from origin servers) +0.4

* (delay when satisfied at cache) §  = 0.6 (2.01) + 0.4 (~msecs) §  = ~ 1.2 secs §  less than with 150 Mbps link (and

cheaper too!)

public Internet

institutional network

100 Mbps LAN local web

cache

Carole Delporte

Page 37: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet 2-37

Conditional GET

v  Goal: don’t send object if cache has up-to-date cached version §  no object transmission

delay §  lower link utilization

v  cache: specify date of cached copy in HTTP request If-modified-since: <date>

v  server: response contains no object if cached copy is up-to-date: HTTP/1.0 304 Not Modified

HTTP request msg If-modified-since: <date>

HTTP response HTTP/1.0

304 Not Modified

object not

modified before <date>

HTTP request msg If-modified-since: <date>

HTTP response HTTP/1.0 200 OK

<data>

object modified

after <date>

client server

Carole Delporte

Page 38: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet-38

Content distribution networks (CDNs) Content replication v  Challenging to stream large files

(e.g., video) from single origin server in real time

v  Solution: replicate content at hundreds of servers throughout Internet §  content downloaded to CDN

servers ahead of time §  placing content “close” to user

avoids impairments (loss, delay) of sending content over long paths

§  CDN server typically in edge/access network

origin server in North America

CDN distribution node

CDN server in S. America CDN server

in Europe

CDN server in Asia

Carole Delporte M2-Protocoles Internet

Page 39: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet -39

Content distribution networks (CDNs) Content replication v  CDN (e.g., Akamai) customer is

the content provider (e.g., CNN) v  CDN replicates customers’

content in CDN servers. When provider updates content, CDN updates servers

origin server in North America

CDN distribution node

CDN server in S. America CDN server

in Europe

CDN server in Asia

Carole Delporte

Page 40: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2 Protocoles Internet -40

CDN example

origin server (www.foo.com) v  distributes HTML v  replaces: http://www.foo.com/sports.ruth.gif with http://www.cdn.com/www.foo.com/

sports/ruth.gif

HTTP request for www.foo.com/sports/sports.html

DNS query for www.cdn.com

HTTP request for www.cdn.com/www.foo.com/sports/ruth.gif

1 2

3

Origin server

CDNs authoritative DNS server

Nearby CDN server

CDN company (cdn.com) ❒  distributes gif files ❒  uses its authoritative

DNS server to route redirect requests

Carole Delporte M2-Protocoles Internet

Page 41: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

M2-Protocoles Internet -41

More about CDNs routing requests v  CDN creates a “map”, indicating distances from leaf ISPs

and CDN nodes v  when query arrives at authoritative DNS server:

§  server determines ISP from which query originates §  uses “map” to determine best CDN server

v  CDN nodes create application-layer overlay network

Carole Delporte

Page 42: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Static Web Pages

M2-Protocoles Internet

Static Web pages are simply files §  Have the same contents for each viewing

Can be visually rich and interactive nonetheless: §  HTML that mixes text and images §  Forms that gather user input §  Style sheets that tailor presentation §  Vector graphics, videos, and more (over) . . .

Page 43: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Static Web Pages

M2-Protocoles Internet

Progression of features through HTML 5.0

Page 44: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Dynamic Pages & Web Applications

M2-Protocoles Internet

Dynamic pages are generated by programs running at the server (with a database) and the client §  E.g., PHP at server, JavaScript at client §  Pages vary each time like using an application

Page 45: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Dynamic Pages & Web Applications

M2-Protocoles Internet

Web page that gets form input and calls a server program

PHP server program that creates a custom Web page

Resulting Web page (for inputs “Barbara” and “32”)

PHP calls

Page 46: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Dynamic Pages…

M2-Protocoles Internet

JavaScript program produces result page in the browser

First page with form, gets input and calls program above

Carole Delporte 2-46

Page 47: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Dynamic Pages & Web Applications

M2-Protocoles Internet

The difference between server and client programs

Server-side scripting with PHP Client-side scripting with JavaScript

Page 48: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Dynamic Pages & Web Applications

M2-Protocoles Internet

Web applications use a set of technologies that work together, e.g. AJAX:

§  HTML: present information as pages. §  DOM: change parts of pages while they are viewed. §  XML: let programs exchange data with the server. §  Asynchronous way to send and retrieve XML data. §  JavaScript as a language to bind all this together.

Page 49: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Dynamic Pages & Web Applications

M2-Protocoles Internet

The DOM (Document Object Model) tree represents Web pages as a structure that programs can alter

Page 50: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Dynamic Pages & Web Applications

M2-Protocoles Internet

XML captures document structure, not presentation like HTML. Ex:

Page 51: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Dynamic Pages & Web Applications

M2-Protocoles Internet

Web applications use a set of technologies, revisited:

Page 52: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

The Mobile Web

M2-Protocoles Internet

Mobiles (phones, tablets) are challenging as clients: •  Relatively small screens •  Limited input capabilities, lengthy input. •  Network bandwidth is limited •  Connectivity may be intermittent. •  Computing power is limited

Strategies to handle them: §  Contents: servers provide mobile-friendly versions;

transcoding can also be used §  Protocols: no real need for specialized protocols;

HTTP with header compression sufficient

Page 53: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

apache v  Pour pouvoir tester les exemples on

utilisera apache §  logiciel libre disponible sur la plupart des

plateformes §  Le serveur le plus fréquent §  Prise en charge de nombreux modules, (perl php,

python, ruby…) cgi §  Serveurs virtuels

Carole Delporte M2-Protocoles Internet 1-53

Page 54: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Principes… v  Le serveur reçoit des requêtes http et

renvoie des pages html dans des réponses http §  Interpréter les requêtes §  Lancer sur le côté serveur les applications

concernées §  Récupérer les résultats et les transmettre au

client v  Configuration: httpd.conf (en général

dans /etc/apache2 (et par catalogue .htaccess et htpasswd )

par users /etc/apache2/users/nomuser.conf Carole Delporte

M2-Protocoles Internet 1-54

Page 55: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

/etc/apache2/httpd.conf

Carole Delporte M2-Protocoles Internet 2-55

# # ServerRoot: The top of the directory tree under which the server's # configuration, error, and log files are kept. # # Do not add a slash at the end of the directory path. If you point # ServerRoot at a non-local disk, be sure to specify a local disk on the # Mutex directive, if file-based mutexes are used. If you wish to share the # same ServerRoot for multiple httpd daemons, you will need to change at # least PidFile. # ServerRoot "/usr"

Page 56: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Carole Delporte M2-Protocoles Internet 2-56

# # Listen: Allows you to bind Apache to specific IP addresses and/or # ports, instead of the default. See also the <VirtualHost> # directive. # # Change this to Listen on specific IP addresses as shown below to # prevent Apache from glomming onto all bound IP addresses. # #Listen 12.34.56.78:80 Listen 80 ….

Page 57: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

/etc/apache2/users/remi.conf

Carole Delporte M2-Protocoles Internet 2-57

$ more remi.conf <Directory "/Users/remi/Sites/"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory>

Page 58: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Principes v  Correspondance entre url et fichiers locaux

§  DocumentRoot: •  Si DocumentRoot = /Library/WebServer/Documents •  http://localhost/un/deux.html sera converti en •  /Library/WebServer/Documents/un/deux.html

§  Pages des utilisateurs •  UserDir: ~/Sites •  http://localhost/~user/file.html sera •  /Users/user/Sites/file.html

§  En plus des alias et des redirections

Carole Delporte M2-Protocoles Internet 1-58

Page 59: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Pour voir… v  Sur cette machine:

§  /etc/apache2/httpd.conf §  ServerRoot: /usr  §  DocumentRoot: /Library/WebServer/Documents §  + fichier de configurations dans « extra »

•  UserDir: Sites

Carole Delporte M2-Protocoles Internet 1-59

Page 60: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

CGI v  Common Gateway Interface v  exécuter du code du côté serveur v  Passage de paramètre par la méthode

POST ou la méthode GET v  Variables d'environnement

Carole Delporte M2-Protocoles Internet 60

Page 61: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Pour Apache v  Les executables cgi (dépendant)

§  ScriptAlias /cgi-bin /Library/WebServer/CGI-Executables/ §  Pour http://localhost/cgi-bin/exemples/treat.pl §  /Library/WebServer/CGI-Executables/exemples/

treat.pl sera exécuté v  "Paramètres"

§  POST: transmis sur l'entrée standard (STDIN) §  GET: variable de l'environnement

QUERY_STRING v  STDOUT pour la réponse

§  (au moins un MIME type header •  Content-type: text/html et deux newline)

Carole Delporte M2-Protocoles Internet 61

Page 62: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Exemple v  en shell: /Library/WebServer/CGI-Executables/exemples/

exemples/date.cgi #!/bin/sh

tmp=`/bin/date` echo "Content-type: text/html\n <HTML><HEAD><TITLE>Script Cgi</TITLE></

HEAD><BODY>

<CENTER> <H1>La date courante sur le serveur est</H1> $tmp </CENTER> </BODY> </HTML>"

l'URL affichera la date http://localhost/cgi-bin/exemples/date.cgi

Carole Delporte M2-Protocoles Internet 62

Page 63: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Avec un formulaire: <HTML><HEAD><TITLE>Formulaire simple</TITLE></HEAD> <BODY> <H2>Répondez aux questions suivantes</H2> <FORM ACTION="http://localhost/cgi-bin/exemples/treat.pl"

METHOD=GET> Prénom : <INPUT TYPE="text" NAME=prenom SIZE=20><BR> Nom : <INPUT TYPE="text" NAME=nom SIZE=20><BR> Age : <SELECT NAME=age> <OPTION>- de 18 ans <OPTION>19 à 40 ans <OPTION>41 à 60 ans <OPTION>+ de 60 ans </SELECT><BR> <INPUT TYPE=submit VALUE="Envoyer"> <INPUT TYPE=reset

VALUE="Remettre à zéro"> </FORM> </BODY> http://localhost/un/formulaire.html

Carole Delporte M2-Protocoles Internet 63

Page 64: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Résultat v  par la méthode get codage des paramètres: v  prenom=Carole&nom=Delporte&age=41+%C3%A0+60+ans

v  le navigateur génère l'url: http://localhost/cgi-bin/exemples/treat.pl?

prenom=Carole&nom=Delporte&age=41+%C3%A0+60+ans%C3%A0+60+ans

Avec la méthode POST http://www.localhost.com/cgi-bin/exemples/treat.pl

Prenom=Carole&nom=Delporte&age=41+%C3%A0+60+ans

Carole Delporte M2-Protocoles Internet 64

Page 65: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Traitement en perl v  /Library/WebServer/CGI-Executables/exemples/

treat.pl v  http://localhost/cgi-bin/exemples/treat.pl?

prenom=Carole&nom=Delporte&age=41+%C3%A0+60+ans%C3%A0+60+ans

Carole Delporte M2-Protocoles Internet 65

Page 66: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Paramètres v  Les paramètres sont accessibles par

l'intermédiaire de la variable d'environnement QUERY_STRING

Carole Delporte M2-Protocoles Internet 66

Page 67: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Carole Delporte M2-Protocoles Internet 2-67

#!/usr/bin/perl # les donnees sont envoyees par methode GET # donc on recupere les donnees dans la variable # d'environnement QUERY_STRING $buffer=$ENV{"QUERY_STRING"}; # Si POST: $buffer= <STDIN>; # on split la chaine de donnees en des paires name=value local(@champs) = split(/&/, $buffer); local($donnees) = " »; # affichage du debut du code HTML printf STDOUT "Content-type: text/html\n\n"; printf STDOUT "<HTML><HEAD>"; printf STDOUT "<TITLE>Reponse au questionnaire</TITLE>"; printf STDOUT "</HEAD>"; printf STDOUT "<BODY BGCOLOR=\"#ffffff\"> »;

Page 68: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Carole Delporte M2-Protocoles Internet 2-68

printf STDOUT "<H1>R<E9>sultat du traitement de votre questionnaire</H1>"; printf STDOUT "<H2>Chaine de donn<E9>es re<E7>ue par le programme</H2>"; printf STDOUT "QUERY_STRING <STRONG>%s</STRONG>",$buffer; printf STDOUT "<H2>Liste des informations d<E9>cod<E9>es</H2>"; printf STDOUT "<UL>"; printf STDOUT "<BL>"; # recuperation et mise en forme des donnees # on parcourt la liste des paires name=value foreach $i (0 .. $#champs) { # On convertit les plus en espaces $champs[$i] =~ s/\+/ /g;

Page 69: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Carole Delporte M2-Protocoles Internet 2-69

# On separe chaque champ en une cle et sa valeur ($key, $val) = split(/=/,$champs[$i],2); # On convertit les %XX de leur valeur hexadecimale en alphanumerique $key =~ s/%(..)/pack("c",hex($1))/ge; $val =~ s/%(..)/pack("c",hex($1))/ge; # on affiche le resultat printf STDOUT "<LI><STRONG>%s:</STRONG>%s\n",$key,$val; } printf STDOUT "</BL>"; printf STDOUT "</UL>"; printf STDOUT "</BODY>"; printf STDOUT "</HTML>";

Page 70: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Variables d'environnement v  SERVER_SOFTWARE

§  Le nom et la version du serveur HTTP répondant à la requête. (Format : nom/version)

v  SERVER_NAME §  Le nom d'hôte, alias DNS ou adresse IP du

serveur. v  GATEWAY_INTERFACE

§  La révision de la spécification CGI que le serveur utilise. (Format : CGI/révision)

Carole Delporte M2-Protocoles Internet 70

Page 71: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Variables… v  SERVER_PROTOCOL

§  Le nom et la révision du protocole dans lequel la requête a été faite (Format : protocole/révision)

v  SERVER_PORT §  Le numéro de port sur lequel la requête a été envoyée.

v  REQUEST_METHOD §  La méthode utilisée pour faire la requête. Pour HTTP, elle

contient généralement « GET » ou « POST ». v  PATH_INFO

§  Le chemin supplémentaire du script tel que donné par le client. Par exemple, si le serveur héberge le script « /cgi-bin/monscript.cgi » et que le client demande l'url « http://serveur.org/cgi-bin/monscript.cgi/marecherche », alors PATH_INFO contiendra « marecherche ».

v  PATH_TRANSLATED §  Contient le chemin demandé par le client après que les

conversions virtuel → physique aient été faites par le serveur.

Carole Delporte M2-Protocoles Internet 71

Page 72: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Variables v  SCRIPT_NAME

§  Le chemin virtuel vers le script étant exécuté. Exemple : « /cgi-bin/script.cgi »

v  QUERY_STRING §  Contient tout ce qui suit le « ? » dans l'URL envoyée par le

client. Toutes les variables provenant d'un formulaire envoyé avec la méthode « GET » sera contenue dans le QUERY_STRING sous la forme « var1=val1&var2=val2&... ».

v  REMOTE_HOST §  Le nom d'hôte du client. Si le serveur ne possède pas cette

information (par exemple, lorsque la résolution DNS inverse est désactivée), REMOTE_HOST sera vide.

v  REMOTE_ADDR §  L'adresse IP du client.

v  AUTH_TYPE §  Le type d'identification utilisé pour protéger le script (s’il est

protégé et si le serveur supporte l'identification).

Carole Delporte M2-Protocoles Internet 72

Page 73: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Variables v  REMOTE_USER

§  Le nom d'utilisateur du client, si le script est protégé et si le serveur supporte l'identification.

v  REMOTE_IDENT §  Nom d'utilisateur (distant) du client faisant la requête. Le

serveur doit supporter l'identification RFC 931. Cette variable devraient être utilisée à des fins de journaux seulement.

v  CONTENT_TYPE §  Le type de contenu attaché à la requête, si des données sont

attachées (comme lorsqu'un formulaire est envoyé avec la méthode « POST »).

v  CONTENT_LENGTH §  La longueur du contenu envoyé par le client.

Carole Delporte M2-Protocoles Internet 73

Page 74: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Variables v  HTTP_ACCEPT

• Les types de données MIME que le client accepte de recevoir.

• Exemple : text/*, image/jpeg, image/png, image/*, */*

v  HTTP_ACCEPT_LANGUAGE • Les langages dans lequel le client accepte de recevoir la réponse.

• Exemple : fr_CA, fr v  HTTP_USER_AGENT

• Le navigateur utilisé par le client. • Exemple : Mozilla/5.0 (compatible; Konqueror/3; Linux)

Carole Delporte M2-Protocoles Internet 74

Page 75: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

http://localhost/un/formulairePOST.html

Carole Delporte M2-Protocoles Internet 2-75

<HTML><HEAD><TITLE>Formulaire simple</TITLE></HEAD> <BODY> <H2>Repondez aux questions suivantes</H2> <FORM ACTION="http://localhost/cgi-bin/exemples/affiche.pl" METHOD=POST> Prenom : <INPUT TYPE="text" NAME=prenom SIZE=20><BR> Nom : <INPUT TYPE="text" NAME=nom SIZE=20><BR> Age : <SELECT NAME=age> <OPTION>- de 18 ans <OPTION>19 à 40 ans <OPTION>41 à 60 ans <OPTION>+ de 60 ans </SELECT><BR>

Page 76: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

http://localhost/un/formulairePOST.html

Carole Delporte M2-Protocoles Internet 2-76

<INPUT TYPE=submit VALUE="Envoyer"> <INPUT TYPE=reset VALUE="Remettre a zero"> </FORM> </BODY>

Page 77: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

http://localhost/cgi-bin/exemples/affiche.pl

Carole Delporte M2-Protocoles Internet 2-77

#!/usr/bin/perl $buffer=$ENV{"SERVER_SOFTWARE"}; $buffer1=$ENV{"SERVER_NAME"}; $buffer2=$ENV{"GATEWAY_INTERFACE"}; $buffer3=$ENV{"SERVER_PROTOCOL"}; $buffer4=$ENV{"SERVER_PORT"}; $buffer5=$ENV{"REQUEST_METHOD"}; $buffer6=$ENV{"PATH_INFO"}; $buffer7=$ENV{"PATH_TRANSLATED"}; $buffer8=$ENV{"SCRIPT_NAME"}; $buffer9=$ENV{"QUERY_STRING"}; $buffer10=$ENV{"REMOTE_HOST"};

Page 78: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

http://localhost/cgi-bin/exemples/affiche.pl

Carole Delporte M2-Protocoles Internet 2-78

$buffer11=$ENV{"REMOTE_ADDR"}; $buffer12=$ENV{"AUTH_TYPE"}; $buffer13=$ENV{"REMOTE_USER"}; $buffer14=$ENV{"REMOTE_IDENT"}; $buffer15=$ENV{"CONTENT_TYPE"}; $buffer16=$ENV{"CONTENT_LENGTH"}; $buffer17=$ENV{"HTTP_ACCEPT"}; $buffer18=$ENV{"HTTP_ACCEPT_LANGUAGE"}; $buffer19=$ENV{"HTTP_USER_AGENT"};

Page 79: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

http://localhost/cgi-bin/exemples/affiche.pl

Carole Delporte M2-Protocoles Internet 2-79

# affichage du debut du code HTML printf STDOUT "Content-type: text/html\n\n"; printf STDOUT "<HTML><HEAD>"; printf STDOUT "<TITLE>Reponse au questionnaire</TITLE>"; printf STDOUT "</HEAD>"; printf STDOUT "<BODY BGCOLOR=\"#ffffff\">"; printf STDOUT "<H1>Var de l'environnement</H1>"; printf STDOUT "QUERY_STRING <STRONG>%s</STRONG>",$buffer; printf STDOUT "<BR>"; printf STDOUT "QUERY_NAME <STRONG>%s</STRONG>",$buffer1; printf STDOUT "<BR>"; printf STDOUT "GATEWAY_INTERFACE <STRONG>%s</STRONG>",$buffer2;

Page 80: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

http://localhost/cgi-bin/exemples/affiche.pl

Carole Delporte M2-Protocoles Internet 2-80

printf STDOUT "<BR>"; printf STDOUT "SERVER_PROTOCOL <STRONG>%s</STRONG>",$buffer3; printf STDOUT "<BR>"; printf STDOUT "SERVER_PORT <STRONG>%s</STRONG>",$buffer4; printf STDOUT "<BR>"; printf STDOUT "REQUEST_METHOD <STRONG>%s</STRONG>",$buffer5; printf STDOUT "<BR>"; printf STDOUT "PATH_INFO <STRONG>%s</STRONG>",$buffer6; printf STDOUT "<BR>"; printf STDOUT "PATH_TRANSLATED <STRONG>%s</STRONG>",$buffer7; printf STDOUT "<BR>"; printf STDOUT "SCRIPT_NAME <STRONG>%s</STRONG>",$buffer8; printf STDOUT "<BR> »;

Page 81: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

http://localhost/cgi-bin/exemples/affiche.pl

Carole Delporte M2-Protocoles Internet 2-81

printf STDOUT "QUERY_STRING <STRONG>%s</STRONG>",$buffer9; printf STDOUT "<BR>"; printf STDOUT "REMOTE_HOST <STRONG>%s</STRONG>",$buffer10; printf STDOUT "<BR>"; printf STDOUT "REMOTE_ADDR <STRONG>%s</STRONG>",$buffer11; printf STDOUT "<BR>"; printf STDOUT "AUTH_TYPE <STRONG>%s</STRONG>",$buffer13; printf STDOUT "<BR>"; printf STDOUT "REMORE_USER <STRONG>%s</STRONG>",$buffer13; printf STDOUT "<BR>"; printf STDOUT "REMOTE_IDENT <STRONG>%s</STRONG>",$buffer14; printf STDOUT "<BR> »;

Page 82: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

http://localhost/cgi-bin/exemples/affiche.pl

Carole Delporte M2-Protocoles Internet 2-82

printf STDOUT "CONTENT_TYPE <STRONG>%s</STRONG>",$buffer15; printf STDOUT "<BR>"; printf STDOUT "CONTENT_LENGTH <STRONG>%s</STRONG>",$buffer16; printf STDOUT "<BR>"; printf STDOUT "HTTP_ACCEPT <STRONG>%s</STRONG>",$buffer17; printf STDOUT "<BR>"; printf STDOUT "HTTP_ACCEPT_LANGUAGE <STRONG>%s</STRONG>",$buffer18; printf STDOUT "<BR>"; printf STDOUT "HTTP_USER_AGENT <STRONG>%s</STRONG>",$buffer19; printf STDOUT "</BODY>"; printf STDOUT "</HTML>";

Page 83: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

On obtient

Carole Delporte M2-Protocoles Internet 2-83

Var de l'environnement QUERY_STRING Apache/2.4.9 (Unix) QUERY_NAME localhost GATEWAY_INTERFACE CGI/1.1 SERVER_PROTOCOL HTTP/1.1 SERVER_PORT 80 REQUEST_METHOD POST PATH_INFO PATH_TRANSLATED SCRIPT_NAME /cgi-bin/exemples/affiche.pl QUERY_STRING REMOTE_HOST REMOTE_ADDR ::1

Page 84: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

On obtient

Carole Delporte M2-Protocoles Internet 2-84

AUTH_TYPE REMORE_USER REMOTE_IDENT CONTENT_TYPE application/x-www-form-urlencoded CONTENT_LENGTH 42 HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 HTTP_ACCEPT_LANGUAGE fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4 HTTP_USER_AGENT Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36

Page 85: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Compléments Javascript v  Code qui s'exécute du côté du client

§  calcul local §  contrôle d'une zone de saisie §  affichage d'alerte §  fenêtres menus etc..

v  Balise : <SCRIPT languge="JavaScript1.2"> le code... </SCRIPT>

Carole Delporte

M2-Protocoles Internet 85

Page 86: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Exemple: bonjour <HTML><HEAD> <TITLE>Très facile</TITLE> </HEAD> <SCRIPT language="JavaScript1.2"> function bonjour() { alert ("Bonjour madame, bonjour monsieur"); } </SCRIPT> <BODY bgcolor="WHITE" onLoad="bonjour();"> <H1>Bonjour</H1> </BODY></HTML> http://localhost/un/BjrJvs.html

Carole Delporte M2-Protocoles Internet 86

Page 87: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Un peu plus: minicalcul <HTML> <HEAD> <TITLE>Petit calcul</TITLE> </HEAD> <BODY bgcolor='WHITE'> <script language='JavaScript1.2' src='calcul.js'></script> <script language='JavaScript1.2' src='fenetre.js'></script> <script language='JavaScript1.2' src='ctrl.js'></script> <CENTER><H1>Calcul</H1></CENTER> Un petit exemple de formulaire. <P> Création d'une <A href='#A' onClick='afficheDoc();'>fenêtre avec JavaScript</A>

Carole Delporte M2-Protocoles Internet 87

Page 88: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Suite <FORM ACTION='Simul.html' METHOD='POST' NAME='Simul'> <CENTER> <TABLE BORDER=3> <TR><TD>Argument 1 <TD> <INPUT TYPE='TEXT' SIZE=20 NAME='arg1' onChange='calcul();'></TR> <TR><TD>* Argument 2 <TD> <INPUT TYPE='TEXT' SIZE=20 NAME='arg2' onChange='calcul();'> </TR> <TR><TD>Résultat= <TD> <INPUT TYPE='TEXT' SIZE=20 NAME='res' > </TR> </TABLE> <INPUT TYPE='BUTTON' VALUE='Vérifier' onClick='ctrl();'> <INPUT TYPE='RESET' VALUE='Effacer tout' onClick=' if (!confirm("Vraiment vous voulez effacer ?")) exit;'> </CENTER> </FORM> </BODY> </HTML> http://localhost/un/Simul.html

Carole Delporte M2-Protocoles Internet 88

Page 89: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Fichiers js v  un/ctrl.js v  function ctrl() { if (isNaN(window.document.Simul.res.value )) { alert ("Valeur incorrecte : " + document.Simul.res.value + "?"); document.forms[0].res.focus(); } }

v  un/calcul.js function calcul() { v1=document.forms[0].arg1.value; v2=document.forms[0].arg2.value; document.forms[0].res.value = v2*v1 ; }

Carole Delporte M2-Protocoles Internet 89

Page 90: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

suite et fin v  un/fenetre.js function afficheDoc() { options = "width=300,height=200"; fenetre = window.open('','MU',options); fenetre.document.open(); manuel = "<HTML><HEAD><TITLE>Documentation</TITLE></

HEAD>" + "<BODY bgcolor='white'>" + "Il n'y a pas besoin d'aide " + " c'est facile." + " Bonne chance !</BODY></HTML>"; fenetre.document.write(manuel); fenetre.document.close(); }

Carole Delporte M2-Protocoles Internet 90

Page 91: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Compléments: php v  php est un langage de script pour les

serveurs webs v  de nombreuses fonctions permettent de

traiter les requêtes http (en particulier des requêtes concernant des bases de données)

v  ici on est du côté du serveur…

Carole Delporte M2-Protocoles Internet 91

Page 92: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Exemple simple <HTML> <HEAD> <TITLE>Exemple très simple</TITLE> </HEAD> <BODY> <H1>Exemple</H1> le <?php date_default_timezone_set('Europe/Paris'); echo Date ("j/m/Y à H:i:s"); ?> <P> <?php echo "Client :" . $_SERVER['HTTP_USER_AGENT'] . "<BR>"; echo "Adresse IP client:".$_SERVER['REMOTE_ADDR']."<BR>"; echo "Server: " . $_SERVER['SERVER_NAME']; ?> </BODY></HTML> http://localhost/un/ExempleSimple.php

Carole Delporte M2-Protocoles Internet 92

Page 93: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Résultat Exemple Le 20/10/2014 à 15:47:25 Client :Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:33.0) Gecko/20100101 Firefox/33.0 Adresse IP client:::1 Server: localhost

Carole Delporte M2-Protocoles Internet 93

Page 94: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Reçu par le client <HTML> <HEAD> <TITLE>Exemple très simple</TITLE> </HEAD> <BODY> <H1>Exemple</H1> Le 20/10/2014 à 15:47:25 <P> Client :Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:33.0) Gecko/

20100101 Firefox/33.0<BR>Adresse IP client:::1<BR>Server: localhost

</BODY></HTML> Carole Delporte

M2-Protocoles Internet 94

Page 95: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Php v  On est ici côté serveur:

§  les balises <?php> <?> sont interprétées par le serveur (apache par exemple) et servent à générer la page html reçue par le client

v  Mais surtout php permet §  d'accéder aux variables d'environnement §  d'utiliser de nombreuses fonctionnalités

•  sessions, paramètres etc. v  Php sert souvent d'interface pour MySql

serveur simple de bases de données

Carole Delporte M2-Protocoles Internet 95

Page 96: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Php v  pas de typage ni de déclaration des variables v  $v est remplacé par la valeur de v (et permet aussi

l'affectation) v  echo "$v"; v  constantes define("PI, 3.1415); v  types des variables

§  numériques •  $i=1; •  $v=3.14;

§  chaînes de caractères (expressions régulières) •  $nom= »Diderot"; •  ',",{}

Carole Delporte M2-Protocoles Internet 96

Page 97: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

php v  Variables

§  Locales (à une fonction) §  Globales §  Super globales (disponibles dans tout contexte) §  Static (garde sa valeur) §  Variables dynamiques (le nom de la variable est

une variable) •  $a='bonjour' •  $$a='monde' •  echo "$a ${$a}" •  echo "$a $bonjour"

Carole Delporte M2-Protocoles Internet 97

Page 98: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

php v  tableaux

§  indicés •  $tab[0]="un"; •  $tab=array("un","deux","trois");

§  associatifs •  $m=array("un"=>"one", "deux"=>"two"); •  $m["trois"]="three";

§  next() prev() key() current do {echo "Clé=key($m).Valeur= current($m)"} while(next($mes)); foreach($m as $cle =>$val) {echo "Clé=$cle.Valeur=$val";}

Carole Delporte M2-Protocoles Internet 98

Page 99: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

php v  Mais aussi (php4 et php5)

§  Programmation orientée objets •  Classes et Objets •  Liaison dynamique •  Constructeurs •  …

§  Exceptions

Carole Delporte M2-Protocoles Internet 99

Page 100: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Php v  structures de contrôles

§  if §  if else §  while §  do while §  for §  foreach

•  break, continue

Carole Delporte M2-Protocoles Internet 100

Page 101: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

fonctions function Nom([$arg1, $arg2, ...]) {

corps } passage par valeur (et par référence &) exemples function Add($i,$j){

$somme= $i + $j; return $somme;

} function Add($i,$j,&$somme){

$somme= $i + $j; } Carole Delporte

M2-Protocoles Internet 101

Page 102: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Pour le serveur… v  tableaux associatifs prédéfinis

§  $_SERVER: environnement serveur •  REQUEST_METHOD •  QUERY_STRING •  CONTENT_LENGTH •  SERVER_NAME •  PATH_INFO •  HTTP_USER_AGENT •  REMOTE_ADDR •  REMOTE_HOST •  REMOTE_USER •  REMOTE_PASSWORD

Carole Delporte M2-Protocoles Internet 102

Page 103: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Suite v  Autres tableaux

§  $_ENV : environnement système §  $_COOKIE §  $_GET §  $_POST §  $_FILES §  $_REQUEST (variables des 4 précédents) §  $_SESSION §  $GLOBALS les variables globales du script

Carole Delporte M2-Protocoles Internet 103

Page 104: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Cookies et php http://localhost/un/SetCookie.php <?php // Est-ce que le Cookie existe ? if (isSet($_COOKIE['compteur'])) { $message = "Vous êtes déjà venu {$_COOKIE['compteur']} fois " . "me rendre visite<BR>\n"; // On incrémente le compteur $valeur = $_COOKIE['compteur'] + 1; } else { // Il faut créer le cookie avec la valeur 1 $message = "Bonjour, je vous envoie un cookie<BR>\n"; $valeur = 1; } // Envoi du cookie SetCookie ("compteur", $valeur); ?>

Carole Delporte M2-Protocoles Internet 104

Page 105: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Cookies et php (fin)

<HTML><HEAD>

<TITLE>Les cookies</TITLE>

</HEAD>

<BODY>

<H1>Un compteur d'accès au site avec cookie</H1>

<?php echo $message; ?>

</BODY></HTML>

http://localhost/un/SetCookie.php

Carole Delporte M2-Protocoles Internet 105

Page 106: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

En utilisant les sessions <?php // La fonction session_start fait tout le travail session_start(); ?> <HTML><HEAD> <TITLE>Les cookies</TITLE> </HEAD> <BODY> <H1>Un compteur d'accès au site avec Session</H1>

Carole Delporte M2-Protocoles Internet 106

Page 107: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

Fin <?php if (!isSet($_SESSION['cp'])) { $_SESSION['cp']=1;

echo "C'estlapremière fois,votre id est:" . session_id()."<BR>";

} else{ $_SESSION['cp']++; echo "C'est votre ".$_SESSION['cp']." n-ième connexion"; if($_SESSION['cp']>10){ echo "on vous a trop vu"."<BR>";

session_destroy(); }

} ?> </BODY></HTML> http://localhost/un/SessionPHP.php

Carole Delporte M2-Protocoles Internet 107

Page 108: Computer Networks. Tanenbaumcd/INTERNET/app1-http.pdf · 2014. 11. 1. · Computer Networks. Tanenbaum Computer Networking. Kurose&Ross Carole Delporte M2-Protocoles Internet 2-1

session v  session_start() v  session_destroy() v  session_id()

§  on peut associer des variables à la session par le tableau associatif $_SESSION

§  elle sera accessible à chaque session_start() jusqu'au session_destroy() pour toute connexion qui fournit le session_id().

Carole Delporte M2-Protocoles Internet 108