Aller au contenu principal

2. Philosophy (Philosophie)

Ce chapitre résume la base philosophique (philosophical basis) de la conception TCP, expliquant la position de TCP dans l'environnement Internet, les principes de conception et les concepts fondamentaux.


2.1. Elements of the Internetwork System (Éléments du système internet)

L'environnement internet se compose d'hôtes connectés à des réseaux qui sont à leur tour interconnectés via des passerelles. Il est supposé ici que les réseaux peuvent être soit des réseaux locaux (par exemple, l'ETHERNET) soit de grands réseaux (par exemple, l'ARPANET), mais dans tous les cas sont basés sur la technologie de commutation de paquets. Les agents actifs qui produisent et consomment des messages sont les processus. Différents niveaux de protocoles dans les réseaux, les passerelles et les hôtes prennent en charge un système de communication interprocessus qui fournit un flux de données bidirectionnel sur des connexions logiques entre les ports de processus.

Concepts fondamentaux

  • Processus (Processes) : Agents actifs qui produisent et consomment des messages
  • Système de communication interprocessus : Différents niveaux de protocoles dans les réseaux, les passerelles et les hôtes prennent en charge un flux de données bidirectionnel sur des connexions logiques entre les ports de processus

Le terme paquet (packet) est utilisé ici de manière générique pour désigner les données d'une transaction entre un hôte et son réseau. Le format des blocs de données échangés au sein d'un réseau ne nous concernera généralement pas.

Définitions terminologiques

TermeDéfinition
Hôte (Host)Ordinateurs connectés à un réseau et, du point de vue du réseau de communication, sont les sources et les destinations de paquets
Processus (Process)Éléments actifs dans les ordinateurs hôtes (conformément à la définition assez courante d'un processus comme un programme en cours d'exécution)
PortPoints d'extrémité logiques par lesquels un processus communique ; un processus peut avoir plusieurs ports

Point important : Toute communication est considérée comme une communication interprocessus (inter-process communication). Même les terminaux et fichiers ou autres périphériques d'E/S sont considérés comme communiquant entre eux par l'utilisation de processus.

Étant donné qu'un processus peut avoir besoin de distinguer plusieurs flux de communication entre lui-même et un autre processus (ou processus), nous imaginons que chaque processus peut avoir un certain nombre de ports par lesquels il communique avec les ports d'autres processus.


2.2. Model of Operation (Modèle de fonctionnement)

Flux de transmission de données

Processus émetteur
↓ [Appelle TCP, passe des tampons de données]
TCP émetteur
↓ [Empaquette les données en segments]
Module Internet
↓ [Encapsule dans des datagrammes Internet]
Réseau local
↓ [Intègre dans des paquets de réseau local]
... (via commutateurs de paquets, passerelles) ...

Réseau local de destination
↓ [Déballe]
Module Internet de destination
↓ [Extrait les segments TCP]
TCP récepteur
↓ [Place les données dans les tampons utilisateur]
Processus récepteur

Description détaillée

Côté émission :

  • Les processus transmettent des données en appelant le TCP et en passant des tampons de données comme arguments
  • Le TCP empaquette les données de ces tampons en segments
  • Le TCP appelle le module Internet pour transmettre chaque segment au TCP de destination

Côté réception :

  • Le TCP récepteur place les données d'un segment dans le tampon de l'utilisateur récepteur
  • Le TCP récepteur notifie l'utilisateur récepteur

Informations de contrôle :

  • Les TCP incluent des informations de contrôle dans les segments qu'ils utilisent pour assurer une transmission de données ordonnée fiable

Modèle de communication Internet

[Segment TCP] → [Datagramme Internet] → [Paquet réseau local] → ...Transmission par passerelle... → [Destination]

Module Internet :

  • Associé à chaque TCP
  • Fournit une interface vers le réseau local
  • Empaquette les segments TCP dans des datagrammes Internet
  • Route ces datagrammes vers un module Internet de destination ou une passerelle intermédiaire

Transmission sur réseau local :

  • Pour transmettre le datagramme via le réseau local, il est intégré dans un paquet de réseau local
  • Les commutateurs de paquets peuvent effectuer un empaquetage supplémentaire, une fragmentation ou d'autres opérations pour réaliser la livraison du paquet local au module Internet de destination

Opération de passerelle

Au niveau d'une passerelle entre réseaux :

  1. Déballage : Le datagramme Internet est « déballé » de son paquet local
  2. Examen : Détermine par quel réseau le datagramme Internet doit voyager ensuite
  3. Rempaquetage : Le datagramme Internet est « emballé » dans un paquet local adapté au réseau suivant
  4. Routage : Routé vers la passerelle suivante ou vers la destination finale

