web-dev-qa-db-fra.com

Clarification d'en-tête Keep-alive

On m'a demandé de créer un site et l'un des co-développeurs m'a dit qu'il me faudrait inclure l'en-tête Keep-Alive.

Bien, j'ai lu beaucoup à ce sujet et j'ai encore des questions.

msdn ->

La connexion ouverte améliore les performances lorsqu'un client effectue plusieurs demandes de contenu de page Web, car le serveur peut renvoyer le contenu de chaque demande plus rapidement. Sinon, le serveur doit ouvrir une nouvelle connexion pour chaque requête.

Regarder

enter image description here

  • Lorsque IIS (F) envoie un en-tête keep alive ( ou l'utilisateur envoie une alerte persistante ), cela signifie-t-il que (E, C, B) enregistrer une connexion uniquement pour ma session?
  • Où cette information est-elle conservée ( "cette connexion appartient à" Royi ")?
  • Cela signifie-t-il que personne d'autre ne peut utiliser cette connexion?
  • Si tel est le cas - cela signifie-t-il que keep alive-header - réduit le nombre d'utilisateurs de connexion superposés?
  • si oui, pendant combien de temps la connexion m’est-elle enregistrée? (En d'autres termes, si je mets Keep Alive- "Keep" jusqu'à quand?)

p.s. pour ceux qui s'intéressent:

en cliquant cette page d'exemple retournera l'en-tête Keep Alive

103
Royi Namir

Où cette information est-elle conservée ("cette connexion est établie entre l'ordinateur A et le serveur F")?

Une connexion TCP est reconnue par l'IP source, le port, l'IP de destination et le port. Votre système d'exploitation, tous les périphériques de session intermédiaires et le système d'exploitation du serveur reconnaîtront la connexion.

HTTP fonctionne avec request-response: le client se connecte au serveur, effectue une requête et obtient une réponse. Sans keep-alive, la connexion à un serveur HTTP est fermée après chaque réponse. Avec HTTP Keep-Alive, vous maintenez la connexion TCP sous-jacente ouverte jusqu'à ce que certains critères soient remplis.

Cela permet plusieurs paires requête-réponse sur une seule connexion TCP, éliminant ainsi le démarrage relativement lent de la connexion TCP.

Lorsque IIS (F) envoie un en-tête Keep Alive (ou un utilisateur envoie une alerte), cela signifie-t-il que (E, C, B) enregistre une connexion?

Les routeurs n'ont pas besoin de se souvenir des sessions. En fait, plusieurs paquets TCP appartenant à la même session TCP ne doivent pas nécessairement tous passer par les mêmes routeurs, c'est-à-dire que TCP est à gérer. Les routeurs choisissent simplement le meilleur chemin IP et transmettent les paquets. Keep-alive est uniquement pour le client, le serveur et tout autre périphérique intermédiaire sensible à la session.

qui est seulement pour ma session?

Cela signifie-t-il que personne d'autre ne peut utiliser cette connexion?

C’est le intention de TCP connexions : c’est une connexion de bout en bout destinée uniquement à ces deux parties.

Si tel est le cas - cela signifie-t-il que keep alive-header - réduit le nombre d'utilisateurs de connexion superposés?

Définissez "connexions superposées". Voir connexion persistante HTTP pour certains avantages et inconvénients, tels que:

  • Réduisez l'utilisation du processeur et de la mémoire (car moins de connexions sont ouvertes simultanément).
  • Active le traitement en pipeline HTTP des demandes et des réponses.
  • Réduction de l'encombrement du réseau (moins de connexions TCP).
  • Latence réduite dans les requêtes suivantes (pas de handshaking).

si oui, pendant combien de temps la connexion m’est-elle enregistrée? (En d'autres termes, si je mets Keep Alive- "Keep" jusqu'à quand?)

Une réponse typique de persistance ressemble à ceci:

Keep-Alive: timeout=15, max=100

Voir En-tête Keep-Alive du protocole de transfert d'hypertexte (HTTP) par exemple (brouillon pour HTTP/2 où l'en-tête de maintien en activité est expliqué plus en détail que les deux 2616 et - 2086 ):

  • Un hôte définit la valeur du paramètre timeout sur l'heure à laquelle l'hôte permettra à une connexion inactive de rester ouverte avant sa fermeture. Une connexion est inactive si aucune donnée n'est envoyée ou reçue par un hôte.

  • Le paramètre max indique le nombre maximal de demandes qu'un client peut effectuer ou qu'un serveur autorisera à effectuer sur la connexion persistante. Une fois que le nombre spécifié de demandes et de réponses a été envoyé, l'hôte qui a inclus le paramètre peut fermer la connexion.

Cependant, le serveur est libre de fermer la connexion après un délai ou un nombre de requêtes arbitraire (tant qu'il renvoie la réponse à la requête en cours). La façon dont cela est mis en œuvre dépend de votre serveur HTTP.

141
CodeCaster