TP DE PROGRAMMATION RESEAU : LES SOCKETS

Documents pareils
Introduction. Adresses

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

Serveurs de noms Protocoles HTTP et FTP

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

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

Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A. TP réseau firewall

TP : Introduction à TCP/IP sous UNIX

Le protocole TCP. Services de TCP

R eseaux TP RES /2015

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

TP2 - Conguration réseau et commandes utiles. 1 Généralités. 2 Conguration de la machine. 2.1 Commande hostname

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

MISE EN ŒUVRE ET ANALYSE DES PROTOCOLES INTERNET

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

Protocoles Applicatifs

Rappel: Le routage dans Internet. Contraintes. Environnement et contraintes. La décision dans IP du routage: - Table de routage:

Protection des protocoles

Internet Protocol. «La couche IP du réseau Internet»

Rappels réseaux TCP/IP

Capture, Filtrage et Analyse de trames ETHERNET avec le logiciel Wireshark. Etape 1 : Lancement des machines virtuelles VMWARE et de Wireshark

TER Réseau : Routeur Linux 2 Responsable : Anthony Busson

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

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

UDP/TCP - Protocoles transport

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

Sécurité et Firewall

Quelques protocoles et outils réseaux

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

II/ Le modèle OSI II.1/ Présentation du modèle OSI(Open Systems Interconnection)

GRETA SISR1 TP Installation et mise en place d un serveur FTP sous Windows Server 2013

Réseaux et protocoles Damien Nouvel

Foucart Digeon SISR1-CH7 Mise en place d'un serveur FTP BTS SIO 08/04/2013. SISR1 CH7 Mise en place d'un serveur FTP. - Page 1 -

Packet Tracer : configuration des listes de contrôle d'accès étendues, scénario 1

Figure 1a. Réseau intranet avec pare feu et NAT.

Administration UNIX. Le réseau

L annuaire et le Service DNS

Dans l'épisode précédent

Les systèmes pare-feu (firewall)

L outil Nmap-Stateful. Olivier Courtay Thomson R&D / IRISA

TP 3 Réseaux : Subnetting IP et Firewall

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

(structure des entêtes)

Outils de l Internet

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

Introduction à l'analyse réseau Philippe Latu philippe.latu(at)linux-france.org

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

UFR de Mathématiques et Informatique Année 2009/2010. Réseaux Locaux TP 04 : ICMP, ARP, IP

Internet - Outils. Nicolas Delestre. À partir des cours Outils réseaux de Paul Tavernier et Nicolas Prunier

Travaux pratiques : dépannage de la configuration et du placement des listes de contrôle d'accès Topologie

Protocoles DHCP et DNS

La couche transport. La couche Transport. La couche Transport et Internet. Cours Réseau Esial 2ème. 5. La couche transport TCP/UDP et les applications

18 TCP Les protocoles de domaines d applications

Computer Networking: A Top Down Approach Featuring the Internet, 2 nd edition. Jim Kurose, Keith Ross Addison-Wesley, July ENPC.

Département R&T, GRENOBLE TCP / IP

DUT Informatique Module Système S4 C Département Informatique 2009 / Travaux Pratiques n o 5 : Sockets Stream

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

Développement des Systèmes d Information

pare - feu généralités et iptables

Travaux Pratiques Introduction aux réseaux IP

IP & Co. 1. Service DHCP. L'objectif de ce TP est de voir l'ensemble des services élémentaires mis en oeuvre dans les réseaux IP.

Les commandes relatives aux réseaux

Linux LTE 2 - ISSBA. Année universitaire Linux Réseau et Archivage. Jean-Michel RICHER Faculté des Sciences, H206 1

Sécurité GNU/Linux. FTP sécurisé

TCP/IP, NAT/PAT et Firewall

Chapitre : Les Protocoles

TP Linux : Firewall. Conditions de réalisation : travail en binôme. Fonctionnement du parefeu Netfilter. I Qu est ce qu'un firewall?

TP 1 : LES COMMANDES RESEAUX Matière: RESEAUX LOCAUX

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

LAB : Schéma. Compagnie C / /24 NETASQ

SOMMAIRE : CONFIGURATION RESEAU SOUS WINDOWS... 2 INSTRUCTIONS DE TEST DE CONNECTIVITE... 5

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

Environnements informatiques

