Description des fonctionnalités TCP de Windows 2000 et Windows Server 2003

Traductions disponibles Traductions disponibles
Numéro d'article: 224829 - Voir les produits auxquels s'applique cet article
Important Cet article contient des informations sur la modification du Registre. Avant de modifier le Registre, pensez à le sauvegarder et assurez-vous que vous savez le restaurer en cas de problème. Pour plus d'informations sur la sauvegarde, la restauration et la modification du Registre, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
256986 Description du Registre de Microsoft Windows
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article décrit les fonctionnalités TCP suivantes de Microsoft Windows 2000 et Microsoft Windows Server 2003 :
  • Taille de la fenêtre TCP
  • Options TCP désormais prises en charge
  • Mise à l'échelle de la fenêtre - RFC 1323
  • Horodatage - RFC 1323
  • Protection contre les numéros de séquence encapsulés (PAWS)
  • Accusés de réception sélectifs (SACKS) - RFC 2018
  • Comportement de retransmission TCP et retransmission rapide
Les fonctionnalités TCP peuvent être changées en modifiant les entrées dans le Registre.

Plus d'informations

Avertissement Toute modification incorrecte du Registre à l'aide de l'Éditeur du Registre ou d'une autre méthode peut entraîner des problèmes sérieux. Ces problèmes peuvent vous obliger à réinstaller votre système d'exploitation. Microsoft ne peut pas garantir que ces problèmes puissent être résolus. Vous assumez l'ensemble des risques liés à la modification du Registre.

Taille de la fenêtre TCP

La taille de la fenêtre de réception TCP correspond à la quantité de données (en octets) qui peuvent être mises en mémoire tampon pendant une connexion. L'hôte d'envoi peut envoyer uniquement cette quantité de données avant de devoir attendre un accusé de réception et une mise à jour de fenêtre de la part de l'hôte de réception. La pile TCP/IP Windows est conçue pour s'autorégler dans la plupart des environnements et elle utilise des tailles de fenêtres par défaut plus importantes que dans les versions antérieures.

Au lieu d'utiliser une taille de fenêtre de réception par défaut codée de manière irréversible, le protocole TCP effectue un ajustement par incréments pairs de la taille maximale de segment (MSS, Maximum Segment Size), qui est négociée pendant l'installation de la connexion. L'ajustement de la fenêtre de réception selon des incréments pairs de la taille MSS permet d'augmenter le pourcentage de segments TCP de taille complète utilisés durant les transmissions de données en bloc.

La taille de la fenêtre de réception est déterminée de la manière suivante :
  1. La première demande de connexion envoyée à un hôte distant publie une taille de fenêtre de réception de 16 K (16 384 octets).
  2. Lorsque la connexion est établie, le taille de la fenêtre de réception est arrondie à un incrément pair de la taille MSS.
  3. La taille de la fenêtre est ajustée à quatre fois la taille MSS, jusqu'à une taille maximale de 64 K, à moins que l'option de mise à l'échelle de la fenêtre (RFC 1323) ne soit utilisée.
Remarque Reportez-vous à la section « Mise à l'échelle de la fenêtre » de cet article.

Pour les connexions Ethernet, la taille de la fenêtre sera définie normalement sur 17 520 octets (16 K arrondis à douze segments de 1 460 octets). La taille de la fenêtre peut diminuer lorsqu'une connexion est établie avec un ordinateur qui prend en charge les options d'en-tête TCP étendues, telles que les accusés de réception sélectifs (SACKS) et les horodatages. Ces deux options augmentent la taille d'en-tête TCP à plus de 20 octets, ce qui réduit l'espace disponible pour les données.

Dans les versions précédentes de Windows NT, la taille de la fenêtre pour une connexion Ethernet était de 8 760 octets, soit six segments de 1 460 octets.

