Maison >Problème commun >Comment résoudre le problème des paquets TCP collants ?
Méthodes pour résoudre le problème des paquets persistants TCP : 1. Méthode d'envoi de longueur fixe, l'extrémité d'envoi utilise LEN comme longueur à mettre en paquet lors de l'envoi de données 2. Méthode de séquence de marques de queue, dans chaque donnée à envoyer ; Définir une séquence d'octets spéciale à la fin du paquet ; 3. Marquer l'en-tête étape par étape, définir un en-tête utilisateur et indiquer la taille de chaque paquet de données envoyé dans l'en-tête.
Méthodes pour résoudre le problème des paquets collants TCP :
1. Plan de conception 1 : Corrigé- longueur d'envoi
adopte une conception de longueur fixe lors de l'envoi de données, c'est-à-dire que quelle que soit la taille des données envoyées, elles sont mises en paquets dans une longueur fixe (pour faciliter la description, la longueur fixe est enregistré ici comme LEN), c'est-à-dire l'envoi Lors de l'envoi de données, la fin utilise LEN comme longueur pour la mise en paquets. De cette façon, le récepteur reçoit avec un LEN fixe, de sorte que l'envoi et la réception peuvent correspondre un à un. Lors du sous-package, il ne peut pas être complètement divisé en plusieurs paquets LEN complets. Le dernier paquet sera généralement plus petit que LEN. À ce stade, le dernier paquet peut remplir la partie manquante avec des octets vides.
Bien sûr, cette approche présente des défauts.
1. La longueur insuffisante du dernier paquet est remplie de parties vides, ce qui est un ordre d'octets invalide. Le destinataire peut alors avoir des difficultés à identifier cette partie invalide. Elle sert uniquement à remplir et n'a aucune signification réelle. Cela crée des difficultés pour le récepteur à traiter sa signification. Bien sûr, il existe des solutions qui peuvent être compensées en ajoutant des bits de drapeau, c'est-à-dire en ajoutant un en-tête de longueur fixe au début de chaque paquet de données, puis en envoyant ensemble la marque de fin du paquet de données. Le récepteur confirme la séquence d'octets invalide sur la base de cette marque, obtenant ainsi une réception complète des données.
2. Lorsque la longueur des paquets envoyés est distribuée de manière aléatoire, la bande passante sera gaspillée. Par exemple, la longueur d'envoi peut être de 1 100, 1 000, 4 000 octets, etc., et ils doivent tous être envoyés selon la longueur maximale fixe, qui est de 4 000. D'autres paquets contenant des paquets de données inférieurs à 4 000 octets seront également remplis pour 4000, entraînant un gaspillage inefficace de la charge réseau.
Pour résumer, cette solution convient aux situations où la longueur du paquet de données envoyé est relativement stable (tend vers une certaine valeur fixe) et donne de meilleurs résultats.
Recommandations d'apprentissage associées : PHP Programmation du débutant au compétent
2. Plan de conception 2 : Séquence de marques de queue
Définissez-en une à la fin de chaque paquet de données à envoyer Séquence d'octets spéciale, cette séquence a une signification particulière et est identifiée par le caractère de fin de la chaîne.
Avantages : il évite la complexité de la conception du programme, son efficacité est facile à vérifier et il est plus facile de répondre aux exigences de stabilité de la conception logicielle. En résumé, le plan trois est la meilleure politique !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!