Programmation Réseau Protocoles Applicatifs Jean-Baptiste.Yunes@liafa.jussieu.fr UFR Informatique 2011-2012
Protocoles Protocoles applicatifs on appelle protocole applicatif ou protocole d application tout protocole de la couche application de la pile réseau les protocoles applicatifs définissent : l ensemble des messages échangés leur ordonnancement et les actions associées ils sont dans l espace utilisateur, i.e. pas dans le système et reposent donc sur les autres protocoles, en particulier systèmes (TCP, UDP ) 2
Protocoles Qu est ce qu un protocole? Wikipédia en donne une assez bonne définition : On nomme protocole les conventions qui facilitent une communication sans faire directement partie du sujet de la communication elle-même «bonjour, comment ça va?», «pronto» 3
Protocoles ainsi chaque application utilisant de la communication définit implicitement ou explicitement un protocole il faut ordonner les messages typer les messages 4
Protocoles il en existe de très nombreux, parmi lesquels on trouve : FTP File Transfer Protocol SMTP Simple Mail Transfer Protocol HTTP HyperText Transfer Protocol chacun est dédié à un ensemble de tâches particulières il n existe pas de protocole «universel» 5
HTTP HTTP la version 1.0 est définie par la RFC 1945 (05/1996) la version 1.1 a été initialement définie par la RFC 2068 (01/1997) puis rendue obsolète par la RFC 2616 (01/1999) puis amendée par la suite il a existé une version 0.9 (non normalisée) il existe une pseudo-version 1.2 en fait une proposition de normalisation pour les extensions de la 1.1 6
HTTP 0.9 pour la version 0.9 la communication est extrêmement réduite : 1. connexion du client au serveur 2. envoi d une requête GET 3. réponse du serveur 4. fermeture de la connexion par le serveur 7
HTTP 0.9 la seule requête possible est GET GET document où document spécifie l identité d un document à récupérer (tout type est possible même si c est a-priori HTML) la réponse est simplement le contenu du document envoyé dans le flux la «fin» du document étant marquée par la terminaison de la connexion 8
HTTP 0.9 [Trotinette:~] yunes% telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. GET / <html><body><h1>it works!</h1></body></html>connection closed by foreign host. envoyé par le «client» renvoyé par le serveur détection par le client de la fermeture opérée par le serveur 9
HTTP 0.9 [Trotinette:~] yunes% telnet www.inria.fr 80 Trying 193.51.193.149... Connected to ezp.inria.fr. Escape character is '^]'. GET / <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>302 Found</title> </head><body> <h1>found</h1> <p>the document has moved <a href="https://adminwww.inria.fr">here</a>.</p> </body></html> Connection closed by foreign host. 10
HTTP 0.9 [Trotinette:~] yunes% telnet www.google.fr 80 Trying 173.194.66.104... Connected to www.l.google.com. Escape character is '^]'. GET / HTTP/1.0 302 Found Location: http://www.google.fr/ Cache-Control: private Content-Type: text/html; charset=utf-8 Set-Cookie: PREF=ID=017bb0ab5c110b86:FF=0:TM=1325252410:LM=1325252410:S=mXgyFHCp7i8l LaQC; expires=sun, 29-Dec-2013 13:40:10 GMT; path=/; domain=.google.com Date: Fri, 30 Dec 2011 13:40:10 GMT Server: gws Content-Length: 218 X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN <HTML><HEAD><meta http-equiv="content-type" content="text/ html;charset=utf-8"> <TITLE>302 Moved</TITLE></HEAD><BODY> <H1>302 Moved</H1> The document has moved <A HREF="http://www.google.fr/">here</A>. </BODY></HTML> Connection closed by foreign host. 11
HTTP 1.0 l aspect primitif du protocole initial a été corrigé avec la version 1.0 qui : autorise l envoi de méta-données et de données associée à une requête rajoute des méta-données aux réponses du serveur autorise des connexions persistantes donc plusieurs requêtes sur une même connexion normalise l espace de nommage des documents (URI URL URN) 12
HTTP 1.x [Trotinette:~] yunes% telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. GET / HTTP/1.0 HTTP/1.1 200 OK Date: Fri, 30 Dec 2011 13:42:38 GMT Server: Apache/2.2.20 (Unix) mod_ssl/2.2.20 OpenSSL/0.9.8r DAV/2 PHP/5.3.6 Content-Location: index.html.en Vary: negotiate TCN: choice Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT ETag: "13185-2c-3e9564c23b600" Accept-Ranges: bytes Content-Length: 44 Connection: close Content-Type: text/html Content-Language: en <html><body><h1>it works!</h1></body></html>connection closed by foreign host. 13
HTTP 1.x [Trotinette:~] yunes% telnet www.inria.fr 80 Trying 193.51.193.149... Connected to ezp.inria.fr. Escape character is '^]'. GET / HTTP/1.0 HTTP/1.1 302 Found Date: Fri, 30 Dec 2011 13:43:32 GMT Server: Apache Location: https://admin-www.inria.fr Content-Length: 210 Connection: close Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>302 Found</title> </head><body> <h1>found</h1> <p>the document has moved <a href="https://adminwww.inria.fr">here</a>.</p> </body></html> Connection closed by foreign host. 14
HTTP le protocole HTTP est relativement simple son schéma de base est toujours requête/ réponse la complexité est surtout présente dans les méta-données 15
SMTP SMTP prend sa source avec MTP décrit par la RFC 722 (09/1980) rendue obsolète par la RFC 780 (05/1981) elle-même rendue obsolète par le première définition de SMTP RFC 780 (11/1981) rendue obsolète par la RFC 821 (08/1982) la RFC 821 est en général considérée comme le standard (STD 10) mais a été remplacée successivement par RFC 2821 (04/2011), puis RFC 5321 (10/2008) 16
SMTP cette RFC décrit le protocole permettant le transmission de courriers électroniques ce document va généralement de paire avec la RFC 822 (STD 11) - et ses successeurs - qui décrit le format des messages électroniques la transmission s effectue par la spécification de différents composants de la transmission 17
SMTP [Trotinette:/var/log] yunes% telnet smtp.aliceadsl.fr smtp Trying 212.27.48.4... Connected to smtp.libertysurf.net. Escape character is '^]'. 220 smtp1-g21.free.fr ESMTP Postfix MAIL FROM:<yunes@liafa.jussieu.fr> 250 2.1.0 Ok RCPT TO:<yunes@liafa.jussieu.fr> 250 2.1.5 Ok DATA 354 End data with <CR><LF>.<CR><LF> coucou. 250 2.0.0 Ok: queued as 85FA1940626 QUIT 221 2.0.0 Bye Connection closed by foreign host. 18