Master Miage 2007-2008 Réseau. La couche Application



Documents pareils
Protocole applicatif. Quel est le service de transport nécessaire à une application? Besoin en service de transport

L3 informatique TP n o 2 : Les applications réseau

Serveurs de noms Protocoles HTTP et FTP

Divers éléments. Protocoles d'applications. Un agent Utilisateur. MUA - Agents Utilisateurs de Courriel. Simple Mail Transfer Protocol

Couche application 1

Couche application. La couche application est la plus élevée du modèle de référence.

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

Réseaux. 1 Généralités. E. Jeandel

Le service FTP. M.BOUABID, Page 1 sur 5

FTP & SMTP. File Transfert Protocol. Deux applications fondamentales pour le réseau Internet. Un protocole d échange de fichier «au dessus» de TCP :

18 TCP Les protocoles de domaines d applications

HTTP HTTP. IUT1 dpt SRC L Isle d Abeau Jean-françois Berdjugin. Introduction et architecture Messages Authentification Conclusion

Cours CCNA 1. Exercices

Introduction. Adresses

Outils de l Internet

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Chapitre : Les Protocoles

Les commandes relatives aux réseaux

SSH, le shell sécurisé

Protocoles Applicatifs

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

FTP & SMTP. Deux applications fondamentales pour le réseau Internet.

L3 informatique Réseaux : Configuration d une interface réseau

Introduction à HTTP. Chapitre HTTP 0.9

Administration réseau Résolution de noms et attribution d adresses IP

L identité numérique. Risques, protection

Quelques protocoles et outils réseaux

Internets. Informatique de l Internet: le(s) Internet(s) Composantes de l internet R3LR RENATER

Domain Name System. Schéma hiérarchique. Relation

Cisco Certified Network Associate

Services Réseaux - Couche Application. TODARO Cédric

Mr. B. Benaissa. Centre universitaire Nâama LOGO

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

(structure des entêtes)

SIP. Plan. Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement

Applications. Applications. Le système de nommage d Internet: Domain Name System. Applications. service de noms

Étude de l application DNS (Domain Name System)

Devoir Surveillé de Sécurité des Réseaux

Domain Name System. F. Nolot

Programmation Réseau. ! UFR Informatique ! Jean-Baptiste.Yunes@univ-paris-diderot.fr

Dans l'épisode précédent

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Protection des protocoles

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

Application Web et J2EE

Services sur réseaux. Trois services à la loupe. Dominique PRESENT Dépt S.R.C. - I.U.T. de Marne la Vallée

Table des matières Hakim Benameurlaine 1

Introduction aux Technologies de l Internet

Résolution de noms. Résolution de noms

Configurer le Serveur avec une adresse IP Statique (INTERFACE :FastEthernet) : et un masque

Glossaire. ( themanualpage.org) soumises à la licence GNU FDL.

M1 Informatique, Réseaux Cours 9 : Réseaux pour le multimédia

Proxy et reverse proxy. Serveurs mandataires et relais inverses

Présentation Internet

SERVEUR HTTP Administration d apache

SQUID P r o x y L i b r e p o u r U n i x e t L i n u x

Domain Name System ot ol F. N 1

Hébergement de site web Damien Nouvel

Présentation du modèle OSI(Open Systems Interconnection)

TAGREROUT Seyf Allah TMRIM

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

INF8007 Langages de script

Chapitre VII : Principes des réseaux. Structure des réseaux Types de réseaux La communication Les protocoles de communication

Tous les logiciels cités dans ce document sont des marques déposées de leurs propriétaires respectifs

Cours admin 200x serveur : DNS et Netbios

Plan. Le système de transfert de fichiers d'internet. Introduction aux systèmes de transfert de fichiers Le protocole FTP.

1 Introduction Propos du document Introduction De HTTP 1.0 à HTTP

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Tunnels et VPN. 22/01/2009 Formation Permanente Paris6 86

Les services usuels de l Internet

Module http MMS AllMySMS.com Manuel d intégration

Sécurité des réseaux Les attaques

L annuaire et le Service DNS

Le service de nom : DNS

Développement Web. Les protocoles

Installation et utilisation d'un certificat

Administration Système & Réseau. Domain Name System Historique & Concepts Fonctionnalités & Hiérarchie Requêtes & Base de donnée DNS

FTPS AVEC UNE APPLIANCE FAST360 EN COUPURE. Table des matières

SUJET DES FINALES NATIONALES Sujet jour 1 version 1

Plan. Programmation Internet Cours 3. Organismes de standardisation

Exemple d application: l annuaire DNS Claude Chaudet

TD n o 8 - Domain Name System (DNS)

Réseaux Locaux. Objectif du module. Plan du Cours #3. Réseaux Informatiques. Acquérir un... Réseaux Informatiques. Savoir.

Bon ben voilà c est fait!

Manuel d utilisation du logiciel de messagerie personnelle Palm VersaMail 2.5

TP : Introduction à TCP/IP sous UNIX

Stockage du fichier dans une table mysql:

Les serveurs. UE 103b. Guillaume Burel.

La messagerie électronique avec La Poste

Linux sécurité des réseaux

Travaux Pratiques Introduction aux réseaux IP

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

Réseaux et protocoles Damien Nouvel

Daniel POULIN DRT 3808 (version 2010) Faculté de droit, Université de Montréal

DNS et Mail. LDN 15 octobre DNS et Mail. Benjamin Bayart, Fédération FDN. DNS - fichier de zone. DNS - configuration

Sur un ordinateur exécutant Windows 2000 Server Ayant une adresse IP statique

Réalisation d un portail captif d accès authentifié à Internet

Transcription:

Master Miage Réseau La couche Application

Applications et protocoles de couche application Application (réseau): processus répartis qui communiquent Tournent dans les hosts dans l espace utilisateur Échangent des messages pour réaliser la fonction de l application Ex : email, ftp, Web Protocoles : couche Application Un morceau d une application Définit les messages échangés par les appli. et les actions à réaliser Utilise les services de communication fournis par les protocoles de couche inférieure (TCP, UDP) application transport network data link physical application transport network data link physical application transport network data link physical 2

Applications réseau : terminologie 3 Processus: programme qui s exécute sur un host Dans le même host, deux processus communiquent en utilisant les mécanismes IPC (définis par le système d exploitation) InterProcess Communication Deux processus tournant dans des hosts différents communiquent via un protocole de couche application Agent utilisateur (user agent): processus s interfaçant avec l utilisateur en haut et le réseau en bas Implante le protocole de couche application Web: navigateur E-mail: utilitaire de mail (Mozilla, Outlook, ) Flux audio/video: media player

Le paradigme Client-serveur 4 Une appli réseau a deux morceaux: client et serveur Client: Initie le contact avec le serveur ( parle en 1er ) Demande un service Web: client implanté dans le navigateur; e-mail: dans l utilitaire de mail application transport network data link physical request reply Serveur: Fournir les services demandés aux clients Ex : le serveur Web envoie la page Web demandée, le serveur de mail délivre le courrier application transport network data link physical