Mécanisme de fragmentation :

  • Une passerelle est autorisée à diviser un datagramme Internet en fragments de datagramme Internet plus petits si cela est nécessaire pour la transmission via le réseau suivant
  • Pour ce faire, la passerelle produit un ensemble de datagrammes Internet, chacun transportant un fragment
  • Les fragments peuvent être encore divisés en fragments plus petits aux passerelles suivantes
  • Le format de fragment de datagramme Internet est conçu de sorte que le module Internet de destination puisse réassembler les fragments en datagrammes Internet

Destination finale :

  • Un module Internet de destination déballe le segment du datagramme (après avoir réassemblé le datagramme, si nécessaire)
  • Le passe au TCP de destination

Type de service

Ce modèle simple de l'opération passe sous silence de nombreux détails. Une caractéristique importante est le type de service (type of service). Cela fournit des informations à la passerelle (ou module Internet) pour la guider dans la sélection des paramètres de service à utiliser pour traverser le réseau suivant.

Inclus dans les informations de type de service :

  • Priorité du datagramme (precedence) : Niveau de priorité pour le traitement
  • Informations de sécurité (security information) : Pour permettre aux hôtes et aux passerelles qui fonctionnent dans des environnements sécurisés multiniveaux de séparer correctement les datagrammes pour des considérations de sécurité