Network Camera. Camera. Network. Guide d installation v1.1. Installation Guide v R1.1. Anglais. Français. Espagnol. Allemand R1.

Table des matières GNU/Linux Services Serveurs Éléments de cours sur TCP/IP Fichiers de configuration et commandes de base ...

Résolution des problèmes de connexion XDMCP aux hôtes UNIX et Linux

Culture informatique. Cours n 9 : Les réseaux informatiques (suite)

Application Web et J2EE

Protocoles IP (2/2) M. Berthet. Les illustrations sont tirées de l ouvrage de Guy Pujolle, Cours réseaux et Télécom Contributions : S Lohier

TP Déploiement de réseaux IP sous Linux et MS Windows sur une infrastructure virtualisée

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

Administration Réseau sous Ubuntu SERVER Serveur DHCP

BTS SIO SISR3 TP 1-I Le service Web [1] Le service Web [1]

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

Les ACL Cisco. F. Nolot Master 2 Professionnel STIC-Informatique 1

SECURIDAY 2012 Pro Edition

Sécuriser son réseau. Sécuriser son réseau Philippe Weill (IPSL/LATMOS) Frédéric Bongat (SSI/GOUV/FR)

Architectures sécurisées

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

WEBMESTRE : CONCEPTION DE SITES ET ADMINISTRATION DE SERVEURS WEB

Sécurité des réseaux Firewalls

Introduction à HTTP. Chapitre HTTP 0.9

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

Cisco Certified Network Associate

Oléane VPN : Les nouvelles fonctions de gestion de réseaux. Orange Business Services

Intérêt du NAT (Network Address Translation) Administration Réseau Niveau routage. Exemple d Intranet. Principe NAT

TP LINUX : MISE EN RÉSEAU D UN SERVEUR LINUX

Nmap (Network Mapper) Outil d exploration réseau et scanneur de ports/sécurité

Chapitre I. La couche réseau. 1. Couche réseau 1. Historique de l Internet

Le protocole ARP (Address Resolution Protocol) Résolution d adresses et autoconfiguration. Les protocoles ARP, RARP, TFTP, BOOTP, DHCP

Transcription:

- ENSEIRB - TP DE PROGRAMMATION RESEAU : LES SOCKETS Patrice KADIONIK - 1/11-

TABLE DES MATIERES www.enseirb.fr/~kadionik 1. BUT DES TRAVAUX PRATIQUES...3 2. SEANCE 1 : UTILISATION DES COMMANDES UNIX/LINUX RESEAU...3 2.1. Analyse de fichiers de configuration réseau... 3 2.2. Utilisation des commandes d analyse réseau... 4 2.3. Etude de quelques services Internet... 5 3. SEANCES 2, 3 ET 4 : PROGRAMMATION RESEAU PAR SOCKETS...7 4. ANNEXE : AUTOMATE D ETATS TCP...10-2/11-

1. BUT DES TRAVAUX PRATIQUES Le but de ces TP est de maîtriser la programmation réseau par sockets en langage C sous UNIX/Linux. 2. SEANCE 1 : UTILISATION DES COMMANDES UNIX/LINUX RESEAU On n oubliera pas qu à tout moment on peut avoir des informations en ligne sur une commande via la commande man. Exemple : % man socket 2.1. Analyse de fichiers de configuration réseau 1. Se connecter sur le PC sous guest, passwd guest. Les manipulations entre [] ne pourront être testées que sur le réseau de l ENSEIRB. 2. Fichier /etc/hosts : On se propose d analyser le réseau de la salle de TP réseaux basé sur la technologie Ethernet 10Mb/s 10BaseT Twisted Pair et les services Internet offerts. Editer le fichier /etc/hosts en utilisant la commande : % more /etc/hosts A quoi sert ce fichier? [ Pourquoi ne contient-il pas le nom de l ensemble des machines de l ENSEIRB? Quelle commande doit-on utiliser pour avoir le fichier à jour de l ensemble des machines de l ENSEIRB? Quel service Internet est mis en œuvre? Quel est le nom de la machine serveur de ce service? ] 3. Fichier /etc/networks : [ Editer le fichier /etc/networks. A quoi sert ce fichier? A quoi correspond l entrée loopback? Quelle commande doit-on utiliser pour avoir le fichier à jour de l ensemble des machines de l ENSEIRB? ] 4. Fichier /etc/netmasks : [ Editer le fichier /etc/netmasks. A quoi sert ce fichier? ] - 3/11-