5 Le paradigme pair à pair (pi2pi) Un terminal est pair car il peut être à la fois client et à la fois serveur (tt le monde est sur un pied d'égalité). Ex. Download de fichier tout en laissant dispo le téléchargement sur son terminal. Pour échange de fichiers Pour calculs (xtreme web) Impose Ex. protocole commun d'échange des infos gestion des participants. 1999 Napster (info centralisé) 2000 Gnutella (décentralisé) 2002 bit torrent (fractionnement fichiers)

Perte de données De quel service de transport une application a-t-elle besoin? Certaines appli (ex, audio) tolèrent des pertes D autres (ex transfert fichiers) nécessitent un transfert fiable à 100% Délai Certaines appli (ex, téléphonie Internet, jeux interactifs) nécessitent des délais faibles pour être efficaces Bande passante Certaines appli (ex, multimedia) nécessitent un montant minimum de BP pour être efficace D autres ( appli élastiques ) fonctionnent quelque soit la BP dont elles disposent (email, Web, transfert de fichiers) 6

Besoins en services de transport des applications courantes 7 Application Data loss Bandwidth Time Sensitive file transfer e-mail Web documents real-time audio/video stored audio/video interactive games financial apps no loss no loss loss-tolerant loss-tolerant loss-tolerant loss-tolerant no loss elastic elastic elastic audio: 5Kb-1Mb video:10kb-5mb same as above few Kbps up elastic no no no yes, 100 s msec yes, few secs yes, 100 s msec yes and no

Les services des protocoles de transport Internet Service TCP: Orientée-connexion: connexion entre le client et le serveur Transport fiable entre processus émetteur et récepteur Contrôle de flux : l émetteur n engorge pas le récepteur Contrôle de congestion : étranglement de l émetteur quand le réseau est surchargé Ne fournit pas : garantie de délai, garantie d un minimum de bande passante Service UDP: Transfert de données non fiables entre processus émetteur et récepteur Ne fournit pas : établissement de connexion, fiabilité, contrôle de flux, contrôle de congestion, garanties de délai et de bande passante Pourquoi y a-t-il un UDP? 8

9 Protocoles de couche application API: Application Programming Interface Définit l interface entre l application et les couches transport Ex : socket (prise) API Internet Deux processus communiquent en envoyant des données sur la socket et en lisant les données de la socket Comment un processus identifie-t-il l autre processus avec lequel il veut communiquer? adresse IP de l host sur lequel tourne l autre processus numéro de port - permet à l host récepteur de déterminer à quel processus local le message doit être délivré plus de détails plus tard

10 Le Web: le protocole http http: HyperText Transfer Protocol Protocole de couche application de l application WWW Modèle client/serveur client: navigateur qui demande, reçoit et affiche des objets Web (fichier html, image JPEG, GIF, applet java, ). Le navigateur est aussi le user agent serveur: serveur Web qui envoie les objets en réponse aux requêtes http1.0: RFC 1945 http1.1: RFC 2616 PC avec IE Mac avec Netscape Navigator http request http response http request http response Serveur exécutant un serveur Web Apache

11 Le protocole http : plus de détails http: service de transport TCP Le client initie une connexion TCP (crée une socket) vers le serveur, en utilisant le n de port 80 Le serveur accepte les connexions TCP du client Les messages http (APDU) sont échangés entre le navigateur (client http) et le serveur Web (serveur http) La connexion TCP est fermée http est stateless Le serveur ne maintient aucune information sur les requêtes des clients aparté Les protocoles qui maintiennent un état sont complexes! Historique (état) à maintenir Si le serveur/client tombe, leurs états respectifs peuvent être incohérents, et doivent être réconciliés

Un exemple http Soit un utilisateur qui saisit l URL www.someschool.edu/somedepartment/home.index 1a. Le client http initie la connexion TCP to serveur http (processus) sur la machine www.someschool.edu. Le port 80 est le numéro par défaut de ce serveur http (ce processus). temps 2. Le client http envoie un request message http (contenant l URL) sur la socket TCP 1b. Le serveur http de la machine www.someschool.edu est en attente sur la connexion TCP au port 80. Il accepte la connexion, et notifie le client 3. Le serveur http reçoit le message, forme le response message contenant l objet demandé (somedepartment/home.index), émet le message sur la socket 12 (contient du texte, et des références à 10 images jpeg )

Suite de l exemple http 13 5. Le client http reçoit le msg de réponse contenant le fichier html, affiche le html. En parsant le fichier html, il trouve les 10 références d objets JPEG (liens) 4. Le serveur http ferme la connexion TCP temps 6. Les étapes 1 à 5 sont répétées pour chaque objet JPEG Connexion non persistante Combien de connexions TCP sont-elles nécessaires?

Connexions non-persistantes, persistantes 14 Non-persistante (close) http/1.0: le server serveur parse la la requête, répond, ferme la connexion TCP Combien de RTTs pour aller chercher l objet requis? 2 La connexion TCP La requête/transfert d objet La plupart des navigateurs ouvrent des connexions parallèles multiples Combien de RTT pour la page web précédente? Persistante (keep alive) Par défaut pour http/1.1 Sur la même connexion TCP : le serveur parse la requête, répond, parse la nvlle requête, Il fermera la connexion après son inutilisation durant un certain temps (configurable) Avec pipeline : Le client envoie une requête dès qu il rencontre une référence Sans pipeline : possible, pas le mode par défaut de 1.1. Le client envoie une requête après avoir reçu la réponse de la requête précédente

15 Format des messages http : request Deux types de messages http : request, response Le message http de request : ASCII (format lisible) request line 3 champs Header lines Carriage return, line feed indicates end of message Méthode (HEAD, POST, GET) URL requise GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu Connection:close User-agent: Mozilla/4.0 Accept-language:fr (extra carriage return, line feed) Version du protocole Non persistante Netscape

En-tête HTTP (1.1) requêtes 16 Méthodes GET Pour demander une ressource est sans effet sur la ressource. HEAD Ne demande que des informations sur la ressource, sans demander la ressource. POST Utilisée lorsqu'une requête modifie la ressource. OPTIONS Permet d'obtenir les options de communication d'une ressource ou du serveur en général. CONNECT Permet d'utiliser un proxy comme un tunnel de communication. TRACE Demande au serveur de retourner ce qu'il a reçu. But test et diagnostic sur la connexion.

En-tête HTTP 1.1 Options des Requêtes 17 Host Site Web concerné par la requête (serveur hébergeant plusieurs sites à même adresse IP). Obligatoire HTTP 1.1 Referer URI du document avec lien sur la ressource demandée. User-Agent Logiciel utilisé pour se connecter. Connection Précise si la connexion est persistante (Keep Alive) ou non (close) Accept types MIME acceptés par le client (/txt/html par exemple). Accept-Charset encodages de caractères acceptés. Accept-Language langues acceptées.

18 Format des messages http : response status line (3 champs) header lines Data (ex : Fichier html demandé) Version du protocole Status code status phrase HTTP/1.1 200 OK Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Accept-Ranges: bytes Content-Language: fr Content-Length: 6821 Content-Type: text/html ETag: "ab010-2adf-3d202062 Last-Modified: Mon, 22 Jun 1998 data data data data data...

En-tête HTTP (1.1): Statuts Le chiffre des centaines représente une classe de réponses. 1xx Information 2xx Succès 3xx Redirection 4xx Erreur du client 5xx Erreur du serveur Exemples 200 OK Requête réussie, l objet demandé est dans le message 301 Moved Permanently L objet demandé a été déplacé, sa nouvelle localisation figure dans ce message (Location:) 400 Bad Request Message de requête non compris par le serveur 404 Not Found Doument demandé non trouvé sur le serveur 505 HTTP Version Not Supported 19

20 En-tête réponses HTTP (1.1) Options Date Moment auquel le message est généré. Server Modèle du serveur HTTP qui répond à la requête. Content-Length Taille en octets de la ressource. Content-Type type MIME de la ressource. Expires date après laquellle la ressource devrait être considérée obsolète Last-Modified Date de dernière modification de la ressource.

Interaction utilisateur-serveur : authentification 21 Authentification : contrôle d accès au contenu du serveur Autorisation : généralt nom, mot de passe Sans état : le client doit présenter son autorisation à chaque requête authorization: ligne d entête à chaque requête Si pas authorization: le serveur refuse l accès, et utilise le message de status code 401 WWW authenticate: client usual http request msg 401: authorization req. WWW authenticate: usual http request msg + Authorization: <cred> usual http response msg usual http request msg + Authorization: <cred> usual http response msg serveur time

Cookies : gardien d état 22 Le serveur génère un n d identification, qu il mémorise et qu il utilise pour : L authentification Le stockage des préférences de l utilisateur Le serveur envoie le cookie au client dans un message response Set-cookie: 1678453 Le client présente le cookie dans ses requêtes futures cookie: 1678453 client usual http request msg usual http response + Set-cookie: # usual http request msg cookie: # usual http response msg usual http request msg cookie: # usual http response msg serveur cookiespecific action cookiespecific action

GET conditionnel : cache côté client 23 But : Ne pas envoyer l objet client si le client a une version à jour dans son cache Client: spécifie la date de la version cachée dans la requête http If-modified-since: <date> Serveur : la réponse ne contient pas d objet si la version cachée est à jour : HTTP/1.0 304 Not Modified http request msg If-modified-since: <date> http response HTTP/1.0 304 Not Modified http request msg If-modified-since: <date> http response HTTP/1.1 200 OK <data> serveur objet non modifié objet modifié

24 Cache Web (serveur proxy) But : satisfaire la reqûete client sans invoquer le serveur d origine L utilisateur utilise un navigateur : le Web accède au cache web Le client envoie toutes les requêtes http au cache web L objet est dans le cache: le cache l envoie Sinon le cache demande l objet au serveur d origine, puis l envoie au client client client http request http response http request http response Proxy server http request http response origin server origin server

Pourquoi les caches Web? 25 Hypothèse : le cache est proche du client (par ex., dans le même réseau) Réduction des temps de réponse (la réponse vient plus vite puisqu elle vient de moins loin) Réduction du trafic sur le réseau Pas de génération de trafic pour aller chercher la réponse sur un site éloigné Quelle différence de temps institutional network public Internet 1.5 Mbps access link 10 Mbps LAN origin servers institutional cache

Exercices I HEAD http://www.inria.fr/index.fr.html 26 Quel est l effet de cette commande (sous linux)? Quel est le type et la version du serveur HTTP distant? Quel type de connexion supporte-t-il? Connectez vous avec un telnet à l'inria (sur le port 80) et tapez la requête HTTP équivalent à cette commande. Modifiez la requête pour avoir l'ensemble des données de la page Télécharger une image contenue dans cette page Modifiez le champs Accept-langage:en.Le texte est-il en anglais? (et en remplaçant fr par en dans URI)

Exercices II 27 Même chose avec Nanterre? telnet www.u-paris10.fr 80 GET? HTTP/1.1 Host: www.u-paris10.fr Connection:close Essayez de vous connecter en remplaçant www.u-paris10.fr par ksup.u-paris10.fr dans le telnet Essayez de vous connecter en remplaçant également dans le host Identifiez vous le cookie?

Exercices III 28 L'URL est : http://www.blabla.fr/unfichier.html Quel est le terminal (host)? Quel est le chemin du fichier? Donner la version de votre requete HTTP (contenu GET et Host) Vérifier avec http://guilde.jeunes-chercheurs.org/guilde/index.html Et si vous essayiez d'aller à (avec votre navigateur) http://postes.smai.emath.fr/2002/index.php Avec telnet Quel va devoir être votre réponse? Authorization: BASIC d2vibwfzdgvyonpycw1d2vibwfzdgvyonpycw1 qui est encodage (en base 64) de login:mdp

Les «sessions» WEB Définition Session : Connexion d'une durée indéfinie (bornée) entre un utilisateur et un correspondant (généralement un serveur). Elle nécessite l'échange de messages entre les deux parties Principe d'une session : Permet de conserver des informations sur un internaute tout au long de sa visite sur un site. Pour lui donner l'impression d'une seule connexion. Contraintes d'une session Identifier l'utilisateur alors que http est «stateless» Associer à l'utilisateur certaines valeurs Associer à l'utilisateur espace mémoire (2 nd temps) 29

Les «sessions» WEB Identification de la connexion Dans les cookies. Dans l'url (présente sous la forme session=xxx). Dans l'url (forme variable précise gérée par utilisateur). Sauvegarde des infos Dans la base de données du site (ou fichier) pour associer des informations à cette session. Info rémanentes. Dans l'espace mémoire associé à la session. Passage des valeurs Par les URI (?valeur) La session (valables tout le temps) 30

Authentification (au niveau application) Gérée par le serveur (au niveau http) 31 htaccess avec serveur Apache Mot de passe, Adresse IP Contrôle l'accès à la page elle-même Aucun fichier html renvoyé si mauvaise identification Gérée par la session (au niveau html) Fichier html renvoyé Contrôle d'accès à partir d'une page web Gestion par l'application

Htaccess Redirections des pages d'erreurs URL rewritting Réécriture des Index des répertoires Restriction d'accès pour un répertoire et son arborescence 2 fichiers 32 Gestion des authentification :.htaccess Gestion des mots de passe :.htpasswd Syntaxe du.htaccess (pour authentification) En tête Authentification par login Authentification par @IP ou par domaine

En tête :.htaccess (Restriction d'accès par nom) 33 AuthType Basic - Authentification de type basique les mots de passe circulent en clair sur le réseau (encodés en base64) AuthUserFile /chemin/absolu/sur/serveur/.htpasswd - N.B. Le nom.htpasswd peut être changé AuthName ''Le message mis pour l'utilisateur'' Activation service (autorisation nécessaire pour methode get et post) <LIMIT GET POST> require valid user </LIMIT> Fichier mots de passe (clair ou crypté MD5) login:nom

.htaccess (Restriction d'accès par domaine) Interdiction (autorisation) totale 34 deny from all (allow from all) Interdiction @ IP (Autorisation plage @ IP) deny from 192.168.1.2 (allow from 192.168.2) Interdiction (autorisation) domaine deny from microsoft.com (allow from.fr) Ordre sur les traitements order deny allow Traite d'abord refus puis autorisations L'appliquer aux méthodes GET & POST (avec balise limit) Appliquer à un fichier balise <file nom> encapsulant config. des restrictions Modification des accès pour sous répertoire Nouveau fichier htaccess pour tout le sous rep.

35 FTP: File Transfer Protocol utilisateur sur host FTP user interface FTP client Système de fichiers local file transfer FTP server Transfère des fichiers d un/vers un hôte distant Modèle client/serveur client: côté qui initie le transfert (de/vers le distant) serveur: hôte distant ftp: RFC 959 serveur ftp : port 21 Système de fichiers distant

ftp: connexions séparées pour le contrôle et les data Le client ftp contacte le serveur ftp sur le port 21, en spécifiant TCP comme protocole de transport Deux connexions TCP parallèles sont ouvertes : Contrôle : échange des commandes et réponses entre le client et le serveur contrôle hors bande Données : fichier de données du/vers le serveur Le serveur ftp maintient un état : le répertoire courant, l authentification lors de la connexion FTP client TCP control connection port 21 TCP data connection port 20 36 FTP server

Commandes ftp Les commandes ftp sont envoyées comme du texte ASCII sur le canal de contrôle Que font les commandes suivantes? open, user, pwd, cd, lcd, get, recv, mget, put, send, mput, status Un peu d'aide : Sur miage03, lancer le client ftp miage03$ftp help : liste des commandes ftp>? nom-commande Ouvrir une connexion avec ftp.lip6.fr en login anonyme : rapatrier le rapport LIP6 le plus récent (/lip6/reports/.) Ftp sécurisé (sftp) le lip6 accepte-t-il le ftp sécurisé? Quelles commandes sont disponible avec le sftp 37

Trois composants majeurs : user agents Serveurs de mail SMTP : Simple Mail Transfer Protocol Courrier électronique User Agent Appelé parfois mail reader Composer, éditer, lire les messages Ex de user agent GUI : Eudora, Outlook, Netscape Messenger Ex de user agent non GUI : elm, mail, pine Les messages sortants et entrants sont stockés sur le serveur mail server SMTP mail server user agent user agent SMTP SMTP user agent mail server outgoing message queue user mailbox user agent user agent user agent 38

Les serveurs de mail 39 Trois éléments Les mailbox qui contiennent les messages entrants (encore non lus) des utilisateurs La file des messages sortants (qui doivent être expédiés) Le protocole SMTP entre serveurs de mail pour envoyer les messages Modèle client/serveur Sur le serveur de mail S, le client SMTP s occupe de l expédition du mail Sur le même serveur de mail S, le serveur SMTP s occupe de la réception du mail mail server SMTP mail server user agent user agent SMTP SMTP user agent mail server user agent user agent user agent

40 Courrier électronique : smtp [RFC 821] Utilise tcp pour transférer de façon fiable un message d un client vers un serveur, port 25 Transfert direct : du serveur émetteur vers le serveur récepteur Trois phases de transfert Ouverture Transfert de messages Fermeture Interaction de forme commande/réponse Commandes : texte ASCII HELO, MAIL, FROM, RCPT TO, DATA, QUIT Réponses : status code et phrase Les messages doivent être en ASCII 7-bits

Analyse des interactions smtp 41 S: 220 miage03.miage.u-paris10.fr ESMTP Sendmail... C: HELO Ouverture miage03.miage.u-paris10.fr (handshaking) S: 250... Hello miage03, pleased to meet you C: MAIL FROM: <ehyon@miage03.miage.u-paris10.fr> S: 250 ehyon@miage03.miage.u-paris10.fr... Sender ok C: RCPT TO: <user1@miage05.miage.u-paris10.fr> S: 250 user1@miage03.miage.u-paris10.fr... Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itself C: Je simule un user agent qui dialogue avec le MTA C:. transfert S: 250 Message accepted for delivery fermeture C: QUIT S: 221 miage03.miage.u-paris10.fr closing connection

42 Comparaison smtp - http Échange d informations Connexions persistantes Interactions de type commande/réponse et status codes en ASCII smtp Mode push l utilisateur envoie de l information et la connexion TCP est ouverte par l émetteur de l information Messages (entête & corps) en ASCII 7-bits Qq strings non permises dans les msg (CRLF.CRLF) http Mode pull l utilisateur retire de l information et la connexion TCP est ouverte par le récepteur de l information

Format des messages [RFC 822] (Dans le champs Data ) 43 RFC 821: standard smtp RFC 822: standard du format des messages texte Format des lignes d entête construites par le user agent To: From: Subject: différent des commandes. smtp! pas le même TO, FROM! Entête Corps Ligne de blanc Format du corps du message Caractères ASCII É, è, â, ç et autres?

44 Les extensions multimédia MIME: Multimedia Mail Extension, RFC 2045, 2056 Règles d encodage des données non-ascii 7 bits Des lignes supplémentaires dans l entête du message déclarent le contenu de type MIME Version MIME méthode utilisée pour coder les données (base64, quoted-printable encoding, ) Nature du contenu Données codées From: alice@crepes.fr To: bob@hamburger.edu Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data.........base64 encoded data

45 Les types MIME Content-Type: type/subtype; parameters Texte Exemples de sous-types : plain, html Vidéo Exemples de sous-types : mpeg, quicktime Image Exemples de sous-types : jpeg, gif Audio Exemples de sous-types : basic (8-bit mu-law encoded), 32kadpcm (32 kbps coding) Application Autres données qui doivent être traitées par un user agent avant d être lisibles Exemples de sous-types : msword, octet-stream Multipart Différents types de contenus Délimiteurs pour les différencier

Exemple de type Multipart 46 From: alice@crepes.fr To: bob@hamburger.edu Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=98766789 --98766789 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain Dear Bob, Please find a picture of a crepe. --98766789 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data.........base64 encoded data --98766789-- type sous-type délimiteur 1er objet : texte 2ème objet : image

47 Protocoles d accès mail user agent SMTP SMTP POP3 ou IMAP Serveur SMTP émetteur Serveur SMTP récepteur user agent Retrait uniquement, chargemen t en SMTP SMTP: livraison/stockage au serveur récepteur Protocole d accès mail : pour le retrait du mail POP: Post Office Protocol [RFC 1939] Autorisation (agent<->serveur) et retrait IMAP: Internet Mail Access Protocol [RFC 1730] Plus de caractéristiques (plus complexe) Manipulation de messages stockés sur le serveur.

48 POP3 (RFC 1939) Connexion TCP user agent - serveur sur le port 110 Phase d autorisation Commandes du client : user: déclare le nom pass: password Réponses du serveur +OK -ERR Phase de transaction, client: list: liste les n de messages retr: recherche de message par n dele: delete quit S: +OK POP3 server ready C: user alice S: +OK C: pass hungry S: +OK user successfully logged on C: list S: 1 498 S: 2 912 S:. C: retr 1 S: <message 1 contents> S:. C: dele 1 C: retr 2 S: <message 1 contents> S:. C: dele 2 C: quit S: +OK POP3 server signing off

49 HTTP et SMTP user agent HTTP SMTP HTTP user agent Serveur SMTP émetteur Serveur SMTP récepteur HTTP: Hotmail, Yahoo! Mail, etc L utilisateur peut organiser sa hiérarchie de classeurs sur le serveur (~ IMAP) Retrait & chargemen t en HTTP

From - Wed Dec 07 15:07:55 2005 X-UIDL: 1094468282.5273 X-Mozilla-Status: 0003 X-Mozilla-Status2: 00000000 Return-Path: < @yahoo.fr> L'en-tête (à analyser) 50 Received: from hermes.u-paris10.fr ([unix socket]) by hermes.u-paris10.fr (Cyrus v2.2.10) with LMTPA; Wed, 07 Dec 2005 15:06:17 +0100 X-Sieve: CMU Sieve 2.2 Received: from localhost (hermes [127.0.0.1]) by hermes.u-paris10.fr (Postfix) with ESMTP id 547C0283DD for <emmanuel.hyon@u-paris10.fr>; Wed, 7 Dec 2005 15:06:16 +0100 (CET) Received: from web26915.mail.ukl.yahoo.com (web26915.mail.ukl.yahoo.com [217.146.177.82]) by hermes.u-paris10.fr (Postfix) with SMTP id 1BB6628456 for <emmanuel.hyon@u-paris10.fr>; Wed, 7 Dec 2005 15:05:47 +0100 (CET) Received: from [195.101.108.232] by web26915.mail.ukl.yahoo.com via HTTP; Wed, 07 Dec 2005 14:59:06 CET

Exemple d interaction SMTP 51 Sur miage03, envoyer un mail sur miage03 en mode verbose miage03%mail -v user1@miage03.miage.u-paris10.fr Après le subject taper sur Entree puis saisir message à la fin du message Ctrl D Consultation /var/mail/user1 Ce qui s affiche suite à la saisie de votre message est l échange entre le client SMTP et le serveur SMTP (théoriquement) Refaire la manipulation avec telnet miage03.miage.u paris10.fr 25 1) Classiquement 2) Changeant return path 3) Réécrire l'en tête.

