NFA016 : Les protocoles. Notion de protocole. Modèle OSI

Documents pareils
Développement Web. Les protocoles

Protocoles Applicatifs

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

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

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

Protection des protocoles

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

Chapitre : Les Protocoles

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

(structure des entêtes)

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

Serveurs de noms Protocoles HTTP et FTP

INF8007 Langages de script

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

Types MIME (2) Typage des ressources Internet. Les URI. Syntaxe dans les URI. Possibilité de spécifier un paramètre du sous-type

Introduction à HTTP. Chapitre HTTP 0.9

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

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

Quelques protocoles et outils réseaux

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

Application Web et J2EE

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

CGI et SSI. La programmation CGI. Sources. Objectifs. Qu'est ce qu'un programme CGI? CGI

Développement des Systèmes d Information

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

Hébergement de site web Damien Nouvel

Plan Général Prévisionnel (1/2) Internet et Outils L1/IO François Armand. Plan Général Prévisionnel (2/2) Unix, Réseau: Plan

La couche Applicatiopn

Internet. Web Sécurité Optimisation

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

2011 Hakim Benameurlaine 1

Outils de l Internet

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Introduction. Adresses

Techniques de Programmation pour Internet

WebSSO, synchronisation et contrôle des accès via LDAP

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Configuration avancée de Postfix

Le serveur HTTPd WASD. Jean-François Piéronne

Dans l'épisode précédent

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

M2-ESECURE Rezo TP3: LDAP - Mail

Gestion centralisée d un réseau de sites discrets. Nicolas JEAN

RFC 7230 : Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing

Programmation Internet Cours 4

1 Introduction Propos du document Introduction De HTTP 1.0 à HTTP

INFO-F-404 : Techniques avancées de systèmes d exploitation

Les commandes relatives aux réseaux

Module http MMS AllMySMS.com Manuel d intégration

Cours CCNA 1. Exercices

Installation d un Serveur de Messagerie

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

SERVEUR HTTP Administration d apache

Introduction aux réseaux TCP/IP.

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

Le protocole HTTP. 10 minutes pour comprendre. HTTP/0.9 - Lacunes et limitations HTTP/1.0 HTTP/1.1

Proxies,, Caches & CDNs

Stockage du fichier dans une table mysql:

HTTP. Technologies du Web. Programmation Web côté serveur. Mastère spécialisé Management et nouvelles technologies, 16 novembre 2009

ALOHA LOAD BALANCER METHODE DE CONTROLE DE VITALITE

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

Module: OSI, INTERNET ET PROGRAMMATION WEB TP 2 - Services TCP/IP-APACHE et xhtml. 1. Services TCP/IP : Protocoles d'applications standards

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

«Cachez-moi cette page!»

Attaques applicatives

Manuel d'installation

Mise en œuvre des serveurs d application

Mysql avec EasyPhp. 1 er mars 2006

PHP et les Bases de données - Généralités

Module BD et sites WEB

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

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

Services Réseau SSH. Michaël Hauspie. Licence Professionnelle Réseaux et Télécommunications

Introduction à l'internet et ces Protocoles

IceWarp serveur sur Linux : Guide d'installation

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Request Tracker pour les Nuls. Yves Agostini - YVESAGO

Bases de données et Interfaçage Web

Environnements informatiques

Serveurs et environnements de développement. Serveur Web

Préparation au C2I. Année 2011

Corrigé du TP 6 Réseaux

Projet de programmation (IK3) : TP n 1 Correction

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

EPREUVE PRATIQUE DES TECHNIQUES INFORMATIQUES ACTIVITE N 1. Thème de l activité : Configuration d un firewall

En Perl, les choses sont un peu différentes. Le cgi Perl ne peut être qu'un programme qui génère des sorties.

Les serveurs. UE 103b. Guillaume Burel.

Cisco Certified Network Associate

Présentation du relais HTTP Open Source Vulture. Arnaud Desmons Jérémie Jourdin

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

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

Architectures Web Services RESTful

Les services usuels de l Internet

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Tests de montée en charge avec Tsung

Serveur de partage de documents. Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents.

Transcription:

