Assises du Web: Clients, Serveurs et Communication CSI 3540 STRUCTURES ET NORMES DU WEB Assises du Web: Clients, Serveurs et Communication
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Internet Origines techniques: ARPANET (Fin années 1960) Une des premières tentatives de résauter des ordinateurs hétérogènes et géographiquement dispersés Courriel disponibles sur ARPANET en1972 Accès à ARPANET limité à un groupe select financé par le dept de la defense (DoD) CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Internet Réseaux libre accès: Réseaux universitaires régionaux (p.ex. SURAnet) CSNET des départments d’informatique n’etait pas sur ARPANET NSFNET (1985-1995) Objectif principal: connecter des superordinateurs Objectif secondaire: fournir l'épine dorsale pour se connecter à des réseaux régionaux CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Internet Les 6 centres de superordinateurs reliés par la dorsale NSFNET originale CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Internet Vitesse de backbone NSFNET original : 56 kbit/s Mise à jour à 1,5 Mbit/s (T1) en 1988 Mise à jour à 45 Mbit/s (T3) en 1991 En 1988 connection de réseaux au Canada et en France sur NSFNET En 1990, ARPANET est mis hors service, NSFNET devient le centre de l'internet CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Internet Internet : le réseau des réseaux connecté via un réseau public (backbone) et communiquant à l'aide du protocole de communication TCP/IP Backbone initialement fourni par NSFNET, financés par le secteur privé (frais d'ISP) depuis 1995 CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Protocoles Internet Protocole de communication : Comment les ordinateurs ‘parlent’ entr’eux Cfr protocole du téléphone: comment prendre ou terminer un appel; quelle langue parler, etc.. Protocoles Internet développés comme partie de la recherche de l'ARPANET ARPANET a commencé à l'aide de TCP/IP en 1982 Conçus pour une utilisation dans des réseaux locaux (LAN) et entre ceux-ci CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
Protocole Internet (IP) IP est le protocole fondamental définissant l'Internet (comme son nom l'indique!) Adresse IP : nombre (32 bits en IPv4; 128 bits en IPv6) associé au maximum avec un seul périphérique à la fois (même si le périphérique peut en avoir plusieurs) écrit sous forme de quatre octets séparés par des points, par exemple 192.0.34.166 CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan IP Fonction IP : transférer des données du périphérique source vers le périphérique de destination Le logiciel de l’IP source crée un paquet qui représente les données En-tête (‘Header ’) : les adresses IP source et de destination, la longueur des données, etc.. Données elles-mêmes Si la destination est sur un autre réseau local, le paquet est envoyé vers une passerelle (‘Gateway ’) qui se connecte à plusieurs réseaux CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan IP Source Network 1 Gateway Destination Gateway Network 3 Network 2 CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan IP Source LAN 1 Gateway Destination Gateway LAN 2 Internet Backbone CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
Protocole de Contrôle de la Transmission (TCP) Limitations du IP: Aucune garantie de livraison de paquets (paquets peuvent être abandonnés) La communication est à sens unique (source à la destination) TCP ajoute le concept d'une connexion sur le dessus de IP Garantit que les paquets soient livrés Assure une communication bidirectionnelle (duplex intégral) CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan TCP – Vue Simplifiée { Source Destination Puis-je m'adresser à vous? Etablir une connexion. OK. Puis-je m'adresser à vous? OK. Envoyer des paquets avec accusé de réceptiont. { Voici un paquet. Je l’ai eu. { Voici un paquet. Renvoyez les paquets si aucun accusé de réception (ou retardé). Voici un paquet expiré. Je l’ai eu. CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan TCP TCP ajoute également le concept d'un port En-tête TCP contient le numéro de port qui représente un programme d'application sur l'ordinateur de destination Certains numéros de ports ont des significations standards Exemple : port 25 est normalement utilisé pour le courrier électronique transmis en utilisant le SMTP (Simple Mail Transfer Protocol) Autres numéros de ports sont disponibles selon le mode premier-arrivé, premier servi à n'importe quelle application CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
TCP – Vue Simplifiée (Suite) Rectangle: applications Ovales: donneés transmises Numéro cerclés: Ordre d’exécution des operations de TCP CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
User Datagram Protocol (UDP) Similaire au TCP car: Construit sur IP Fournit un concept de port Non-similaire au TCP car: Pas de concept de connexion Pas de garantie de transmission Avantage de UDP vs. TCP: Leger et donc rapide pour des messages uniques CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
Domain Name Service (DNS) DNS est l’« annuaire » pour l'Internet Mappage entre les noms d'hôte et adresses IP DNS utilise souvent le protocole UDP pour la communication Nom d’hôte (‘host name’) Faits d’étiquettes séparées par des points, p.ex. www.unesco.org L’étiquette finale est le domaine de premier niveau Générique: .com, .org, etc. Code de pays: .us, .il, .ca, etc. CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan DNS Les domaines de 1er niveau (créés par ICANN) sont divisés en domaines de deuxième niveau, qui peuvent être encore divisés en sous-domaines, etc.. Dans www.unesco.org, unesco est un domaine de second niveau Un nom d'hôte et un nom de domaine sont appelées le nom de domaine complet de l'ordinateur P.ex. www est le nom d’hôte, www.unesco.org est le nom de domaine complet CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan DNS Le programme nslookup permet d'accéder en ligne de commande au DNS (sur la plupart des systèmes) Rechercher un nom d'hôte à partir d’une adresse IP donnée est connue comme une recherche inversée Rappelons qu’un seul hôte peut avoir plusieurs adresses IP L’adresse retournée est l’adresse IP canonique utilisée dans le système DNS CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan DNS ipconfig (sous windows) peut être utilisé pour trouver l'adresse IP de votre machine ipconfig /displaydns affiche le contenu du Cache de résolution DNS (ipconfig /flushdns l’efface) CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
Analogie au Réseau Téléphonique IP ~ réseau téléphonique TCP ~ appeler quelqu’un qui répond, avoir une conversation et racrocher UDP ~ appeler quelqu’un et laisser un message DNS ~ répertoire téléphonique CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
Protocoles de Haut Niveau De nombreux protocoles sont construits sur TCP Analogie du téléphone: TCP spécifie comment initier et mettre fin à l'appel téléphonique, mais certains autres protocoles spécifient comment continuer la conversation réellement Quelques exemples: SMTP (courriel) (port 25) FTP (transfert de fichiers) (port 21) HTTP (transfert de documents Web) (port 80) CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan World Wide Web A l'origine, l'un de nombreux systèmes pour organiser l'information sur Internet Concurrence: WAIS (Wide Area Info System), Gopher, ARCHIE Particularité du Web : prise en charge de l'hypertexte (texte contenant des liens) Communication via le protocole de transport d’hypertexte (HTTP) Représentation du document utilisant le langage de balisage Hypertexte (HTML) CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan World Wide Web Le Web est la collection d'ordinateurs (serveurs Web) sur Internet qui fournissent des informations, notamment les documents HTML, par l'intermédiaire de HTTP. Les machines/programmes qui accèdent aux informations sur le Web sont appelées des clients Web. Un navigateur Web est un logiciel utilisé par un utilisateur pour accéder au Web. CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
Hypertext Transport Protocol (HTTP) HTTP est basé sur le modèle de communication demande-réponse : le Client envoie une requête, le serveur envoie une réponse HTTP est un protocole sans état : le protocole n'exige pas du serveur de se rappeler quoi que ce soit sur le client entre les demandes. CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan HTTP Mise en œuvre normalement sur une connexion TCP (80 est le numéro de port standard pour HTTP) Interaction typique navigateur / serveur: L’utilisateur entre l'adresse Web dans le navigateur Le navigateur utilise DNS pour localiser l'adresse IP Le navigateur ouvre une connexion TCP au serveur Le navigateur envoie une demande HTTP via la connexion Le serveur envoie la réponse HTTP au navigateur via la connexion Le navigateur affiche le corps de la réponse dans la zone cliente de la fenêtre du navigateur CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan HTTP Les informations transmises via le protocole HTTP sont souvent entièrement du texte On peut utiliser le protocole Telnet sur Internet pour simuler la demande du navigateur et découvrir la réponse du serveur CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan HTTP { Connecter $ telnet www.example.org 80 Trying 192.0.34.166... Connected to www.example.com (192.0.34.166). Escape character is ’^]’. GET / HTTP/1.1 Host: www.example.org HTTP/1.1 200 OK Date: Thu, 09 Oct 2003 20:30:49 GMT … { Envoyer Une requête { Recevoir une réponse CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Requête HTTP Structure de la requête: ligne de démarrage en-tête (un ou plusieurs champs) ligne vide Corps optionel CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Requête HTTP Structure de la requête: Ligne de démarrage En-tête (un ou plusieurs champs) Ligne vide Corps optionel CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Requête HTTP Ligne de démarrage Example: GET / HTTP/1.1 Trois parties séparées par des espaces: Méthode de requête HTTP URI (Uniform Resource Identifier) de la requête Version du HTTP CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Requête HTTP Ligne de démarrage Example: GET / HTTP/1.1 Trois parties séparées par des espaces: Méthode de requête HTTP URI (Uniform Resource Identifier) de la requête HTTP version Nous couvrirons la version1.1 (l’exemple donné) CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Requête HTTP Ligne de démarrage Example: GET / HTTP/1.1 Trois parties séparées par des espaces: Méthode de requête HTTP URI de la requête Version HTTP CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Requête HTTP URI (Uniform Resource Identifier) Syntaxe: schème : hostname Request-URI Ex: Dans http://www.example.com/, on a: schème : http host name : www.example.com request-URI : / Toute la chaine composée de ces 3 ingredients est appelée URI. CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan URI Il y a deux types de URI: URN (Uniform Resource Name) Peut être utilisé pour identifier des ressources avec des noms uniques, à l’exemple des livres (qui ont un ISBN unique) Schème : urn URL (Uniform Resource Locator ) Spécifie l'emplacement où vous trouverez une ressource Schèmes: http, https, ftp, mailto, file CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Requête HTTP Ligne de démarrage Example: GET / HTTP/1.1 Trois parties séparées par des espaces: Méthode de la requête HTTP URI (Uniform Resource Identifier) de la requête Version du HTTP CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Requête HTTP Méthodes de requêtes usuelles: GET, POST, HEAD, OPTIONS, PUT, … GET Utilisée si vous cliquez sur le lien ou l'adresse est tapée dans le navigateur. Aucun corps dans la requête ! POST Utilisée quand vous cliquez sur le bouton ‘soumettre’ dans un formulaire L’info du formulaire contenue dans le corps de la requête HEAD Demande que les champs d'en-tête uniquement (pas de corps) soient retournées dans la réponse CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Requête HTTP Structure d’une requête: Ligne de démarrage Champs de l’en-tête Ligne vide Corps optionel CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Requête HTTP Structure des champs de l’en-tête: field name : field value Syntaxe Nom du champ n'est pas sensible aux majuscules La valeur de champ peut continuer sur plusieurs lignes en commençant les lignes continues avec des espaces blancs Les valeurs de champ peuvent contenir des types MIME, les valeurs de qualité et les caractères génériques (* ) CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
MIME (Multipurpose Internet Mail Extensions) Convention pour spécifier le type de contenu d'un message En HTTP, généralement utilisée pour spécifier le type de contenu du corps de la réponse Syntaxe du type de contenu MIME: top-level type / subtype Exemples: text/html, image/jpeg CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
Valeurs de Qualité HTTP et Caractères Génériques Champ d'en-tête avec des valeurs de qualité: accept: text/xml,text/html;q=0.9, text/plain;q=0.8, image/jpeg, image/gif;q=0.2,*/*;q=0.1 Une valeur de la qualité s'applique à tous les items la précédant Une valeur numérique élevée signifie une plus grande préférence Des caractères génériques spécifient la qualité 0.1 pour les MIMEs non spécifiées précédemment CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Requête HTTP Champs d’en-tête usuels: Host : URL du nom d'hôte (obligatoire) User-Agent: type de navigateur envoyant la demande Accept: types MIME de documents acceptables Connection: valeur close indique au serveur de fermer la connexion après chaque séquence de requête/réponse Content-Type: Type MIME du corps des requêtes POST Content-Length: nombre d’octets dans le corps du message Referer: URL du document contenant le lien qui fourni des URI pour cette requête HTTP CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Réponse HTTP Structure de la réponse: ligne de status champs d’en-tête ligne vide corps optionel CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Réponse HTTP Structure de la réponse: Ligne de status champs d’en-tête ligne vide corps optionel CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Réponse HTTP Ligne de status Exemple: HTTP/1.1 200 OK Trois parties séparées par des espaces: version HTTP code de status raison (le code en clair!) CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Réponse HTTP Code de status Nombre à 3 chiffres Le premier chiffre est la classe du code de status: 1=Informationel 2=Succès 3=Redirection (URL alternatif fournis) 4=Erreur du client 5=Erreur du serveur Les 2 autres chiffres fournissent de l’info additionnelle Voir http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Réponse HTTP Structure de la réponse: Ligne de status champs d’en-tête ligne vide corps optionel CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Réponse HTTP Champs usuels dans l’en-tête: Connection, Content-Type, Content-Length Date: date et l'heure au cours de laquelle la réponse a été générée (requise) Location: URI de rechange si le statut est la redirection Last-Modified: date et heure auxquelles la ressource demandée a été modifiée sur le serveur Expires: date et l'heure après laquelle la copie du client de la ressource sera obsolète ETag: un identificateur unique pour cette version de la ressource demandée (changements si la ressource change) CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Cache du Client Un cache est une copie locale des informations obtenues auprès d'autres sources La plupart des navigateurs web utilisent un cache pour stocker les ressources demandées afin que les demandes suivantes pour la même ressource n'exige pas nécessairement une requête/réponse HTTP Ex: icône qui apparaît plusieurs fois dans une page Web CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Cache du Client Client Server 1. Requête HTTP pour une image Browser Serveur Web 2. Réponse HTTP contenant l’image 3. Stocker l’image Cache CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Cache du Client Client Serveur Browser Serveur Web J'ai besoin de cette image à nouveau ... Cache CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Cache du Client Client Serveur Browser Serveur Web Alternative 1 … Requête HTTP pour une image Réponse HTTP contenant l’image J'ai besoin de cette image à nouveau ... Cache CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Cache du Client Client Serveur Browser Serveur Web J'ai besoin de cette image à nouveau ... Obtenir l’image … ou Alternative 2 Cache CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Cache du Client Les avantages du cache (Beaucoup) plus rapide que la demande/réponse HTTP Moins d’utilisation du réseau Moins de charge sur le serveur Désavantage du cache La copie mise en cache de la ressource peut être non valide (incompatible avec la version originale) CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Cache du Client Validation de la resource en cache: Envoyer un message HTTP HEAD demander et vérifier la dernière modification ou le ETag de l’en-tête de la réponse Comparer la date/heure actuelle avec l'en-tête Expires envoyée dans réponse contenant la ressource Si aucune en-tête d'expiration n’a été envoyée, utilisez un algorithme heuristique pour estimer la valeur d'expiration CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
Ensemble de Caractères Chaque document est représenté par une chaîne de valeurs entières (points de code) Le mappage des points de code aux caractères est défini par un jeu de caractères (‘Character set’ ) Certains champs d'en-tête ont comme valeurs des jeux de caractères: Accept-Charset: champs d’en-tête de requête listant le jeu de caractères que le client peut reconnaître Ex: accept-charset: ISO-8859-1,utf-8;q=0.7,*;q=0.5 Content-Type: peut inclure le jeu de caractères utilisé pour représenter le corps du message HTTP Ex: Content-Type: text/html; charset=UTF-8 CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
Ensemble de Caractères Techniquement, plusieurs « jeux de caractères » sont en fait des encodages de caractères Un encodage représente les points de code à l'aide de chaînes d'octets de longueur variable Les exemples les plus courants sont les encodages UTF-8 et UTF-16 basés sur Unicode IANA maintient une liste complète des jeux/encodages de caractères reconnus sur Internet CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
Ensemble de Caractères Un PC US ordinaire produit des documents ASCII Le jeu de caractères US-ASCII peut être utilisé pour des documents web, mais n'est pas recommandé UTF-8 et ISO-8859-1 sont des sur-ensembles d'US-ASCII et assurent la compatibilité internationale UTF-8 peut représenter tous les caractères ASCII à l'aide d'un seul octet et des caractères Unicode arbitraires en utilisant jusqu'à 4 octets ISO-8859-1 est un code à 1 octet possédant de nombreux caractères communs en Europe occidentale, comme é CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Clients Web Beaucoup de clients web possibles: "browser" à texte seulement (lynx) Téléphones mobiles Robots (clients logiciel uniquement, par exemple, « robots » des moteurs de recherche) etc. Nous nous concentrerons sur les navigateurs web traditionnels CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Navigateurs Web Premier navigateur graphique fonctionnant sur des plates-formes à usage général : mosaïque (1993) CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Navigateurs Web CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Navigateurs Web Tâches principales: Convertir les adresses web (URL) en demandes HTTP Communiquer avec les serveurs web via HTTP Afficher convenablement les documents renvoyés par un serveur de documents CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan URL de HTTP http://www.example.org:56789/a/b/c.txt?t=win&s=chess#para5 port path query fragment host authority Request-URI Le navigateur utilise une autorité pour se connecter via TCP Request-URI inclu dans la ligne de départ (/ utilisé pour le chemin d'accès si aucun n’est fourni) L’identificateur de fragment n’est pas envoyé au serveur (utilisé seulement pour faire défiler la zone client du navigateur) CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Navigateurs Web Fonctionalité standard Enregistrer la page web sur le disque Rechercher une chaîne dans la page Remplir automatiquement des formulaires (mots de passe, numéros de CC,...) Définir les préférences (langue, jeu de caractères, cache et paramètres HTTP) Modifier le style d'affichage (par exemple, augmentation des tailles de police) Afficher les infos brutes d'en-tête HTML et HTTP (p. ex., Last-Modified) Afficher l'historique des adresses web visitées Signet des pages favorites pour des retours simples CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Navigateurs Web Fonctionalité additionnelle: Exécution de scripts (par exemple, les menus déroulants) Gestion des événements (par exemple, les clics de souris) GUI pour les contrôles (par exemple, les boutons) Sécuriser la communication avec les serveurs Affichage des documents non-HTML (par exemple PDF) par l'intermédiaire de plug-ins CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Serveurs Web Fonctionalité de base: Recevoir la requête HTTP via TCP Mapper l'en-tête d'hôte à un hôte virtuel spécifique (l'un des nombreux noms d'hôte qui partage une adresse IP) Mapper le Request-URI à la ressource spécifique associée à l'hôte virtuel Fichier : Fichier retourné dans la réponse HTTP Programme : lancer le programme et renvoyer le résultat dans la réponse HTTP Mapper le type de ressource au type MIME approprié et l'utiliser pour définir l'en-tête Content-Type dans la réponse HTTP Journaliser l’information sur la demande et la réponse CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
Serveurs Web: Exemples httpd : UIUC, le principal serveur Web utilisé vers 1995 Apache: version de httpd, maintenant le serveur les plus populaire (en particulier sur les plates-formes Linux) IIS: ‘Microsoft Internet Information Server’ Tomcat: Basé sur Java Fournit un conteneur (Catalina) pour exécuter des Java servlets (programmes de génération de HTML) comme back-end pour Apache ou IIS Peut exécuter en autonomie à l'aide du front-end HTTP Coyote CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Serveurs Web Certains paramètres de communication de Coyote: Adresses IP autorisées/bloquées Max. connexions TCP actives simultanées Max. demandes en file d'attente de connexion TCP Temps « Keep-alive » pour les connexions TCP inactives Possibilité de modifier les paramètres pour régler les performances du serveur CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Serveurs Web Certains paramètres du conteneur Catalina: Les noms d'hôtes virtuels et les ports associés Préférences de journalisation Mappage du Request-URI aux ressources du serveur Mots de passe pour la protection des ressources Utilisation de la mise en cache côté serveur CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Serveur Web Tomcat Administration du serveur basé sur le HTML Recherchez http://localhost:8080 et cliquez sur le lien ‘Server Administration’ localhost est un nom d'hôte spécial qui signifie « cette machine » CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Serveur Web Tomcat CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Serveur Web Tomcat CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Serveur Web Tomcat CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Serveur Web Tomcat Quelques champs du Connecteur: Numéro de port : port « possédé » par ce connecteur Nombre maximal de Threads : max connexions traitées simultanément Délai de connexion : temps keep-alive CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Serveur Web Tomcat CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Serveur Web Tomcat Chaque hôte est un hôte virtuel (on peut en avoir plusieurs par connecteur) Quelques champs: Host: « localhost » ou un nom de domaine complet Application Base: Répertoire (peut être le chemin relatif au répertoire d'installation de JWSDP) contenant des ressources associées à cet hôte CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Serveur Web Tomcat CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Serveur Web Tomcat Le contexte fournit le mappage du chemin d'accès de l’URI de la requête à une application web Le champs ‘Document Base’ est un répertoire (éventuellement par rapport à ‘Application Base’) qui contient les ressources pour cette application web Pour cet exemple, en accédant à http://localhost:8080/ on retourne une ressource de c:\jwsdp-1.3\webapps\ROOT Retourne index.html (fichier de bienvenue standard) CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Serveur Web Tomcat Un journal d’accès enregistre les requêtes HTTP Les paramètres définis à l'aide de AccessLogValve L'emplacement par défaut : journaux/access_log.* sous le répertoire d'installation de JWSDP (Java Web Service Developer Pack ) Exemple d’entrée dans le journal (une ligne: www.example.org - admin [20/Jul/2005:08:03:22 -0500] "GET /admin/frameset.jsp HTTP/1.1" 200 920 CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Serveur Web Tomcat Autres journaux fournis par défaut dans JWSDP: ‘Message’ journalise les messages envoyés au service de journalisation par les applications web ou par Tomcat lui-même logs/jwsdp_log. *: journal des messages par défaut logs/localhost_admin_log. *: journal des messages pour les applications web dans le contexte /admin ‘System.out’ et ‘System.err’ (traces d'exception souvent trouvés ici): logs/launcher.server.log CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Serveur Web Tomcat Contrôle d’accès: Protection par mot de passe (p.ex. Pages admin) Utilisateurs et rôles définis dans conf/tomcat-users.xml Refuser l'accès aux machines Utile pour refuser l'accès à certains utilisateurs en interdisant l'accès à partir des machines qu'ils utilisent Liste des ordinateurs refusés placée dans RemoteHostValve (refuser de nom d'hôte) ou RemoteAddressValve (nier par adresse IP) CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Serveurs Sécurisés Étant donné que les messages HTTP voyagent généralement via un réseau public, les informations personnelles (telles que les numéros de carte de crédit) doivent être chiffrées pour empêcher l'écoute clandestine Le schème d'URL https indique au navigateur d'utiliser le cryptage Encryptages standards usuels: ‘Secure Socket Layer’ (SSL) ‘Transport Layer Security’ (TLS) CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan Serveurs Sécurisés Je tiens à vous parler en sécurité (sur le port 443) Browser TLS/ SSL TLS/ SSL Serveur Web Requêtes HTTP Requêtes HTTP Voici mes données de certificats et de chiffrement Voici une requête HTTP chiffrée Voici une réponse HTTP chiffrée Voici une demande HTTP chiffré Réponses HTTP Réponses HTTP Voici une réponse HTTP chiffrée CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
Serveurs Sécurisés: ‘Man-in-the-Middle Attack’ Fake DNS Server Fake www.example.org 100.1.1.1 What’s IP address for www.example.org? 100.1.1.1 My credit card number is… Browser Real www.example.org CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan
Serveurs Sécurisés: Empêcher le ‘Man-in-the-Middle’ Fake DNS Server Fake www.example.org 100.1.1.1 What’s IP address for www.example.org? 100.1.1.1 Send me a certificate of identity Browser Real www.example.org CSI 3540 : I. Kiringa : notes basées sur J.C. Jackson et G.V. Jourdan