Configuration Mailer agent 52 Ouvrir Thunderbird Faites Fichier -> Nouveau -> Compte Créez le avec des valeurs bidon Que signifient dans paramètres de comptes les champs : Nom Adresse electronique Nom (serveur sortant) Nom (serveur entrant) Quels va être le serveur SMTP à remplir

DNS: Domain Name System 53 Humains: bcp d identifications: N sécu, nom, passeport, CI Hosts & routeurs Internet : Adresse IP (32 bit) - utilisée pour adresser les datagrammes nom, (hostname) ex, miage03.miage.u-paris10.fr - utilisé par les humains Annuaire Internet : Correspondance adresse IP et nom? Domain Name System Une BD distributée implantée en une hiérarchie de plusieurs serveurs de noms Un protocole d application qui utilise UDP sur le port 53: host, routeurs, serveurs de nom communiquent pour la résolution de noms (= traduction adresse/nom et nom/adresse) À noter: fonction intrinsèque à Internet (core Internet), implantée en protocole d application Complexité au bord réseau (network s edge )

Les serveurs DNS (serveurs de noms) 54 Pourquoi le DNS n est-il pas centralisé? Un seul point de panne Maintenance Volume du trafic Accès distant à une BD centralisée Ne résiste pas à l échelle! Aucun serveur ne possède tous les mappings nom-@ip Serveur de noms local Chaque ISP, compagnie a un serveur de noms local (default) Un host interroge tjs en 1er le serveur de noms local Serveur de noms autorité Chaque host a son @IP et nom enregistrés sur un tel serveur Gnlt : serveur de noms local Fait la traduction nom/@ pour cet host Serveur de noms racine