Pour affecter une valeur spécifique à la taille de la fenêtre de réception, ajoutez la valeur TcpWindowSize à la sous-clé de Registre spécifique à votre version de Windows. Pour cela, procédez comme suit :
  1. Cliquez sur Démarrer, sur Exécuter, tapez Regedit, puis cliquez sur OK.
  2. Développez la sous-clé de Registre spécifique à votre version de Windows :
    • Pour Windows 2000, développez la sous-clé de Registre suivante :
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
    • Pour Windows Server 2003, développez la sous-clé de Registre suivante :
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  3. Dans le menu Edition, pointez sur Nouveau, puis cliquez sur Valeur DWORD.
  4. Dans la zone Nouvelle valeur, tapez TcpWindowSize, puis appuyez sur ENTRÉE.
  5. Cliquez sur Modifier dans le menu Edition.
  6. Tapez la taille de fenêtre souhaitée dans la zone Données de la valeur.

    Remarque. La plage valide pour la taille de la fenêtre est 0-0x3FFFC000 hexadécimal.
Cette valeur n'est pas présente par défaut. Lorsque vous ajoutez la valeur TcpWindowSize, elle remplace l'algorithme de taille de la fenêtre par défaut discuté ci-dessus.

Remarque TcpWindowSize peut également être ajoutée à la clé Parameters pour définir globalement la taille de la fenêtre pour toutes les interfaces.

Options TCP désormais prises en charge

Dans le passé, les options TCP étaient utilisées principalement pour négocier des tailles de segments maximales. Dans Windows, les options TCP sont utilisées pour la mise à l'échelle de la fenêtre, l'horodatage et l'ACK sélectif.

Il existe deux types d'options TCP :
  1. une option TCP à octet unique, utilisée pour indiquer un type d'option spécifique ;
  2. une option TCP à octets multiples, constituée d'un type d'option, d'une longueur d'option et d'une série d'octets d'option.
La liste suivante répertorie chaque type, longueur, nom et description d'option TCP.
Type : 0
Longueur : 1
Option : End of Option List
Description : cette option est utilisée lorsqu'un remplissage est nécessaire pour la dernière option TCP.

Type : 1
Longueur : 1
Option : No Operation
Description : cette option est utilisée lorsqu'un remplissage est nécessaire et que d'autres options TCP suivent dans le même paquet.

Type : 2
Longueur : 4
Option : Maximum Segment Size
Description : indique la taille maximale d'un segment TCP qui peut être envoyée par le biais du réseau.

Type : 3
Longueur : 3
Option : Window Scale Option
Description : identifie le facteur de mise à l'échelle à utiliser lors de l'utilisation de tailles de fenêtres supérieures à 64 k.

Type : 8
Longueur : 10
Option : Time Stamp Option
Description : utilisée pour aider à calculer la durée des boucles (RTT, Round Trip Times) des paquets transmis.

Type : 4
Longueur : 2
Option : TCP SACK permitted
Description : informe les autres hôtes que les accusés de réception sélectifs sont autorisés.

Type : 5
Longueur : varie
Option : TCP SACK Option
Description : utilisée par les hôtes afin de déterminer si des paquets hors-service ont été reçus.

Mise à l'échelle de la fenêtre

Pour une utilisation plus efficace des réseaux à bande passante élevée, une plus grande taille de fenêtre TCP peut être utilisée. Le champ de taille de fenêtre TCP contrôle le flux des données et est limité à 2 octets ou une taille de fenêtre de 65 535 octets.

Le champ de taille ne pouvant pas être étendu, un facteur de mise à l'échelle est utilisé. L'échelle de fenêtre TCP est une option utilisée pour augmenter la taille de fenêtre maximale de 65 535 octets à 1 gigaoctet.

L'option de mise à l'échelle de la fenêtre est utilisée uniquement durant la connexion TCP en trois temps. La valeur de l'échelle de la fenêtre représente le nombre de bits desquels il faut décaler vers la gauche le champ de taille de fenêtre 16 bits. La valeur de l'échelle de la fenêtre peut être définie de 0 (aucun décalage) à 14.