NFA016 : Les protocoles O. Pons, S. Rosmorduc Conservatoire National des Arts & Métiers Notion de protocole Un réseau: ensemble de machines reliées entre elles. Communiquer: Parler "la même langue". Protocole de communication. Le protocoles dépendent du niveau ou l'on se place: Abstraction Organisation en couches : Modèle OSI TCP/IP Modèle OSI Page 1 sur 11

TCP/IP Page 2 sur 11

Numéro IP : 193.54.195.244 Nom de machine : www.ensiie.fr DNS, résolution de nom Identification d'une machine Une tentative de connexion: [olivier@mamaison tmp]$ telnet www.ensiie.fr Trying 193.54.195.244... telnet:connect to address 193.54.195.244: Connection refused telnet:unable to connect to remote host: Connection refused [olivier@mamaison tmp]$ Identification d'un service : Port Numéro de port : identifie un service Si le serveur écoute sur un port la connexion est possible. Si un deamon sshd tourne sur le port 22 sur www.ensiie.fr [olivier@mamaison tmp]$ telnet www.ensiie.fr 22 Trying 193.54.195.244... Connected to www.ensiie.fr (193.54.195.244). SSH-1.99-OpenSSH_3.8.1p1 Debian-8.sarge.4... Si un serveur http tourne sur le port 80 sur www.ensiie.fr [olivier@mamaison tmp]$ telnet www.ensiie.fr 80 Trying 193.54.195.244... Connected to www.ensiie.fr (193.54.195.244).... Page 3 sur 11

Protocol et URL (Uniform Ressource Locator) Protocol : "language" utilisé pour communiquer une fois connecté URL : <protocol>:<partie dépendante du protocole> Forme génerale: http //<machine>:<port>/chemin>?value ftp //<utilisateur>:<motdepasse>@<machine>:<port>/reps/fichier file //chemin mailto adresse-mail telnet //<utilisateur>:<motdepasse>@<machine>:<port> Exemples: http://www.ensiie.fr/~pons/cours/cgi-bin/toto.cgi?moi=olivier telnet://pons@lunix121.iie.cnam.fr:22 mailto:pourlesnews@yahoo.fr ftp://ftp.ens-cachan.fr/mirror/mandrakelinux/ file://home/pons/tmp.html RCF (Request for comment), documents de description des protocoles Dialoguer "à la main" avec un serveur 1. se connecter sur le port correspondant au service 2. dialoguer en respectant le protocole Exemple: L'envoi de mails, SMTP [inviteunix~]$telnet smtp.free.fr 25 Trying 212.27.48.4... Connected to smtp.free.fr. 220 smtp1-g19.free.fr ESMTP Postfix EHLO olivier 250-smtp1-g19.free.fr... 250 8BITMIME MAIL FROM: pons@cnam.fr 250 Ok RCPT TO: pourlesnews@yahoo.fr 250 Ok DATA 354 End data with <CR><LF>.<CR><LF> test pour le cours protocols... C beau.. 250 Ok: queued as A341D3480 QUIT 221 Bye Connection closed by foreign host. [inviteunix~]$ Fixer les champs from et to : HELO moi MAIL FROM: pons@cnam.fr Exemple: L'envoi de mails, SMTP 2 Page 4 sur 11

RCPT TO: pons@cnam.fr DATA From: segolene@ps.fr To: jacque@elyse.fr Subject: un test blabla. QUIT Exemple: L'envoi de mails, SMTP 3 envoyer des images, des textes avec accent, des caractères plus compliqués... Type MIME (Multipurpose Internet Mail Extensions) EHLO moi MAIL FROM:pons@cnam.fr RCPT TO:pons@cnam.fr DATA From: candidats@cnam.fr To: leprochain@elyse.fr Subject:"bientot moi..." MIME-Version: 1.0 Content-Type: image/jpg; name="arrow.gif" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="arrow.gif" R0lGODlhBwAEAIAAAAAAAP///yH5BAEAAAEALAAAAAAHAAQAAAIIhA+BGWoN WSgAOw== ====. QUIT Exemple: La reception de mails, POP pons@pc-olive:~ telnet pop.mail.yahoo.fr 110 Trying 217.12.10.100... Connected to pop1.mail.vip.ukl.yahoo.com. +OK hello from popgate(2.35.8) USER pourlesnews +OK password required. PASS monmotdepasse +OK maildrop ready, 83 messages (498477 octets) (80067 1073741824) LIST +OK 83 messages (498477 octets) 1 16115 2 943 3 1189 4 4021 5 2007 6 4922 7 762... Page 5 sur 11