55 Serveur racine (Root name servers) Contacté par le serveur de noms local qui ne peut pas faire une résolution Contacte le serveur de noms d autorité s il ne sait pas faire la résolution Le serveur d autorité est censé avoir l information exacte puisqu un host est tjs enregistré auprès d un tel serveur Récupère la réponse et la transmet au serveur local Questions : http://www.root servers.org/ Combien y a-t-il de root servers? Où sont-ils?

56 Serveur racine (Root name servers) a NSI Herndon, VA c PSInet Herndon, VA d U Maryland College Park, MD g DISA Vienna, VA h ARL Aberdeen, MD j NSI (TBD) Herndon, VA k RIPE London i NORDUnet Stockholm m WIDE Tokyo e NASA Mt View, CA f Internet Software C. Palo Alto, CA b USC-ISI Marina del Rey, CA l ICANN Marina del Rey, CA 13 serveurs root

57 L host miage03.miage.uparis10.fr veut l @ IP de www.wia.org 1. Il contacte son serveur DNS local 2. Le serveur DNS local contacte le serveur root, si nécessaire 3. Le serveur root contacte le serveur d autorité, si nécessaire Un exemple simple 2 5 serveur DNS local serveur root 3 4 serveur d autorité 1 6 host miage03.miage.u-paris10.fr www.wia.org