5. Fichier /etc/services : Editer le fichier /etc/services. A quoi sert ce fichier? Retrouver le numéro de port des services ftp, telnet, ftp et SMTP. 6. Fichier /etc/protocols : Editer le fichier /etc/protocols. A quoi sert ce fichier? A quel niveau protocolaire retrouve-t-on ces valeurs? Quel en est ainsi l intérêt? 7. Fichier /etc/xinetd.conf : Editer le fichier /etc/xinetd.conf [/etc/inetd.conf]. A quoi sert ce fichier? Quel superdémon (superserveur) gère les services autorisés? On pourra retrouver ce superdémon en exécutant la commande : % ps edf more Quels sont les services Internet réellement autorisés? Analyser les fichiers de configuration sous /etc/xinetd.d. 2.2. Utilisation des commandes d analyse réseau Dans cette partie, on étudie les principales commandes utilisateur d analyse réseau. 8. Commande ping : En s aidant du manuel en ligne, préciser le rôle de la commande ping. Quel protocole Internet est mis en œuvre? Utiliser cette commande pour voir si une machine PC est «vivante». Comment utiliser cette commande pour envoyer 10 paquets de 10 octets? 9. Commande traceroute : En s aidant du manuel en ligne, préciser le rôle de la commande traceroute. Quel protocole Internet est mis en œuvre? Quel champ du paquet IP est particulièrement exploité? Utiliser cette commande pour analyser le chemin permettant d atteindre une machine PC. 10. Commande arp : En s aidant du manuel en ligne, préciser le rôle de la commande arp. Quel protocole Internet est mis en œuvre? Utiliser cette commande pour retrouver le(s) adresses Ethernet de(s) interface(s) réseau du PC. 11. Commande ifconfig : En s aidant du manuel en ligne, préciser le rôle de la commande ifconfig. [ Combien d interface(s) Ethernet possède fakir? ] A quoi sert l interface lo? A quoi correspond le paramètre MTU? Quelle est sa valeur? Quelle est la valeur du masque réseau? Quelle est la classe de réseau IP? Quelle est l adresse IP de broadcast? 12. Commande netstat : - 4/11-

En s aidant du manuel en ligne, préciser le rôle de la commande netstat. A l aide de l option : % netstat nr retrouver les éléments précédents et compléter le tableau suivant : Adresse Ethernet Adresse IP Netmask Broadcast Classe réseau Adresse IP passerelles Votre PC 13. A l aide de l option : % netstat a retrouver les services UDP et TCP actifs sur le PC ainsi que la liste des connexions TCP en cours. Remarquer la notation host.numero_port et l état courant d une connexion TCP (voir automate d états d une connexion TCP donné en annexe). 14. Commande telnet : En s aidant du manuel en ligne, préciser le rôle de la commande telnet. On peut utiliser la commande telnet autrement que pour se connecter au service telnet par défaut en précisant un numéro de port : % telnet host numero_port Se connecter au service ftp du PC par telnet. Dans une deuxième fenêtre xterm, à l aide de la commande netstat, remarquer une entrée supplémentaire correspondant à la connexion ftp en cours. 2.3. Etude de quelques services Internet On utilisera à chaque fois la commande telnet pour se connecter au service désiré en précisant le bon numéro de port. 15. Service ftp : Se connecter par telnet au service ftp du PC. On essayera d'utiliser quelques commandes du protocole FTP : USER guest, PASS guest, CWD, MDIR, HELP A l aide de la - 5/11-