Exemple: La réception de mails, POP 2... TOP 7 10 +OK 762 octets X-Apparently-To: pourlesnews@yahoo.fr via 217.12.10.165; Mon, 30 Oct 2006 03:40: 44-0800 X-Originating-IP: [212.27.42.27] Authentication-Results: mta517.mail.mud.yahoo.com from=cnam.fr; domainkeys=neutral (no sig) Received: from 212.27.42.27 (EHLO smtp1-g19.free.fr) (212.27.42.27) by mta517.mail.mud.yahoo.com with SMTP; Mon, 30 Oct 2006 03:40:44-0800 Received: from olivier (nor75-7-81-57-85-121.fbx.proxad.net [81.57.85.121]) by smtp1-g19.free.fr (Postfix) with ESMTP id A341D3480 for ; Mon, 30 Oct 2006 12:39:13 +0100 (CET) Message-Id: <20061030113913.A341D3480@smtp1-g19.free.fr> Date: Mon, 30 Oct 2006 12:39:13 +0100 (CET) From: pons@cnam.fr To: undisclosed-recipients:; test pour le cours protocol... C beau. QUIT +OK server signing off. Connection closed by foreign host. Exemple: le web, HTTP pons@pc-olive:~$ telnet rdp-pentium.iie.cnam.fr 80 Trying 193.54.225.178... Connected to rdp-pentium.ensiie.fr. Escape character is '^]' GET /users/pons/www/excours.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>example pour cours http</title> </head> <body> <p>mon exemple</p>c beau </body> </html> Connection closed by foreign host. Propose différentes méthodes qui dépendent des versions HTTP HTTP original (0.9) : GET et connection fermée HTTP 1.0 : ajout de HEAD et POST +... HTTP 1.1 : ajout de OPTIONS, CONNECT et TRACE Exemple: HTTP Page 6 sur 11

pons@pc-olive:~$ telnet rdp-pentium.iie.cnam.fr 80 Trying 193.54.225.178... Connected to rdp-pentium.ensiie.fr. HEAD /excours.html HTTP/1.0 HTTP/1.1 200 OK Date: Mon, 30 Oct 2006 04:19:05 GMT Server: Apache-AdvancedExtranetServer/2.0.47 (Mandrake Linux/1.9.91mdk) mod_perl/1.99_08 Perl/v5.8.0 Last-Modified: Mon, 30 Oct 2006 02:32:44 GMT ETag: "4b099-50-15a8ab00" Accept-Ranges: bytes Content-Length: 80 Connection: close Content-Type: text/html; charset=iso-8859-1 Connection closed by foreign host. pons@pc-olive:~$ Exemple: HTTP [olivier@mamaison]$ telnet www.ensiie.fr 80 Trying 193.54.195.244... Connected to www.ensiie.fr (193.54.195.244). POST /cgi-bin/lecture.cgi?moi=oliver&elle=marianne HTTP/1.0 Host: localhost Content-Type: application/x-www-form-urlencoded Content-Length: 30 vous=les+eleves&eux=les+autres HTTP/1.1 200 OK Date: Sun, 19 Nov 2006 00:58:27 GMT Server: Apache/1.3.33 (Debian GNU/Linux) mod_ssl/2.8.22 OpenSSL/0.9.7e mod_perl/1.29 PHP/4.3.10-16 Connection: close Content-Type: text/html; charset=iso-8859-1 elle === marianne vous === Les eleves eux === Les autres moi === oliver Connection closed by foreign host. Exemple: HTTP pons@pc-olive:~ telnet rdp-pentium.iie.cnam.fr 80 Trying 193.54.225.178... Connected to rdp-pentium.ensiie.fr. OPTIONS /excours.html HTTP/1.1 Host: rdp-pentium.iie.cnam.fr HTTP/1.1 200 OK Page 7 sur 11

