INTERCONNEXION DE RESEAU PROTOCOLE TCP / IP RAPPELS 1
Le modèle client-serveur Principe Client Requête Serveur Moyen de comunication Message - RPC Asymétrique CLIENT - envoyer requête - attendre réponse - traiter requête SERVEUR - ouvrir le service - attendre une requête - traiter requête - renvoyer réponse 2
Différents types de systèmes répartis : le modèle client-serveur Classification Serveur itératif Serveur sans état Requête Serveur parallèle Serveur Serveur à état Requête Serveur 3
Interconnexion de réseaux TCP/IP Introduction : l'internet TCP / IP - structure - adressage IP - niveau réseau : la couche IP - niveau transport : la couche UDP / TCP - niveau application 4
Introduction Interconnecter des réseaux hétérogènes R1 R2 R3 Passerelles L'INTERNET DARPA : TCP/IP Interconnexion des grands organismes américains : DOD, NASA, NSF etc... 5
Introduction Un réseau virtuel M1 M1 R1 R2 R3 RVirtuel RVirtuel M2 M2 Masquage des réseaux physiques empruntés Adressage Transport de bout en bout 6
TCP-IP : l'adressage (1) Noms symboliques Noms de Domaine Serveur de noms Résolution de noms Adresses Internet Adresses IP ARP (Adress Resolution Protocol) Résolution d'adresses Adresses Ethernet Adresses physiques 7
TCP-IP : l'adressage (2) Les noms Structure hiérarchique fondée sur le domaine (DNS) objet.sous-domaine.domaine fermi.cnam.fr eudes.mit.edu objet : nom d'une machine. domaine : géographique (fr, jp) ou institutionnel (com, mil, edu) SERVEUR RACINE FR DE UK EDU CNAM GMD OXFORD MIT TORONDO IIE IAT CNAM Eudes CS rubis Fermi Asimov Leguin Tristan 8
TCP-IP : l'adressage (3) Les adresses IP 3 principales classes d'adresses Internet paire (@réseau, @machine) 0 7 8 31 0 id réseau id machine Classe A ++ machines 2 24 0 15 16 31 1 0 id réseau id machine Classe B 2 16 0 23 24 31 1 1 0 id réseau id machine Classe C 2 8 32 bits Partie réseau affectée par le NIC 1 Notation décimale pointée : <=> 10000000 00001010 00000010 00011110 128.10.2.30 1 Network Information Center 9
Architecture de TCP / IP Machine A Machine B APPLICATIONS De bout en bout APPLICATIONS TCP UDP Passerelle TCP UDP Réseau Réseau IP IP IP INTERFACES INTERFACES INTERFACES R1 R2 IP : adressage machine @ : IP A, IP B TCP/UDP : adressage application notion de port : entier 16 bits notion d'association @ : protocole, IP A, PORT 1, IP B, PORT 2 10
La couche IP (1) Communication dans le mode minimal adressage de machines à machines (adresse IP) Communication dans le mode minimal Datagramme indépendant Mode non connecté et non fiable : pas de garantie de bon transfert 11
La couche UDP (User datagram Protocol) Protocole transport de bout en bout adressage d'applicationà application via les ports UDP Ports UDP réservés exemple : port 111 port 513 application Sun RPC application who Protocole transport non fiable basé sur IP Datagrammes indépendants Perte de datagrammes, datagrammes dupliqués, pas de remise dans l'ordred d'émission Analogie : le courrier 12
La couche TCP (Transport Control Protocol) Protocole transport de bout en bout adressage d'application à application via les ports TCP Ports TCP réservés exemples : port 21 port 23 application ftp application telnet Protocole transport fiable orienté connexion basé sur IP Connexion / Flux d'octets Pas de perte de messages, pas de duplication, remise dans l'ordre d'émission Analogie : le téléphone 13
La couche TCP (Transport Control Protocol) Protocole transport fiable orienté connexion basé sur IP Orienté connexion UDP Echange de datagrammes TCP Etablissement connexion Echange de flux d octets Fermeture connexion 14
La couche Application Sur la base de TCP ou UDP Trois catégories : Services standards : FTP, SMTP Services généraux : XDR, RPC, X-Windows Services UNIX : Rlogin, rsh, rwho 15
Application sous UNIX Fichiers de configuration Commandes d'administration Démons Structures et fonctions de base 16
Application sous UNIX Les fichiers de configuration /etc/hosts Correspondance adresse IP et nom symbolique Adresse IP, nom symbolique, alias, commentaire 163.173.128.6 Asimov.cnam.fr cnam iris /etc/networks Adresse Ip des réseaux Nom du réseau, adresse Ip, alias, commentaire main-net 132.227 litp-ether /etc/services Liste des services Internet connus Nom du service, n de port, protocole, alias echo 7/tcp /etc/protocols Liste des protocoles utilisés sur l'internet Nom du protocole, n de protocole, alias, commentaire ip 0 IP # Internet protocol tcp 12 TCP # Transmission control protocol 17
Application sous UNIX Les démons Création Ecoute Inetd Ecoute Un démon par service - encombrement de la table des processus Le démon inetd - en écoute sur les différents ports - crée le serveur sollicité - fichier /etc/inetd.conf Nom de service type de message protocole option propriétaire nom du démon ftp stream tcp nowait root /usr/lpp/tcpip/etc/ftpd ftpd 18
Application sous UNIX Les démons USER PID %CPU %MEM VSZ RSS TTY S STARTED TIME COMMAND root 18362 0.0 0.1 1.26M 200K?? S 10:29:48 0:00.08 rlogind root 147 0.0 0.1 1.27M 152K?? S Nov 21 2:19.08 /usr/sbin/syslogd root 149 0.0 0.0 1.24M 0K?? IW Nov 21 0:00.02 /usr/sbin/binlogd root 317 0.0 0.1 1.49M 160K?? I Nov 21 0:02.67 /usr/sbin/rpc.lockd root 315 0.0 0.0 1.37M 0K?? IW + Nov 21 0:00.01 /usr/sbin/rpc.statd root 300 0.0 0.0 1.36M 0K?? IW Nov 21 0:00.19 /usr/sbin/portmap root 302 0.0 0.0 1.41M 0K?? IW Nov 21 0:00.06 /usr/sbin/mountd -i root 257 0.0 3.4 9.95M 8.6M?? S Nov 21 7:26.38 /var/dss/namedb/bin/named -b root 304 0.0 0.0 1.27M 0K?? IW Nov 21 0:00.01 /usr/sbin/nfsd 8 root 16768 0.0 0.1 1.34M 224K?? I 08:57:58 0:00.09 telnetd root 309 0.0 0.0 1.21M 0K?? I Nov 21 1:13.31 /usr/sbin/nfsiod 7 root 310 0.0 0.0 1.21M 0K?? I Nov 21 1:12.14 /usr/sbin/nfsiod 7 root 311 0.0 0.0 1.21M 0K?? I Nov 21 1:12.25 /usr/sbin/nfsiod 7 root 540 0.0 0.0 1.32M 56K?? I Nov 21 0:12.04 /usr/sbin/snmpd root 547 0.0 0.0 1.26M 0K?? IW 17:57:51 0:00.08 rlogind root 16954 0.0 0.0 1.85M 0K ttyp6 IW + Dec 02 0:01.35 -sh (csh) root 582 0.0 0.0 1.29M 56K?? S Nov 21 10:59.62 /usr/sbin/inetd root 645 0.0 0.0 1.28M 96K?? I Nov 21 0:09.78 /usr/lbin/lpd root 721 0.0 0.0 1.26M 0K?? IW 18:40:53 0:00.23 rlogind delacroi 17233 0.0 0.1 1.84M 312K ttyq0 S 10:29:48 0:00.22 -csh (csh) root 17788 0.0 0.1 1.34M 216K?? I 10:00:01 0:00.49 telnetd root 17798 0.0 0.0 1.34M 0K?? IW Nov 29 0:00.08 telnetd 19
Application sous UNIX Les structures et fonctions de base les fichiers de base # include <sys/types.h> # include <netdb.h> # include <netinet/in.h> # include <arpa/inet.h> -- pour les conversions l'adresse d'une machine (entier long, format réseau) struct in_addr { } u_long s_addr; 20
Application sous UNIX Les structures et fonctions de base Les problèmes de représentation des entiers - format réseau - format local Format local Big Endian Octet 1 Octet 2 Octet 3Octet 4 Format réseau Big Endian Little Endian Octet 4 Octet 3 Octet 2 Octet 1 - primitives de conversion ntohl(x) x entier long Réseau --> local ntohs(x) x entier court Réseau --> local htonl(x) x entier long Local --> réseau htons(x) x entier court Local --> réseau 21
Application sous UNIX Les structures et fonctions de base Structures et fonctions d'accès des fichiers de configuration Fichier Structure Fonction /etc/hosts hostent gethostbyname(nom) /etc/networks netent getnetbyname(nom) /etc/services servent getservbyname(nom, proto) getservbyport(port,proto) /etc/protocols protoent getprotbyname(nom) getprotobynumber(numero) struct hostent { char*h_name; /* official name of host */ char**h_aliases; /* alias list */ int h_addrtype; /* host address type */ int h_length; /* length of address */ char**h_addr_list; /* list of addresses from name server */ #define h_addr h_addr_list[0] /* address, for backward compatiblity */ }; -- obtenir l'entrée etc/host de la machine de nom "nom" struct hostent *gethostbyname (nom) char *nom; 22
************************************************ Fonctions de conversion d'entiers du format local au format réseau ************************************************ -- conversion d'un entier court du format local au format réseau u_short htons (hostshort) u_short hostshort; -- conversion d'un entier long du format local au format réseau u_long htonl (hostlong) u_long hostlong; -- conversion d'un entier court du format réseau au format local u_short ntohs (netshort) u_short netshort; -- conversion d'un entier long du format réseau au format local u_long ntohl (netlong) u_long netlong; 23