web-dev-qa-db-fra.com

Qu'est-ce qu'un délai d'expiration de connexion lors d'une demande http

J'ai trouvé deux explications sur le "timeout de connexion":

  1. Le serveur ferme la connexion de socket lorsque le client n'envoie aucun octet au serveur pendant [timeout] secondes. Il semble avoir une relation avec l'en-tête HTTP (Connection: keep-alive).

  2. Le client cesse de tenter de se connecter au serveur après [timeout] secondes si la connexion socket n'a pas été établie pendant ce temps.

Je suis donc confus quant à la définition. Qu'est-ce qu'un délai de connexion? Quelle est la différence entre un délai de connexion côté client et un délai de connexion côté serveur?

Et quelle est la différence entre TimeToLive, timeout de connexion et timeout de demande?

10
欧阳维杰

J'essaierai d'y répondre un peu plus informellement.

Délai d'expiration de la connexion - est une période au cours de laquelle une connexion entre un client et un serveur doit être établie. Supposons que vous naviguiez sur votre navigateur (client) vers un site Web (serveur). Ce qui se passe, c'est que votre navigateur commence à écouter un message de réponse de ce serveur, mais cette réponse peut ne jamais arriver pour diverses raisons (par exemple, le serveur est hors ligne). Donc, s'il n'y a toujours pas de réponse du serveur après X secondes, votre navigateur `` abandonnera '' l'attente, sinon il pourrait rester bloqué en attendant l'éternité.

Délai d'expiration de la demande - comme dans le cas précédent où le client n'était pas disposé à attendre trop longtemps la réponse du serveur, le serveur n'est pas non plus disposé à maintenir en vie la connexion inutilisée. Une fois la connexion entre le serveur et le client établie, le client doit périodiquement informer le serveur qu'il est toujours là en envoyant des informations à ce serveur. Si le client ne parvient pas à envoyer des informations au serveur dans un délai spécifié, le serveur supprime simplement cette connexion car il pense que le client n'est plus là pour communiquer avec lui (pourquoi gaspiller des ressources sans signification).

Time to live (TTL) - est une valeur spécifiée à l'intérieur d'un paquet qui est définie lorsque le paquet est créé (généralement à 255) qui indique combien de temps le paquet peut rester vivant dans un réseau. Lorsque ce paquet passe par le réseau, il arrive aux routeurs qui se trouvent sur le chemin entre l'origine du paquet et sa destination. Chaque fois que le routeur renvoie le paquet, il diminue également sa valeur TTL de 1 et si cette valeur tombe à 0, au lieu de renvoyer le paquet, le routeur le supprime simplement car le paquet n'est pas censé Ce mécanisme est utilisé pour éviter que le réseau ne soit envahi par les données car chaque paquet ne peut y vivre que pendant une durée limitée.

15
Matus Dubrava