2.3. The Host Environment (L'environnement hôte)

Le TCP est supposé être un module dans un système d'exploitation. Les utilisateurs accèdent au TCP de la même manière qu'ils accéderaient au système de fichiers. Le TCP peut (may) appeler d'autres fonctions du système d'exploitation, par exemple pour gérer des structures de données.

Interface réseau :

  • L'interface réelle avec le réseau est supposée être contrôlée par un module de pilote de périphérique
  • Le TCP n'appelle pas directement le pilote de périphérique réseau
  • Plutôt, il appelle le module de protocole de datagramme Internet qui peut à son tour appeler le pilote de périphérique

Implémentation frontale :

  • Les mécanismes de TCP n'empêchent pas l'implémentation du TCP dans un processeur frontal
  • Cependant, dans une telle implémentation, un protocole hôte-frontal doit (must) fournir la fonctionnalité pour prendre en charge le type d'interface TCP/utilisateur décrit dans ce document

2.4. Interfaces

Interface TCP/Utilisateur

L'interface TCP/utilisateur fournit des appels effectués par l'utilisateur sur le TCP pour :

  • OPEN (ouvrir) ou CLOSE (fermer) une connexion
  • SEND (envoyer) ou RECEIVE (recevoir) des données
  • Obtenir le STATUS (statut) d'une connexion

Ces appels sont comme d'autres appels de programmes utilisateur sur le système d'exploitation, par exemple, les appels pour ouvrir, lire et fermer un fichier.

Interface TCP/Internet

L'interface TCP/Internet fournit des appels pour envoyer et recevoir des datagrammes adressés aux modules TCP dans des hôtes n'importe où dans le système Internet. Ces appels ont des paramètres pour passer :

  • L'adresse
  • Le type de service
  • La priorité
  • La sécurité
  • D'autres informations de contrôle

2.5. Relation to Other Protocols (Relation avec d'autres protocoles)

Le diagramme suivant illustre la place du TCP dans la hiérarchie des protocoles :

+------+ +-----+ +-----+       +-----+
|Telnet| | FTP | |Voice| ... | | Niveau application
+------+ +-----+ +-----+ +-----+
| | | |
+-----+ +-----+ +-----+
| TCP | | RTP | ... | | Niveau hôte
+-----+ +-----+ +-----+
| | |
+-------------------------------+
| Internet Protocol & ICMP | Niveau passerelle
+-------------------------------+
|
+---------------------------+
| Local Network Protocol | Niveau réseau
+---------------------------+

Relations des protocoles

Points clés :

  • Il est prévu que le TCP puisse prendre en charge efficacement les protocoles de niveau supérieur
  • Il devrait être facile d'interfacer des protocoles de niveau supérieur comme l'ARPANET Telnet ou AUTODIN II THP au TCP

2.6. Reliable Communication (Communication fiable)

Un flux de données envoyé sur une connexion TCP est livré de manière fiable et dans l'ordre à la destination.

Mécanismes de fiabilité

Numéros de séquence et accusés de réception :

  • La transmission est rendue fiable via l'utilisation de numéros de séquence et d'accusés de réception
  • Conceptuellement, chaque octet de données se voit attribuer un numéro de séquence
  • Le numéro de séquence du premier octet de données dans un segment est transmis avec ce segment et est appelé le numéro de séquence de segment (segment sequence number)
  • Les segments portent également un numéro d'accusé de réception (acknowledgment number) qui est le numéro de séquence du prochain octet de données attendu des transmissions dans la direction inverse

Retransmission :

  • Lorsque le TCP transmet un segment contenant des données, il en place une copie dans une file d'attente de retransmission et démarre un temporisateur
  • Lorsque l'accusé de réception pour ces données est reçu, le segment est supprimé de la file d'attente
  • Si l'accusé de réception n'est pas reçu avant l'expiration du temporisateur, le segment est retransmis

Note importante :

  • Un accusé de réception par TCP ne garantit pas que les données ont été livrées à l'utilisateur final
  • Cela signifie seulement que le TCP récepteur a pris la responsabilité de le faire

Contrôle de flux

Pour régir le flux de données entre les TCP, un mécanisme de contrôle de flux est employé :

  • Le TCP récepteur rapporte une « fenêtre » (window) au TCP émetteur
  • Cette fenêtre spécifie le nombre d'octets, à partir du numéro d'accusé de réception, que le TCP récepteur est actuellement prêt à recevoir

2.7. Connection Establishment and Clearing (Établissement et fermeture de connexion)

Adressage par socket

Identificateur de port :

  • Pour identifier les flux de données séparés qu'un TCP peut gérer, le TCP fournit un identificateur de port (port identifier)
  • Étant donné que les identificateurs de port sont sélectionnés indépendamment par chaque TCP, ils peuvent ne pas être uniques

Création de socket :

  • Pour fournir des adresses uniques au sein de chaque TCP, nous concaténons une adresse Internet identifiant le TCP avec un identificateur de port pour créer un socket
  • Un socket sera unique dans tous les réseaux connectés ensemble

Spécification de connexion :

  • Une connexion est entièrement spécifiée par la paire de sockets aux extrémités
  • Un socket local peut (may) participer à de nombreuses connexions vers différents sockets étrangers
  • Une connexion peut (can) être utilisée pour transporter des données dans les deux directions, c'est-à-dire qu'elle est « full duplex » (bidirectionnelle complète)

Association port et processus

Propriété de port :

  • Les TCP sont libres d'associer les ports aux processus comme ils le choisissent
  • Cependant, plusieurs concepts de base sont nécessaires dans toute implémentation :
    • Il doit (must) y avoir des sockets bien connus que le TCP associe uniquement aux processus « appropriés » par certains moyens
    • Nous envisageons que les processus peuvent (may) « posséder » des ports
    • Les processus peuvent initier des connexions uniquement sur les ports qu'ils possèdent

Spécification de connexion dans l'appel OPEN :

  • Une connexion est spécifiée dans l'appel OPEN par les arguments de port local et de socket étranger
  • En retour, le TCP fournit un nom de connexion local (court) par lequel l'utilisateur fait référence à la connexion dans les appels ultérieurs

Bloc de contrôle de transmission (TCB)

Pour stocker les informations de connexion, nous imaginons qu'il existe une structure de données appelée Bloc de contrôle de transmission (Transmission Control Block, TCB) :

  • Une stratégie d'implémentation ferait du nom de connexion local un pointeur vers le TCB pour cette connexion
  • L'appel OPEN spécifie également si l'établissement de connexion doit (should) être activement poursuivi ou passivement attendu

OPEN passif :

  • Une demande d'OPEN passif signifie que le processus souhaite accepter des demandes de connexion entrantes plutôt que de tenter d'initier une connexion
  • Souvent, le processus demandant un OPEN passif acceptera une demande de connexion de n'importe quel appelant
  • Dans ce cas, un socket étranger composé de tous zéros est utilisé pour désigner un socket non spécifié
  • Les sockets étrangers non spécifiés ne sont autorisés que sur les OPEN passifs

2.8. Data Communication (Communication de données)

Une fois qu'une connexion est établie, les données peuvent circuler bidirectionnellement entre les processus. Le TCP garantit que ce flux de données est :

  • Fiable (Reliable) : Les données arrivent correctement
  • Ordonné (Ordered) : Les données arrivent dans le bon ordre
  • Contrôlé par flux (Flow controlled) : L'extrémité réceptrice n'est pas submergée

2.9. Precedence and Security (Priorité et sécurité)

Le TCP fournit des mécanismes pour gérer :

  • Priorité (Precedence) : Niveaux de priorité pour le trafic
  • Classifications de sécurité (Security classifications) : Pour fonctionner dans des environnements sécurisés multiniveaux
  • Compartimentage (Compartmentation) : Ségrégation de différents domaines de sécurité

Ces fonctionnalités sont héritées de la couche protocole Internet et sont maintenues de bout en bout via la connexion TCP.


2.10. Robustness Principle (Principe de robustesse)

Un principe directeur pour l'implémentation TCP est le principe de robustesse (Robustness Principle), souvent énoncé comme :

« Soyez conservateur dans ce que vous envoyez, soyez libéral dans ce que vous acceptez » ("Be conservative in what you send, be liberal in what you accept")

Cela signifie :

  • Les implémentations TCP devraient (should) adhérer soigneusement aux spécifications lors de l'envoi de données
  • Mais devraient être tolérantes et flexibles lors de la réception de données, tentant d'interpréter même des entrées légèrement mal formées lorsque cela est possible

Ce principe aide à assurer l'interopérabilité entre différentes implémentations et favorise la stabilité globale d'Internet.


Suivant : 3. Functional Specification (Spécification fonctionnelle) - Spécification détaillée des opérations TCP et des formats de segments