3. Introduction à IP▲
3-1. TCP/IP et l'Internet - Un peu d'histoire▲
En 1969 aux États-Unis, l'agence gouvernementale DARPA lance un projet de réseau expérimental, basé sur la commutation de paquets. Ce réseau, nommé ARPANET, fut construit dans le but d'étudier les technologies de communication, indépendamment de toute contrainte commerciale(15).
Un grand nombre de techniques de communication par modem datent de cette époque.
L'expérience d'ARPANET est alors si concluante que toutes les organisations qui lui sont rattachées l'utilisent quotidiennement pour leurs messages de service.
En 1975, le réseau passe officiellement du stade expérimental au stade opérationnel.
Le développement d'ARPANET ne s'arrête pas pour autant, les bases des protocoles TCP/IP sont développées à ce moment, donc après que ARPANET soit opérationnel.
En juin 1978 Jon Postel(16) définit IPv4, et en 1981, IP est standardisé dans la RFC 791 [J. Postel 1981].
En 1983 les protocoles TCP/IP sont adoptés comme un standard militaire et toutes les machines sur le réseau commencent à l'utiliser. Pour faciliter cette reconversion, la DARPA demande à l'université de Berkeley d'implémenter ces protocoles dans leur version (BSD) d'Unix. Ainsi commence le mariage entre ce système d'exploitation et les protocoles TCP/IP.
L'apport de l'Université de Berkeley est majeur, tant au niveau théorique (concept des sockets) qu'au niveau de l'utilisateur, avec des utilitaires très homogènes qui s'intègrent parfaitement au paradigme d'usage existant (rcp, rsh, rlogin...).
Depuis cette époque, un nouveau terme est apparu pour désigner cette interconnexion de réseaux, l'Internet, avec un « i » majuscule.
Le succès de cette technologie est alors très important et suscite un intérêt croissant de la part d'acteurs très divers, et en particulier La « National Science Foundation » qui y voit un intérêt majeur pour la recherche scientifique et soutient donc ce nouveau moyen de mettre en communication tous les chercheurs.
Depuis 1990, ARPANET n'est plus, pourtant le terme Internet demeure et il désigne maintenant un espace de communication qui englobe la planète tout entière. Des millions de sites partout sur la surface du globe y sont connectés.
Depuis 1994, l'Internet s'est ouvert au commerce, surtout avec l'apparition en 1991 d'un nouvel outil de consultation, le « World Wide Web » ou « Web » et ses interfaces populaires : Mosaic(17), Netscape, Mozilla, Firefox, Konqueror... La liste n'est pas exhaustive !
Depuis 1995, pour faire face à sa popularité fortement croissante et aux demandes de transactions sécurisées, le protocole évolue et une nouvelle version, la version 6 (IPng puis tout simplement IPv6), est définie et en cours de déploiement expérimental.
Les protocoles désignés par TCP/IP ont également envahi les réseaux locaux eux-mêmes, car il est plus facile d'utiliser les mêmes protocoles en interne et en externe.
Pour les utilisateurs, l'accès à l'Internet est possible à l'aide d'une collection de programmes spécialisés si faciles à utiliser que l'on peut ignorer tout (ou presque) de leur fonctionnement interne.
Seuls les programmeurs d'applications réseau et les administrateurs de systèmes ont besoin d'en connaître les arcanes.
Les services réseau les plus populaires sont principalement :
- le courrier électronique qui permet l'échange de messages entre usagers ;
- les innombrables forums de discussion (« news ») ;
- le transfert de fichiers entre machines (« ftp » et ses dérivés comme « fetch », « wget », « curl »...) ;
- le « remote login », ou ses équivalents cryptés (« ssh », qui permet à un utilisateur de se connecter sur un site distant, depuis son poste local ;
- les serveurs interactifs. Les « anciens » se nommaient archie, gopher, veronica, wais... Désormais ils sont rendus obsolètes par le « web » (protocole http) ;
- puis maintenant la radio, la vidéoconférence, la réalité virtuelle avec le VRML, le « chat », les bourses d'échanges point à point, les « blogs » ou formes évoluées des pages personnelles, etc.
En conclusion de ce paragraphe sur l'historique, on peut dire que l'Internet est une collection apparemment anarchique (il n'y a pas de structure hiérarchique et centralisée) de réseaux interconnectés et appartenant à divers propriétaires.
On distingue trois niveaux : les réseaux au sein des organisations (lan), les réseaux régionaux et les réseaux de transit.
Le site de l'Association Fnet indique quelques pointeurs intéressants sur l'historique de l'Internet(18) (en anglais).
3-2. Caractéristiques de TCP/IP▲
Le succès de TCP/IP, s'il vient d'abord d'un choix du gouvernement américain, s'appuie ensuite sur des caractéristiques intéressantes :
- C'est un protocole ouvert, les sources (C) sont disponibles gratuitement et ont été développées indépendamment d'une architecture particulière, d'un système d'exploitation particulier, d'une structure commerciale propriétaire. Ils sont donc théoriquement transportables sur n'importe quel type de plate-forme, ce qui est prouvé de nos jours.
- Ce protocole est indépendant du support physique du réseau. Cela permet à TCP/IP d'être véhiculé par des supports et des technologies aussi différents qu'une ligne série, un câble coaxial Ethernet, une liaison louée, un réseau token-ring, une liaison radio (satellites, « wireless » 802.11a/b/g), une liaison FDDI 600Mbits, une liaison par rayon laser, infrarouge, xDSL, ATM, fibre optique, la liste des supports et des technologies n'est pas exhaustive...
- Le mode d'adressage est commun à tous les utilisateurs de TCP/IP quelle que soit la plate-forme qui l'utilise. Si l'unicité de l'adresse est respectée, les communications aboutissent même si les hôtes sont aux antipodes.
- Les protocoles de haut niveau sont standardisés ce qui permet des développements largement répandus et interopérables sur tous types de machines.
La majeure partie des informations relatives à ces protocoles sont publiées dans les RFC (Requests For Comments). Les RFC contiennent les dernières versions des spécifications de tous les protocoles TCP/IP, ainsi que bien d'autres informations comme des propositions d'améliorations des outils actuels, la description de nouveaux protocoles, des commentaires sur la gestion des réseaux, la liste n'est pas exhaustive.
3-3. Comparaison TCP/IP - ISO▲
La suite de protocoles désignée par TCP/IP, ou encore « pile ARPA », est construite sur un modèle en couches moins complet que la proposition de l'ISO. Quatre couches sont suffisantes pour définir l'architecture de ce protocole.
- 4Â : Couche Application (Application layer).
- 3Â : Couche Transport (Transport layer).
- 2Â : Couche Internet (Internet layer).
- 1 : Couche interface réseau (Network access layer).
- 0 : Matériel (n'est pas une couche comprise dans le protocole).
La figure II.01 met en comparaison les fonctionnalités des couches du modèle OSI et celles des protocoles TCP/IP.
La figure II.02 elle, donne une vue d'ensemble de l'architecture logicielle avec quelques protocoles d'applications de la famille IP. Ils sont très nombreux, non représentés tous ici, et il s'en faut de beaucoup, car il en existe des centaines. La lecture du fichier /etc/services, présent sur toute machine de la famille des Unix, donne un aperçu des principaux services enregistrés auprès de l'IANA. Quand nous aurons expliqué la notion de « port », cette lecture sera plus facile... Donc patience !
- IP : « Internet Protocol ».
- SCTP : « Stream Control Transmission Protocol ».
- TCP : « Transmission Control Protocol ».
- UDP : « User Datagram Protocol ».
Les chapitres qui suivent donnent l'occasion d'examiner SMTP, DNS, SNMP, SCTP, TCP, UDP, ARP, RARP, IP, IGMP et ICMPÂ !
3-3-1. Couche « Application Layer »▲
Au plus haut niveau, les utilisateurs invoquent les programmes qui permettent l'accès au réseau.
Chaque programme d'application interagit avec la couche de transport pour envoyer ou recevoir des données. En fonction des caractéristiques de l'échange le programme a choisi un mode de transmission à la couche de transport.
La plus grande proportion des applications laissent à la couche de transport le soin d'effectuer le travail de « Session », néanmoins il est possible pour certaines applications de court-circuiter cette fonctionnalité pour agir directement au niveau « Réseau », comme on peut l'observer sur la figure III.02 à droite.
3-3-2. Couche « Transport Layer »▲
La principale tâche de la couche de transport est de fournir la communication d'un programme d'application à un autre. Une telle communication est souvent qualifiée de « point à point ».
Cette couche peut avoir à réguler le flot de données et à assurer la fiabilité du transfert : les octets reçus doivent être identiques aux octets envoyés. C'est pourquoi cette couche doit gérer des « checksums » et savoir réémettre des paquets mal arrivés.
Cette couche divise le flux de données en paquets (terminologie de l'ISO) et passe chacun avec une adresse de destination au niveau inférieur.
De plus, et c'est surtout valable pour les systèmes d'exploitation multitâches multiutilisateurs (Unix...), de multiples processus appartenant à des utilisateurs différents et pour des programmes d'applications différents, accèdent au réseau au même moment, ce qui implique la capacité de multiplexer et de démultiplexer les données, suivant qu'elles vont vers le réseau ou vers les applications (« Session »).
3-3-3. Couche « Internet Layer »▲
Cette couche reçoit des datagrammes en provenance de la couche réseau, qu'elle doit analyser pour déterminer s'ils lui sont adressés ou pas. Dans le premier cas, elle doit « décapsuler » son entête du datagramme pour transmettre les données à la couche de transport et au bon protocole de cette couche (TCP, UDP...), dans le deuxième cas elle les ignore.
Cette couche prend aussi en charge la communication de machine à machine. Elle accepte des requêtes venant de la couche de transport avec une identification de la machine vers laquelle le paquet doit être envoyé.
Elle utilise alors l'algorithme de routage pour décider si le paquet doit être envoyé vers une passerelle ou vers une machine directement accessible.
Enfin cette couche gère les datagrammes des protocoles ICMP et IGMP.
3-3-4. Couche « Network Access »▲
Le protocole dans cette couche définit le moyen pour un système de délivrer l'information à un autre système physiquement relié. Il définit comment les datagrammes IP sont transmis. La définition de ceux-ci reste indépendante de la couche réseau, ce qui leur permet de s'adapter à chaque nouvelle technologie au fur et à mesure de leur apparition.
Avant de s'intéresser au détail des datagrammes IP, nous allons examiner le problème de l'adressage IP, dans le chapitre suivant.
3-4. Encapsulation d'IP▲
Comme nous l'avons décrit avec le modèle des couches OSI, les couches IP fonctionnent par encapsulations progressives.
Chaque couche encapsule la précédente avec les informations de contrôle qu'elle destine à la couche de même niveau sur la machine distante.
Cet ajout est nommé « header » (entête) parce qu'il est placé en tête des données à transmettre.
Application | | datas | |
Transport | | Header | datas | |
Internet | | Header | Header | datas | |
Network | | Header | Header | Header | datas | |
La taille des « headers » dépend des protocoles utilisés. Pour la couche IP le protocole comporte en standard cinq mots de 32 bits, même chose pour la couche TCP(19).
3-5. Bibliographie▲
Pour en savoir plus :
- RFC 0791 : S J. Postel, « Internet Protocol », 09/01/1981. (Pages=45) (Format=.txt) (Obsoletes RFC0760).
- La Recherche : Numéro spécial Internet numéro 238 de février 2000.