58 Le serveur root Ne connaît pas les serveurs d autorité de tous les hosts! Connaît un serveur intermédiaire : qui contacter pour trouver le serveur d autorité Requêtes récursives Le serveur DNS A envoie une demande au serveur DNS B qui la prend en charge, et interroge C, qui à son tour prend la requête en charge etc. La réponse reviendra à A Exemple DNS plus réaliste 1 host miage03.miage.u-paris.fr 2 7 serveur DNS local (A) 8 serveur root (B) 3 6 serveur intermédiaire (C) 4 5 serveur d autorité (D) www.wia.org

59 Requêtes itératives vs requêtes récursives Reqête récursive C est le serveur contacté qui fait la résolution, pas le serveur demandeur Quid de la charge? Requête itérative Le serveur contacté (B) renvoie le nom du prochain serveur à contacter (C), et c est le serveur demandeur (A) qui s en charge (donc A contacte C) On peut mixer les 2 Cf schéma serveur DNS local (A) 1 host miage03.miage.u-paris.fr 2 8 serveur root (B) 3 4 7 Requête itérative serveur intermédiaire (C) 5 6 serveur d autorité (D) www.wia.org

Cache DNS 60 Optimiser les applications Les applications (ftp, smtp, http) utilisent le DNS pour la résolution de noms Ex : mail to : toto@yahoo.com ou http://webdev.u-paris10.fr Le temps de réponse de l appli est augmenté du temps de résolution (interrogations successives de serveurs) Quand un serveur connaît une résolution (après avoir interrogé les autres serveurs), il la stocke dans un cache (mémoire locale) Une entrée du cache est supprimée après timeout ttl Lors d une demande de résolution, le serveur DNS commence par regarder son cache

Enregistrements DNS 61 DNS: BD distribuée stockant des resource records (RR) format d un RR : (name, value, type,ttl) Type=A name est le hostname value est l @ IP Type=NS name est le domaine (ex u- paris10.fr) value est l @ IP serveur d autorité pour ce domaine Durée de vie dans le serveur name est l alias pour le nom canonique (réel) www.wia.org est en réalité exchange.wia.org value est le nom canonique Type=CNAME Type=MX value est le nom d un serveur de mail dont l alias est name

Les messages du protocole DNS (DNS-PDU) 62 Protocole DNS : messages de requête et réponse, dans le même format de message Entête de message Identification : n sur 16 bits pour la requête, la réponse utilise le même n Drapeaux (flags) 1 bit : req. (0) ou rép. (1) 1 bit : si récursion voulue 1 bit : si récursion disponible 1 bit : si réponse vient de serveur d autorité Autres champs d entête : nb d occurrences des 4 types de champs data

Les messages du protocole DNS (DNS-PDU) 63 Le nom recherché et le type de question posée sur ce nom Les RRs fournis en réponse aux questions Les RRs provenant de serveurs d autorité Information complémentaire

64 L espace des noms Nom : miage03.miage.u-paris10.fr se lit de droite à gauche : fr puis u-paris10 puis miage puis miage03 Hiérarchie de domaines fr est le nom de domaine u-paris10 est le nom de sous-domaine du domaine fr Un domaine est partitionné en sous-domaines, eux-mêmes partitionnés en sous-domaines etc 700 domaines «top-level» en 2 groupes : générique et pays Les visualiser : http://www.iana.org/domain-names.htm

65 L arborescence des noms Domaine spécifique pour obtenir des noms à partir d @ Racine non nommée Domaines de top niveau Domaines de 2ème niveau ar pa co m ed u no ao tu c ho st 2 go v Domaines génériques int mi l host2.tuc.noao.edu ne t or g ae.. fr.. u- pa ris 10 mi ag e0 3 miage03.miage.u-paris10.fr Domaines géographiques

66 La gestion des noms de domaines Qui gère les noms de domaine? Qui décide des noms de domaine? Où enregistrer un nom de domaine? Affectation d un nom de domaine top-level et 2ème niveau par l ICANN qui délègue, par ex, pour.fr, à l AFNIC http://www.afnic.asso.fr Les noms de domaines (autres que top-level) sont sous la responsabilité du site demandeur

