Réseaux TCP/IP TABLE DES MATIERES I . Introduction 3 I I I I I I I I I I I I I I I I I I I I 3 3 5 5 5 5 6 6 7 8 8 9 9 9 10 12 13 13 14 14 . . . . . . . . . . . . . . . . . . . . 1 2 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 . . . . . . . . . . . . . . . . . . . . TCP/IP Internet Intranet Normalisation Modèle OSI 1 . Présentation 2 . Les sept couches 2 . 1 . Couche physique 2 . 2 . Couche liaison 2 . 3 . Couche réseau 2 . 4 . Couche transport 2 . 5 . Couche session 2 . 6 . Couche présentation 2 . 7 . Couche application 3 . Fonctionnement 4 . Interconnexion 4 . 1 . Répéteur 4 . 2 . Pont et commutateur 4 . 3 . Routeur 4 . 4 . Passerelle II . Couche Liaison (ou interface réseau) 15 II II II II II II II II II II II II II II II II II II II II II II II 15 15 16 16 19 20 21 22 25 25 27 27 27 29 30 30 30 31 33 33 33 35 38 . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 3 . . . . . . . . . . . . . . . . . . . . . . . Ethernet 1 . Caractéristiques principales 2 . Trame 802.3 3 . Fonctionnalités 4 . Sous couche LLC 5 . CSMA/CD 6 . Round trip delay 7 . Oscillogrammes 8 . Echanges de trames 8 . 1 . Rappels 8 . 2 . Sous couche LLC 8 . 2 . 1 . Définition 8 . 2 . 2 . Trames LLC 8 . 2 . 3 . Echanges de trames LLC 8 . 2 . 4 . Sous couche SNAP 8 . 2 . 4 . 1 . Introduction 8 . 2 . 4 . 2 . Format des trames 8 . 3 . Protocole HDLC Token Ring 1 . Caractéristiques principales 2 . Trame 802.5 3 . Fonctionnalités Protocole PPP LT LA SALLE Avignon Page 1 / 79 ©TV.BTSii.2001 Réseaux TCP/IP III . La couche Internet 39 III III III III III III III III III 39 40 40 41 43 43 44 44 48 . . . . . . . . . 1 2 2 2 3 3 4 4 4 . Rappels . Adressage IP . 1 . IPv4 . 2 . IPv6 . Protocole IP .1 . Format des paquets IP . Autres protocoles . 1 . ARP et RARP . 2 . ICMP IV . La couche Transport 51 IV IV IV IV IV IV IV 51 51 52 54 55 55 56 . . . . . . . 1 2 3 4 5 6 7 . . . . . . . Introduction Caractéristiques Principe d'un échange TCP Format de l'en-tête TCP Format de l'en-tête UDP Aiguillage Résolution d'adresses V . La couche Application 60 V V V V V V V V V V V V V V V V V V V V 60 60 60 62 63 64 66 67 68 69 70 70 72 73 74 75 77 77 77 78 . 1 . HTTP . 1 . 1 . Présentation . 1 . 2 . Requête HTTP . 1 . 3 . Réponse HTTP . 1 . 4 . HTTP et CGI . 1 . 5 . Codes réponses . 2 . FTP . 3 . TFTP . 4 . BOOTP . 5 . DHCP . 6 . SNMP . 7 . SMTP . 8 . POP . 9 . IMAP . 10 . DNS . 11 . Telnet . 12 . Les commandes r . 13 . RPC . 14 . NFS .15 . SSL Bibliographie : TCP/IP Administration de réseau de Craig Hunt © Ed. O'Reilly Les protocoles TCP/IP et Internet d'Eric Lapaille © NetLine 1999 Webmaster in a nutshell © Ed. O'Reilly Technique des réseaux locaux sous Unix de L. Toutain © Ed. Hermes Pratique des réseaux locaux d'entreprise de JL Montagnier © Ed. Eyrolles Transmission et Réseaux de S. Lohier et D. Present © ED. DUNOD LT LA SALLE Avignon Page 2 / 79 ©TV.BTSii.2001 Réseaux TCP/IP I . Introduction I . 1 . TCP/IP Les guerres des protocoles sont enfin terminées : TCP/IP en est le vainqueur. Il est unanimement reconnu comme le protocole (en fait il représente une famille de protocoles) de communication pour interconnecter différents systèmes informatiques. Dans le monde du PC, il fut longtemps opposé à IPX (Internet Packet eXchange) de Novell, qui était de loin le protocole le plus utilisé lorsque Netware dominait le marché des serveurs réseaux. A l'origine, Microsoft n'avait même pas daigné intégrer un protocole réseau dans son OS. Ils ont par la suite tenter de promouvoir Netbeui (NETBios Extended User Interface), un protocole réseau non routable (donc limité à un seul réseau) et propriétaire (donc pas adapté à devenir une norme internationale). Du côté des réseaux d'entreprise, les ordinateurs étaient très dépendant de SNA (Systems Networks Architecture) d'IBM. Là encore, on était dans des solutions propriétaires pour toute l'infrastructure informatique (IBM, BULL, Digital essentiellement). TCP/IP n'a pas progressé rapidement (d'autres protocoles existaient) mais il a répondu à un fort besoin au bon moment (communication de données au niveau mondial) du fait de ces fonctionnalités et de certaines particularités : protocole ouvert, disponible gratuitement et développé en toute indépendance (matériel et logiciel) ; un système d'adressage commun permettant une communication mondiale à partir d'une adresse unique ; les protocoles de haut niveau (interface avec les applicatifs) sont normalisés. TCP/IP est donc devenu le dénominateur commun des machines connectées à l'Internet. Il offre la possibilité de communiquer entre tous les types de matériels et tous les types de systèmes d'exploitation. Les protocoles rivaux se sont réfugiés vers des marchés très spécialisés où ils satisfont des besoins spécifiques. I . 2 . Internet En 1969, l'ARPA (Advanced Research Projects Agency) finança un projet de recherche pour créer un réseau à commutation de paquets expérimental. Ce réseau, portant le nom d'ARPANET a été construit pour étudier des techniques permettant des communications de données. La plupart des techniques de communication on été développées au sein de l'ARPANET. LT LA SALLE Avignon Page 3 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Ce réseau expérimental a été un tel succès qu'un grand nombre d'organisations rattachées à ce projet commencèrent à l'utiliser pour leurs communications de tous les jours. En 1975, le réseau passa du stade expérimental au stade opérationnel et l'administration fut confiée à la DCA (Defense Communication Agency). Les protocoles de base TCP/IP furent développés après que l'ARPANET fut devenu opérationnel. Ils furent adoptés comme norme militaire en 1983 et toutes les machines connectés au réseau ont dès lors dû les employer. Le réseau ARPANET fut divisé en MILNET et en un réseau ARPANET plus petit en 1983. C'est à cette époque que le terme Internet fit son apparition pour désigner la réunion de ces deux réseaux. En 1985, la NSF (National Science Foundation) créa le réseau NSFNet et se connecta au réseau Internet existant (56 KO/s). La NSF amena une nouvelle vision de l'utilisation de l'Internet en voulant étendre le réseau à tout scientifique et à tout ingénieur situé aux Etats-Unis. En 1990, l'ARPANET cessa de manière officielle d'exister et NSFNet arrêta de jouer son rôle de réseau fédérateur Internet principal en 1995. En 1997, l'Internet comportait plus de 95000 réseaux répartis aux quatre coins de la planète. On parle alors de réseau de réseaux avec plusieurs points d'interconnexion : les trois NAP (Network Access Point) créés par la NSF pour garantir un accès continu le plus large possible à l'Internet ; les FIX (Federal Information Exchanges) interconnectant les réseaux gouvernementaux au réseau mondial ; le CIX (Commercial Information Exchanges) a été le premier nœud de l'interconnexion spécifique aux fournisseurs d'accès à l'Internet (FAI) commerciaux. On parle aussi de ISP (Internet Service Providers). les MAE (Metropolitan Area Exchanges) ont été également créés pour interconnecter les fournisseurs commerciaux d'accès à l'Internet. Internet a sûrement largement dépassé la taille initialement envisagée. Les différentes agences initiales ne jouent plus de rôle essentiel. L'internet est passé d'un simple réseau fédérateur avec une structure hiérarchique à trois niveaux (la dorsale, les réseaux régionaux et les réseau locaux) à un réseau beaucoup plus important constitué de réseaux répartis et interconnectés. En dépit de tous ces changement, une chose n'a pas bougé : Internet est bâti sur TCP/IP. Même si des problèmes sont apparus (sécurité et limite des adresses disponibles), TCP/IP a tenu le coup et la nouvelle version IPv6 notamment prendra le relais. Je peux ici conseiller la lecture d'un excellent livre "Les sorciers du Net" aux éditions Callman-Lévy retraçant les origines de l'Internet. En 1969, Intel avait un an et Bill Gates était encore à l'école primaire lorsque des ingénieurs de Stanford échangèrent les cinq lettres du mot LOGIN avec des ingénieurs de l'université de Californie de Los Angeles. LT LA SALLE Avignon Page 4 / 79 ©TV.BTSii.2001 Réseaux TCP/IP I . 3 . Intranet Les protocoles Internet sont souvent utilisés dans le cadre des réseaux locaux, même lorsque le réseau local n'est pas relié à l'Internet. TCP /IP est largement utilisé pour créer des réseaux d'entreprise. Ces réseaux utilisent les techniques Internet comme par exemple les outils Web pour diffuser des informations et données d'une manière interne. On les appelle des intranets. TCP/IP est la base de toutes ces variantes de réseaux. I . 4 . Normalisation Les protocoles sont des règles formelles décrivant un comportement. Dans des réseaux homogènes, un seul constructeur spécifie l'ensemble des règles de communication conçues pour exploiter les spécificités du système d'exploitation et du matériel. TCP/IP tentent de créer des réseaux hétérogènes avec des protocoles ouverts indépendants de toute architecture matérielle ou logicielle. Ces protocoles sont accessibles à tous et leur développement ainsi que leur évolution s'effectue par consensus et non par décision d'un constructeur propriétaire. La nature ouverte des protocoles TCP/IP implique des documents décrivant la norme accessible à tous. Il existe trois publications des standards : MIL STD (Military Standards), IEN (Internet Engineering Notes) et les RFC (Requests For Comments). Les RFC contiennent les dernières versions des spécifications de tous les protocoles TCP/IP. Ces documents sont beaucoup moins rigide que la plupart des documents de normalisation en ne se limitant pas aux spécifications mais en fournissant un panel très large d'informations intéressantes, pratiques et utiles. Les RFC sont indispensables aux administrateur et développeurs réseaux. I . 5 . Modèle OSI I . 5 . 1 . Présentation Un modèle de représentation développé par l'ISO (International Standards Organization) est souvent utilisé pour décrire la structure et le fonctionnement des communications réseaux. Ce modèle OSI (Open Systems Interconnect Reference Model) fournit un support de référence. Ce modèle est largement utilisé par la communauté. Le modèle OSI contient 7 couches ou niveaux qui définissent les fonctions des protocoles de communication qui vont de l'interface physique à l'interface des applicatifs utilisant le réseau. En raison de son apparence, la structure est très souvent appelé pile ou pile de protocoles. LT LA SALLE Avignon Page 5 / 79 ©TV.BTSii.2001 Réseaux TCP/IP I . 5 . 2 . Les sept couches Le modèle d'architecture en couches est le suivant : niveau niveau niveau niveau niveau niveau niveau 7 6 5 4 3 2 1 : : : : : : : couche couche couche couche couche couche couche APPLICATION PRESENTATION SESSION TRANSPORT RESEAU LIAISON PHYSIQUE Deux normes sont définis pour chaque couche : une norme qui spécifie l’interface pour accéder aux services de la couche. Les services sont les capacités fournies par chaque couche N-1 aux couches N ; une norme qui définit le protocole qui sont l'ensemble des règles qui définissent le dialogue entre couche de même niveau. I . 5 . 2 . 1 . Couche Physique Son rôle est la transmission des bits sur le support physique d'interconnexion. Ces fonctions principales sont : fournir les caractéristiques électriques, mécaniques et fonctionnelles permettant d’activer, maintenir et désactiver une transmission ; définir le mode d’exploitation (semi-duplex, duplex intégral, //, série, ...) ; réaliser une connexion (permanente, dynamique, point à point ou multipoint) ; assurer la compatibilité des interfaces qui réalisent les fonctions de codage, modulation et amplificateur du signal. Exemples : V24, X21, RS232, V24, Multiplexeur, Transceiver, MAU, HUB, Répéteur, Prise DB25 et DB9, RJ45 et RJ11, etc ... LT LA SALLE Avignon Page 6 / 79 ©TV.BTSii.2001 Réseaux TCP/IP I . 5 . 2 . 2 . Couche Liaison Elle est responsable de l’acheminement sans erreurs de blocs d’informations sur la ligne physique. Ces fonctions principales peuvent être : établir et libérer les connexions ligne ; assurer la mise en trames et la synchronisation ; détecter et corriger les erreurs de transfert ; gérer le contrôle de flux . La couche Liaison est découpée en deux sous couches appelées MAC (Medium Access Control) et LLC (Logical Link Control). I . 5 . 2 . 2 . 1 . Sous-couche MAC Elle gère l'accès au support, définit le format et la définition des trames et offre un ensemble de services à la sous-couche LLC. Exemples : Ethernet 802.3 CSMA/CD, Token Ring 802.5, Token Bus 802.4, … etc. I . 5 . 2 . 2 . 2 . Sous-couche LLC Elle est définie par l’IEEE 802.2 et destinée aux réseaux locaux. Elle offre à la couche réseau trois types de services : le service sans connexion et sans acquittement, dit de type 1 (ou mode datagramme) : la couche LLC aiguille les données vers les protocoles de couche 3. le service avec connexion, dit de type 2. Une connexion est établie entre émetteur et récepteur avant tout envoi de données. Les trames sont numérotées afin que LLC puisse garantir que toutes les trames sont arrivées à destination dans le bon ordre. un autre service existe, utilisé essentiellement dans les réseaux industriels: le service sans connexion avec acquittement, dit de type 3 (ou mode datagramme acquitté). Par exemple, les réseaux Ethernet utilisent classiquement le service type 1. Dans tous les cas, LLC réalise un contrôle de flux. Ce contrôle permet au récepteur de commander l’envoi des trames issues de l'émetteur, afin d’éviter sa propre saturation. LLC assure aussi un contrôle d’erreur à la réception en s’appuyant sur le champ FCS de la sous-couche MAC. Pour LLC type 1, l’erreur sera signalée puis gérée par les couches supérieures. LT LA SALLE Avignon Page 7 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Une des fonctions de LLC est de faire l’aiguillage vers les protocoles de niveau supérieur (champ DSAP et SSAP). Autres protocoles de couche 2 : SDLC (Synchronous Data Link Control) développé par IBM et utilisé dans l’arcitecture SNA; HDLC (High-level Data Link Control) normalisé par l’ISO et basé sur SDLC, représente la référence des protocoles de niveau 2, dérivée en : LAPB (Link Access Procedure) définis par le CCITT pour les réseau X25 (Transpac) et issu de HDLC; LAPD utilisé sur le réseau RNIS; Les couches matérielles sont implémentées par la couche physique et la souscouche MAC. Les couches logicielles du modèle OSI vont alors de la sous-couche LLC à la couche 7 Application. I . 5 . 2 . 3 . Couche Réseau Elle a la charge du dialogue et de la connexion avec des entités distantes, éventuellement situées sur des réseaux différents seulement accessibles par le franchissement de plusieurs interconnexions. Fonctions : établir et rompre une connexion ; contrôler les erreurs de transmission ; réaliser un contrôle de flux ; réaliser le routage. Exemples : IP (Internet Protocol), IPX (Internet Packet eXchange), … etc . I . 5 . 2 . 4 . Couche Transport Ce niveau marque la séparation entre : - les trois couches basses ou externe (fonction orientée transmission) ; - les trois couches hautes ou internes (fonction orientée traitement) . Au-dessus de la couche transport les caractéristiques physiques du réseau n’apparaissent plus. Elle est responsable du transport des informations de bout en bout au travers du réseau. LT LA SALLE Avignon Page 8 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Fonctions : gérer les adresses de transport ; gérer le transport en établissant et libérant une connexion gérer les messages : - segmentation des données; - réassemblage des données; - contrôle du séquencement. gérer la qualité de service : - acquittement et retransmission sur absence d'acquittement; - multiplexage des données; - contrôle de flux; - détection des erreurs. Exemples : TCP (Transmission Control Protocol), UDP (User Datagram Protocol), SPX (Sequenced Packet eXchange), … etc. I . 5 . 2 . 5 . Couche Session Elle établit une communication entre émetteur et récepteur en assurant l'ouverture et la fermeture des sessions (des communications) entre usagers, définit les règles d'organisation et de synchronisation du dialogue entre les abonnés. Exemple : RPC (Remote Procedure Call). I . 5 . 2 . 6 . Couche Présentation Elle met en forme les informations échangées pour les rendre compatibles avec l'application destinatrice, dans le cas de dialogue entre systèmes hétérogènes ( ex: code EBCDIC <--> ASCII ) . Elle peut comporter des fonctions de traduction, de compression, d'encryptage, ... etc. Exemple : XDR (eXternal Data Representation). I . 5 . 2 . 7 . Couche Application Cette couche ne contient pas l'"application" de l'utilisateur, mais réalise l'interface pour les fonctions de communication avec les applicatifs. Exemples : FTP (File Transfert Protocol), HTTP (HyperText Transfert Protocol), NFS (Network File System), SMTP (Simple Mail Transfert Protocol), DNS (Domain Name Service), TELNET, … etc … LT LA SALLE Avignon Page 9 / 79 ©TV.BTSii.2001 Réseaux TCP/IP I . 5 . 3 . Fonctionnement Une couche ne définit pas un seul protocole : elle définit une fonction de communication qui peut être pris en charge par un ou plusieurs protocoles différents. Par conséquent, n'importe quelle couche peut être constituée par plusieurs protocoles ou même par aucun protocole. On parle alors de couche vide. La couche supérieure se fie à la couche inférieure (on parle de services rendues) pour transférer les données. On traverse donc la pile en passant d'une couche à l'autre jusqu'à ce quelles soit transmises sur le réseau par la couche physique. sur le système distant, les données remontent la pile vers l'application réceptrice. On parle alors de mécanisme d'encapsulation/désencapsulation. PCI D ATA COUCHE N+1 SAP Interface COUCHE N PCI DATA SAP COUCHE N-1 SAP : Service Access Point Le principe de l'encapsulation est le suivant : le protocole d'une couche reçoit les données de la couche supérieure et rajoute un en-tête spécifique à son protocole (le PCI Protocol Control Information). Ce nouveau bloc forme alors les données qui seront passer à la couche suivante et ainsi de suite pour chaque couche intervenant dans la communication. La communication entre protocoles est alors transversale : seul le même protocole de la couche réceptrice correspondante pourra traiter et comprendre le PCI lors de la désencapsulation. LT LA SALLE Avignon Page 10 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Le cas particulier : TCP/IP Même si le modèle OSI est utile, les protocoles TCP/IP ne correspondent pas exactement à sa structure. Beaucoup de livres n'en tiennent pas compte et arrivent tout de même à placer les différents protocoles TCP/IP dans les sept couches du modèle OSI ! En fait, TCP/IP utilise un modèle à 4 couches : Modèle OSI Modèle TCP/IP Protocoles Application HTTP, FTP, … 4 Transport TCP, UDP 3 Internet IP, ICMP, ARP, RARP, … 5-6-7 1-2 Interface réseau Ethernet, Token Ring, ... Une autre décomposition, typiquement Unix : LT LA SALLE Avignon Page 11 / 79 ©TV.BTSii.2001 Réseaux TCP/IP I . 5 . 4 . Interconnexion L'interconnexion de deux réseaux d'architecture différente nécessite un équipement d'interconnexion spécifique. Là encore, le modèle OSI est utile pour comprendre le mécanisme d'interconnexion : Usager A Usager B Système 1 Système 4 7 7 Application 6 6 Présentation 5 Session 4 Transport 5 4 Système 2 Système 3 3 3 3 3 Réseau 2 2 2 2 Liaison 1 1 1 1 Physique Support physique d'interconnexion L'équipement d'interconnexion est nécessaire lorsque deux systèmes ont des couches différentes. L'interconnexion se fera jusqu'à une couche commune et définira le type d'équipement. Généralement, on distingue les équipement suivants : Le répéteur (repeater) qui n'apporte que des modifications de niveau physique. Le pont (bridge) qui apporte de modifications jusqu'au niveau liaison. Le routeur (router) qui apporte des modifications jusqu'au niveau réseau. La passerelle (gateway) qui peut apporter des modifications jusqu'au niveau application. LT LA SALLE Avignon Page 12 / 79 ©TV.BTSii.2001 Réseaux TCP/IP I . 5 . 4 . 1 . Le répéteur Il est utilisé pour raccorder deux segments de câbles ou deux réseaux identiques qui constitueront alors un seul réseau logique (extension de la distance). Il aura pour fonctions : la répétition des bits d'un segment sur l'autre la régération (amplification) du signal pour compenser l'affaiblissement éventuellement, le changement du support physique La trame n'est jamais modifiée lors de la traversée d'un répéteur. On utilise parfois le terme technique de transceiver. Le HUB Ethernet est un répéteur multi-ports. On considère un temps moyen de traversée de 0,3 µs par port. I . 5 . 4 . 2 . Le pont et commutateur (switch) Les ponts travaillent sur les trames MAC indépendamment des protocoles de niveau supérieur (IPX, TCP/IP, ...), donc le pont est transparent pour l’adressage des protocoles de niveau supérieur. Les principales fonctions d'un pont sont : Identifier les adresses MAC des stations présentes sur chaque segment ; Etablir et mettre à jour périodiquement une table de correspondance « adresse MAC / n° de port » ; Filtrer les trames en fonction des adresses MAC ; Retransmettre les trames de broadcast (trames de diffusion générale) et les trames d’adresses inconnues; Emettre des trames multicast (trames destinées uniquement aux ponts) . Deux méthodes permettent de résoudre les problèmes de boucle (transmission infinie de trame) ou de redondance (transmission dupliquée de trame) : l’algorithme du spanning tree ; le mécanisme de source routing (token ring). Le commutateur (ou switch), comme le pont, permet de segmenter des réseaux engorgés. De plus, il peut disposer de ports 10BASET et 100BASET. La différence essentielle entre pont et commutateur réside dans la bande passante offerte par le commutateur qui autorise plusieurs liaisons simultanées à 10Mbits/s ou 100 Mbits/s. L'utilisation classique d'un commutateur consiste à connecter les serveurs très sollicités directement sur un port du commutateur. Les stations de travail sont connectées à un concentrateur lui-même raccordé au commutateur. On peut alors utiliser des ports 100Mbits/s pour les liaisons vers les serveurs. Le commutateur peut fonctionner selon deux modes : par validation (temps de traversée de 100 à 500 µs) ou à la volée (temps de traversée de 40 à 50 µs). Les ponts, nécessitant un traitement plus important, possèdent des temps de traversée d'environ 800 µs. LT LA SALLE Avignon Page 13 / 79 ©TV.BTSii.2001 Réseaux TCP/IP I . 5 . 4 . 3 . Le routeur La technologie de routage s’appuie sur les protocoles de niveau 3 dans le modèle en couche OSI tels que IP, IPX ou Decnet. Les routeurs doivent donc analyser les données contenues dans les trames MAC, qui sont structurées différemment selon les protocoles. Un routeur est constitué de deux éléments essentiels : Une composante matérielle : un routeur dispose de ports appelés interfaces qui ont pour rôle de recevoir et de générer les trames aux formats adaptés à la topologie (trames MAC 802.3, 802.2, HDLC, etc.). Une composante logicielle très forte : les routeurs disposent d’un système d’exploitation souvent proche d’Unix. Chaque protocole est traité par un processus dédié. Plusieurs processus peuvent donc traiter différents paquets simultanément. La partie logicielle a pour tâche de router les paquets ou datagrammes, c’est-à-dire de déterminer vers quelle interface l'envoyer. L’adressage et le routage sont les deux concepts fondamentaux du routeur. En résumé, une adresse de protocole de niveau 3 est composée d’un numéro de réseau et d’un numéro de station au sein de ce réseau (par exemple, L3.5 signifie l’adresse d’une station n°5 présente sur le réseau logique L3). Le routage consiste à acheminer un paquet parmi plusieurs routes possibles sans que les stations émettrices et réceptrices aient une quelconque notion de la topologie des réseaux. En raison de leur fonctionnalité, le routeur (contrairement au pont) est généralement dépendant du protocole utilisé (TCP/IP, IPX de Novell, ...). Les fonctions assurés par le routeur sont : traiter et router les paquets des protocoles de niveau 3 ; assurer un contrôle de flux par priorité, par non-diffusion des broadcast MAC et par filtrage ; interconnecter toutes les topologies. On considère un temps de traitement moyen de 1800 µs pour un routeur classique. I . 5 . 4 . 4 . La passerelle La passerelle est un élément essentiel dans les installations informatiques mettant en œuvre plusieurs types de réseaux car elle constitue un dispositif de conversion complet (interconnexion de niveau 7 du modèle OSI). Ses fonctions sont : conversion de protocoles émulation de terminaux routage assemblage et désassemblage des paquets Remarques : Attention, dans le monde Internet, une passerelle (gateway) désigne une machine (souvent sous UNIX) réalisant la fonction de routeur IP. Inconvénients : Complexe, lent et cher, mais inévitable dans certains cas. LT LA SALLE Avignon Page 14 / 79 ©TV.BTSii.2001 Réseaux TCP/IP II . La couche Liaison (ou interface réseau) II . 1 . Ethernet II . 1 . 1 . Caractéristiques principales Mise au point dans les laboratoires de Palo Alto de la société XEROX, l'architecture Ethernet est maintenant la solution la plus utilisée pour interconnecter des machines en réseau local. Les caractéristiques principales sont : débit de 10Mbits/s et 100Mbits/s transmission bande de base, codage Manchester topologie en bus méthode d'accès CSMA/CD (IEE 802.3) longueur des trames comprises entre 64 et 1518 octets câbles de type coaxial, paire torsadée ou fibre optique (câblage bus ou étoile). gestion des couches 1 et partiellement 2 du modèle OSI Quelques normes de câblage Ethernet : Type Support Norme 802.3 Longueur max. d'un segment Nb max de transceivers par segment 100 Longueur max d'un câble transc. 50 m Distance min. entre deux transc. 2,5 m Ethernet Standard (Thick Ethernet) Ethernet fin (Thin Ethernet) Ethernet sur paires torsadées Coaxial 50 10BASE5 500 m (réseau : 2,5 Km) Coaxial 50 10BASE2 Paire torsadée 100 10BASET 185 m (environ 200 m) 100 m 30 50 m 0,5 m Equipements reliés sur HUB Câbles : UTP : câble à paire torsadée non blindées; FTP : câble à paire torsadée blindées; Catégorie 5 : acceptant le 100Mbits/s. LT LA SALLE Avignon Page 15 / 79 ©TV.BTSii.2001 Réseaux TCP/IP II . 1 . 2 . La trame 802.3 (FRAME 802.3) Le bloc d'information ou trame au niveau de la sous-couche MAC est le suivant : Préambule 7 octets Délimiteur de trame 1 octet Adresse destination 6 octets Adresse source 6 octets Longueur des données 2 octets Données FCS 46 à 1500 octets 4 octets Les informations de contrôle de cette trame sont : Le préambule, composé d'une succession de 0 et de 1, assure la synchronisation du récepteur sur la trame émise. Le délimiteur de trame permet de trouver le début du champ d'adresses (les 2 derniers bits émis sont à 1). On a tendance à considérer que le préambule fait 8 octets et qu'il ne fait pas partie de la trame : il n'est pas capturé par les analyseurs réseaux et on n'en tient logiquement pas compte dans le CRC. Les @ réseaux sont uniques et universelles et décomposables : XX-XX-XX -XX-XX-XX Spécifique au Fixé par le constructeur constructeur La longueur du champ de données sur 2 octets. Une somme de contrôle (Frame Check Sequence) calculée suivant un code de redondance cyclique (CRC). II . 1 . 3 . Les fonctionnalités d'Ethernet Elles correspondent aux couches 1 (PHYSIQUE) et 2 (sous-couche MAC) définies par la norme 802.3. Sous-couche MAC (Medium Access Control) : Elle gère l'accès au support selon les principes CSMA/CD et offre un ensemble de services à la sous-couche LLC (Logical Link Control). Fonction émission : Lire un paquet de données (fourni par LLC). Lire l'adresse de destination (transmise par LLC). Fabriquer la trame. Attendre l'indication d'absence de porteuse. Emettre la trame. Indiquer le succès de la transmission à LLC, ou Traiter la collision. LT LA SALLE Avignon Page 16 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Ces séquences sont répétées jusqu'à ce que toutes les données soient transmises. Pour cela, les paquets de données sont retirés de la file d'attente de LLC au fur et à mesure de la transmission des trames. Fonction réception : Lecture des trames. Décodage de l'adresse de destination. Comparaison avec l'adresse de la station. SI (les deux adresses sont identiques) ALORS - vérification du CRC - vérification de la longueur de trame - envoi d'un état de réception à LLC SI (CRC et la longueur sont valides) ALORS - communication des données à LLC - communication de l'adresse source à LLC Fonction traitement des collisions : Réception d'une indication de collision. Envoi d'une séquence de bourrage (JAM) pour prolonger la collision afin que toutes les stations en émission puissent la détecter. Retransmission de la trame après un délai d'attente aléatoire fonction de Tb. SI (le nb de tentatives de retransmission >= 16) ALORS - la retransmission est ajournée. - un rapport d'anomalie est communiquée à LLC. Le temps de base, Tb, correspond au temps de propagation aller et retour entre les deux stations les plus éloignés du réseau. Couche PHYSIQUE : Les fonctions réalisés, sur le support, par le transceiver sont les suivantes : émission et réception de signaux suivant le codage Manchester. détection de présence de signaux. détection de collisions : elle se fait par écoute du support. Lorsque la tension sur le câble est plus élevée que la tension maximale pouvant être générée par un seul transceiver, une collision est détectée (voir oscillogrammes). Horloge Signal Binaire Signal Codé Principe : Une opération XOR (ou exclusif) est réalisée entre l'horloge et les données, d'où une transition systématique au milieu de chaque bit du signal binaire. LT LA SALLE Avignon Page 17 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Le codage utilisé pour un réseau 100BASET est le 4B/5B sur NRZI : Exemple : soit la suite binaire : 111100101100, Valeur binaire Codée en 4b/5B LT LA SALLE Avignon 1111 11101 0010 10100 1100 11010 MSB MSB MSB LSB LSB LSB Page 18 / 79 ©TV.BTSii.2001 Réseaux TCP/IP II . 1 . 4 . Cas IEE : la sous-couche LLC Pour les normes IEEE 802, la sous-couche LLC (IEEE 802.2) est indépendante des trois implantations possibles de la sous-couche MAC qui sont : CSMA/CD (IEEE 802.3), Token Bus (IEEE 802.4) et Token Ring (IEEE 802.5). On connaît plusieurs types de trames pour les réseaux locaux Ethernet. Différence entre Ethernet_II et 802.3 : Couche Réseau fonction du DSAP DSAP SSAP CTRL fonction du champ type trame ETHERNET_II Données LLC Sous-couche LLC trame 802.3 @Dest. @source Type ou lg Données MAC Sous-couche MAC Couche Physique Le champ DSAP (Destination Service Access Point) 8 bits : permet de désigner le ou les protocoles de niveau supérieur auxquels seront fournies les données de la trame LLC. Le champ SSAP (Source Service Access Point) 8 bits : permet de désigner le protocole qui a émis la trame LLC. Valeur des SAP : SAP (hexa.) 0x00 SAP (déc.) 00 0x02 0x06 0x7E 0xE0 2 6 126 224 LT LA SALLE Avignon SAP (binaire) 0000 0000 0000 0010 0000 0110 0111 1110 1110 0000 Signification Equivalent Ethernet_II SAP nul Gestion de LLC Réseau IP X25 niveau 3 IPX Page 19 / 79 0x800 0x805 0x8137 ©TV.BTSii.2001 Réseaux TCP/IP II . 1 . 5 . La méthode d'accès CSMA/CD CSMA/CD (Carrier Sense Multiple Access / Collision Detection) est la méthode d’accès retenue pour les réseau locaux Ethernet. Voici l’algorigramme de fonctionnement de CSMA/CD : « LBT » Listen Before Talking ECOUTE DU CANAL TEMPO T NON CANAL LIBRE ? OUI EMISSION & ECOUTE DU CANAL ALGORIT. REPRISE « LWT » Listen While Talking NON COLLISION ? OUI ARRET EMISSION ENVOI JAM VERS TOUTES LES STATIONS LT LA SALLE Avignon Page 20 / 79 ©TV.BTSii.2001 Réseaux TCP/IP II . 1 . 6 . Le Round Trip Delay Un paramètre intervient pour la gestion correcte des collisions : la taille du réseau ou plus exactement le round trip delay (Tb). Il correspond au temps nécessaire : à la propagation d’une trame d’un bout à l’autre du réseau (propagation aller) ; à la détection d’une éventuelle collision à l’extrémité du réseau ; à la propagation en retour de l’information de collision (propagation retour) . La configuration maximale d’un réseau Ethernet 802.3 est de cinq segments et quatre répéteurs entre deux stations (la limitation de 4 répéteurs donne en fait le diamètre du réseau). La valeur théorique maximale du round trip delay est de 498.9 bits-times. La norme utilise en fait 512 bits-times (puissance de 2 supérieure). Le bit-time est l’unité de temps employé par la norme 802.3 et correspond au temps nécessaire à la représentation (émission) d’un bit sur un réseau à 10 Mbits/s. donc, le round trip delay de 512 bits-times donne 51.2 µs. Dans le cas d'un réseau à 100MBits/s, le RTD sera alors de 5,12 µs. Ce temps total est calculable à partir des performances minimales imposées par la norme à chaque équipement du réseau : cordon, transceiver, média et répéteur. Pour assurer une gestion correcte des collisions, il faut que le temps d’émission d’une trame Ethernet soit supérieur ou égal au round trip delay, ce qui définit donc une taille de trame minimum de 64 octets. Temps de propagation aller-retour des principaux éléments : cordon AUI câble 10BASE2 (thin) câble 10BASE5 (thick) fibre optique câble 10BASET (thick) transceiver répéteur 0,257 µs / 25 m 0,257 µs / 25 m 0,217 µs / 25 m 0,250 µs / 25 m 0,283 µs / 25 m 1µs (0,65 µs en récep. et 0,35 µs en émission) 1,6 µs (2 ports AUI) Autres paramètres : le délai minimum inter-trames (ou IFS) est de 9,6 µs soit 96 bits-times ; la taille du JAM (signal de renforcement de collision) est fixée à 32 bits (contenu quelconque). LT LA SALLE Avignon Page 21 / 79 ©TV.BTSii.2001 Réseaux TCP/IP II . 1 . 7 . Oscillogrammes LT LA SALLE Avignon Page 22 / 79 ©TV.BTSii.2001 Réseaux TCP/IP LT LA SALLE Avignon Page 23 / 79 ©TV.BTSii.2001 Réseaux TCP/IP LT LA SALLE Avignon Page 24 / 79 ©TV.BTSii.2001 Réseaux TCP/IP II . 1 . 8 . Echanges de trames II . 1 . 8 . 1 . Rappels L'échange de trames 802.3 est pris en charge par la couche LLC. LT LA SALLE Avignon Page 25 / 79 ©TV.BTSii.2001 Réseaux TCP/IP LT LA SALLE Avignon Page 26 / 79 ©TV.BTSii.2001 Réseaux TCP/IP II . 1 . 8 . 2 . Sous-couche LLC II . 1 . 8 . 2 . 1 . Définition La sous-couche LLC (Logical Link Control) repose sur la sous-couche MAC. La souscouche MAC contient des mécanismes (méthodes d'accès CSMA/CD, jeton) pour obtenir une exclusion mutuelle entre les stations qui partagent le même support (bus, anneau). Quand la station a gagné son droit à la parole, la sous couche LLC contrôle la transmission des données. Trois types de services de transmission sont offerts : LLC type 1 (sans connexion) : aucune fonction de contrôle d’erreur sur les trames n’est effectuée. La couche LLC aiguille les données vers les protocoles des couches de niveau 3. LLC type 2 (avec connexion) : en plus des fonctions d’aiguillage du type 1, un contrôle d’erreur du séquencement des données et du flux est effectué. Le protocole est identique à HDLC. LLC type 3 : ce mode de fonctionnement a été ajouté à la norme initiale pour les besoins des réseaux industriels. Il permet entre autre l’acquittement des trames et la réponse automatique. Le principe de fonctionnement de la sous-couche LLC est décrit dans le standard IEEE 802.2. Dans les réseaux locaux, le type 1 est principalement utilisé pour sa fonction d’aiguillage (voir Ethernet et Token Ring). En fait, tous les réseaux n’ont pas besoin de cette couche. Les réseaux Ethernet_II ne l’utilisent pas, l’aiguillage se fait en lisant le champ type de la trame MAC. Par contre, pour les réseaux IEEE 802.3 ce champ sert à coder la longueur utile de l’information et l’encapsulation LLC est nécessaire . II . 1 . 8 . 2 . 2 . Les trames LLC Le format d'une trame LLC est le suivant : DSAP 8 bits SSAP 8bits Contrôle 8 bits (LLC1) ou 16 bits (LLC2) DATA (vers la couche 3) Le champ DSAP (Destination Service Access Point) permet de désigner le ou les protocoles de niveau supérieur auxquels sont fournis les données de la trame LLC. Le champ SSAP (Source Service Access Point) permet de désigner le protocole qui à émit la trame LLC. Les champs DSAP et SSAP sont codés sur un octet, les 7 bits de poids forts servent à coder les adresses des différents SAP. Le 8° bit sert à indiquer une trame de commande (bit à 0) ou de réponse (bit à 1) pour une adresse SSAP ou à préciser si le SAP est unique (bit à 0) ou global (bit à 1) pour une adresse DSAP. LT LA SALLE Avignon Page 27 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Le champ contrôle contient l’information protocolaire. Il permet de typer les trames qui vont circuler et, dans le cas du protocole LLC type 2, de mettre un contrôle d’erreur et de séquencement. Les formats et mécanismes mis en œuvre sont similaires à ceux du protocole HDLC LAP-B (notons que la version LAP-D est utilisé sur le réseau RNIS ou ISDN ou Numéris pour l'appellation commerciale en FRANCE). Le champ contrôle est codé sur 1 octet pour les trames en datagrammes (trames Non Numérotées). Pour les trames de type I (Information) et S (Supervision) ce champ est codé sur 2 octets. Trois types de trames peuvent être définies : Les trames de type I transportent de l’information utile (des données de couche 3) en mode connecté. Les trames de type I contiennent deux compteurs. Le compteur N(S) numérote (modulo 128) les trames émises. Le compteur N(R) permet d’acquitter les trames reçues. Le compteur N(R) contient toujours le numéro de la prochaine trame attendue. 15 14 13 12 11 N(R) 10 9 8 P/F 7 6 5 4 N(S) 3 2 1 0 0 Les trames de type S ou Supervision permettent la gestion des trames d’information en mode connecté. Il existe 4 bits non utilisés dans le champ qui sont réservés à un usage futur. Dans les implémentations actuelles, ces bits sont à 0. Trois trames sont définies parmi les quatre valeurs possibles : RR (Receiver Ready). Cette trame permet d’acquitter les trames déjà reçues. Cette trame est utilisée quand le récepteur n’a pas de données à émettre. La trame RR permet aussi d’indiquer que le récepteur a de la mémoire disponible pour recevoir des trames (contrôle de flux). RNR (Receiver Not Ready). Cette trame est émise par le récepteur pour indiquer qu’il ne peut plus recevoir de trames (problème d’allocation des tampons de stockage). Le compteur N(R) indique toujours le numéro de la prochaine trame attendue. REJ (Reject) : Cette trame est utilisée par le récepteur quand le numéro de la trame attendue ne correspond pas à la trame reçue. Le compteur N (R) indique le numéro de la trame à partir de laquelle l’émetteur doit retransmettre. 15 14 13 12 11 N(R) N(R) N(R) 10 9 8 P/F P/F P/F 7 0 0 0 6 0 0 0 5 0 0 0 4 0 0 0 3 0 1 0 2 0 0 1 1 0 0 0 0 1 1 1 RR REJ RNR Les trames de type U ou non numérotées (Unnumbered) permettent de gérer une connexion (ouverture, fermeture) ou d’envoyer des données en mode datagramme. Les 7 premières trames sont utilisées par LLC type 2 et les 3 dernières par LLC type 1. LT LA SALLE Avignon Page 28 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Les trames S : 7 0 0 0 0 1 1 1 0 6 1 1 1 0 0 0 1 0 5 1 0 1 0 0 1 1 0 4 P P F F F P/F P/F F 3 1 0 0 1 0 1 0 0 2 1 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 LLC2 LLC1 SABME DISC UA DM FRMR XID TEST UI Les principales sont : DM : Disconnect Mode SABME DISC : Disconnected UA : Unumbered Acknowledgment FRMR : FRaMe Reject UI (Unnumbered Information) Indique à l'une des stations que la connexion est interrompue Etablissement de la liaison en mode connecté Commande de déconnexion Acquittement d'une commande de type DISC, SABME, ... Rejet définitif d'une trame utilisée en LLC 1 pour échanger des trames Information II . 1 . 8 . 2 . 3 . Echange de trames LLC Pour chaque trame, on indique le type (SABME, UA, RR ou I pour une trame d'information) et la valeur des différentes variables significatives (N(S), N(R) et P/F). Station A Station B Commentaires SABM, P=1 UA, F=1 I, N(S)=0, N(R)=0 I, 1, 0 RR, N(R)=2 I, 2, 0 I, 3, 0 I, 4, 0 REJ, N(R)=3 I, 3, 0 I, 4, 0 I, 0, 5 I, 1, 5 RR, N(R)=2 DISC, P=1 UA, F=1 Dans le cas ou l'une des stations n'émet pas de réponse suite à une commande (perte d'une trame I), différents compteurs et temporisateurs permettent le contrôle de l'échange. LT LA SALLE Avignon Page 29 / 79 ©TV.BTSii.2001 Réseaux TCP/IP II . 1 . 8 . 2 . 4 . La sous-couche SNAP II . 1 . 8 . 2 . 4 . 1 . Introduction L’intégration de piles de protocoles de niveau 3 et supérieures dans des réseaux conformes aux recommandations de l’IEEE, c’est-à-dire avec une sous-couche MAC et une sous-couche LLC, ne se fait pas sans peine. En effet, les protocoles de niveau 3 ont été à l’origine développés pour les réseaux Ethernet qui n’utilisent pas l’encapsulation LLC (ETHERNET_II). Le modèle de référence de l’ISO n’ayant pas été respecté. De plus, avec l’encapsulation LLC d’autres problèmes vont se poser : les SAP sont codés sur 7 bits. Il ne peut y avoir que 128 protocoles au dessus de LLC, ou seulement 64 si l’on ne considère que les adresses globales, en LLC type 1 la taille de l’entête est de 3 octets. L’extraction du champ donnée va poser des problèmes d’alignement qui réduisent les performances de la machine. Le protocole SNAP peut être utilisé pour résoudre ces problèmes. SNAP (Sub-Network Access Protocol) n’effectue aucun traitement sur les données. Il offre simplement une encapsulation supplémentaire qui se place entre la couche de niveau 3 et la sous-couche LLC. II . 1 . 8 . 2 . 4 . 2 . Format des trames Une entête de trame SNAP fait 5 octets, avec les trois octets d'en-tête de la sous-couche LLC, l’encapsulation totale fait 8 octets, ce qui résout les problèmes d’alignement. Les 5 octets codent : sur 3 octets l’Organizational Unit Identiper (OUI). Il s’agit en principe du code du vendeur fourni par l’IEEE que l’on retrouve au début des adresses MAC. En pratique ces octets sont toujours à 0. sur 2 octets le code du protocole. Ce champ utilise le même codage que la trame Ethernet pour coder les protocoles de niveau supérieur (RFC 1340). Un DSAP à 0xAA correspond à une trame SNAP. Le champ contrôle code une trame d'information en trame UI. LT LA SALLE Avignon Page 30 / 79 ©TV.BTSii.2001 Réseaux TCP/IP II . 1 . 8 . 3 . Protocole HDLC La procédure HDLC normalisée par l'ISO et le CCITT est définie pour des transmissions synchrones en semi-duplex ou duplex intégral sur des liaisons point à point ou multipoint. Toutes les informations transmises sont considérées comme des groupements binaires (procédure orientée bit) et donc indépendantes d'un codage particulier. Ce protocole a été largement dérivé pour être utilisé à la fois sur Transpac, Numéris mais aussi sur l'ensemble des réseaux locaux. Trois types de trames sont utilisées pour gérer la transmission ou échanger des informations : Trame I d'information contenant essentiellement des données (paquets envoyés par la couche réseau) et des indications sur l'état de la transmission. Trame S de supervision permettant la gestion des erreurs et du flux. Trame U non numérotée (Unumbered) permettant notamment l'établissement et la libération de la liaison. Trame d'information Fanion 01111110 Adresse 8 bits Commande 8 bits 7 6 5 4 N(R) Fanion 01111110 Trame de supervision Adresse 8 bits Trame U 3 2 1 0 P/F N(S) LT LA SALLE Avignon Contrôle 16/32 bits 3 2 1 0 P/F S S 0 1 7 6 5 4 3 2 1 M M M P/F M M 1 Contrôle 16/32 bits Fanion 01111110 N(R) : N° du bloc attendu en reception N(S) : N° du bloc émis P/F : invitation à émettre/fin de transmission 0 Commande 8 bits 7 6 5 4 N(R) Informations Fanion 01111110 N(R) : N° du bloc attendu en reception S : Type de commandes à utiliser en réponse P/F : invitation à émettre/fin de transmission 0 1 Page 31 / 79 M : Modification de la commande ©TV.BTSii.2001 Réseaux TCP/IP Les bits S permettent le codage de quatre types de trames de supervision : S S Symbole 0 0 RR : Receiver Ready 01 RNR : Receiver Not Ready 10 REJ : REJect 11 SREJ : Selectif REJect Description La station indique qu'elle est prête à recevoir la trame n° NR La station n'est pas prête à recevoir, mais elle confirme la bonne reception des trames jusqu'à n° NR-1 La station rejette les trames à partir du n° NR (erreur de transmission) Equivalent à REJ mais uniquement pour la trame n° NR Les bits M permettent le codage de 32 types de trames U, dont les principales sont : Champ Commande 000F1111 Symbole Description DM : Disconnect Mode Indique à l'une des stations que la connexion est interrompue SABM Etablissement de la liaison en mode LAPB DISC : Disconnected Commande de déconnexion UA : Unumbered Acquittement d'une commande de Acknowledgment type DISC, SABM, ... FRMR : FRaMe Reject Rejet définitif d'une trame 001P1111 010P0011 011F0011 101F0111 Exemple d'un échange : Station A Station B SABM, P=1 UA, F=1 Etablissement I, N(S)=0, N(R)=0 I, 1, 0 Transfert de 2 trames RR, N(R)=2 Acquittement des 2 trames DISC, P=1 UA, F=1 LT LA SALLE Avignon Libération Page 32 / 79 ©TV.BTSii.2001 Réseaux TCP/IP II . 2 . Token Ring II . 2 . 1 . Caractéristiques principales Développée par IBM et standardisée par l'IEEE, l'architecture Token Ring possède les caractéristiques suivantes : débits de 4Mbits/s et 16Mbits/s. transmission en bande de base, codage biphase différentiel (Manchester différentiel). topologie en anneau et câblage en étoile (utilisation d'interfaces multiports MAU). méthode d'accès suivant la norme 802.5 (jeton). longueur maximale des trames : 5000 octets. gestion des couches 1 et 2 du modèle OSI. Les éléments d'un réseau token ring : MAU (Medium Access Unit) : c'est l'élément qui permet de réaliser l'anneau. Les MAU sont connectés entre eux au moyen d'un port d'entrée RI (Ring In) et d'un port de sortie (Ring Out). Station de supervision (ou moniteur) : cette station, pouvant être confondue avec le serveur, a pour rôle l'initialisation et la surveillance du jeton. Toute les stations sont capables de jouer ce rôle. Câblage : plusieurs options existent, Type 1 : 2 paires torsadées blindées (4 ou 16 Mbits/s). Type 2 : 2 paires torsadées blindées + 4 paires torsadées non blindées (pour les communications RS232 et téléphoniques). Type 3 : câbles téléphoniques à paires torsadées non blindées. Type 5 : câble fibre optique pour l'interconnexion de MAU. Câble Type 1 ou 2 Type 3 Longueur max. de Nb max. de lobe noeuds 100 m 260 45 m 72 Nb max. de MAU 32 8 Débits 4 ou 16 Mbits/s 4 Mbits/s II . 2 . 2 . La trame 802.5 (Jeton sur anneau) Elle définit les règles de connexion et de contrôle d'accès à un support selon la méthode de l'anneau à jeton (Token Ring). LT LA SALLE Avignon Page 33 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Le bloc d'information défini par la norme 802.5 est le suivant : SD AC FC DA SA DATA Préambule Délimiteur Contrôle d'accès Contrôle trame Adresse destination Adresse source Données FCS ED FS FCS Délimiteur Etat de trame JK0JK000 PPPTMRRR BBxxxxxx JK1JK1IE AC..AC.. n octets 1 octet 1 octet 1 octet 2 ou 6 octets 2 ou 6 octets < 5000 2 octets 1 octet 1 octet Remarques : Le préambule est composé d'un nombre variable d'octets dont la durée de transmission est de 2 µs. Le champ SD indique le début de transmission d’une trame. Les bits J e1 K sont des codes particuliers du codage Manchester. Ces bits J et K, ne transportant pas d’information, permettent de délimiter sans ambiguïté le début et la fin de trame. Ils permettent aussi de donner la polarité de base du signal nécessaire pour le codage Manchester différentiel. Le champ AC de contrôle d'accès contient le jeton, les priorités de trame et de réservation. Il a le format suivant : Les bits PPP indiquent la priorité actuelle du jeton. Le bit T indique quand il est à 1 que le jeton est pris. Quand il est à 0 le jeton est libre. Une trame jeton libre se limite aux champs SD, AC et ED. Le bit M sert à la station de supervision pour marquer les trames et les empêcher de tourner indéfiniment. Les bits RRR servent aux autres stations pour demander une priorité plus élevée du jeton. Le champ FC définit le type des trames qui circulent. Les bits BB indiquent le type de trame : 00 pour le niveau MAC et 01 pour des trames LLC. Les autres valeurs possibles sont réservées. Le champ ED, en utilisant les symboles J et K, permet de déterminer la fin des données dans la trame. Deux bis sont utilisés à la fin : I indique que l'émetteur a une autre trame à émettre, E indique qu'une station des stations n'a pas reçu correctement la trame (mauvais CRC, etc …) Le champ FS d'état de la trame (Frame Status) permet les acquittmeents en indiquant si le destinataire a reconnu son adresse et copié les données : A indique que le récepteur a bien reconnu son adresse dans la trame, C confirme que les données ont été recopiées par la station. La trame qui transporte un jeton libre est de la forme SD-AC-ED (trois octets). A tout moment, un émetteur peut arrêter l'émission d'une trame en envoyant la séquence SD-ED. LT LA SALLE Avignon Page 34 / 79 ©TV.BTSii.2001 Réseaux TCP/IP II . 2 . 3 . Les fonctionnalités de Token Ring Les fonctionnalités Token Ring correspondent aux couches Physique et Liaison (MAC + LLC). Principe du jeton sur anneau : LT LA SALLE Avignon Page 35 / 79 ©TV.BTSii.2001 Réseaux TCP/IP La sous-couche MAC fournit des services à la sous-couche supérieure ainsi qu'un ensemble de services nécessaires à la gestion du réseau (gestion du jeton, émission et réception, gestion des priorités ...). Sous-couche MAC : La sous-couche MAC gère l'accès au support suivant la méthode du jeton sur anneau. La gestion de la boucle signifie la mise en place des fonctions permettant : - la création du jeton - la circulation du jeton et l'émission des données - le rétablissement du jeton en cas de perte - la gestion des priorités - la localisation des points de coupure de la boucle Les fonctions création/rétablissement du jeton ne sont assurés que si la station a le statut de superviseur. Couche Physique : La norme définit au niveau de la couche physique : - le type de codage et de transmission de l'information - les règles de raccordement au support - la synchronisation de la boucle Les informations sont codées en Manchester différentiel. Les délimiteurs de trames utilisent pour les bits J et K un codage particulier. Principe : Une transition systématique est réalisée au milieu de chaque bit. Pas de transition pour coder un bit à 1, une transition pour coder un bit à 0. Horloge Signal Binaire 1 0 1 1 0 J K 1 0 0 0 1 Signal Codé LT LA SALLE Avignon Page 36 / 79 ©TV.BTSii.2001 Réseaux TCP/IP LT LA SALLE Avignon Page 37 / 79 ©TV.BTSii.2001 Réseaux TCP/IP II . 3 . Protocole PPP Le protocole PPP (Point to Point Protocol) a été spécifié pour les besoins de connexion TCP/IP au réseau Internet à partir de liaisons modem. Ce protocole permet de réaliser une connexion IP via le réseau RTC, et aussi gérer l'attribution automatique d'adresse, multiplexer des protocoles de niveau 3, compresser les données et détecter les erreurs. Aujourd'hui, le champ d'application de PPP est étendu aux protocoles IPX et Decnet et propose une alternative au protocole HDLC pour les réseaux longues distances interconnectant des routeurs. Le protocole PPP supporte les liaisons point à point asynchrones ou synchrones utilisent pour cela : HDLC pour encapsuler les datagrammes; LCP (Link Control Protocol) pour établir, configurer et tester la liaison; NCP (Network Control Protocol) pour sélectionner et configurer les différents protocoles de niveau 3 comme IP, IPX, Decnet qui peuvent être multiplexés sur une même liaison. Couche Physique : Les interfaces physiques supportées sont : RS232, RS422 et V34. La seule contrainte imposée par PPP est une liaison série full duplex. Couche Liaison : La couche liaison de PPP utilise les principes, la terminologie et la structure des trames HDLC avec les particularités suivantes : Adresse : champ non utilisé (FF) Contrôle : contient toujours la valeur 03 soit une trame d'information UI avec le bit P/F à 0. On trouve un champ Protocole (2 octets), considéré comme une extension, qui indique le type de protocole de niveau 3 présent dans le champ données, par exemple : Valeur hexadécimale 0021 0027 0029 002B Protocole IP Decnet Appletalk IPX Données : contient les données limitées à 1500 (comme pour Ethernet). FCS : sur 16 bits ou 32 bits (après négociation). Dans la version asynchrone (RS232), chaque octet est transmis avec un bit de start et un bit de stop. Le bit de parité est inutile puisque la détection d'erreurs est réalisée par le FCS. LT LA SALLE Avignon Page 38 / 79 ©TV.BTSii.2001 Réseaux TCP/IP III . La couche Internet III . 1 . Rappels sur TCP/IP et le modèle OSI TCP/IP désigne en réalité une famille de protocoles (près d’une centaine). TCP/IP a servi de base à l'établissement de la norme OSI (Open System Interconnection), mais il n'a pas été retenu comme normalisation officielle. Il reste cependant le plus utilisé dans le monde des réseaux sous Ethernet et UNIX. D’autre part il est le protocole standard d’Internet. Structure de TCP/IP par rapport au modèle OSI : Le principe de l'encapsulation : TCP Entête 24 Données IP Entête 24 Données Trame Ethernet_II @ dest @ srce Type CRC Données TCP/IP sous Ethernet Destination LT LA SALLE Avignon Source Type (0800) Data IP header IP Data TCP header TCP Data FTP header FTP Data Page 39 / 79 CRC ©TV.BTSii.2001 Réseaux TCP/IP III . 2 . Adressage IP IIII . 2 . 1 . IPv4 Le format des adresses suit la topologie des réseaux à interconnecter. On distingue quatre classes, avec les format suivants : 0 Réseau (7 bits) Adresse de classe A Adresse station (24 bits) Masque : 255.0.0.0 10 Réseau (14 bits) Adresse de classe B Adresse station (16 bits) Masque : 255.255.0.0 110 Réseau (21 bits) Adresse de classe C Adresse station (8 bits) Masque : 255.255.255.0 1110 Adresses Multicast (28 bits) Adresse de classe D 1111 Format Indéfini (28 bits) Classe des adresses étendues (E) Les adresses sur 32 bits sont exprimées par octet (soit quatre nombres compris entre 0 et 255). Les différentes classes d'adresses correspondent donc à des nombres appartenant aux plages suivantes : - classe A : à - classe B : à - classe C : à classe D : ces adresses désignent un ensemble de machines voulant partager la même adresse et ainsi participer à un même groupe, appelé multicast . classe E : elle est en réserve pour les évolutions futures d’IP. Remarques : La valeur 255.255.255.255 est utilisée pour une diffusion générale (broadcast). La valeur 0 est utilisée pour les machines ne connaissant pas leur adresse. La valeur 127 est réservée pour un usage spécifique interne (loopback). Si le réseau local possède une connexion vers Internet, il faudra utiliser des adresses réservées, comme par exemple : 10 . 0 . 100 . x ou 192 . 168 . 0 . x. La partie réservée pour l'adresse de la station (host) ne doit pas utiliser les adresses 0 et 1. LT LA SALLE Avignon Page 40 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Une adresse IP avec tous les bits host à zéro identifie le réseau lui-même. L’adresse 193.75.199.0 renvoie à toute l’adresse de classe C du réseau 193.75.199. Ces adresses contenant des zéros sont utilisées dans les tables de routage pour désigner des réseaux entiers. Des adresses avec des zéros peuvent être utilisées comme adresses source, jamais comme adresses de destinations. Une adresse IP avec tous les bits host à un est une adresse broadcast ou à diffusion dirigée. Un datagramme envoyé à cette adresse est réexpédié à tous les membres de ce réseau. L’adresse broadcast du réseau 26 est 26.255.255.255. Une adresse broadcast est toujours une adresse de destination, jamais une adresse source. Une partie de l'adresse de la station (host) peut être utilisée pour adresser des sousréseaux (sub-network). Dans ce cas, il faudra adapter le masque. En pratique, il y a 2 types d'adresse : l'adresse logique de niveau 3 (ex : @ IP sur 4 octets) et l'adresse physique de niveau 2 (ex : @ MAC sur 6 octets). On utilisera les protocoles ARP et RARP pour la correspondance. Il est impossible à des périphériques disposant de numéros de réseaux différents de communiquer directement : ils doivent passer par les services d'un routeur. C'est ainsi que des stations de travail séparés uniquement par un pont ou un répéteur ou HUB auront la même classe d'adresses logiques tandis que des stations de travail séparés par un routeur auront des numéros réseaux différents. III . 2 . 2 . IPv6 La répartition d’adresses réseau en classes commencent déjà à poser de sérieux problèmes. Avec la numérotation actuelle baptisée IPv4, il n'est possible d'adresser que 2 100 000 réseaux ou un total de 3 720 000 000. Les adresses de classe A sont très rares et ne sont jamais attribuables par les instances régionales. Toutes les adresses de classe A et B sont pour l'instant utilisées. Il faut convaincre l'IANA (Internet Assigned Numbers Authority) de la réelle nécessité d'acquérir une telle adresse. La plupart des organisations réclament des adresses de classe B de peur d’être limités par 255 adresses. En outre, avec une classe C, on dispose de trop peu de bits pour découper le réseau en un grand nombre de sous-réseaux. Comme il n’y a que 16382 adresses de classe B disponibles et qui partent comme des petits pains, il est déjà nécessaire de revoir la norme IP pour accroître le nombre d’adresses IP. La saturation complète de l'adressage IPv4 actuel est prévu entre 2005 et 2011. Un deuxième problème est la saturation des tables de routage qui croissent plus vite que la technologie des mémoires propres à les contenir. Ce sera la norme IPv6 et ses adresses IP codée sur 128 bits qui sera retenue pour pallier ces deux problèmes. Fin 1994, l'Internet Engineering Task Force s'est mis d'accord sur la norme IP Next Generation alias IPng alias IPv6. IPv6 supportera jusqu'à 1 milliard de réseaux. LT LA SALLE Avignon Page 41 / 79 ©TV.BTSii.2001 Réseaux TCP/IP IPv6 apporte plusieurs améliorations à la norme IPv4 : Les stations de travail sont auto configurées déterminant leur propre adresse réseau et adresse hôte. IPv6 est prévu pour coexister avec IPv4. Un réseau IPv6 peut supporter un nombre illimité d'hôtes. Une adresse IPv6 peut contenir une adresse IPv4 Configuration automatique de périphériques portables se déplaçant sur le réseau. Le découpage hiérarchique des adresses pour fournir un routage efficace à de grandes régions géographiques. Le support d'adresses de destination 'unicast', 'multicast' et 'anycast'. L'adressage 'anycast' définit une région topologique. Il est pensé pour réduire le trafic d'un réseau en utilisant une adresse de destination qui désigne le groupe le plus proche de machines. L'adresse est représentée comme huit valeurs hexadécimales de 16 bits séparés par des doubles points du type 5D54:352A:1235:B357:8283:2CDE:C00D:FCB2. Des groupes de zéros contigus peuvent être représentés par un double "::" comme suit: CF76:0:0:0:0:0:0:27 devenant CF76::27. Une ancienne adresse IPv4 de type d.d.d.d devient automatiquement x:x:x:x:x:x:d.d.d.d Les 48 derniers bits peuvent accueillir l'adresse MAC complète d'une carte réseau. 0:0:0:0:0:0:0:0 devient une "unspecified address" L'adresse loopback n'est plus 127.0.0.1 mais 0:0:0:0:0:0:0:1 Le header a été simplifié pour réduire la bande passante requise par le protocole. Une nouvelle fonction "flow labelling" permet de spécifier les besoins en performance d'une transaction donnée. Des extensions supportent l'authentification et la confidentialité des données. Version Priority Flow label Payload length Next header Hop Limit Source IP Address Destination IP Address Les champs de la nouvelle en-tête sont : Version (4bits) valeur fixée à 6 Flow label : permet à un routeur de fournir un niveau de service à une collection de datagrammes Payload length indique la longueur en octets du datagramme suivant l'en-tête. Next header permet de créer des datagrammes de longueur d'en-tête variable comme c'est le cas lorsqu'il y a alternance de paquets TCP ou UDP. Hop limit a la même fonction que l'ancien champ TTL (Time To Live) la valeur étant décrémentée de 1 par chaque routeur, un paquet étant écarté lorsque cette valeur atteint 0. Parallèlement à IPv6, un nouveau ICMPv6 complète l'actuel Internet Control Message Protocol avec des types de 0 à 127 pour les messages d'erreur et 128 à 255 pour les messages d'information. De même un DNS for IPv6 renvoie des adresses IPv6 aux nœuds qui utilisent déjà ces services. Enfin, RIPng est chargé de l'échange d'informations de routage concernant des stations IPv6. RIPng utilise le protocole ICMPv6 pour découvrir et annoncer de nouveaux routeurs. LT LA SALLE Avignon Page 42 / 79 ©TV.BTSii.2001 Réseaux TCP/IP III . 3 . Le protocole IP Le protocole IP (Internet Protocol) est un protocole de niveau réseau. IP est un protocole connectionless. Cela signifie qu’il n’échange pas de contrôle d’information, de handshake avant d’établir une connexion point à point par opposition aux protocoles connection-oriented qui vérifient que le système distant est prêt à recevoir des données. IP ne contient aucune détection d’erreur et aucun mode de récupération de données. Les principales fonctions assurées par le protocole IP sont : la la le la définition des datagrammes (paquets) définition du schéma d’adressage Internet routage des datagrammes vers les hôtes distants fragmentation et le réassemblage des datagrammes III . 3 . 1 . Format du paquet IP Le format unique du paquet IP, ou datagramme IP, est organisé en champs de 32 bits : 0 7 15 16 31 Version Type de service Longueur Longueur totale Identificateur Drapeau Position du fragment Durée de vie TTL Protocole Checksum de l'en-tête Adresse station source Adresse station destinatrice Options éventuelles Bourrage Données 64 KO Le champ Version (4 bits) identifie la version du protocole IP. Elle est fixée actuellement à 4. Un champ Internet Header Length ( 4 bits) spécifie la longueur de l’en-tête en mots de 32 bits. Cette longueur IHL varie de 5 à 15, 5 étant la longueur normale lorsqu'aucune option n'est utilisée. Le champ "type de service" ( 8 bits) définit la priorité du paquet et le type de routage souhaité. Cela permet à un logiciel de réclamer différents types de performance pour un datagramme : délai court, haut débit, haute fiabilité ou bas prix. Le champ "longueur totale" (16 bits) définit le nombre d'octets contenus dans le paquet y compris l'en-tête IP. Puisque ce champ est codé sur 16 bits, un paquet IP est de maximum 65535 octets (64 KO). Le champ "Identification" (16 bits) contient une valeur entière utilisée pour identifier les fragments d'un datagramme. Ce champ doit être unique pour chaque nouveau datagramme. "Flags" ( 3 bits) est utilisé pour contrôler la fragmentation des paquets. Le bit de poids faible à zéro indique le dernier fragment d'un datagramme et est baptisé "more flag" ou MF bit. Le bit du milieu est appelé "do not fragment flag" ou DF bit. Le bit de poids fort n'est pas utilisé. LT LA SALLE Avignon Page 43 / 79 ©TV.BTSii.2001 Réseaux TCP/IP "Offset" (13 bits) sert à indiquer la position qu'occupait les données de ce fragment dans le message original. Le TTL ou "Time To Live" (8 bits) est l'expression en secondes de la durée maximale de séjour du paquet dans un réseau. Il existe 2 manières de faire baisser cette valeur : lors du réassemblage du paquet dans un routeur, sa valeur est décrémentée chaque seconde ou alors chaque routeur qui traite ce paquet décrémente le TTL d'une unité (compteur de routeurs). Si le TTL devient nul, son paquet IP n'est plus relayé : c'est souvent l'indication d'une erreur de paquet qui boucle. Une utilisation détournée de ce champ permet de tracer la route empruntée par un paquet. En mettant le champ TTL à 0, le premier routeur rencontré rejette le paquet et signale sa présence en retournant un paquet ICMP d'erreur vers l'émetteur. On renvoie alors le paquet avec le champ TTL à 1 afin d'atteindre le routeur suivant et ainsi de suite. A chaque fois, on récupère l'adresse IP du routeur. Le champ "protocole" ( 8 bits) identifie la couche de transport propre à ce datagramme : 17 pour UDP 6 pour TCP 1 pour ICMP 8 pour EGP 89 pour OSPF Le checksum ou champ de contrôle de l'en-tête ( 16 bits) contient le "complément à un" du total "en complément à un" de tous les mots de 16 bits de l'en-tête. L'adresse IP source est codée sur 32 bits L'adresse IP de destination est également codée sur 32 bits A la rubrique "Options", sont stockées des demandes spéciales pour requérir un routage particulier pour certains paquets. Le champ "padding" est habituellement bourré de 0 de manière à aligner le début des données sur un multiple de 32 bits. IP délivre un datagramme en vérifiant l’adresse de destination contenu dans l'en-tête. Si l’adresse de destination fait partie du réseau local, le paquet est remis directement sinon le paquet est transmis à un gateway. La décision d’emprunter tel ou tel gateway est appelée routage. On parle souvent abusivement de routeurs IP pour des gateways Internet parce qu’ils utilisent le protocole IP pour router des paquets entre réseaux. Dans l’acception TCP/IP, il n’y a que deux types de périphériques réseau : les hosts et les gateways. Les gateways transmettent des paquets entre réseaux, les hosts pas. Conclusion : Le protocole IP est un protocole sans connexion, non fiable (sans acquittement et sans détection/correction d'erreur). III . 4 . Autres protocoles de niveau 3 III . 4 . 1 . ARP (Address Resolution Protocol) et RARP Les réseaux physiques qui véhiculent du TCP/IP répondent à d’autres schémas d’adressage et il est indispensable de recourir à des protocoles capables de transformer une adresse IP en une adresse physique de réseau. C’est le cas par exemple d’ARP ou Address Resolution Protocol qui se charge de la conversion IP vers Ethernet et son schéma d’adressage MAC. Ce mécanisme est transparent pour l'utilisateur. LT LA SALLE Avignon Page 44 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Une table de conversion est générée dynamiquement sur chaque hôte dans ce qu'on appelle l'"ARP cache". Quand Arp reçoit une demande de conversion, il consulte sa table et retourne l’adresse Ethernet si elle s’y trouve sinon il envoie un paquet spécial ARP Request Packet à tous les hôtes Ethernet incluant l’adresse IP à rechercher en utilisant l'adresse broadcast MAC 0xFFFFFFFFFFFF. La machine correspondant lui répond en lui renvoyant son adresse Ethernet qui est alors placée dans la table ARP. Si aucune réponse n'est reçue dans un délai imparti, la requête est envoyée à nouveau. Le contenu de la cache est généralement conservé jusqu'à l'extinction de la machine hôte. Les datagrammes ARP ne passent pas à travers les routeurs, qui relaient des informations au niveau de la couche IP mais pas du trafic broadcast MAC. Les données de la table ARP peuvent être visualisées ou modifiées via l’utilitaire arp. C:\>arp -a Interface: 199.199.40.123 Internet Address Physical Address 199.199.40.1 00-00-0c-1a-eb-c5 199.199.40.124 00-dd-01-07-57-15 Type dynamic dynamic Interface: 10.57.8.190 Internet Address Physical Address 10.57.9.138 00-20-af-1d-2b-91 Type dynamic arp -s permet l’addition d’une entrée statique dans la table. C:\>arp -s 10.57.10.32 00-60-8c-0e-6c-6a 10.57.8.190 C:\>arp -a Interface: 199.199.40.123 Internet Address Physical Address 199.199.40.1 00-00-0c-1a-eb-c5 199.199.40.124 00-dd-01-07-57-15 Type dynamic dynamic Interface: 10.57.8.190 Internet Address Physical Address 10.57.9.138 00-20-af-1d-2b-91 10.57.10.32 00-60-8c-0e-6c-6a Type dynamic static La suppression d’une entrée se réalise par l’option arp -d C:\>arp -d 10.57.10.32 C:\>arp -a Interface: 199.199.40.123 Internet Address Physical Address 199.199.40.1 00-00-0c-1a-eb-c5 199.199.40.124 00-dd-01-07-57-15 Interface: 10.57.8.190 Internet Address Physical Address 00-20-af-1d-2b-91 dynamic LT LA SALLE Avignon Type dynamic dynamic Type Page 45 / 79 ©TV.BTSii.2001 Réseaux TCP/IP ARP a été conçu pour fonctionner avec n'importe quel protocole, cela implique l'utilisation d'un format de paquet souple. Le "paquet" ARP est encapsulé dans une trame Ethernet avec l'adresse de diffusion générale (broadcast) et le numéro de protocole désignant un paquet ARP (0x806). Les champs spécifiques à ARP sont : 0 8 16 24 id espace d'adresse physique id espace d'adresse logique lg @ physique lg @ protocole code @ physique émetteur … @ physique émetteur. @ protocole émetteur … @ protocole récepteur. @ physique récepteur … @ physique récepteur. @ protocole récepteur. 31 id espace d'@ physique : la valeur est 1 pour Ethernet ; id espace d'@ logique : indique le protocole pour lequel on cherche l'adresse (0x800 pour IP) ; lg @ physique : 6 pour Ethernet ; lg @ protocole : 4 pour IPv4 ; code : définit la signification du paquet, soit : 1 pour une demande 0 pour une réponse Les champs suivants ont une taille variable (ici j'ai pris le cas classique @ MAC Ethernet et @ IP). Il existe un certain risque lié à l'utilisation du protocole ARP si une machine non fiable a accès au réseau et émet de faux messages ARP pour imiter une machine ou détourner tout le trafic vers elle-même afin d'en modifier les données (ARP spoofing). De plus, les cartes réseaux acceptent maintenant un mode dit PROMISCUOUS qui leur permet d'accepter toutes les trames. Ce fonctionnement est intéressant pour les analyseurs réseaux ou des passerelles mais offre aux pirates un autre moyen de sniffer un réseau. RARP pour Reverse ARP réalise la même conversion mais dans le sens MAC vers IP. Ce protocole est par exemple utilisé pour configurer des stations diskless afin qu’elles obtiennent automatiquement une adresse IP. Les noeuds du réseau agissant comme serveurs RARP qui trouvent une correspondance IP pour une adresse MAC dans leurs tables renvoient cette adresse IP sous forme de réponse RARP. LT LA SALLE Avignon Page 46 / 79 ©TV.BTSii.2001 Réseaux TCP/IP LT LA SALLE Avignon Page 47 / 79 ©TV.BTSii.2001 Réseaux TCP/IP III . 4 . 2 . ICMP (Internet Control Message Protocol) Le protocole ICMP utilise les datagrammes IP pour transporter ses messages. C’est par son biais que sont réalisés : le contrôle de flux : le récepteur débordé par un émetteur trop rapide, envoie un message ICMP Source Quench pour arrêter temporairement l’émission la détection de destinations inaccessibles dénoncée par un message Destination Unreachable la redirection de routes pour avertir une machine hôte d’utiliser un autre gateway. ICMP fournit d'intéressantes données pour le diagnostic d'opérations du réseau. ICMP utilise des datagrammes IP pour véhiculer des messages aller-retour entre noeuds concernés. Un message d'erreur ICMP est généré par une machine hôte réalisant qu'il y a un problème de transmission et renvoyé à l'adresse de départ du datagramme ayant provoqué le problème. Destination Source Type (0800) Data IP header IP Data CRC ICMP Type Code ... Une en-tête ICMP est codée sur 32 bits, 8 pour le type, 8 pour le code dont la signification dépend du type et 16 pour le contrôle/checksum. Le paquet ICMP, encapsulé dans un pâque IP (dont le champ protocole vaut 1 pour ICMP) , a la structure suivante : 0 7 15 23 code checksum … données complémentaires (n° id et n° seq) … type 31 entête internet et données émises dans le paquet ICMP Le champ donnée complémentaire est divisé en deux champs de 16 bits contenant : un numéro d'identification du paquet (pour distinguer 2 ping simultanément) ; un numéro de séquence pour mesurer les temps aller et retour sur le réseau et les pertes. Le protocole ICMP (Internet Control Message Protocol -- RFC 792) est utilisé notamment par la commande ping qui : emet un paquet ICMP "demande d'écho" (type=8 et code=0) et reçoit, si la machine distante est active (alive), un paquet ICMP "réponse d'écho" (type=0 et code=0). LT LA SALLE Avignon Page 48 / 79 ©TV.BTSii.2001 Réseaux TCP/IP La liste de messages "type" définis par les RFC 792 et 1256 sont : 0 3 4 5 8 9 10 11 12 13 14 15 16 17 18 Réponse d'écho Destination inaccessible Source Quench Redirection Echo request Annonce de routeur Sollicitation de routeur TTL expiré Problème de paramètre Requête Horodatage Réponse d'horodatage Demande d'information Réponse d'information Requête de masque d'adresse Réponse de masque d'adresse 0-8 Les messages ICMP les plus courants sont le couple de type 0 et 8 générés par le programme de test "ping". Ping envoie un datagramme de type 8 (echo request) à un noeud dont il attend en retour un message de type 0 (echo reply) renvoyant les données incluses dans la requête. 3 Quand le "type" est par exemple 3 pour destination inaccessible, le "code" précise si c'est le réseau, l'hôte, le protocole ou le port qui sont inaccessibles. 0 1 2 3 4 5 7 11 12 13 14 15 Network unreachable Host unreachable Protocol unreachable Port unreachable Fragmentation needed and do not fragment bit set Source route failed Destination Host unknown Network unreachable for type of service Host unreachable for type of service Communication administratively prohibited Host precedence violation Precedence cut-off in effect 4 Un datagramme Source Quench est identique à celui du type Destination Unreachable. Il sert à contrôler un flux d'informations. Si un routeur détecte que son réseau ou son processeur ne peut suivre le débit d'une machine hôte émettrice, il envoie à celle ci un message ICMP incluant la cause du dépassement de capacité. 0 Redirect datagram to go to that network 1 Redirect datagram to reach that host 2 Redirect datagram for that network with that TOS 3 Redirect datagram for that host with that TOS LT LA SALLE Avignon Page 49 / 79 ©TV.BTSii.2001 Réseaux TCP/IP 5 Le datagramme Route change request est utilisé par les routeurs qui connaissent une meilleure route pour atteindre une destination particulière. 9-10 Le Router discovery protocol permet à un système d'être averti dynamiquement de la présence de tous les routeurs disponibles immédiatement sur un réseau LAN. Les messages de type 9, router advertisement, permettent à des routeurs de s'annoncer sur un réseau à intervalles de 7 à 10 minutes suite à un message de type 10, router sollicitation, émis par une machine hôte. 11 Le message Time exceeded for datagram utilise un datagramme identique à celui du type Destination Unreachable. Un routeur l'utilise pour signaler à la machine source que la valeur TTL (Time To Live) d'une en-tête IP a été décrémentée jusqu'à la valeur d'expiration 0, ce qui revient à dire que le paquet a été écarté probablement à cause d'une boucle infinie dans le routage. 12 Le message ICMP Parameter Problem indique qu'un argument invalide a été utilisé dans le champ Options d'une en-tête IP. 13-14 Le type ICMP 13 pour Time Stamp Request et 14 pour Time Stamp Reply sont utilisés pour interroger l'horloge d'un système distant afin de s'y synchroniser ou récolter des informations statistiques. 15-16 Les messages Information Request est envoyé pour obtenir l'adresse réseau d'une machine hôte donnée. C'est la méthode utilisée par le protocole SLIP (Serial Line IP) pour allouer une adresse IP à la machine appelante. 17-18 Les messages Address Mask Request sont utilisés parallèlement à l'adressage en sous réseau pour découvrir le masque de sous-réseau d'une machine hôte. Certains pirates utilisent ICMP pour couper des connexions : d'anciens programmes gérant ICMP coupent toutes les connexions à une machine X s'ils reçoivent de cette machine X un message d'erreur ICMP : Destination unreachable. D'autres utilisent les messages de redirection ICMP pour créer de nouvelles routes vers une destination. LT LA SALLE Avignon Page 50 / 79 ©TV.BTSii.2001 Réseaux TCP/IP IV . La couche Transport IV . 1 . Introduction Le protocole IP permet de mettre en correspondance 2 machines grâce à leurs adresses. Ce mécanisme n’est pas complet, puisque la communication s’effectue au niveau des processus (programmes) qui tournent sur ces machines. Il faudra donc identifier quels sont les processus des machines qui veulent communiquer. C’est le rôle de la couche Transport d’assurer la transmission de bout en bout. TCP/IP propose 2 protocoles : UDP (User Datagram Protocol) et TCP (Transmission Control Protocol). UDP et TCP offrent un système de numéro de port pour permettre à 2 processus distants d’échanger des messages. Actuellement, l’interface la plus utilisée sous TCP/IP est l’interface socket. Les sockets sont apparues au début des années 80 à l’université de Berkeley dans le noyau de leur système d’exploitation BSD Unix. Une socket est un point de communication par lequel un processus peut émettre et recevoir des informations (« boîte aux lettres »). Ce point de communication devra être relié à une adresse IP et un numéro de port. IV . 2 . Caractéristiques TCP fournit un service de transfert : fiable (détection et correction d’erreurs) avec élimination des paquets dupliqués; en mode connecté avec contrôle de flux et segmentation et séquencement des paquets ; UDP fournit un service de transfert : non fiable (détection mais pas de correction des erreurs) avec risque de duplication de paquets ; en mode non connecté sans segmentation des données et sans séquencement des paquets ; UDP fournit donc un service plus performant mais moins sûr que TCP. De plus le trafic UDP est prioritaire sur le trafic TCP. En effet, le protocole TCP possède un mécanisme de contrôle de congestion, dans le cas où l'acquittement d'un paquet arrive après un temps trop long. Ce mécanisme adapte la fréquence d'émission des paquets TCP. Le protocole UDP ne possède pas ce mécanisme et occupera toute la bande passante en cas de fort trafic n'en laissant qu'un infime partie à TCP. Il existe différents types de dénis de service (DOS) utilisant les protocoles TCP et UDP. On peut citer le SYN flooding qui affecte une machine cible ou l'UDP flooding qui peut entraîner la paralysie complète d'un réseau. LT LA SALLE Avignon Page 51 / 79 ©TV.BTSii.2001 Réseaux TCP/IP IV . 3 . Principe d’un échange TCP La fiabilité de la transmission est assurée par un mécanisme baptisé Positive Acknowledgement with Re-transmission (PAR). PAR envoie données sur données jusqu’à ce qu’il soit averti de la bonne arrivée des données. Le handshake se fait en trois phases (Three Way Handshake) : 1 . Une machine A initialise la connexion en envoyant un segment incluant un SYN (Synchronize sequence numbers) et un numéro de séquence x. 2 . La machine B lui répond par un segment avec les drapeaux SYN et ACK (Acknowledgement) avec un numéro d'acquittement x+1. Son numéro de séquence vaut y. 3 . La machine A envoie alors les données en même temps que le flag ACK et le numéro d'acquittement y+1. Une même procédure en trois phases clôture une connexion via le flag FIN ou “No more data from sender”. Ouverture d’une connexion On appellera client la station qui demande l’ouverture de la connexion et serveur la station qui répond à cette demande. Le client demande une ouverture active de la connexion ce qui se traduit par l’émission de messages sur le réseau. Transfert de données Le protocole TCP comptabilise les octets transmis. Le champ seq indique la place du premier octet de données du paquet et ack le prochain octet attendu par l’émetteur du paquet. Contrôle de flux Le champ fenêtre indique la largeur de la fenêtre de transmission ou le crédit accepté par le récepteur. Fermeture d’une connexion La fermeture d’une connexion se fait quand le récepteur reçoit une trame dont le bit FIN est positionné à 1. LT LA SALLE Avignon Page 52 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Les numéros de SEQ indiquent le prochain octet attendu. Si le bit SYN est positionné, le n° de SEQ contient une valeur (Initial Sequence Number) initialisée par une horloge locale (un compteur est incrémenté toutes les 4 ms). La n° de SEQ étant sur 32 bits, la durée avant que le compteur revienne à zéro est d'environ 5 heures. Client Serveur accepte toutes les connexions Demande d’ouverture « Active open » Open ID nom local de la connexion « unspecified passive open » Open Id nom local de la connexion SYN 55 ACK 56 SYN 202 Ouverture réussie « Open success » ACK 203 Envoi de 10 octets SYN 202 : synchronisation des membres et indique la valeur initiale de SEQ Ouverture réussie « Open success » PSH ACK seq : 56 acq : 203 Envoi de 10 octets ACK 56 : indique le n° de SEQ attendu du prochain segment ACK seq : 203 acq : 66 ACK seq : 66 acq : 223 PSH ACK seq : 223 acq : 76 Indication de 22 octets, etc … Envoi de 20 octets Indication de 10 octets Envoi de 2 octets Indication de 10 octets Demande de déconnexion FIN ACK ACK Confirmation de déconnexion FIN ACK ACK LT LA SALLE Avignon Page 53 / 79 Indication de déconnexion ©TV.BTSii.2001 Réseaux TCP/IP IV . 4 . Format de l’en-tête TCP 0 déplacement 7 15 23 port source port destinataire numéro de séquence (seq) numéro d’accusé de réception (ack) réservé Id. de contrôle fenêtre Checksum pointeur d’urgence Options éventuelles Bourrage 31 Données Les différents champs de l'en-tête sont : Source Port (16 bits) Destination port (16 bits) Sequence Number (32 bits) compte les octets du flux de transmission de manière à identifier la position du premier octet de données d'un segment dans le flot des données initiales Acknowledgment Number (32 bits) contient le n° de séquence du prochain octet attendu Offset le déplacement en mots de 32 bits du début des données de l'application. La valeur par défaut est 5 Flags : URG Urgent Pointer vers des données urgentes ACK Acknowledge Field PSH Push Flag pour passer immédiatement les données à la couche application RST Reset Flag force la clôture d'une connexion après une erreur irrécupérable. SYN Synchronize Flag pour synchroniser le démarrage d'une connexion entre deux noeuds. FIN pour terminer une connexion Window (16 bits) annonce le nombre d'octet que le récepteur peut accepter. Le checksum ou champ de contrôle de l'en-tête (16 bits) contient le "complément à un" du total "en complément à un" de tous les mots de 16 bits de l'en-tête. Urgent Pointer ( 16 bits ) pointe à la fin d'un champ de données considéré comme urgent Options ( longueur variable ) ne comporte qu'une possibilité : le MSS ou Maximum Segment Size désignant la taille maximum du segment à envoyer. Le champ "padding" est habituellement bourré de 0 de manière à aligner le début des données sur un multiple de 32 bits. Le protocole TCP découpe les données trop volumineuse pour être acceptées par IP : c’est la segmentation. Le protocole TCP/IP permet de s'affranchir des protocoles d'accès au support. Il est incorporé dans les systèmes Unix, Netware et Windows95 et NT. LT LA SALLE Avignon Page 54 / 79 ©TV.BTSii.2001 Réseaux TCP/IP IV . 5 . Format d’un datagramme UDP UDP permet à une application d’envoyer des messages à une autre application avec un minimum de fonctionnalités (pas de garantie d’arrivée, ni de contrôle de séquencement). UDP n’accepte pas de datagramme de taille supérieure à 8KO. UDP permet simplement d’utiliser les numéros de port et de ce fait de se mettre au même niveau que TCP. Format d’un message UDP : 0 7 port source longueur 15 23 port destinataire Checksum 31 Données Comme UDP est un protocole peu fiable (pas de correction d'erreur, pas de détection de perte de paquets) il est plus aisé pour un "hacker" de modifier des paquets UDP que TCP. Sans numéro de séquence ou échange de salutation, il est simple d'y substituer une adresse IP source qui ne devra jamais servir à authentifier une connexion. IV . 6 . Aiguillage Pour une interface réseau installée, on considère que les couches 1 et 2 sont alors uniques. Par contre, à partir de la couche 3, il est possible de posséder plusieurs protocoles par couche. L'aiguillage vers le protocole concerné se fait à partir d'un champ contenu dans l'en-tête : il est renseigné dans la phase d'encapsulation, puis lu et traité dans la phase de désencapsulation. L'aiguillage au niveau 2 a déjà été traité précédemment. Pour les protocoles de la couche Application, ils sont identifiés par un numéro de port, au niveau socket. Une socket identifie de manière unique un processus réseau ou daemon. On rappelle qu'une socket est la combinaison d'une adresse IP et d'un numéro de port de la couche Transport. LT LA SALLE Avignon Page 55 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Exemple : TELNET port 23 TCP protocole 6 IP 192.168.1.1 En-tête IP 6 En-tête TCP 192.168.1.1 23 Source 192.168.1.2 Destination 192.168.1.1 Port source : 3044 Port destination : 23 client Port source : 23 Port destination : 3044 serveur IV . 7 . Résolution d'adresses On considère le réseau suivant : poste1 192.168.1.1 00 40 61 00 03 2A poste2 192.168.1.2 00 C0 6C 45 01 80 serveur 192.168.1.254 00 0E 0A 00 04 EB Les postes viennent d'être démarrés, donc leurs tables arp sont vides. Un utilisateur du poste1 tape la commande suivante : $ telnet poste2 LT LA SALLE Avignon Page 56 / 79 ©TV.BTSii.2001 Réseaux TCP/IP En ne s'intéressant qu'aux champs adresses, la trame émise par encapsulation ressemblerait à ça : Trame MAC PCI DATA 00 40 61 00 03 2A ??? @ MAC source @ MAC dest … PCI 192.168.1.1 ??? … @ IP source @ IP dest FCS Le poste1 est incapable de renseigner les champs @ MAC et @ IP destination, il n'a que le nom de la machine. Un mécanisme de résolution d'adresse est donc nécessaire pour trouver la correspondance : nom <-> @ IP ; @ IP <-> @ MAC. La correspondance entre un nom et une adresse IP peut notamment être résolu soit par le fichier hosts, stocké localement sur la machine, soit en ayant recours à un serveur de noms (DNS) : Soit le poste 1 tient à jour son fichier hosts avec tous les noms et adresses IP, soit il ne conserve qu'une seule adresse IP : celle du serveur DNS (dans notre exemple 192.168.1.254). Cette deuxième solution est souvent utilisée. La correspondance entre une adresse IP et une adresse MAC est réalisée par l'intermédiaire du protocole ARP (et RARP). On va détailler ici l'échange : poste1 veut envoyer une requête au serveur DNS pour avoir l'adresse IP de la machine de nom poste2. Mais, il doit d'abord obtenir l'adresse MAC du serveur DNS : il va donc émettre une requête ARP en utilisant une adresse MAC de broadcast (diffusion générale). Trame MAC : REQUETE ARP (demande) PCI DATA 00 40 61 00 03 2A FF FF FF FF FF FF @ MAC source @ MAC dest … 192.168.1.1 PCI 192.168.1.254 @ IP source … FCS @ IP dest La machine serveur reçoit la trame, reconnaît son adresse IP et répond à la requête ARP en donnant son adresse MAC : 00 0E 0A 00 04 EB. Trame MAC : REQUETE ARP (réponse) PCI DATA 00 0E 0A 00 04 EB 00 40 61 00 03 2A @ MAC source @ MAC dest LT LA SALLE Avignon … 192.168.1.254 @ IP source Page 57 / 79 PCI 192.168.1.1 … FCS @ IP dest ©TV.BTSii.2001 Réseaux TCP/IP poste1 peut maintenant émettre une requête DNS vers serveur pour demander l'@ IP de poste2 : Trame MAC : REQUETE DNS (demande) PCI DATA 00 40 61 00 03 2A 00 0E 0A 00 04 EB @ MAC source @ MAC dest … 192.168.1.1 PCI 192.168.1.254 @ IP source … FCS @ IP dest serveur lui renvoie l'@ IP de poste2 : Trame MAC : REQUETE DNS (réponse) PCI DATA 00 0E 0A 00 04 EB 00 40 61 00 03 2A @ MAC source @ MAC dest … 192.168.1.254 PCI 192.168.1.1 @ IP source … FCS @ IP dest poste1 consulte sa table ARP à partir de l'@ IP de poste2. Il ne possède pas son @ MAC, il va donc faire une requête ARP pour l'obtenir : Trame MAC : REQUETE ARP (demande) PCI DATA 00 40 61 00 03 2A FF FF FF FF FF FF @ MAC source @ MAC dest … PCI 192.168.1.1 192.168.1.2 @ IP source @ IP dest … FCS poste2 reconnaît son @ IP et répond à la requête ARP en donnant son adresse MAC : 00 C0 6C 45 01 80. Trame MAC : REQUETE ARP (réponse) PCI DATA 00 C0 6C 45 01 80 00 40 61 00 03 2A @ MAC source @ MAC dest … PCI 192.168.1.2 192.168.1.1 @ IP source @ IP dest … FCS poste1 a maintenant l'@ MAC et l'@ IP de poste2 : il peut lui envoyer une trame contenant un segment TCP de demande de connexion sur le port 23 … Trame MAC : demande de connexion TCP PCI DATA 00 40 61 00 03 2A 00 C0 6C 45 01 80 @ MAC source @ MAC dest LT LA SALLE Avignon … Page 58 / 79 PCI 192.168.1.1 192.168.1.2 @ IP source @ IP dest … FCS ©TV.BTSii.2001 Réseaux TCP/IP L'échange peut se représenter de la manière suivante : poste1 192.168.1.1 00 40 61 00 03 2A poste2 192.168.1.2 00 C0 6C 45 01 80 émet une requête ARP pour obtenir l'@ MAC de serveur serveur 192.168.1.254 00 0E 0A 00 04 EB reconnaît son @ IP et renvoie son @ MAC émet une requête DNS pour obtenir l'@ IP de poste2 répond à la requête DNS en donnant l'@ IP de poste2 émet une requête ARP pour obtenir l'@ MAC de poste2 La résolution d'@ est terminée et la connexion TCP peut commencer … LT LA SALLE Avignon reconnaît son @ IP et renvoie son @ MAC Page 59 / 79 ©TV.BTSii.2001 Réseaux TCP/IP V . Couche Application V . 1 . Protocole HTTP V . 1 . 1 . Présentation L’HyperText Transfer Protocol (HTTP) est un protocole de niveau application, léger et efficace, pour la transmission de documents distribués et multimédia. Le protocole HTTP 1.0 est décrit dans la RFC 1945. Ce protocole fixe le principe de communication entre un logiciel de navigation Web (communément appelé ”navigateur” ou « browser » ou « client » ) et un serveur Web (souvent appelé httpd, d pour daemon sous Unix ). C'est l'épine dorsale du World Wide Web (WWW). Le principe de communication est simple : La communication s’initie TOUJOURS à la demande du client. Celui ci s’adresse à un serveur caractérisé par une adresse IP ou son nom, sur un port connu, le plus souvent le port 80, mais cela n’a rien d’obligatoire. Une connexion TCP s’établit. Le client envoie une requête au serveur et ce dernier lui renvoie une réponse correspondant à sa requête. þ Le serveur clôt la connexion une fois la totalité de la réponse émise. Nous allons maintenant détailler une requête et une réponse HTTP 1.0. V . 1 . 2 . Requête HTTP Le format d’une requête HTTP est le suivant : Ligne de commande En-tête de la requête [ligne vide] Corps de la requête La ligne de commande possède elle même trois champs : commande, URL et version. Le premier champ, commande, contient une des commandes définies dans le protocole HTTP. Les principales commandes sont les suivantes : GET : demande au serveur de renvoyer le contenu de l’information pointée par l’URL spécifiée dans la ligne de commande. Il peut s’agir d’un simple fichier HTML ou multimédia (image, son, ...), voire le compte rendu de l’exécution d’un programne CGI. HEAD : cette commande est similaire à la précédente mais le serveur ne renvoie que l’en-tête associé à la ressource demandée (par exemple, la date de dernière modification d’un fichier, ...). LT LA SALLE Avignon Page 60 / 79 ©TV.BTSii.2001 Réseaux TCP/IP POST : permet au client d’envoyer des données au serveur, comme par exemple le contenu d’un formulaire renseigné par l’utilisateur. Ces données constituent le corps de la requête. Autres Méthodes Actions PUT DELETE LINK UNLINK OPTIONS envoie une information au serveur à des fins de stockage supprime la ressource URL établit une relation entre deux URL supprime cette relation requête d'informations pour connaître les options disponibles Le deuxième champ de la ligne de commande est une URL. Elle désigne en fait la ressource sur laquelle on désire appliquer la commande spécifiée dans le champ précédent. Cette URL peut aussi bien désigner un fichier statique (HTML, son, ...) ou un programme CGI . Une URL bien formée ressemble à ceci : http://host[:port]/chemin/file.ext (Le numéro de port par défaut est 80). Le dernier champ, version, contient la version du protocole HTTP implémenté dans le client considéré. La syntaxe est la suivante : HTTP/version. Exemple : HTTP/1.0 Etudions maintenant l’en-tête associé à la requête exprimée dans la ligne de commande que nous venons de décrire. Il faut tout d’abord savoir que cet en-tête est optionnel. D’ailleurs, une simple requête ne contenant qu’une commande HTTP et une URL est parfaitement utilisable. Sa structure est la suivante : chaque ligne de l’en-tête comporte un nom de champ (field name), suivi du caractère ”:” et d’une valeur (field value). Chaque ligne est séparée de la suivante par les caractères CRLF. Voici quelques champs fréquemment utilisés dans les requêtes HTTP : Content-Encoding : indique l’encodage MIME utilisé par le client dans la requête courante, Content-Length : spécifie la longueur du corps de la requête, en octets, Content-Type : indique le type d’encodage MIME utilisé pour coder le corps de la requête. Celui utilisé pour transmettre les données html brutes (qui ne sont que du texte) est : Content-Type : text/html From : permet d’envoyer au serveur l’adresse E-MAIL définie dans les préférences du navigateur, If-Modified-Since : est utilisé pour spécifier une date. Ce champ permet au navigateur de ne demander au serveur l’envoi d’un document que si celui-ci a été modifié depuis cette date. User-Agent : permet quant à lui d’indiquer au serveur le nom et la version du navigateur utilisé. Cela peut permettre au serveur d’adapter sa réponse en fonction des caractéristiques du navigateur utilisé. Après l’en-tête optionnel, la requête peut contenir un corps, lui aussi optionnel, comportant un certain nombre d’informations dont le format de codage est précisé dans l’en-tête que nous venons de décrire. Le corps ou body, séparé de l’en-tête par une ligne vide, n’est en réalité utilisé que lorsqu’on envoie une requête de type POST. LT LA SALLE Avignon Page 61 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Exemple de requête : GET /index.html HTTP/1.0 If-Modified-Since : Sunday, 11-May-1997 19:33:11 GMT User-Agent : Mozilla/3.0 (WinNT) Ici, on demande l’envoi de la page index.html du serveur sur lequel on est connecté à condition que cette page ait été modifiée depuis le 11 Mai 1997. De plus le client transmet des informations concernant son navigateur. V . 1 . 3 . Réponse HTTP Etudions maintenant la structure d’une réponse HTTP : Ligne de statut En-tête [ligne vide] Corps La ligne de statut d’une réponse HTTP comprend trois champs : version, code_réponse, texte_réponse. Le premier de ces champs est, comme pour une requête, la version du protocole HTTP utilisé. Le deuxième, code_réponse, indique si la requête qui a généré cette réponse a pu être traitée correctement par le serveur. Code Réponse 10x 20x 200 201 202 203 30x 40x 50x Signifiacation Messages d'information. non utilisé Messages indiquant que la requête s'est déroulée correctement Requête OK Requête OK. Création d'une nouvelle ressource (cmd POST) Requête OK mais traitement en cours Requête OK mais aucune information à envoyer (corps vide) Messages spécifiant une redirection Erreur due au client Erreur due au serveur Les codes les plus souvent rencontrés sont : 200, indiquant que la requête s’est déroulée correctement, 304, spécifiant que la page demandée n’a pas été modifiée depuis la dernière consultation et 404, indiquant que la ressource demandée n’existe pas. Le troisième, texte_réponse qui correspond à la signification du message ci-dessus est généralement ajouté par le serveur. Examinons maintenant l’en-tête d’une réponse. La structure de celui-ci est la même que celle d’une requête. Voici quelques champs que l’on peut rencontrer dans l’en-tête d’une réponse, en sachant que certains de ceux que nous avons vus pour une requête restent valables pour l’en-tête d’une réponse : Date : indique la date de génération de la réponse, Expires : spécifie la date d’expiration de la ressource demandée, LT LA SALLE Avignon Page 62 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Location : contient la nouvelle URL associée au document demandé, lors d’une redirection (codes 30x), Server : précise le nom et la version du serveur ayant envoyé la réponse. Comme pour une requête, le corps de la réponse est séparé de l’en-tête par une ligne vide. Le corps ou body contient en fait le document demandé. Cela peut être un fichier HTML simple ou un fichier binaire quelconque, dont le type sera précisé dans l’en-tête par le champ Content-Type. Exemple de réponse : HTTP/1.0 200 OK Date : Sunday, 11-May-1999 19:33:14 GMT Server : Apache/1.1 Content-Type : text/html Content-Lenght : 65 Last-Modified : Sunday, 11-Ma -1999 10:54:42 GMT <HTML><body> Bienvenue sur notre site...... </body> /HTML> Le langage HTML ne permet pas à lui seul de créer des documents dynamiques ou interactifs capables par exemple d’indiquer la date du jour ou de donner le résultat d’une requête sur une base de données. La programmation CGI (Common Gateway Interface) a pour but de construire un document HTML dynamique correspondant à la demande spécifique du client. Le document est envoyé au client au fur et à mesure de sa construction par le serveur. V . 1 . 4 . HTTP et CGI Le client indique le nom d’un fichier à l’aide d’une URL, non pour recevoir son contenu, mais pour demander son exécution au serveur. Ce dernier exécute le programme indiqué et renvoie au client la sortie standard de ce programme (c’est à dire ce que l’on aurait obtenu à l’écran en lançant le programme par une ligne de commande). Pour pouvoir être exécutés à distance, les exécutables CGI doivent être installés sur le serveur dans un répertoire appelé /cgi-bin. Tout langage ayant une sortie standard peut être utilisé pour écrire des programmes CGI (C/C++, Java, Perl le plus souvent). L’interface CGI permet au client d’envoyer au serveur des données saisies par l’utilisateur. Ces données constituent des arguments d’entrée pour le programme à exécuter. Elles sont codées selon le format suivant : nom_champl=valeurl&nom_champ2=valeur2... où chaque couple (nom du champ, valeur de saisie) est séparé par un ’&’ et où nom du champ et valeur de saisie sont séparés par un ’=’. De plus, cette chaîne est URL-encodée: les espaces y sont remplacés par des ’+’ et les caractères spéciaux par leur valeur hexadécimale sous le format ’%xx’. Exemple : NOM=de+la+Maisonneuve&PRENOM=Ren%NE9 LT LA SALLE Avignon Page 63 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Une fois la chaîne des données construite, elle est envoyée au serveur selon la méthode GET ou POST de HTTP. Avec la méthode GET, la syntaxe d’une URL est la suivante : http://www.site.fr/cgi-bin/nomExecutable?nom=Dupont&pr%E9nom=Ren%E9 Après le mot clef cgi-bin on trouve le nom du programme exécutable, puis un point d’interrogation ”?” suivi de la liste des couples (nom,valeur) encodée. Si on utilise la méthode POST, l’URL a la syntaxe suivante : http://www.site.fr/cgi-bin/nornExecutable et les données sont envoyées dans le corps de la requête HTTP correspondante. Comparaison : Avec la méthode GET, les informations sont stockées dans l’URL d’appel du script. Il est alors possible de mémoriser cette URL complète dans un bookmark afin de pouvoir exécuter ultérieurement le script avec un certain nombre d’arguments. Cependant. la longueur des données ainsi transférées est limitée. De plus, il est impossible d’envoyer de cette manière des informations sensibles comme un mot de passe, car elles apparaîtraient en clair à l’écran, dans l’URL... La méthode POST de HTTP résout les problèmes évoqués ci-dessus car aucune information n’est passée via l’URL. V . 1 . 5 . Les codes réponses 100 Continue : le traitement est en cours et le client doit transmettre le reste de sa requête 101 Switching Protocols version HTTP 200 OK 201 Created - l'URL a été créée directement. Suite à une commande POST, la réponse consiste en un URI par lequel le document créé est identifié 202 Accepted - l'URL sera créée ultérieurement. La requête a été acceptée pour traitement mais ce dernier n'a pas été finalisé. 203 Non-Authoritative Information. Information partielle en réponse à une commande GET 204 No Content - traitement réussi mais aucune information à envoyer au client. Le serveur a bien reçu la requête mais n'a pas d'informations à renvoyer. C'est généralement le cas lorsqu'un script doit être exécuté sans que le document ne soit modifié. 205 Reset Content - le client doit recharger le document 206 Partial Content 300 Multiple Choices - La ressource réclamée existe sous plusieurs formes 301 Moved Permanently. Les données demandées ont été déplacées et ont reçu un nouvel URI, cette modification étant permanente 302 Moved Temporarily. Les données réclamées ont été trouvées bien qu'elles soient définies sous un autre URL temporaire LT LA SALLE Avignon : changement de Page 64 / 79 protocole, passage à une autre ©TV.BTSii.2001 Réseaux TCP/IP 303 See Other - l'URL demandé peut être trouvé à un autre endroit. Suggère que le programme client utilise une autre adresse URL mais également une autre méthode 304 Not Modified - le document réclamé via un GET conditionnel n'a pas changé depuis sa dernière transmission. Le document a été trouvé mais n'a pas été modifié depuis la date précisée dans le champ "If-ModifiedSince". 305 Use Proxy 400 Bad Request - La requête est de syntaxe incorrecte ou impossible à exécuter. 401 Unauthorized - accessible uniquement après authentification 402 Payment Required. Le client doit recommencer sa requête en précisant dans son en-tête la mention "ChargeTo". 403 Forbidden. L'utilisateur n'est pas autorisé à consulter ce document. 404 Not Found. L'URL est valide mais ne réside pas sur le serveur 405 Method Not Allowed. Méthode de requête non autorisée. 406 Not Acceptable. Requête non acceptée. 407 Proxy Authentication Required. Autorisation proxy nécessaire. 408 Request Time-out. Temps d'attente pour accéder à l'URL a expiré. 409 Conflict 410 Gone 411 Length Required 412 Precondition Failed 413 Request Entity Too Large 414 Request-URI Too Large 415 Unsupported Media Type 500 Internal Server Error. Le serveur a rencontré une condition non prévue qui l'empêche d'exécuter la requête 501 Not Implemented. Le serveur ne supporte pas la fonction demandée 502 Bad Gateway. Mauvaise passerelle d'accès. 503 Service Unavailable. Le serveur ne peut provisoirement répondre à la demande suite à un trafic important 504 Gateway Time-out. Apparaît lorsque le serveur, à son tour, fait appel à un service extérieur qui ne répond pas dans les délais impartis 505 HTTP Version not supported LT LA SALLE Avignon Page 65 / 79 ©TV.BTSii.2001 Réseaux TCP/IP V . 2 . Le protocole FTP FTP désigne à la fois un programme et le protocole qu’il utilise, le File Transfer Protocol. Son rôle est de transférer des fichiers d’un ordinateur à l’autre. Il existe des centaines d'applications FTP en mode texte ou en mode graphique. Toutes respectent à peu près les mêmes conventions. La première opération est d’ouvrir une connexion avec un site distant en précisant son nom ou son adresse IP. La façon la plus simple est de faire passer ce nom dans la ligne de commande : $ftp bigbrother.btsii.net ou ftp 10.0.100.254 Ou bien de lancer le programme FTP et à l’invite de commande, taper la commande : ftp> open bigbrother.btsii.net La deuxième étape consistera à communiquer votre nom et votre mot de passe à la machine distante. Si vous disposez d’un compte sur la machine, laissez votre nom d’utilisateur et votre mot de passe pour disposer de droits plus importants. Sinon vous pourrez toujours vous connecter sous le nom “anonymous” et laisser votre adresse email comme mot de passe. Pour recommencer la procédure de login, vous pouvez utiliser la commande user suivie du nom d’utilisateur. Pour transférer les fichiers, deux commandes sont à retenir : get pour downloader ou rapatrier un fichier vers votre machine, put pour uploader ou envoyer un fichier vers le site distant. La syntaxe est identique dans les deux cas : put/get fichier_source fichier_destination. Avant de transférer un fichier, il vous faudra préciser à votre machine si le transfert doit s’opérer en mode texte ou en mode binaire. Pour cela, utilisez les commandes ASCII et BINARY. Pour naviguer dans le répertoire arborescent de fichiers, vous disposez des commandes dir et ls pour afficher le contenu du répertoire courant. Pour obtenir un catalogue complet et récursif des fichiers ainsi que leurs attributs, utilisez la commande ls -LR. Le passage d’un répertoire à l’autre s’opère comme sur MS-DOS ou Unix avec la commande cd. Enfin, les commandes bye ou quit permettront de sortir du programme ftp. La plupart des navigateurs World Wide Web peuvent aussi être utilisés pour des transferts de fichiers via FTP. Il suffit de spécifier comme Universal Resource Locator la commande : ftp://ftp.site/nom_du_fichier ou ftp://user:[email protected]/nom_du_fichier. LT LA SALLE Avignon Page 66 / 79 ©TV.BTSii.2001 Réseaux TCP/IP La liste des commandes envoyées par le programme client FTP au serveur FTP sont les suivantes : Command USER es PASS useridpwd ACCT CWD dir CDUP QUIT PORT TYPE sockettype RETR file STOR file DELE file RMD dir MKD dir LIST dir NLST dir STAT HELP Description Identification de Mot de passe utilisateur l'utilisateur Informations sur le Change compte Working Directory Changement répertoire Fin parent Port à utiliser Type definition Retrieve a File Store a File Delete a File ReMove Directory MaKe Directory Directory Listing Directory Listing pour Status programmes Aide Le serveur FTP répond à ces requêtes par des séquences de nombres de trois chiffres et leur signification sous forme de texte, comme suit 15 20 0 22 0 22 0 23 6 33 0 55 1 0 File status OK, about to open data connection Command OK Service Ready Closing data connection User logged in, proceed User name OK, need password Access denied Nous noterons au passage que le serveur FTP utilise deux ports, 21 pour le contrôle des données et 20 pour le transfert de ces mêmes données. En cas de requête de transfert d'informations, un message de contrôle est envoyé sur le port 21 tandis qu'une connexion logique séparée est construite sur le port 20. De nombreux serveurs FTP ont des failles ou sont mal configurés ce qui rend disponible le fichier de passwords à tout le monde via le compte anonymous, par exemple. V . 3 . TFTP Le TFTP (Trivial File Transfer Protocol) est un programme aux fonctionnalités réduites désigné pour être aisément implémenté dans des mémoires permanentes telles les EPROM. Il est principalement utilisé pour permettre à des stations sans disque dur de télécharger sur le réseau la portion initiale d'un système d'exploitation. Il est alors utilisé en conjonction avec un protocole de boot comme BOOTP. TFTP est également utilisé sur les routeurs lorsqu'il faut y télécharger une version plus récente d'une couche logicielle. TFTP n'utilise pas TCP mais UDP. Il doit donc gérer son propre mécanisme de correction d'erreurs. Pour cela, il utilise un simple protocole d'acquittement basé sur un time out. Si un datagramme s'égare, l'émetteur reçoit un time out et réémet. LT LA SALLE Avignon Page 67 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Un datagramme en TFTP est de 512 octets. S'il est plus petit que 512 octets, c'est qu'il s'agit du dernier paquet de la transmission d'un fichier. La requête initiale d'un client TFTP est émise sur le port 69 qui va renvoyer une nouvelle adresse de port pour la suite des transactions. La principale fonction de TFTP est d'agir comme protocole "bootstrap". Ses exigences mémoire minimales, son emploi d'UDP en font un programme idéal pour charger sur des EPROMS de cartes réseau. Au démarrage d'une machine avec une telle EPROM, le protocole TFTP est automatiquement initialisé pour se connecter à un serveur et y télécharger les programmes nécessaires à son exploitation. V . 4 . BOOTP BOOTP permet à une machine incapable de stocker sa propre adresse IP ou les couches TCP/IP nécessaires à sa connexion réseau d'envoyer un message broadcast sur le réseau et d'obtenir ces informations manquantes d'un serveur BOOTP. Un serveur BOOTP est à l'écoute des requêtes BOOTP et renvoie des réponses à partir d'une table de configuration (bootptab) reprenant l'ensemble des caractéristiques des machines clients BOOTP du réseau. BOOT protocol OP Hops Transaction id Seconds Unused flags Client IP address Your IP address Server Ip address Gateway IP address Client hardware add (16b) Server Host name (64 b) Boot file name (128 b) Vendor specific (64b) HTYPE HLEN Les en-têtes de datagrammes BOOTP sont envoyés sous forme de datagramme UDP du port 68 d'un client vers le port 67 du serveur. Un client BOOTP doit juste être capable de compléter le champ d'en-tête mentionnant son adresse MAC : OP (1 HTYPE (1 HLEN (1 HOPS (1 Transaction id ( 4 et réponse Seconds (2 processus de boot LT LA SALLE Avignon octet ) octet ) octet ) octet ) octets ) 1 = BOOT Request 2 = BOOT reply type de réseau ( 1 = 10 Mbps) longueur des adresses hardware ( 6 = 10 Mbps Ethernet) utilisé par les gateways lors d'un boot cross-passerelle numéro de transaction pour faire correspondre requête octets ) nombre de secondes écoulées depuis le démarrage du Page 68 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Unused/flags ( 2 octets ) inutilisé puis modifié par la RFC 1542 pour ajouter un drapeau BROADCAST Client IP address ( 4 octets ) Rempli par le client s'il connaît son adresse IP Your IP address ( 4 octets ) Rempli par le serveur si le client ne connaît pas son adresse IP Server IP adress( 4 octets ) renvoyée sous forme de BOOTREPLY par le serveur Gateway IP address ( 4 octets ) utilisé par les gateways lors d'un boot crosspasserelle Client hw address ( 16 octets ) l'adresse hardware du client ( par exemple son adresse MAC Ethernet) Server host name ( 64 octets) nom du serveur terminé par un caractère nul Boot file name ( 128 octets ) un chemin complet plus un nom de fichier renvoyé par le serveur comme BOOTREPLY et terminé par un caractère nul. Vendor specific ( 64 octets ) Les requêtes client BOOTP sont émises avec une adresse source 0.0.0.0 et une adresse de destination fixée à 255.255.255.255 ce qui permet au TCP/IP d'émettre un broadcast du datagramme BOOTP sur tout le réseau local. Soit un serveur BOOTP est présent sur cette portion de câble et il répond à la requête, soit un routeur décide de faire passer ces requêtes vers l'extérieur ou non. BOOTP a ses inconvénients par exemple de réclamer une configuration manuelle de tables de configurations sur le serveur. Si une machine avec une adresse MAC x est transférée sur une autre portion de réseau, la table de correspondance adresse MAC adresse IP doit être modifiée sur la machine serveur. V . 5 . DHCP DHCP (Dynamic Host Configuration Protocol) est une amélioration du système BOOTP. Il pallie les limites de BOOTP en permettant l’allocation dynamique et centralisée d’une adresse IP à toutes les machines d'un réseau TCP/IP. Le serveur DHCP dispose d’une série d’adresses prédéfinies qu’il peut allouer aux clients en cours de connexion. Il dispose même d'une compatibilité descendante avec le protocole BOOTP. Le client et le serveur DHCP sont des applications à la norme Windows Sockets permettant la configuration automatique de différents protocoles TCP/IP. On confie au serveur une fourchette d’adresses IP disponibles et quelques paramètres comme la passerelle par défaut, le serveur DNS, le NetBIOS Name Server etc. Lorsqu’un client DHCP est activé pour la première fois, il envoie un message broadcast DHCP Discover à l’ensemble du réseau local. Tout serveur DHCP recevant ce paquet renvoie une réponse DHCP Offer contenant les paramètres de configuration suggérés. Le client évalue la proposition et répond avec un message DHCP Request. Le serveur termine la transaction par un message DHCP Acknowledgement. DHCP a conservé le format des datagrammes BOOTP, le champ "vendor-specific" devenant un champ "option field" d'un minimum de 312 octets et débutant par un magic cookie 99.130.83.99 LT LA SALLE Avignon Page 69 / 79 ©TV.BTSii.2001 Réseaux TCP/IP V . 6 . SNMP SNMP pour Simple Network Management Protocol renvoie à une série de composants requis pour gérer un réseau. Simple Network Management Protocol SNMP MIB Application MIB TCP/UDP MIB MIB ICMP MIB MIB ARP Datalink MIB Physical IP V . 7 . SMTP SMTP (Simple Mail Transfer Protocol) fournit un mécanisme de transport et d'échange de courrier électronique entre utilisateurs d'Internet. SMTP utilise le port 25 et le protocole de transport TCP pour établir une connexion fiable. Ensuite, le client initialise une séquence de handshake puis émet une série de messages vers le serveur. En en-tête de ces messages, la machine distante reçoit ce qu'on appelle en jargon une enveloppe, c'est-à-dire une liste de tous les destinataires et de l'émetteur. Le format des messages Internet est défini par le RFC 822 tandis que SMTP est défini par les RFC 821 et 788. Le format d'un courrier électronique est des plus simples : une série d'attributs obligatoires (From: To: etc.) ou optionnels contenus dans l'en-tête du document suivi d'une ligne blanche puis du corps du message. Chaque ligne est constituée d'un nom de champ commençant à la colonne 1, suivi d'un double point, d'un blanc et du champ lui-même. Les lignes sont séparées par des caractères 'newline' (0x10). From: adresse email de l'émetteur To: adresse email récepteur Subject: description du contenu du message Reply-To: où doit être envoyée la réponse Organization: l'organisation propriétaire de la machine émettant l'email Message-ID: une chaîne de caractères générée par le protocole de transport d'email et unique pour ce message. Received: chaque site par où transite ce courrier ajoute sa ligne incluant nom du site, message ID, date et heure, l'origine et la couche de transport. Tous les échanges d'information passent par des séquences de commandes de quatre caractères et trois chiffres. LT LA SALLE Avignon Page 70 / 79 ©TV.BTSii.2001 Réseaux TCP/IP $ /usr/sbin/sendmail -v [email protected] < message [email protected]... Connecting to tempo.maclean.com. via smtp... 220 tempo.maclean.com ESMTP Sendmail 8.7/8.7/FultonSt-tempo0806; Sun, 15 Oct 1995 22:47:52 -0700 >>> HELO goldengate.reich.com 250 tempo.maclean.com Hello [email protected] [204.182.19.1], pleased to meet you >>> MAIL From: SIZE=10 250 ... Sender ok >>> RCPT To: 250 Recipient ok >>> DATA 354 Enter mail, end with "." on a line by itself >>> . 250 WAA12161 Message accepted for delivery [email protected]... Sent (WAA12161 Message accepted for delivery) Closing connection to tempo.maclean.com. >>> QUIT 221 tempo.maclean.com closing connection Le jeu de commandes clients comprend Commande HELO x MAIL RCPT TO:x@y FROM:x@y DATA QUIT RSET NOOP Explication connexion réclamée à partir de x courrier de x sur y pour x sur y données suivent terminées par un Terminer la connexion <cr,lf>.<cr,lf> Avorter la connexion Pas d'opération Dès qu'un client se connecte sur le port 25 à un serveur SMTP, il reçoit si tout va bien un message de réussite 220 auquel il doit répondre par une commande HELO <domain> où domaine représente la portion nom de domaine de votre adresse électronique. De la même manière, la clôture d'une connexion s'opère via une commande QUIT qui recevra une réponse positive 221. A la première réception d'un code 220, le client pourra entamer une transaction en envoyant une commande MAIL FROM: <adresse email> avec <adresse email> désignant ici l'émetteur du message électronique . Si le serveur accepte cette commande, il répondra par un code 250. La commande RCPT TO: <email> permet elle de définir l'adresse email du destinataire. Ici aussi, la commande se doit d'être sanctionnée par un code 250 OK. Une réponse 251 signifie que le destinataire n'a plus d'acompte sur le serveur SMTP mais que son courrier est automatiquement redirigé vers son adresse actuelle. Si la réponse est 551, il vous faudra rediriger manuellement le courrier vers l'adresse indiquée au côté du message d'erreur. L'échange du corps du message peut enfin commencer avec un commande DATA sans arguments. La réponse attendue du serveur est 354 qui signifie en quelque sorte "continuez, terminez votre message par une ligne ne contenant qu'un point". L'introduction d'une ligne avec un seul point induira une réponse 250 OK du serveur après quoi il suffira de clôturer la connexion avec une commande QUIT et la réponse 221. LT LA SALLE Avignon Page 71 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Le jeu de réponses du serveur est par exemple Comma 211 nde 214 220 221 250 251 354 421 450 451 452 500 501 502 503 504 550 553 551 552 553 554 Explication System Status Help message <domain> service ready Closing connection OK, completed User not local; will forward to ... Start mail input;end with . Service not available, closing transmission Requested mail action not taken; mailbox channel Requested unavailable action not taken; error in Requested processing action not taken; insufficient Syntax system Error storage Syntax error in parameters or arguments Command not implemented Bad sequence of commands Command parameter not implemented Requested action not taken; mailbox User ambiguous unavailable User not local; please try ... Requested mail action aborted: exceeded Requested mail action aborted: mailbox storage allocation Transaction failed name not allowed Le premier des trois chiffres est le plus important : 2xx évoque une réponse positive 3xx indique une réponse positive intermédiaire 4xx indique une action non achevée pour une raison temporaire 5xx est le signe d'un échec absolu Le second chiffre apporte son complément d'informations x0x pour une erreur de syntaxe x1x pour un message d'informations x2x pour une information sur le médium de trnsmission x5x pour des informations sur le système de courrier lui-même Sendmail est le plus connu et le plus populaire des agents SMTP (Simple Mail Transfer Protocol), utilisé sur des milliers de machines Unix. Les vieilles versions du programme sont très complexes à manipuler mais la version Berkeley Sendmail version 8.7, entièrement gratuite, est plus stable et plus simple à manipuler. V . 8 . POP POP (Post Office Protocol dont une autre acception est Point Of Presence) est une extension du protocole SMTP. Il autorise un utilisateur Internet à interagir avec une boîte aux lettres distantes sans être en permanence relié à Internet. SMTP a été pensé à l'époque des minis et des mainframes pour des utilisateurs connectés en permanence. Pour les PC actuels reliés par intermittence à Internet, il est préférable de recourir à un mécanisme "store and forward" comme POP. Le courrier sortant est toujours géré par SMTP mais le courrier entrant est reçu grâce à POP dans sa version 2 ou sa version 3. LT LA SALLE Avignon Page 72 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Les commandes POP3 obligatoires sont : Comman USER x de PASS x QUIT STAT LIST RETR DELE msg NOOP msg LAST RSET Explication Clôture la session et en autorise une autre Nombre de msg dans la boîte aux lettres et Liste de msg avec la taille de chacun leur taille Récupération d'un msg terminé par un "." Marque msg pour effacement NO Operation - vérifie la connexion Renvoie le numéro du dernier message Enlève les marques pour effacement Le jeu de réponses du serveur est Comman +OK de -ERR Explication Commande acceptée Commande échouée D'autres commandes comme TOP (pour voir les titres des messages) ou APOP (qui permet de ne pas envoyer de multiples mots de passe dans le cas des connexions périodiques) sont facultatives. Le protocole POP3 n'est pas des plus sûrs : une connexion telnet sur le port 110 suffit à visualiser les messages de réception en clair. POP a un autre inconvénient majeur : il ne permet pas de sélectionner les messages à télécharger. Il oblige l'utilisateur à décharger la totalité de son courrier lors de chaque connexion au serveur SMTP. Un utilisateur itinérant n'ayant accès à Internet qu'à faible vitesse ou à coût exhorbitant n'a pas la liberté de retirer un seul message urgent en remettant à plus tard le relevé des messages publicitaires, junk mail et spam mail qui sont malheureusement devenus notre lot quotidien. V . 9 . IMAP (Internet Message Access Protocol ) IMAP est une solution aux lacunes de POP. Il s'agit d'un protocole plus récent capable d'opérer un relevé sélectif des messages d'une boîte aux lettres électronique. Mieux encore, il permet même de relever une seule partie d'un message constitué de plusieurs attachements de type MIME. Un programme client IMAP est capable d'extraire du serveur l'en-tête des messages sans en rapatrier la totalité des contenus. Un message lu n'est pas systématiquement retiré du serveur. L'effacement du message côté serveur est laissé à la libre appréciation de l'utilisateur qui peut reporter cette opération à une date ultérieure. Du coup, IMAP s'avère des plus appropriés pour la création de boîtes aux lettres partagées où plusieurs utilisateurs peuvent consulter la même boîte sans priver les autres de son précieux contenu. Vous l'aurez compris, cette souplesse de traitement du courrier ne va pas sans une complexité croissante des programmes clients et serveurs, le serveur surtout étant mis à rude épreuve. A cette exception, POP et IMAP fonctionnent de la même manière : ils dépendent tous deux du troisième protocole SMTP pour l'envoi du courrier. LT LA SALLE Avignon Page 73 / 79 ©TV.BTSii.2001 Réseaux TCP/IP POP traite le serveur comme un entrepôt de messages dont il vide le contenu à chaque passage. Tous les messages sont transférés vers le client où ils sont lus ou non, effacés ou non, traités ou non sans interaction ultérieure avec le serveur. IMAP, d'autre part, interagit avec le serveur en plusieurs étapes. IMAP peut se contenter de réclamer l'entête des messages, de transférer une partie d'un message ou sa totalité, de transférer la totalité de la boîte aux lettres ou non. La suppression des messages sur le serveur s'opère manuellement lors d'une intervention ultérieure. Le serveur peut donc faire office d'archive ou de boîte aux lettres partagées tant qu'un utilisateur n'a pas pris la décision d'en vider le contenu. IMAP distingue pour ses programmes clients un mode online et un mode offline. En mode online, la totalité du courrier est conservé sur le serveur. En mode offline, soit la totalité du courrier est transféré vers le client et effacé du serveur, soit une partie du courrier reste sur le serveur. Dans ce dernier cas, un mécanisme de synchronisation est nécessaire pour les reconnexions ultérieures. Cette synchronisation s'opère au moyen d'un identificateur unique à chaque message. V .10 . DNS (Domain Name System) La gestion des noms de domaine est distribuée de manière hiérarchique. Un petit nombre de serveurs au sommet de la pyramide se chargent de recenser toutes les informations communiquées par les serveurs de noms de domaine de plus bas niveau. Chaque serveur ne contient que les informations concernant sa propre zone et se réfère à une autorité, un serveur de niveau supérieur, pour toutes les autres informations. Lorsqu'un changement intervient dans une zone, l'information se répand lentement à travers Internet d'un DNS à l'autre. Une zone n'équivaut pas à un domaine. Un domaine de grande taille pourrait être découpé en zones gérées par plusieurs DNS pour faciliter sa gestion. Le plus classique des serveurs DNS s'appelle BIND et existe pour la quasi majorité des systèmes d'exploitation. BIND est l'abréviation de Berkeley Internet Name Domain (BIND). Il est apparu avec la version 4.3 BSD Unix. Il utilise UDP et le port 53. BIND est découpé en deux parties. La partie client est appelée le resolver et génère les demandes d'information pour les noms de domaine. La partie serveur se présente sous la forme d'un démon baptisé named (à prononcer name-d). Chaque donnée enregistrée dans un fichier de configuration est découpée en Resource Records ou RR en abrégé. Tous les RR se partagent un format commun comme suit : domain ttl class type rdata Domain Le domaine auquel s'applique l'entrée du fichier ttl Time To Live. Durée de validité en secondes de l'information après son extraction du serveur class la classe d'adresses, toujours IN pour Internet et TCP/IP, HS dans le cadre d'objets de la classe hesiod. type le type de Standard Resource Records (RR) : SOA Start of Authority NS Name Server. A Address. PTR Pointer. LT LA SALLE Avignon Marque le début d'une zone de données. Identifie le serveur de nom de domaine. Convertit un nom de machine hôte en adresse IP. Convertit les adresses IP en nom de domaine. Page 74 / 79 ©TV.BTSii.2001 Réseaux TCP/IP MX Mail Exchanger. nom de domaine. CNAME: Cannonical Name. Définit un alias pour un nom de domaine. HINFO rdata Précise à qui adresser le courrier pour un fournit des informations su rla configuration logicielle et matérielle. les données associées à chaque tpe de RR Renvoyer des résultats inattendus comme nom de machine peut vous donner des accès très intéressants. La résolution des noms se réalise au moyen de la fonction gethostbyname(). Le résultat de cette fonction est souvent utilisé tel quel dans des commandes. V . 11 . Telnet Telnet est une commande vous permettant de vous connecter sur d’autres ordinateurs distants et d’y lancer des programmes. Telnet recourt au protocole de transport TCP. Une fois connecté, c’est comme si votre clavier était physiquement connecté à la machine distante. Tous les caractères que vous tapez sont envoyés à cette machine à l’exception du caractère ESC qui sert de caractère de contrôle. Avec Telnet, vous pouvez accéder à tous les services qui sont proposés par l’ordinateur hôte : exécuter des commandes Unix, …. La commande est simple : $ telnet nom_de_la_machine_à_contacter. Telnet utilise un caractère spécial qu'il insère dans le flux de données pour indiquer qu'il envoie des séquences spéciales de contrôle. Ce caractère est le code ASCII 255 ( 0xFF en hexadécimal). Ce caractère est appelé IAC pour "Interpret As Command". Le caractère IAC est suivi d'une autre commande. par exemple, l'envoi d'une séquence break se découpe en une séquence IAC, BRK ( codes 255 puis 243 ) insérée dans un segment TCP. Code SE NOP DM BRK IP AO AYT EC EL GA SB WILL WON'T DO DON'T Valeur décimale 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 LT LA SALLE Avignon Description End of subnegociation No Operation Data Mark Break Interrupt Process Abort Output Are you There ? Erase Character Erase Line Go Ahead Start subnegociation WILL negociation WON'T negociation DO negociation DON'T negociation Page 75 / 79 ©TV.BTSii.2001 Réseaux TCP/IP Une série d'autres options sont disponibles : Options Transmit binary Echo RCP Suppress-goNAMS ahead STATUS Timing-mark RCTE NAOL NAOP NAOCRD NAOHTS NAOHTD NAOFFD NAOVTS NAOVTD NAOLFD EXTEND-ASCII LOGOUT BM DET SUPDUP SUPDUP-OUTPUT SEND-LOCATION TERMINAL-TYPE END-OF-RECORD TUID OUTMRK EXOPL Code 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 255 Description ignorer les caractères de contrôle Reconnect option Negociate Approximate Message Size Long echo delay circuit Negociate output line width Negociate page output size Negociate Horizontal Tab Stops Horizontal tabstop definition Form feed disposition option Vertical tabstop option Vertical tabstop definition Linefeed disposition BYTE Macro Telnet Data Entry Terminal User identification Output mark En utilisant Telnet sur d’autres ports, on peut aisément débugger d’autres protocoles. Un exemple avec SMTP sur le port 25 : RED TOPAZ RED TOPAZ RED TOPAZ RED TOPAZ RED TOPAZ TOPAZ TOPAZ TOPAZ TOPAZ TOPAZ TOPAZ RED TOPAZ RED 220 RED.RUTGERS.EDU SMTP Service at 29 Jun 87 05:17:18 EDT HELO topaz.rutgers.edu 250 RED.RUTGERS.EDU - Hello, TOPAZ.RUTGERS.EDU MAIL From:<[email protected]> 250 MAIL accepted RCPT To:<[email protected]> 250 Recipient accepted DATA 354 Start mail input; end with <CRLF>.<CRLF> Date: Sat, 27 Jun 87 13:26:31 EDT From: [email protected] To: [email protected] Subject: meeting Let's get together Monday at 1pm. . 250 OK QUIT 221 RED.RUTGERS.EDU Service closing transmission channel LT LA SALLE Avignon Page 76 / 79 ©TV.BTSii.2001 Réseaux TCP/IP V . 12 . Les commandes r Les commandes r (pour remote) sont des commandes du monde Unix pour l'établissement de connexion entre machines de même type. Ces commandes partent du principe que les utilisateurs qui y ont accès ont déjà passé une autre épreuve d'authentification. Elles ne sont donc pas des plus sûres. On dénombre : rcp rexec rlogin rsh pour pour pour pour la copie de fichiers entre ordinateurs distants, l'exécution de commandes sur une machine distante la connexion à un ordinateur distant l'obtention d'un shell sur la machine distante Pour pouvoir exécuter une commande r sur une machine hôte, il faut simplement disposer d'une adresse IP et d'un nom repris dans un des deux fichiers de la machine hôte .rhosts ou rhosts.equiv Par exemple, la commande : $ rlogin -1 usertv machinex va essayer de connecter l'utilisateur usertv à la machine machinex. Le fichier hosts.equiv de machinex ressemble à ceci : userx usery usertv .rhosts de l'utilisateur tv ressemble lui à bigbrother.btsii.net mail.btsii.net lucien La première ligne permet à tv de se logger à partir de la machine bigbrother.btsii.net tandis que la seconde autorise lucien à accéder au compte de tv à partir de la machine mail.btsii.net. V . 13 . RPC Ces commandes r font appel à un mécanisme pour applications client-serveur baptisé RPC ou Remote Procedure Call. RPC a été développé par Sun Microsystems et est à la base de l'architecture des produits NFS ( Network File System ) et NIS ( Network Information System ). RPC est devenu une voie royale pour accéder à la programmation distribuée. Un serveur RPC est une collection de procédures que peuvent appeler des machines clients par une requête RPC. De façon à être le plus indépendant possible d'une machine spécifique, la réponse du serveur est traduite dans un format baptisé XDR pour eXternal Data Representation Format V . 14 . NFS Le mot NFS désigne une famille complète de produits bien que leur concepteur, Sun Microsystems Inc préfère l'appeler Open Network Computing ou ONC. Les spécifications de la plupart des composants NFS sont passés dans le domaine public sous forme de RFC. Sun a également développé un autre ensemble logiciel, PC-NFS, permettant à des PC d'utiliser NFS. LT LA SALLE Avignon Page 77 / 79 ©TV.BTSii.2001 Réseaux TCP/IP NFS est constitué de trois couches : 1. RPC qui définit le format des messages utilisés par les Remote Procedure Calls 2. XDR, l'eXternal data Representation, qui propose un format de fichiers indépendant des architectures de machines. XDR définit les données en multiples de 4 octets. 3. NFS, l'interface au niveau de la couche d'application pour le transfert de fichiers. On retrouve donc trois nouvelles couches au dessus des couches TCP/IP ce qui donne sept couches comme dans le modèle OSI ! NFS est basé sur le protocole de transport UDP. Client et serveur s'échangent donc des transactions sans conserver une connexion continue. L'utilisation de NFS est plus adaptée sur les petits réseaux LAN Network File System (NFS) NFS XDR RPC UDP TCP IP Datalink Physical NFS (Network File System) est le plus populaire des programmes recourant à RPC. Il permet d'accéder à des fichiers distants de la même manière que s'il s'agissait de fichiers locaux. NFS travaille avec des datagrammes UDP de 8192 octets et le port 2049. V . 15 . Le protocole SSL SSL (Secure Sockets Layer) est un protocole de sécurité fournissant une méthode pour communiquer sur Internet de manière privée. SSL est un protocole qui a été soumis au consortium W3 pour fournir une sécurité aux données transitant par des sessions TCP/IP. Il fournit trois services fondamentaux : l'encryption des données, l'authentification du serveur et l'intégrité des données à travers une session TCP/IP. A l'initialisation d'une connexion TCP/IP, SSL permet à un client et un serveur de réaliser une "poignée de main" où ils conviennent d'un niveau de sécurité à atteindre. Après, le rôle de SSL est des plus simples. Il se contente d'encrypter et de décrypter tous les flux de données transitant par un protocole TCP/IP donné. Le protocole SSL est subdivisé en deux couches. Au plus bas niveau, le SSL Record Protocol est utilisé pour l'encapsulation de différents protocoles de plus haut niveau. Un de ces protocoles de plus haut niveau, le SSL Handshake Protocol, permet au client et au LT LA SALLE Avignon Page 78 / 79 ©TV.BTSii.2001 Réseaux TCP/IP serveur de s'authentifier et de négocier entre eux un algorithme et des clés d'encryption avant de s'échanger des données. SSL est conçu comme un protocole indépendant d'une application. Un protocole de plus haut niveau peut reposer de manière transparente sur le protocole SSL. Avec SSL, une connexion entre client et serveur est privée, elle repose sur une encryption établie après un handshake initial où est générée une clé secrète. Pour l'encryption des données elles-mêmes, il est fait appel à une cryptographie de type symétrique comme DES ou RC4. Par contre, pour l'authentification des tiers, il est fait appel à une cryptographie asymétrique comme RSA. SSL a été pensé de manière extensible. Il peut fonctionner comme simple canevas où de nouvelles clés publiques et de nouvelles méthodes d'encryption peuvent être incorporées en fonction des besoins. Il pallie un des problèmes actuels de la cryptographie, à savoir la gourmandise CPU, en offrant une méthode de cache qui réduit le nombre de connexions nécessaires pour établir un transfert de données. A tout moment, le protocole SSL conserve l'état d'une connexion et stocke une série de données : session identifier : une séquence arbitraire d'octets choisis par le serveur pour identifier une session active peer certificate X509.v3[X509] : le certificat de la machine paire. compression method : algorithme utilisé pour la compression des données avant leur encryption. cipher spec : l'algorithme d'encryption (aucun, DES etc.) et l'algorithme MAC/Message Authentication Codes (MD5 ou SHA) master secret : un espace adressable secret de 48 octets partagé entre le client et le serveur is resumable : un drapeau indiquant si la session peut être exploitée pour initialiser de nouvelles connexions. L'état de la connexion inclut les éléments suivants : server and client random : séquence d'octets choisis par le client et le serveur à chaque connexion server write MAC secret : le "secret" utilisé dans la phase MAC pour l'écriture de données par le serveur. client write MAC secret : idem côté client server write key : la clé d'encryption serveur - décryption client client write key : l'inverse initialization vectors : sequence numbers Client ClientHello Server --------> <-------Certificate* ClientKeyExchange CertificateVerify* [ChangeCipherSpec] Finished --------> Application Data <-------<-------> LT LA SALLE Avignon ServerHello Certificate* CertificateRequest* ServerKeyExchange* [ChangeCipherSpec] Finished Application Data Page 79 / 79 ©TV.BTSii.2001