ARPANET est devenu Internet. Internet était fondé sur l’idée qu’il y aurait de nombreux réseaux indépendants de conception assez arbitraire, à commencer par le réseau pionnier de commutation par paquets ARPANET, mais ne tarda pas à inclure des réseaux par satellite de paquets, des réseaux de radiocommunication par paquets au sol et d’autres réseaux. Internet tel que nous le connaissons est l’incarnation d’une idée technique sous-jacente, à savoir celle du réseautage en architecture ouverte. Selon cette approche, le choix d’une technologie de réseau individuelle quelconque n’était pas dicté par une architecture de réseau particulière, mais pouvait plutôt être déterminé librement par un fournisseur et conçu de manière à interagir avec d’autres réseaux par le biais d’une « architecture interréseau » à un méta-niveau. Jusqu’à cette époque il n’y avait qu’une seule méthode générale pour fédérer les réseaux. Il s’agissait de la méthode traditionnelle de commutation de circuits où les réseaux s’interconnectaient au niveau du circuit, avec des bits individuels passant sur une base synchrone le long d’une portion d’un circuit de bout en bout entre deux localisations finales. N’oublions pas que Kleinrock avait démontré en 1961 que la commutation par paquets était une méthode de commutation plus efficace. Avec la commutation par paquets, les arrangements d’interconnexion à des fins spéciales entre les réseaux étaient une autre possibilité. Alors qu’il y avait d’autres façons limitées d’interconnecter des réseaux différents, il fallait que l’un d’eux soit utilisé comme composant de l’autre, plutôt que d’agir comme un homologue de l’autre en offrant un service de bout en bout.
Dans un réseau à architecture ouverte, les réseaux individuels peuvent être conçus et développés séparément, et chacun peut avoir sa propre interface qu’il peut proposer aux utilisateurs et/ou à d’autres fournisseurs, y compris des fournisseurs Internet. Chaque réseau peut être conçu en conformité avec l’environnement spécifique et les besoins des utilisateurs de ce réseau. Il n’y a généralement pas de contrainte sur les types de réseaux pouvant être inclus ou sur leur étendue géographique, bien que certaines considérations pragmatiques dicteront ce qu’il convient de proposer.
L’idée d’un réseautage à architecture ouverte a été introduite par Kahn, peu après son arrivée à DARPA, en 1972. Ce travail faisait partie à l’origine du programme de radiocommunication par paquets, mais est devenu par la suite un programme distinct à part entière. À l’époque, le programme était appelé « Internetting » (interréseautage). La clé pour faire fonctionner le système de radiocommunication par paquets était un protocole fiable de bout en bout qui pouvait maintenir une communication efficace malgré le brouillage et d’autres interférences radio, ou résister à une panne intermittente due au passage dans un tunnel ou au relief local. Kahn envisagea d’abord l’élaboration d’un protocole local uniquement pour le réseau de radiocommunication par paquets, puisque cela évitait d’avoir à faire face à la multitude de systèmes d’exploitation différents, et permettait de continuer à utiliser NCP.
Toutefois, NCP n’avait pas la capacité d’adresser les réseaux (et machines) plus en aval qu’une IMP de destination sur le réseau ARPANET et donc un changement au niveau du NCP s’avérait également nécessaire. (L’hypothèse était que le réseau ARPANET n’était pas modifiable à cet égard). Le NCP reposait sur le réseau ARPANET pour founir une fiabilité de bout en bout. Si des paquets étaient perdus, le protocole (et probablement toutes les applications prises en charge par celui-ci) s’arrêterait net. Dans ce modèle, le NCP n’avait aucun contrôle d’erreur d’hôte de bout en bout, puisque le réseau ARPANET serait le seul réseau existant et qu’il serait si fiable qu’aucun contrôle d’erreur ne serait nécessaire de la part des hôtes. Ainsi, Kahn décida de développer une nouvelle version du protocole pouvant répondre aux besoins d’un environnement de réseau à architecture ouverte. Ce protocole serait éventuellement appelé Transmission Control Protocol/Internet Protocol (TCP/IP). Tandis que NCP avait tendance à agir comme un pilote de périphérique, le nouveau protocole allait plutôt ressembler à un protocole de communication.
Quatre règles de base étaient essentielles à la réflexion de Kahn :
- Chaque réseau distinct devrait se suffire à lui-même et aucun changement interne ne devrait être requis pour connecter un tel réseau à l’Internet.
- Les communications se feraient sur la base du meilleur effort. Si un paquet n’arrivait pas à la destination finale, il serait rapidement retransmis depuis la source.
- Des boîtes noires seraient utilisées pour connecter les réseaux ; plus tard, celles-ci allaient être appelées des passerelles et des routeurs. Aucune information ne serait retenue par les passerelles sur les flux individuels des paquets passant au travers, évitant ainsi de compliquer l’adaptation et la récupération de différents modes de défaillance.
- Il n’y aurait pas de contrôle à l’échelle globale au niveau opérationnel.
D’autres questions clés à traiter étaient :
- Des algorithmes pour empêcher les paquets perdus de désactiver de façon permanente les communications et leur permettre d’être retransmis avec succès depuis la source.
- Fournir un « traitement en pipeline » d’hôte à hôte pour que les paquets multiples puissent être acheminés de la source à la destination à la discrétion des hôtes participants, si les réseaux intermédiaires le permettaient.
- Des fonctions de passerelle pour permettre de transmettre les paquets de manière appropriée. Cela comprenait l’interprétation des en-têtes IP pour le routage, la manipulation des interfaces, le cassage des paquets en petits morceaux si nécessaire, etc.
- Le besoin de sommes de contrôle de bout en bout, de réassemblage des paquets à partir de fragments et de détection des doublons, le cas échéant.
- Le besoin d’adressage global
- Techniques pour le contrôle de flux d’hôte à hôte
- L’interfaçage avec les systèmes d’exploitation différents
- Il y avait aussi d’autres préoccupations, telles que l’efficacité de mise en œuvre et la performance interréseau, mais celles-ci étaient des considérations secondaires au premier abord.
Kahn entama des travaux sur un ensemble de principes pour systèmes d’exploitation orientés sur les communications pendant son séjour chez BBN et documenta certaines de ses premières idées dans un mémorandum interne intitulé «Communications Principles for Operating Systems» (Principes de communication pour les systèmes d’exploitation). C’est à ce stade qu’il réalisa qu’il serait nécessaire d’apprendre les détails de la mise en oeuvre de chacun des systèmes d’exploitation pour pouvoir intégrer des nouveaux protocoles de façon efficace. Ainsi, au printemps 1973, après le démarrage de l’effort d’interréseautage, il demanda à Vint Cerf (alors à Stanford) de travailler avec lui sur la conception détaillée du protocole. Cerf avait été intimement impliqué dans la conception et le développement du NCP au départ et possédait déjà des connaissances sur l’interfaçage aux systèmes d’exploitation existants. Ainsi, armés de l’approche architecturale de Kahn côté communications et de l’expérience NCP de Cerf, ils s’associèrent pour préciser les détails de ce qui devint le protocole TCP/IP.
Les échanges furent très productifs et la première version écrite 7 de l’approche résultante a été distribuée en tant qu’INWG#39 lors d’une réunion spéciale de l’International Network Working Group (INWG) à l’Université du Sussex, en septembre 1973. Par la suite, une version raffinée a été publiée en 1974. L’INWG a été créé à la Conférence internationale sur les communications informatiques d’octobre 1972, organisée par Bob Kahn et al., et Cerf a été invité à présider ce groupe.
Certaines approches de base émergèrent de cette collaboration entre Kahn et Cerf :
- La communication entre deux processus se composerait logiquement d’un très long flux de bytes (qu’ils appelèrent octets). La position de tout octet dans le flux serait utilisée pour l’identifier.
- Le contrôle du flux serait assuré en utilisant des fenêtres coulissantes et des accusés de réception (ACK). La destination pourrait sélectionner à quel moment accuser réception et chaque ACK renvoyé serait cumulé pour tous les paquets reçus à ce point.
- La façon exacte dont la source et la destination se mettraient d’accord sur les paramètres du fenêtrage à utiliser n’a pas été déterminée définitivement. Les paramètres par défaut ont été utilisés initialement.
- Même si à l’époque Ethernet était en cours de développement au centre de recherche Xerox PARC, la prolifération de réseaux locaux n’était pas envisagée à ce moment-là, encore moins les ordinateurs et stations de travail. Le modèle original était composé de réseaux au niveau national comme ARPANET, desquels seul un nombre relativement faible était censé exister. Ainsi une adresse IP de 32 bits fut utilisée, dont les 8 premiers bits signifiaient le réseau et les 24 bits restants désignaient l’hôte sur ce réseau. L’hypothèse que 256 réseaux seraient suffisants dans un avenir prévisible, a manifestement eu besoin d’être reconsidérée lorsque les réseaux locaux ont commencé à apparaître à la fin des années 1970.
Le document original de Cerf/Kahn sur l’Internet décrivait un protocole, appelé TCP, qui fournissait tous les services de transport et d’acheminement dans l’Internet. Kahn avait prévu que le protocole TCP prenne en charge un éventail de services de transport, depuis la livraison, totalement fiable, séquencée de données (modèle de circuit virtuel) à un service de datagramme dans lequel l’application utilisait directement le service réseau sous-jacent, ce qui pouvait impliquer des paquets intermittents perdus, corrompus ou réorganisés. Cependant, l’effort initial pour mettre en œuvre le protocole TCP aboutit à une version qui ne permettait que les circuits virtuels. Ce modèle fonctionnait bien pour le transfert de fichiers et les applications de connexion à distance, mais certains des premiers travaux sur les applications réseau avancées, notamment la voix en paquets dans les années 1970, démontrèrent clairement que dans certains cas, les pertes de paquets ne devraient pas être corrigées par TCP, mais devraient être traitées par l’application. Cela conduisit à une réorganisation du TCP initial en deux protocoles, l’IP simple qui ne permettait que l’adressage et la transmission de paquets individuels, et le TCP séparé qui portait sur les fonctionnalités du service telles que le contrôle de flux et la récupération des paquets perdus. Pour les applications qui ne voulaient pas les services de TCP, une alternative appelée User Datagram Protocol (UDP) fut ajoutée afin de fournir un accès direct aux services de base d’IP.
Une première motivation importante pour l’ARPANET et l’Internet fut le partage des ressources – par exemple en permettant aux utilisateurs sur les réseaux de radiocommunication par paquets d’accéder aux systèmes en temps partagé liés à l’ARPANET. Connecter les deux ensemble était beaucoup plus économique que de dupliquer ces ordinateurs très coûteux. Cependant, même si le transfert de fichiers et la connexion à distance (Telnet) étaient des applications très importantes, le courrier électronique eut probablement l’impact le plus significatif des innovations datant de cette époque. Le courrier électronique a fourni un nouveau modèle pour la façon dont les gens pouvaient communiquer les uns avec les autres, et changea la nature de la collaboration, d’abord dans la construction de l’Internet lui-même (comme évoqué ci-dessous) et plus tard pour une grande partie de la société.
D’autres applications avaient été proposées aux débuts de l’Internet, y compris la communication vocale à base de paquets (précurseur de la téléphonie sur Internet), différents modèles de partage de fichiers et de disques, et les premiers programmes de vers informatiques qui montraient le concept d’agents (et, bien sûr, de virus). Un concept clé de l’Internet est qu’il n’a pas été conçu pour une seule application, mais comme une infrastructure générale sur laquelle de nouvelles applications pouvaient être conçues, comme illustré plus tard par l’émergence du World Wide Web. C’est la nature polyvalente du service fourni par le TCP et l’IP qui rend cela possible.