Pour calculer la taille réelle de la fenêtre, multipliez la taille de la fenêtre par 2^S, où S est la valeur d'échelle.
Par exemple :
Si la taille de la fenêtre est 65 535 octets avec un facteur d'échelle de fenêtre de 3.
Taille réelle de la fenêtre = 65 535*2^3
Taille réelle de la fenêtre = 524 280
La trace de Moniteur réseau suivante illustre comment l'option d'échelle de la fenêtre est utilisée :
TCP: ....S., len:0, seq:725163-725163, ack:0, win:65535, src:1217 dst:139(NBT Session)
TCP: Source Port = 0x04C1
TCP: Destination Port = NETBIOS Session Service
TCP: Sequence Number = 725163 (0xB10AB)
TCP: Acknowledgement Number = 0 (0x0)
TCP: Data Offset = 44 (0x2C)
TCP: Reserved = 0 (0x0000)
+ TCP: Flags = 0x02 : ....S.
TCP: Window = 65535 (0xFFFF)
TCP: Checksum = 0x8565
TCP: Urgent Pointer = 0 (0x0)
TCP: Options
+ TCP: Maximum Segment Size Option
TCP: Option Nop = 1 (0x1)
TCP: Window Scale Option
TCP: Option Type = Window Scale
TCP: Option Length = 3 (0x3)
TCP: Window Scale = 3 (0x3)

TCP: Option Nop = 1 (0x1)
TCP: Option Nop = 1 (0x1)
+ TCP: Timestamps Option
TCP: Option Nop = 1 (0x1)
TCP: Option Nop = 1 (0x1)
+ TCP: SACK Permitted Option
Il est important de noter que la taille de la fenêtre utilisée dans la connexion en trois temps réelle n'est PAS la taille de la fenêtre qui est mise à l'échelle. D'après la section 2.2 de la RFC 1323, « Le champ de fenêtre dans un segment SYN (par exemple, un [SYN] ou un [SYN, ACK]) lui-même n'est jamais mis à l'échelle ».

Cela signifie que le premier paquet de données envoyé après la connexion en trois temps correspond à la taille de fenêtre réelle. S'il y a un facteur de mise à l'échelle, la taille initiale de la fenêtre de 65 535 octets est toujours utilisée. La taille de la fenêtre est ensuite multipliée par le facteur de mise à l'échelle identifié dans la connexion en trois temps. Le tableau suivant représente les limites de facteur de mise à l'échelle pour différentes tailles de fenêtres.

Réduire ce tableauAgrandir ce tableau
Facteur d'échelleValeur d'échelleFenêtre initialeFenêtre mise à l'échelle
0165 535 ou moins65 535 ou moins
1265535131,070
2465535262,140
3865535524,280
416655351,048,560
532655352,097,120
664655354,194,240
7128655358,388,480
82566553516,776,960
95126553533,553,920
1010246553567,107,840
11204865535134,215,680
12409665535268,431,360
13819265535536,862,720
1416384655351,073,725,440

Par exemple :

Si la taille de la fenêtre dans le Registre est entrée comme 269000000 (269M) en décimal, le facteur de mise à l'échelle durant la connexion en trois temps est 13, car un facteur de mise à l'échelle de 12 autorise seulement une taille de fenêtre allant jusqu'à 268 431 360 octets (268M).

La taille initiale de la fenêtre dans cet exemple serait calculée comme suit :
65 535 octets avec un facteur d'échelle de fenêtre de 13.
Taille réelle de la fenêtre = 65 535*2^13
Taille réelle de la fenêtre = 536 862 720
Lorsque la valeur de taille de fenêtre est ajoutée au Registre et que sa taille est supérieure à la valeur par défaut, Windows tente d'utiliser une valeur d'échelle adaptée à la nouvelle taille de fenêtre.