commande netstat, on retrouvera les paramètres de la connexion en cours (numéros de port utilisés et évolution de l état de la connexion). 16. Service www : Se connecter par telnet au service www du PC. Une fois connecté, envoyer le caractère "RETURN". Que se passe-t-il? Même chose en envoyant les caractères ESPACE puis "RETURN". Que vous renvoie le serveur www? Quel est le type des données renvoyées par le serveur? Le protocole HTTP utilisé par un serveur www est structuré sous forme de commandes ASCII dont la structure générale est donnée ci-après (RFC1945) : COMMANDE action HTTP/1.0 Autres infos passées au serveur Un RETOUR CHARIOT (RETURN) Un RETOUR CHARIOT Données de l'utilisateur La commande HTTP peut être GET, PUT, POST et HEAD suivant l'action demandée (généralement GET et l'action étant alors le nom d'un fichier HTML du serveur www). Un exemple de commande envoyée au serveur www est celui-ci (récupération de la page d'accueil) : GET /index.html HTTP/1.0 Le serveur en retour renvoie un code d'erreur dont les principaux sont : 200 : OK 204 : No content 400 : Bad request 403 : Forbidden 404 : Not found 408 : Request timeout Un exemple de données retournées par le serveur www est : HTTP/1.0 200 OK Date: Mon, 06 Dec 1999 14:50:09 GMT Server: Apache/1.1.1 Content-type: text/plain Content-length: 3 Last-modified: Mon, 06 Dec 1999 14:47:55 GMT En vous aidant de l'exemple précédent et en utilisant telnet, récupérer le fichier HTML index.html. Quel est le code de retour? 17. Commande tcpdump : - 6/11-

On désire maintenant analyser les datagrammes IP transitant sur le réseau en décortiquant les données reçues par l'interface Ethernet. La commande tcpdump permet de faire cette analyse. Regarder la syntaxe de cette commande. Il est à noter que cette commande ne peut être exécutée que par le super utilisateur en temps normal. Que réalisent les commandes suivantes : % tcpdump -a -v i lo % tcpdump -a -v tcp port 21 % tcpdump -a -v -x host pomme1 and port 80 18. Utiliser tcpdump pour analyser le trafic ICMP de la machine locale. 19. Utiliser tcpdump pour analyser le trafic du service www du PC. Est-ce un outil à mettre entre toutes les mains? 20. Commande nmapfe : Lancer la commande nmapfe. En utilisant l aide en ligne, en préciser son intérêt. Est-ce un outil à mettre entre toutes les mains? 21. Faire un bilan des outils mis à disposition sous pour analyser un réseau Internet (fichiers de configuration et commandes UNIX/Linux). 3. SEANCES 2, 3 ET 4 : PROGRAMMATION RESEAU PAR SOCKETS 1. Dans le «Home Directory» de guest, se créer un répertoire de travail à son nom et s y placer : % cd % mkdir mon_nom % cd mon_nom 2. Y recopier tous les fichiers de ~kadionik/pub : % cp ~kadionik/pub/*. 3. Analyse d un programme client TCP : Editer le fichier myftp0.c et analyser le code source. Quel type de socket utilise-t-on? Retrouve-t-on l enchaînement classique des appels systèmes dans ce cas? Que fait ce programme? Compiler ce programme. On utilisera comme options d édition de liens : % gcc o myftp0 myftp0.c [ lsocket lnsl ] % cur myftp0-7/11-

Exécuter le programme et le tester avec le serveur ftp du PC. 4. Client TCP ftp myftp : Copier le fichier myftp0.c dans le fichier myftp.c. Modifier le code source myftp.c pour créer l équivalent de la commande "telnet host 21". Compiler et tester. Dans une fenêtre xterm, à l aide de la commande netstat, remarquer une entrée supplémentaire correspondant à la connexion en cours. 5. Client UDP mydate : Utiliser la commande telnet pour tester le service daytime du PC. A l aide des fichiers de configuration vus en séance 1, retrouver le numéro de port et le protocole de transport Internet à utiliser. Copier le fichier myftp.c dans le fichier mydate.c. Modifier le code source mydate.c pour pouvoir récupérer la date du serveur de daytime. On passera en argument au programme le nom du serveur. Compiler et tester en prenant comme service daytime celui du PC. 6. Analyse d un programme serveur TCP : Editer le fichier pingserveurtcp0.c et analyser le code source. Quel type de socket utilise-t-on? Retrouve-t-on l enchaînement classique des appels systèmes dans ce cas de serveur? Que fait ce programme? Compiler ce programme. Exécuter le programme en utilisant comme programme client telnet en choisissant comme machine serveur le PC et un numéro de port supérieur à 2000. Dans une fenêtre xterm, à l aide de la commande netstat, remarquer une entrée supplémentaire correspondant à la connexion TCP en cours. 7. Serveur TCP pingserveurtcp, client TCP pingclienttcp : Copier le fichier pingserveurtcp0.c dans le fichier pingserveurtcp.c. Modifier le code source pingserveurtcp.c pour que le serveur renvoie vers le client tout ce qu il a reçu de sa part (équivalent d un écho/ping). Compiler et tester en utilisant comme programme client telnet en choisissant comme machine serveur le PC et un numéro de port supérieur à 2000. Dans une fenêtre xterm, à l aide de la commande netstat, remarquer une entrée supplémentaire correspondant à la connexion TCP en cours. Peut-on prendre n importe quelle valeur de port? Copier le fichier myftp.c en pingclienttcp.c. Modifier le fichier ainsi créé pour avoir un client spécifique au serveur qui accepte en arguments le numéro de port et le nom du serveur. 8. Serveur UDP pingserveurudp, client TCP pingclientudp : Copier le fichier pingserveurtcp.c dans le fichier pingserveurudp.c et le fichier pingclienttcp.c dans le fichier pingclientudp.c. Modifier le code source pingserveurudp.c mais en utilisant ici le protocole UDP. Modifier le code source - 8/11-

pingclientudp.c mais en utilisant ici le protocole UDP. Mêmes questions que précédemment. 9. Serveur TCP lotoserveurtcp, client TCP lotoclienttcp : Créer le fichier lotoserveurtcp.c qui renvoie vers le client une chaîne de caractères contenant 6 numéros de loto (entre 1 et 49) tirés aléatoirement (voir l appel système srand() ). Compiler et tester comme précédemment. 10. Serveur wwwserveur : Quel protocole utilise-t-on quand on accède à un serveur www? Créer le fichier wwwserveurtcp.c qui renvoie vers le client une page d accueil HTML. Aucun test ne sera fait au niveau du respect du protocole HTTP par le serveur. Compiler et tester avec comme programme client Netscape et comme serveur le PC. L URL à rentrer est : http://@ip_du_pc:numero_port/ - 9/11-

4. ANNEXE : AUTOMATE D ETATS TCP Une connexion TCP connaît plusieurs états durant sa durée de vie. Les états définis sont : LISTEN, SYN-SENT, SYN-RECEIVED, ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, TIME-WAIT, et CLOSED. CLOSED est dit fictif car il correspond à une situation où la connexion elle-même n'existe plus. Voici un descriptif des états TCP : LISTEN : la connexion reste en attente d'une requête de connexion externe par un TCP distant. Cet état est atteint après une demande de connexion passive. SYN-SENT : la connexion se met en attente d'une requête de connexion, après avoir envoyé elle-même une requête à un destinataire. SYN-RECEIVED : les deux requêtes de connexion se sont croisées. La connexion attend confirmation de son établissement. ESTABLISHED : la connexion a été confirmée de part et d'autre et les données peuvent transiter sur la voie de communication. C'est l'état stable actif de la connexion. FIN-WAIT-1 : sur requête de déconnexion émise par l'application, la connexion demande la confirmation d'une requête de déconnexion qu'elle a elle-même émise vers le distant. FIN-WAIT-2 : la connexion se met en attente d'une requête de déconnexion par le distant, une fois reçue la confirmation de sa propre requête. CLOSE-WAIT : la connexion se met en attente d'une requête de déconnexion émise par l'application. CLOSING : la connexion attend la confirmation de sa requête de déconnexion par le TCP distant, lequel avait auparavant émis sa propre requête de déconnexion. LAST-ACK : la connexion attend la confirmation de sa requête de déconnexion, émise suite à une requête similaire à l'initiative du distant. TIME-WAIT : un temps de latence avant fermeture complète du canal, pour s'assurer que toutes les confirmations ont bien été reçues. CLOSED : la connexion n'existe plus. C'est un pseudo état. La figure suivante montre l'enchaînement des états et les différentes trames émises. Il occulte par contre le traitement des fautes ainsi que tous les autres événements qui ne sont pas en relation avec les changements d'état. - 10/11-

CLOSED LISTEN env SYN SYN-RECEIVED rcv SYN env SYN,ACK rcv ACK de SYN rcv SYN env ACK env SYN rcv SYN,ACK env ACK SYN-SENT env FIN ESTABLISHED rcv ACK de FIN FIN-WAIT-1 env FIN rcv FIN env ACK rcv FIN env ACK CLOSE WAIT env FIN FIN-WAIT-2 CLOSING LAST-ACK rcv FIN env ACK rcv ACK de FIN TIME-WAIT rcv ACK de FIN CLOSED Machine d'états d'une connexion TCP - 11/11-