67 Relation domaine - serveur DNS Chaque élément de l arborescence (domaine, sousdomaine,, host) a un RR associé L arborescence des noms est divisée en zones 1 serveur d autorité par zone (serveur primaire) Par sécurité, redondance des serveurs DNS, donc plusieurs serveurs pour une zone (serveurs secondaires) Un serveur secondaire d une zone peut se trouver dans une autre zone Toute machine avec accès Internet n est pas forcément enregistrée dans le DNS Ex : miage03 Conséquence : nom inconnu du monde extérieur

Plusieurs sites sur la même machine Rappel Serveur www associe URL à données sur disque Technique de base nom après le domaine -http://mapage.noos.fr/laurentpierre -http://www-sysdef.lip6.fr/~ehyon/cours.html Les «virtual host» : création de plusieurs hôtes virtuels pour la même adresse IP (Géré par le serveur). Possibilité plusieurs domaines Ex : -www.moi.fr, -www.toi.fr Et les alias DNS alors? Possibilités sous domaines Ex : cjc.jeunes-chercheurs.org guilde.jeunes-chercheur.org L'URL Rewritting (pour les pages dynamiques) Transcription URL complexe page.php?var1=3&var2=5 en page35.html 68

Exercices Le fichier /etc/resolv.conf Quel est le rôle de ce fichier? Le fichier /etc/hosts? Les commandes nslookup, host et dig En ligne (sous Linux ou DOS) ou sur le web nslookup http://www.webreference.com/cgi-bin/nslookup.cgi http://www.dnsstuff.com dig http://www.netliner.com/noc.html 69 Que font ces commandes?

Exercices II Quel sont les noms des serveurs canoniques de : Google? www.u-paris10.fr? Hotmail? mail.voila.fr? lemonde.fr? Combien y a-t-il de serveurs pour google.com, hotmail.com et yahoo.com? Y'a-t-il une différence avec google.fr, hotmail.fr yahoo.fr? Comment répartissent-ils leurs charge? Des offres promotionnelles de FAI proposent aux usagers d'obtenir leur propre nom de domaine. Comment font-ils 70

71 Auto-évaluation (vrai ou faux) Si un message de requête HTTP utilise l entête Accept-language:fr et que le serveur a uniquement une version anglaise de l objet, alors il envoie le message d erreur 404 Document Not Found Un serveur peut utiliser les cookies pour déterminer l adresse postal d un utilisateur sans son consentement Le Web envoie des objets multiples dans une page Web dans un message MIME multipart Avec un client POP3, les classeurs mail de l utilisateur sont conservés sur le serveur de mail

Auto-évaluation (vrai ou faux) 72 Un client mail peut envoyer des messages e-mail sur HTTP plutôt que SMTP Si un client POP3 n envoie pas la commande dele, les copies des messages que le client a chargés reste sur le serveur de mail Avec SMTP, il est possible d envoyer de multiples messages e-mail sur la même connexion TCP Les recherches dans le DNS impliquent souvent une combinaison de requêtes récursives et itératives Une université ne peut pas choisir le même nom de serveur pour le serveur web et le serveur de messagerie.

73 Auto-évaluation (vrai ou faux) Avec des connexions non-persistantes entre un navigateur et un serveur Web, il est possible d acheminer deux requêtes HTTP distinctes dans un seul segment TCP (une seule PDU) L entête Date: dans un message de réponse HTTP indique la date de dernière modification de l objet A un seul site correspond un seul serveur Le dns ne sert à rien si on veut équilibrer les charges sur internet. Lors du 11 septembre 2001 les personnes qui se connectaient à un proxy bénéficiaient de plus d informations que ceux qui se connectaient directement aux sites d information.

But et principes du cryptage 74 Principes : Transformer un texte clair en un texte illisible seulement compréhensible après cryptage décryptage par expéditeur et récepteur Opération de transformation s'appelle le cryptage et le Buts : texte illisible le texte codé ou chiffré. Confidentialité Authentification Intégrité Contrôle d'accès

Les Clefs Algorithme de chiffrement prend en entrée une clef Ex: L'algo de César remplace une lettre dans message en clair par une autre lettre situé k lettres plus loin et k est la clef. Clef Symétrique Les clefs de l'expediteur et du destinataire sont les mêmes Problème pour l'échange de clefs Clefs assymétriques Les clefs sont différentes (ex classique cadena et la clef) Clef publique/clef privée 75

Le mail sécurisé (PGP) 76 Utilisé pour crypter les mails (Pretty Good Privacy) Principe : un destinataire diffuse sa clef publique L'expéditeur utilise la clef publique du destinataire pour crypter le message. Lors de la réception le destinataire décrypte le message avec sa clef privée Utilisation Plug-in gérant le cryptage des mails (enigmail avec thunderbird) si nécessaire. OpenPGP ou gnupgp (dispo windows WinPT) Précautions : clefs publiques inaliénables