La valeur Tcp1323Opts dans la clé de Registre suivante peut être ajoutée pour contrôler la mise à l'échelle des fenêtres et l'horodatage :
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
  1. Dans la barre d'outils, cliquez sur Démarrer, sur Exécuter, puis tapez Regedit pour démarrer l'Éditeur du Registre.
  2. Dans l'Éditeur du Registre, cliquez sur Edition, pointez sur Nouveau, puis cliquez sur Valeur DWORD.
  3. Dans la zone Nouvelle valeur, tapez Tcp1323Opts, appuyez sur ENTRÉE puis, dans le menu Edition, cliquez sur Modifier. Remarque La plage valide est 0,1,2 ou 3, où :
0 (désactiver les options RFC 1323)
1 (échelle de fenêtre activée uniquement)
2 (horodatages activés uniquement)
3 (les deux options sont activées)
Cette entrée de Registre contrôle les options d'horodatages et de mise à l'échelle de fenêtre RFC 1323. L'horodatage et la mise à l'échelle de fenêtre sont activés par défaut, mais peuvent être manipulés avec des binaires indicateurs. Le bit 0 contrôle la mise à l'échelle de la fenêtre et le bit 1 contrôle les horodatages.

Horodatages

Auparavant, la pile TCP/IP utilisait un échantillon par fenêtre de données envoyée afin de calculer la durée des boucles (RTT). Une minuterie (minuterie de retransmission) était définie lorsque le paquet était envoyé, jusqu'à ce que l'accusé de réception ait été reçu. Par exemple, si la taille de la fenêtre était de 64 240 octets (44 segments complets) sur un réseau Ethernet, un seul paquet sur 44 était utilisé pour recalculer la durée des boucles. Avec une taille de fenêtre maximale de 65 535 octets, ce taux d'échantillonnage était suffisant. Avec la mise à l'échelle de la fenêtre et une taille de fenêtre maximale de 1 gigaoctet, ce taux d'échantillonnage RTT n'est pas suffisant.

L'option d'horodatage TCP peut maintenant être définie pour être utilisée sur des segments (données et ACK) jugés appropriés par la pile, afin d'effectuer des opérations telles que le calcul RTT, le contrôle PAWS, et ainsi de suite. À l'aide de ces données, la durée RTT peut être calculée correctement avec de grandes tailles de fenêtres. La durée RTT est utilisée pour calculer les intervalles de retransmission. Des délais d'attente RTT et de retransmission exacts sont nécessaires afin de disposer d'un débit optimal.

Lorsque l'horodatage TCP est utilisé dans une session TCP, l'initiateur de la session envoie l'option dans son premier paquet de la connexion en trois temps TCP (paquet SYN). L'un et l'autre côté peuvent ensuite utiliser l'option TCP durant la session.

Option d'horodatages TCP (TSopt) :

Réduire ce tableauAgrandir ce tableau
Type = 8Longueur = 10Valeur TS (Tsval)Réponse d'écho TS (Tsecr)
1 octet1 octet4 octets4 octets

Le champ d'option d'horodatage peut être affiché dans une trace de Moniteur réseau en développant le champ d'options TCP, comme indiqué ci-dessous :
TCP: Timestamps Option
TCP: Option Type = Timestamps
TCP: Option Length = 10 (0xA)
TCP: Timestamp = 2525186 (0x268802)
TCP: Reply Timestamp = 1823192 (0x1BD1D8)

Protection contre les numéros de séquence encapsulés (PAWS)

Le champ du numéro de séquence TCP est limité à 32 bits, ce qui limite la quantité de numéros de séquence disponibles. Avec les réseaux à capacité élevée et un transfert de données important, il est possible d'encapsuler des numéros de séquence avant qu'un paquet ne parcoure le réseau. Lors de l'envoi de données sur un réseau d'un gigaoctet par seconde (Gbps), les numéros de séquence peuvent être encapsulés en 34 secondes. Si un paquet est différé, il est possible qu'un autre paquet puisse exister avec le même numéro de séquence. Pour éviter toute confusion en cas de présence de doublons de numéros de séquence, l'horodatage TCP est utilisé comme une extension du numéro de séquence. Les paquets ont des horodatages actuels et progressifs. Un paquet ancien a un horodatage plus ancien et est ignoré.

