La connexion par socket TCP a-t-elle un « KeepAlive » ?
Introduction
L'établissement de connexions TCP implique la configuration de sockets sur les deux côtés. Dans des circonstances normales, ces prises restent ouvertes indéfiniment. Cependant, des situations peuvent survenir dans lesquelles une extrémité ferme la connexion sans en informer l'autre. Pour résoudre ce problème, TCP utilise un mécanisme appelé Keep-Alive.
Processus TCP Keep-Alive
TCP Keep-Alive fonctionne en fonction de trois paramètres configurables :
-
tcp_keepalive_time : Délai en secondes avant l'envoi d'un paquet ACK pour vérifier l'état de la connexion (par défaut 7200).
-
tcp_keepalive_probes : Nombre de sondes ACK à envoyer avant de terminer la connexion (par défaut 9).
-
tcp_keepalive_intvl : Intervalle en secondes entre l'envoi des sondes ACK (par défaut 75).
Le Le processus fonctionne comme suit :
- Après une période d'inactivité de tcp_keepalive_time, l'expéditeur envoie un paquet ACK.
- Si le destinataire répond avec un ACK, le processus se réinitialise et renvoie à l'étape 1.
- Si aucune réponse n'est reçue, l'expéditeur attend tcp_keepalive_intvl secondes et répète l'étape 2.
- Si les ACK tcp_keepalive_probes sont envoyés sans réponse, la connexion se termine avec un paquet RST.
Gotchas
-
2 heures par défaut : en raison de la valeur par défaut de tcp_keepalive_time de 2 heures, les connexions obsolètes peuvent persister pendant une période prolongée. périodes.
-
Facultatif Keep-Alive : Keep-Alive n'est pas obligatoire pour les implémentations TCP. Certains appareils peuvent ne pas le prendre en charge, ce qui peut entraîner des problèmes.
Modification des délais d'expiration TCP
Si nécessaire, vous pouvez modifier les paramètres TCP Keep-Alive sur votre système. La méthode spécifique dépend de votre système d'exploitation :
-
Linux : définissez les valeurs dans /proc ou utilisez sysctl.
-
Mac OS X : Définissez les valeurs avec sysctl ou modifiez /etc/sysctl.conf.
-
Windows : Ajustez les paramètres dans le registre.
Conclusion
Les connexions TCP disposent d'un mécanisme Keep-Alive qui détecte et met fin aux connexions obsolètes. Par défaut, Keep-Alive est activé et configuré pour mettre fin aux connexions après 2 heures et 11 minutes d'inactivité, mais ces paramètres peuvent être personnalisés pour des besoins spécifiques.
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!