Date: Mon, 30 Oct 2006 04:25:33 GMT Server: Apache-AdvancedExtranetServer/2.0.47 (Mandrake Linux/1.9.91mdk) mod_perl/1.99_08 Perl/v5.8.0 Allow: GET,HEAD,POST,OPTIONS,TRACE Content-Length: 0 Content-Type: text/html; charset=iso-8859-1 X-Pad: avoid browser bug Connection closed by foreign host. {Codes de retour 20X : OK 40X,50X : Problèmes CGI Programme qui écrit sur sa sortie standard, le corps de ce qui va être envoyé au client par le serveur Content-type: text/html <html> <head> <title>page HTML produite par mon script CGI </title> </head> <body> <h1>encore un exemple</h1> que pensez vous de <strong>ça </strong> </body> </html> En bash #!/bin/bash echo "Content-type: text/html" echo echo "En shell" en perl #!/usr/bin/perl printf("content-type: text/html\n\n"); printf("en Perl \n"); CGI en C /* exemplecgi.c */ #include int main(void){ printf("content-type: text/html\n\n"); printf("en langage C \n"); return 0; CGI Page 8 sur 11

CGI Java /* pour compiler : javac exampleenjava.java gcj -g --main=exampleenjava -o ExempleEnJava.cgi ExampleEnJava.class */ class ExampleEnJava { public static void main (String[] args){ System.out.println("Content-type: text/html\n\n"); System.out.println("En java \n"); en Caml /* compiler avec ocamlopt */ let rec fac n = if (n<1) then 1 else n*fac(n-1);; Printf.printf "Content-type: text/html\n\n";; Printf.printf " un peu de calcul \n";; Printf.printf "factoriel 10 vaut %d\n" (fac 10);; Le passage des paramètres Variables d'environnement REQUEST_METHOD : la méthode utilisée QUERY_STRING : les données dans l'url CONTENT_LENGTH : la longueur des autres données CONTENT_TYPE,HTTP_USER_AGENT,... Exemple de traitement cgi #!/usr/bin/perl ###fonction d'analyse des arguments renvoi ###une liste d'association nom/valeur sub Parse_Form { #recuperer les argument en fonction de la methode ################################################## if($env{'request_method' eq 'GET') { #c'est GET on va decouper la ligne de commande #les valeurs sont separee par & #on les mets dans un tableau @paires = split (/&/, $ENV{'QUERY_STRING'); #sinon ca doit etre POST mais verifions elsif($env{'request_method' eq 'POST') { Page 9 sur 11

#c'est post on va lire sur l'entree standard # content length permet de detecter la fin read(stdin, $buffer, $ENV{'CONTENT_LENGTH'); @paires = split (/&/, $buffer); #si il y en a aussi dans l'url if ($ENV{'QUERY_STRING'){ @getpaires = split (/&/,$ENV{'QUERY_STRING'); push(@paires,@getpaires); #si on est la c'est une autre methode else{ print("content-type: text/html\n\n"); print $ENV{'REQUEST_METHOD'; print "n'est pas connue utiliser GET ou POST"; ##traitement des paires ####################### #pour chaque paire foreach $paire (@paires) { #on separe le nom et la valeur ($nom,$val) = split (/=/,$paire); #remplace le signe plus par un blanc $nom =~ tr /+/ /; #Berk conversion de l'hexa a la representation usuel $nom =~ s/%([a-fa-f0-9][a-fa-f0-9])/pack("c",hex($1))/eg; #remplace le signe plus par un blanc $val =~ tr /+/ /; #Berk conversion de l'hexa a la representation usuel $val =~ s/%([a-fa-f0-9][a-fa-f0-9])/pack("c",hex($1))/eg; #elimine les inclusion possible venant de serveur ( SSI) $val=~s///g; ##formadata est le nom de la liste d'association (hash) ## que l'on construit ##si le mon a deja une value (ex mutliple value) ##on ajoute la nouvelle if($formdata{$nom){ $formdata{$nom.= ", $val"; ##sinon on met juste la valeur else { $formdata{$nom = $val; %formdata; ##pour tester print("content-type: text/html\n\n"); my %donnees = &Parse_Form(); Page 10 sur 11

@clefs = keys(%donnees); foreach $clef (@clefs){ $val= $donnees{$clef; print "$clef === $val \n"; Page 11 sur 11