Accusés de réception sélectifs (SACKS)

Windows introduit la prise en charge d'une fonctionnalité de performance portant le nom d'Accusé de réception sélectif, ou SACK. La fonctionnalité SACK est particulièrement importante pour les connexions qui utilisent de grandes tailles de fenêtres TCP. Auparavant, un récepteur pouvait uniquement accuser réception du numéro de séquence le plus récent d'un flux de données contigu qui avait été reçu, ou le « côté gauche » de la fenêtre de réception. Lorsque la fonctionnalité SACK est activée, le récepteur continue à utiliser le numéro ACK pour accuser réception du côté gauche de la fenêtre de réception, mais il peut également accuser réception individuellement d'autres blocs de données reçues. La fonctionnalité SACKS utilise des options d'en-tête TCP, comme indiqué ci-dessous.

Elle utilise deux types d'options TCP.

TCP Sack-Permitted Option est utilisée uniquement dans un paquet SYN (durant l'établissement de la connexion TCP) pour indiquer qu'il est compatible avec l'ACK sélectif.

La deuxième option TCP, TCP Sack Option, contient l'accusé de réception pour un ou plusieurs blocs de données. Les blocs de données sont identifiés à l'aide du numéro de séquence au début et à la fin de ce bloc de données. On utilise également les termes « côté gauche » et « côté droit » du bloc de données.

Le type 4 est TCP Sack-Permitted Option, alors que le type 5 est TCP Sack Option. La longueur correspond à la longueur en octets de cette option TCP.

Tcp Sack Permitted :

Réduire ce tableauAgrandir ce tableau
Type = 4Longueur = 2
1 octet1 octet

Tcp SACK Option :

Réduire ce tableauAgrandir ce tableau
Type = 5Longueur = variable
1 octetCôté gauche du 1er bloc jusqu'au côté droit du 1er bloc
...
Côté gauche du Nième bloc jusqu'au côté droit du Nième bloc

Avec la fonctionnalité SACK activée (valeur par défaut), un paquet ou une série de paquets peut être ignorée et le récepteur informe l'expéditeur quant aux données qui ont été reçues et signale les emplacements où il peut y avoir des « trous » dans les données. L'expéditeur peut ensuite retransmettre sélectivement les données manquantes sans retransmission des blocs de données qui ont déjà été reçus avec succès. La fonctionnalité SACK est contrôlée par le paramètre de Registre SackOpts.

La valeur SackOpts dans la clé de Registre suivante peut être modifiée pour contrôler l'utilisation des accusés de réception sélectifs :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  1. Dans la barre d'outils, cliquez sur Démarrer, sur Exécuter, puis tapez Regedit pour démarrer l'Éditeur du Registre.
  2. Recherchez et cliquez sur la clé précitée dans l'Éditeur du Registre, puis cliquez sur Modifier dans le menu Edition.
  3. Tapez la valeur souhaitée dans la zone Données de la valeur.
REMARQUE : la valeur binaire valide est 0 ou 1, la valeur par défaut est 1. Ce paramètre contrôle si l'accusé de réception sélectif (SACK - RFC 2018) est activé.

La trace de Moniteur réseau suivante montre un hôte qui accuse réception de toutes les données jusqu'au numéro de séquence 54857341, plus les données des numéros de séquence 54858789-54861685. Les données manquantes sont comprises entre 54857341 et 54858788.
TCP: .A...., len:0, seq:925104-925104, ack:54857341, win:32722, src:1242 dst:139
TCP: Source Port = 0x04DA
TCP: Destination Port = NETBIOS Session Service
TCP: Sequence Number = 925104 (0xE1DB0)
TCP: Acknowledgement Number = 54857341 (0x3450E7D)
TCP: Data Offset = 44 (0x2C)
TCP: Reserved = 0 (0x0000)
+ TCP: Flags = 0x10 : .A....
TCP: Window = 32722 (0x7FD2)
TCP: Checksum = 0x4A72
TCP: Urgent Pointer = 0 (0x0)
TCP: Options
TCP: Option Nop = 1 (0x1)
TCP: Option Nop = 1 (0x1)
+ TCP: Timestamps Option
TCP: Option Nop = 1 (0x1)
TCP: Option Nop = 1 (0x1)
TCP: SACK Option
TCP: Option Type = 0x05
TCP: Option Length = 10 (0xA)
TCP: Left Edge of Block = 54858789 (0x3451425)
TCP: Right Edge of Block = 54861685 (0x3451F75)

Comportement de retransmission TCP et retransmission rapide

Retransmission TCP

En guise d'examen du comportement de retransmission normal, le protocole TCP démarre une minuterie de retransmission lorsque chaque segment sortant est transmis au protocole Internet (IP, Internet Protocol). Si aucun accusé de réception n'a été reçu pour les données d'un segment spécifique avant l'expiration de la minuterie, le segment est retransmis.

Le délai d'attente de retransmission (RTO) est ajusté continuellement de façon à correspondre aux caractéristiques de la connexion au moyen de calculs SRTT (Smoothed Round Trip Time), comme décrit dans la RFC 793. La minuterie d'un segment donné est doublée après chaque retransmission de ce segment. Grâce à cet algorithme, le protocole TCP s'adapte au délai normal d'une connexion.

Retransmission rapide

Il peut arriver que le protocole TCP retransmette des données avant l'expiration de la minuterie. Cela peut par exemple se produire à cause d'une fonctionnalité nommée « retransmission rapide ». Lorsqu'un récepteur qui prend en charge les retransmissions rapides reçoit des données avec un numéro de séquence situé au-delà du numéro attendu, il est probable que certaines données ont été ignorées. Pour aider à informer l'expéditeur de cet événement, le récepteur envoie immédiatement un ACK, avec le numéro d'ACK défini sur le numéro de séquence qu'il attendait. Il continuera à effectuer cette opération pour chaque segment TCP supplémentaire qui arrive. Lorsque l'expéditeur commence à recevoir un flux de données ACK qui accuse réception du même numéro de séquence, il est probable qu'un segment a été ignoré. L'expéditeur renverra immédiatement le segment que le récepteur attend, sans attendre l'expiration de la minuterie. Cette optimisation améliore sensiblement les performances lorsque des paquets sont fréquemment ignorés.

Par défaut, Windows renvoie un segment s'il reçoit trois ACK pour le même numéro de séquence (un ACK et 2 doublons) et que ce numéro de séquence est inférieur au numéro actuel. Ce comportement peut être contrôlé par le biais du paramètre de Registre TcpMaxDupAcks.

La valeur TcpMaxDupAcks dans la clé de Registre suivante peut être modifiée de façon à contrôler le nombre d'ACK nécessaire pour démarrer une retransmission rapide :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  1. Dans la barre d'outils, cliquez sur Démarrer, sur Exécuter, puis tapez Regedit pour démarrer l'Éditeur du Registre.
  2. Recherchez et cliquez sur la clé précitée dans l'Éditeur du Registre, puis cliquez sur Modifier dans le menu Edition.
  3. Tapez la valeur souhaitée dans la zone Données de la valeur.
REMARQUE : la plage valide est 1-3, la valeur par défaut est 2.

Ce paramètre détermine le nombre d'ACK en double qui doivent être reçus pour le même numéro de séquence de données envoyées avant que la « retransmission rapide » ne soit déclenchée afin de renvoyer le segment qui a été ignoré en transit.

Propriétés

Numéro d'article: 224829 - Dernière mise à jour: jeudi 11 mai 2006 - Version: 6.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professionnel
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
Mots-clés : 
kbinfo kbenv kbnetwork KB224829
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com