Principes : SSH (Secure Shell) (l'accès à distance sécurisé) Les données du client au serveur sont chiffrées. On a donc un accès distant sécurisé. Authentification mutuelle Fonctionnement Mise en place du canal sécurisé Connection du client qui doit se logger en s'authentifiant auprès du serveur. Etablissement de la connexion Serveur envoie sa clef publique au client Client envoie une clef symétrique (de session) cryptée avec la clef publique du serveur 77

Accès au serveur : SSH (Secure Shell) (l'accès à distance sécurisé) Authentification classique par identifiant et mot de passe. Authentification par challenge : Nécessité d'avoir déposé sa clef publique auprès serveur Envoi d'un challenge crypté à l'aide clef publique du serveur Accès si client résout le challenge Commandes (accès) ssh user@machine.domaine.fr ssh machine.domaine.fr:80 l user Autres services scp (transfert de fichiers) 78

Tunnels SSH (1) Principes 79

Tunnels SSH (2) Les commandes 80 Commande Tunnel simple ssh L 3028:serveur.domain.fr:25 f n login@serveur.domain.fr L option pour les tunnels 3028 port local port distant sur la machine distante -f et -N pour éviter les affichages Dire au user agent du mail que le serveur smtp est localhost le port est 3028

Tunnels SSH (3) Les commandes 81 Commande Tunnel avec relai ssh L 3110:mail.domain.fr:110 f N login@acces.domain.fr acces la machine à laquelle on se connecte et qui fait le relai mail la machine cible Dire au user agent du mail que le serveur pop est localhost le port est 3110

Tunnels SSH (4) 82

83 Les sockets : l API de la couche transport

Socket 84 Architecture d'une socket Socket «porte» entre le protocole d appli et TCP (ou UDP) mise à

Les ports 85 Afficher le fichier /etc/services Quel est le rôle de ce fichier Trouver les ports des applications suivantes Kazaa Mysql Webcache Imap pops Quand puis-je utiliser ces ports sans problèmes? Pourquoi le traceroute ne marche pas à Nanterre

Notion de «port» Rappel architecture en couches 86 Application : FTP, HTTP, proprio Transport : UDP, TCP network application transport network Port : ~BAL dans laquelle un processus applicatif dépose ses données à expédier et récupère ses données reçues Chaque processus a un n de port : identité logique

Socket et port 87 Machine cliente Machine serveur Émission C / réception S socket applicat ion Émission S /réception C applicat ion socket Ex de n de ports : FTP : 21 HHTP : 80 SMTP : 25 DNS : 53 POP3 : 110 IMAP :??

88 Programmer avec les Sockets But : construire une application client/serveur qui communiquent en utilisant les sockets API Socket Introduit dans UNIX BSD4.1, 1981 Socket : explicitement créée, utilisée et détruite par les applications Paradigme client/serveur Deux types de services de transport service via l API socket : Datagramme non fiable (UDP) Orienté flux d octets, fiable (TCP) socket Une interface (une porte ) contrôlée par l OS, créée et possédée par une application, locale à un host à travers laquelle un processus applicatif peut à la fois envoyer et recevoir des messages vers/de un autre processus (distant ou local).

89 Programmation Socket avec UDP UDP : pas de connexion entre le client et le serveur Pas d établissement de connexion L émetteur envoie explicitement l @ IP et le port de destination Le serveur doit extraire l @ IP et le port de l émetteur dans le datagramme reçu UDP : les données transmises peuvent être reçues dans le désordre, ou perdues Vue de l application UDP fournit un transfert non fiable de groupes d octets ( datagrammes ) entre un client et un serveur

Progammation java Package java.net, contient deux classes http://java.sun.com/j2se/1.3/docs/api/java/net/packagesummary.html La classe DatagramPacket : manipulation des PDU Les objets de la classe encapsulent Un buffer, une taille, une @ IP, un n de port UDP Quatre constructeurs disponibles Méthodes : getadress(), getport(), getdata(), setadress(), setport(), setdata(), La classe DatagramSocket : création de socket et émission/réception des PDU Constructeur => Création de la socket Méthode send() => Émission de PDU Méthode receive() => Réception de PDU 90

91 Interaction socket client/serveur : UDP Serveur (tourne sur hostid) Client créer socket sur port=x, pour les requêtes entrantes : serversocket = DatagramSocket() lire requête de serversocket créer socket, clientsocket = DatagramSocket() créer et envoyer à l adresse (hostid, port=x), la requête en utilisant clientsocket écrire réponse sur serversocket en spécifiant l @ host client et le n de port client Lire la réponse sur clientsocket fermer clientsocket

Exemple : un client Java (UDP) 92 1 - Lire des caractères saisis au clavier k e y b o a r d m o n i t o r 2 - Créer une socket 3 - Initialiser la PDU 4 - Envoyer la PDU Processus Client P r o c e s s i n p u t s t r e a m infromuser 6 - Afficher les résultats 5 - Recevoir la PDU U D P p a c k e t sendpacket receivepacket U D P p a c k e t c l i e n t S o c k e t socket client UDP U D P s o c k e t port t o n e t w o r k f r o m n e t w o r k

Exemple : le client Java (UDP) 93... class MonUDPClient { public static void main(string args[]) throws Exception { // 1 - Creation du buffer de lecture clavier BufferedReader infromuser = new BufferedReader (new InputStreamReader(System.in)); // 2 - Creation de la socket, n de port par defaut DatagramSocket clientsocket = new DatagramSocket(); System.out.println("socket cliente attachee au port " + clientsocket.getlocalport()); // 3 - Recuperation de l'@ip du serveur InetAddress IPAddress =InetAddress.getByName("miage03.miage.u-paris10.fr"); // 3bis - preparation de l'echange byte[] senddata = new byte[1024]; byte[] receivedata = new byte[1024]; String sentence = infromuser.readline(); senddata = sentence.getbytes(); int length = senddata.length(); // 3ter - Initialisation de la (UDP)PDU a emettre DatagramPacket sendpacket = new DatagramPacket (senddata, senddata.length, IPAddress, 9876); // 4 - Emission de la (UDP)PDU clientsocket.send(sendpacket);

94 Exemple : le client Java (UDP) // 5 - Creation d'un buffer de (UDP)PDU arrivant sur la socket DatagramPacket receivepacket = new DatagramPacket (receivedata, receivedata.length); // 5bis - Reception de la (UDP)PDU clientsocket.receive(receivepacket); // 6 - Affichage des donnees recues String modifiedsentence = new String (receivepacket.getdata()); System.out.println("FROM SERVER: " + modifiedsentence); } // Fermeture de la socket clientsocket.close(); }

Exemple : le serveur Java (UDP) 95 class MonUDPServer { public static void main(string args[]) throws Exception { // creation d'une socket sur le port 9876. Le serveur attend sur ce port DatagramSocket serversocket = new DatagramSocket(9876); byte[] receivedata = new byte[1024]; byte[] senddata = new byte[1024]; while(true){ // Traitement de la reception // creation d'un buffer de (UDP)PDU arrivant sur la socket DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length); // reception d'un (UDP)PDU sur la socket serversocket.receive(receivepacket); // rangement du champ de donnees de l'(udp)pdu dans une string String sentence = new String(receivePacket.getData()); // recuperation de l'@ IP de l'emetteur InetAddress IPAddress = receivepacket.getaddress(); // recuperation du n de port de l'emetteur int port = receivepacket.getport(); // traitement du champ de donnees String capitalizedsentence = sentence.touppercase();

Exemple : le serveur Java (UDP) 96 // Traitement de l'emission // initialisation du champ de donnees de l'(udp) PDU a emettre senddata = capitalizedsentence.getbytes(); } } // initalisation de l'(udp)pdu en reponse, donc a l'@ip et n port DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, IPAddress, port); // emission de l'(udp)pdu en reponse serversocket.send(sendpacket); }

EXERCICE : Ecrire Votre programme echoudp 97 L utilisateur (sur client) lance une commande (en ligne de commande) : java echoudpclient miagexx.domain.fr «TexteSaisi» Rôle du client : Se connecter au serveur indiqué en param Envoyer au serveur «TexteSaisi» Attendre la réponse et Afficher la réponse reçue Rôle du serveur : Attendre une requête Renvoyer «TexteSaisi» arrivé dans une requête Indication : les paramètres de la PDU envoyée par le serveur sont ceux qu il reçoit => utilisation des méthodes getxxx et setxxx

Exécution et affichage 98 L utilisateur saisit sur le client : java echoudpclient miage03.miage.u paris10.fr «ceci est le texte original saisi sur le client» Le résultat affiché sur le client est : socket cliente attachee au port 32793 46 octets emis vers le serveur miage03.miage.u-paris10.fr/192.168.5.3 FROM SERVER /192.168.5.3:9876 46 octets recus ECHO = ceci est le texte original saisi sur le client Le serveur affiche : Socket serveur en écoute sur le port Segment UDP FROM @:port # octets reçus texte:

Exécution de l application 99 Placer le code du client sur votre machine locale 1 Placer le code du serveur sur votre machine (le client se connecte à localhost) 2 Placer le code serveur sur miage03 Pour chacun d eux, compiler (si VM différentes) Lancer l exécution du serveur (sur la machine miage) Exécuter le client (on pourrait lancer le client d abord, mais il ne se passera rien, i.e. il sera bloqué en attente tant que le serveur ne sera pas lancé) Attention les ports du serveur doivent être uniques à chaque binôme

Autres exercices (option) Faire en sorte qu'il y ait plus qu'une phrase échangée avant de fermer la socket. Echange avec différents serveurs 100 demander son port à votre voisin lui écrire et attendre sa réponse Echange avec différents serveurs II Garder les coordonnées de chacun des clients qui se sont connecté. Envoye chaque message à chacun des clients (???)

Un exercice de modélisation le miage chat A partir des programmes UDP déjà créés on voudrait faire un chat réservé aux membres de la miage. 101 Réflechir aux fonctionnalités qu'il faudrait ajouter pour rendre cela possible Du côté serveur Du côté client

102 Programmation Socket avec TCP Le client doit contacter le serveur Le serveur est lancé Il a créé une socket et est en attente Le client contacte le serveur par : La création d une socket TCP locale La spécification d une @ IP et du n de port du processus serveur Quand le client crée une socket le client TCP établit une connexion avec le serveur TCP Sur requête du client, le serveur TCP crée une nvlle socket pour que le processus serveur communique avec le client Permet à un serveur de parler à de multiples clients «en même temps» Vue de l application TCP fournit un transfert d octets fiable et ordonné ( tube ) entre un client et un serveur

103 Différences avec UDP Mode connecté vs mode non connecté Établissement de connexion Le serveur doit être prêt à accueillir des demandes de connexion Quand une demande arrive, il crée une socket pour le client Flux de données attaché à la socket Pas besoin de donner l @ et le n de port à chaque envoi

Programmation Java 104 Package java.net, contient deux classes http://java.sun.com/j2se/1.3/docs/api/java/net/package-summary.html Classe serversocket utilisée par le serveur Constructeur = création d un serveur d accueil Méthode accept() pour créer une socket serveur sur demande du client Classe Socket (~DatagramSocket) utilisée par le client et le serveur pour la manipulation du flux Constructeur = demande de connexion par le client et création de la socket client Méthodes getouputstream() et getinputstream() utilisées par le client et le serveur pour échanger des données

105 Interaction socket client/serveur : TCP Server (tourne sur hostid) create socket, port=x, for incoming request: welcomesocket = ServerSocket() Client wait for incoming connection request connectionsocket = welcomesocket.accept() read request from connectionsocket write reply to connectionsocket close connectionsocket TCP connection setup create socket, connect to hostid, port=x clientsocket = Socket() send request using clientsocket read reply from clientsocket close clientsocket

106 Exemple : un client Java (TCP) k e y b o a r d m o n i t o r Le client lit du clavier (stream infromuser), et envoie au serveur via la socket (stream outtoserver) Le serveur lit le flux provenant de la socket Il convertit les données en les mettant en majuscule et les renvoit au client Le client lit et affiche les données modifiées lui arrivant via la socket (stream infromserver) Client P r o c e s s process output stream: sequence of bytes out of process i n p u t s t r e a m o u t p u t s t r e a m infromuser outtoserver Input stream: sequence of bytes into process infromserver client TCP c l i e n t S o c k e t socket i n p u t s t r e a m T C P s o c k e t t o n e t w o r k f r o m n e t w o r k

Exemple : le client Java (TCP) 107 import java.io.*; import java.net.*; class TCPClient { public static void main(string argv[]) throws Exception { String sentence; String modifiedsentence; Lecture du clavier Création de la socket client & demande de connexion Création du flux en sortie attaché à la socket BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); Socket clientsocket = new Socket( miage18.miage.u-paris10.fr", 6789); DataOutputStream outtoserver = new DataOutputStream(clientSocket.getOutputStream());

108 Exemple : le client Java (TCP) Création du flux en entrée attaché à la socket Emission des données au serveur Lecture des données arrivant du serveur BufferedReader infromserver = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); sentence = infromuser.readline(); outtoserver.writebytes(sentence + '\n'); modifiedsentence = infromserver.readline(); System.out.println("FROM SERVER: " + modifiedsentence); clientsocket.close(); } }

109 Exemple : le serveur Java (TCP) import java.io.*; import java.net.*; class TCPServer { Création de la socket d accueil au port 6789 Attente d une demande de connexion sur la socket d accueil Création du flux en entrée attaché à la socket public static void main(string argv[]) throws Exception { String clientsentence; String capitalizedsentence; ServerSocket welcomesocket = new ServerSocket(6789); while(true) { Socket connectionsocket = welcomesocket.accept(); BufferedReader infromclient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));

110 Exemple : le serveur Java (TCP) Création du flux en sortie attaché à la socket DataOutputStream outtoclient = new DataOutputStream(connectionSocket.getOutputStream()); Lecture des données arrivant du client clientsentence = infromclient.readline(); capitalizedsentence = clientsentence.touppercase() + '\n'; Emission des données au client } } } outtoclient.writebytes(capitalizedsentence); Fin de boucle => reboucle et attend la connexion d un nouveau client

Un mini serveur Web 111 Le client va être un navigateur web quelconque avec comme URL : -http://miage03.miage.u paris10.fr:6879/mapage.htm Le serveur web va être implémenté à partir de TCPserveur dans 1 nveau fichier WebServeur. On suppose que mapage.htm existe dans le repertoire dans lequel est lancé webserveur. On ne traite que 3 cas soit on a la méthode «GET» soit on renvoie un bad request Message. (400) Soit on ne trouve pas le fichier

Le site Web 112 1.Taper une page html simple 1.Le header vide : <head> </head> 2.Le body avec juste un titre: <body> <h1> blabla </h1> </body> 3.Enregistrée sous forme texte simple avec extension.htm 2.Tester si cette page s'affiche correctement en l'ouvrant comme un fichier avec votre navigateur. 3.Taper le code (pour le parsing) du serveur 4.Tester le bon envoi des données en demandant la page au moyen d'un telnet 5.Accèder à la page sur votre serveur à l'aide de votre navigateur (si étape précedente fonctionne)

Parsing Le code String requestmessageline = infromclient.readline(); StringTokenizer tokenizedline = new StringTokenizer(requestMessageLine); if (tokenizedline.nexttoken().equals( GET )){ String filename = tokenizedline.nexttoken(); if (filename.startswith( / ) ==true) filename= filename.substring(1); // code envoi des données avec test par try and catch si fichier existe} else { envoi d un bad request} Envoi des données (cas ou le fichier existe) outtoclient.writebytes( HTTP/1.0 200 Document Follows\r\n ); outtoclient.writebytes( Content-Type: text/html \r\n ); File fichier = new File(filename); Transformation du fichier en octets et envoi int numofbytes = (int) fichier.length; FileInputStream infile = new FileInputStream(filename); byte[ ] fileinbytes = new byte[numofbytes]; infile.read(fileinbyte); outtoclient.writebytes( Content-length: + numofbytes + \r\n ); outtoclient.writebytes( \r\n ); outtoclient.write(fileinbytes,0,numofbytes); 113

Socket TCP avec Thread On voudrait observer le traitement des différentes données qui arrivent sur une socket TCP. Pour cela reprenez l'exemple du echo. Ouvrez deux sockets différentes qui afficheront des mots différents. L'envoi effectif du mot sur la socket sera contrôlé par l'utilisateur. Ouvrez la première socket saisissez votre mot ne l'envoyez pas. Ouvrez la seconde socket saisissez votre mot, envoyez le. Envoyez le mot de la première socket. Que se passe-t-il? 114

Socket TCP avec Thread 2 115 Comment faire pour qu'un processus traite une seule socket dédiée (sur le serveur). Le main (le serveur) public static void main(string args[]) { try { ServerSocket socketaccueil = new ServerSocket(port); // ouverture d'un socket serveur sur port while (true) // attente en boucle de connexion (bloquant sur.accept) { new SocketThread(socketaccueil.accept()); // un client se connecte, un nouveau thread client est lancé } } catch (Exception e) { } }

Socket Thread (3) Le thread et son constructeur 116 class SocketThread implements Runnable{ private Thread thr; // contiendra le thread du client private Socket sock; // recevra le socket liant au client private DataOutputStream sortie; // pour gestion du flux de sortie private BufferedReader entree; // pour gestion du flux d'entrée // constructeur SocketThread(Socket s) //param s est donné dans main par ss.accept() { try { // fabrication flux IO sortie = new DataOutputStream(sock.getOutputStream()); entree = new BufferedReader(new InputStreamReader (sock.getinputstream())); } catch (IOException e){ } thr = new Thread(this); // instanciation du thread thr.start(); //demarrage thread, methode run(), contient commandes, lancées }