web-dev-qa-db-fra.com

Comment s'effectue la communication entre un navigateur et un serveur Web?

Quelqu'un peut-il expliquer comment la communication a lieu entre le navigateur et le serveur Web? Je veux savoir comment

  • GET, POST verbes (entre autres)
  • biscuits
  • séances
  • chaînes de requête

travailler dans les coulisses.

40
Madhan

Hyper Text Transfer Protocol (HTTP) est un protocole utilisé pour transférer des pages Web (comme celui que vous lisez en ce moment). Un protocole n'est vraiment qu'une façon standard de faire les choses. Si vous deviez rencontrer le président des États-Unis ou le roi d'un pays, il y aurait des procédures spécifiques à suivre. Vous ne pouviez pas simplement monter et dire "salut mec". Il y aurait une manière spécifique de marcher, de parler, une salutation standard et une manière standard de terminer la conversation. Les protocoles de la pile TCP/IP ont le même objectif.

La pile TCP/IP comprend quatre couches: application, transport, Internet et réseau. À chaque couche, il existe différents protocoles qui sont utilisés pour normaliser le flux d'informations, et chacun est un programme informatique (exécuté sur votre ordinateur) qui est utilisé pour formater les informations dans un paquet au fur et à mesure qu'il descend dans la pile TCP/IP. Un paquet est une combinaison des données de la couche application, de l'en-tête de la couche transport (TCP ou UDP) et de l'en-tête de la couche IP (la couche réseau prend le paquet et le transforme en trame).

La couche application

... comprend toutes les applications qui utilisent le réseau pour transférer des données. Il ne se soucie pas de la façon dont les données sont échangées entre deux points et en sait très peu sur l'état du réseau. Les applications transmettent les données à la couche suivante de la pile TCP/IP, puis continuent d'exécuter d'autres fonctions jusqu'à ce qu'une réponse soit reçue. La couche application utilise des noms d'hôte (comme www.dalantech.com) pour l'adressage. Exemples de protocoles de couche application: Hyper Text Transfer Protocol (navigation HTTP), Simple Mail Transfer Protocol (SMTP - courrier électronique), Domain Name Services (DNS - résolution d'un nom d'hôte en adresse IP), pour n'en nommer que quelques-uns.

Le but principal de la couche application est de fournir un langage de commande et une syntaxe communs entre les applications qui s'exécutent sur différents systèmes d'exploitation, comme un interprète. Les données envoyées par une application qui utilise le réseau sont formatées pour se conformer à l'une des nombreuses normes définies. L'ordinateur récepteur peut comprendre les données envoyées même s'il exécute un système d'exploitation différent de celui de l'expéditeur en raison des normes auxquelles toutes les applications réseau sont conformes.

La couche transport

... est responsable de l'attribution des numéros de port source et de destination aux applications. Les numéros de port sont utilisés par la couche transport pour l'adressage et ils vont de 1 à 65 535. Les numéros de port de 0 à 1023 sont appelés "ports bien connus". Les nombres inférieurs à 256 sont réservés aux services publics (standard) qui s'exécutent au niveau de la couche application. En voici quelques-uns: 25 pour SMTP, 53 pour DNS (udp pour la résolution de domaine et tcp pour les transferts de zone) et 80 pour HTTP. Les numéros de port de 256 à 1023 sont attribués par l'IANA aux entreprises pour les applications qu'elles vendent.

Les numéros de port de 1024 à 65 535 sont utilisés pour les applications côté client - le navigateur Web que vous utilisez pour lire cette page, par exemple. Windows n'attribuera que des numéros de port jusqu'à 5 000, soit plus que suffisamment de numéros de port pour un PC Windows. Chaque application a un numéro de port unique qui lui est attribué par la couche transport afin que, lorsque les données sont reçues par la couche transport, elle sache à quelle application les transmettre. Un exemple est lorsque vous avez plus d'une fenêtre de navigateur en cours d'exécution. Chaque fenêtre est une instance distincte du programme que vous utilisez pour surfer sur le Web, et chacun a un numéro de port différent qui lui est attribué afin que vous puissiez aller sur www.dalantech.com dans une fenêtre de navigateur et ce site ne se charge pas dans une autre fenêtre du navigateur. Des applications comme FireFox qui utilisent des fenêtres à onglets ont simplement un numéro de port unique attribué à chaque onglet

La couche Internet

... est la "colle" qui unit le réseautage. Il permet l'envoi, la réception et le routage de données.

La couche réseau

... se compose de votre carte d'interface réseau (NIC) et du câble qui y est connecté. Il s'agit du support physique utilisé pour transmettre et recevoir des données. La couche réseau utilise les adresses MAC (Media Access Control), décrites plus haut, pour l'adressage. L'adresse MAC est fixe au moment de la fabrication d'une interface et ne peut pas être modifiée. Il y a quelques exceptions, comme les routeurs DSL qui vous permettent de cloner l'adresse MAC du NIC dans votre PC.

Pour plus d'informations:

68
OMG Ponies

Votre navigateur résout d'abord le nom de serveur via DNS en IP. Ensuite, il ouvre une connexion TCP au serveur Web et essaie de communiquer via HTTP. Habituellement, c'est sur le port TCP 80 mais vous pouvez en spécifier un autre (http://server:portnumber).

HTTP ressemble à ceci:

Une fois connecté, il envoie la requête, qui ressemble à:

GET /site HTTP/1.0
Header1: bla
Header2: blub
{emptyline}

Par exemple, un en-tête peut être Authorization ou Range. Voir ici pour en savoir plus.

Ensuite, le serveur répond comme ceci:

200 OK
Header3: foo
Header4: bar

content following here...

Par exemple, un en-tête peut être Date ou Content-Type. Voir ici pour en savoir plus.

Regardez Wikipedia pour HTTP pour plus d'informations sur ce protocole.

18
Albert

Les liens pour les spécifications de chaque aspect de la question sont les suivants:

  • GET, POST (entre autres) - La spécification HTTP discute de manière exhaustive tous les aspects de la communication HTTP (protocole de communication entre le serveur Web et le navigateur) .Il explique les protocoles de message de demande et de réponse.

  • Cookies - sont définis en attachant un Set-Cookie En-tête HTTP de la réponse HTTP.

  • QueryStrings - sont la partie de l'URL dans la requête HTTP qui suit la première occurrence d'un "?" personnage. La spécification liée concerne la section 3.4 de la spécification URI.

  • Sessions - HTTP est un protocole synchrone sans état. Les sessions, ou l'illusion de l'état, peuvent être créées en (1) utilisant des cookies pour stocker les données d'état sous forme de texte brut sur l'ordinateur du client, (2) en passant des valeurs de données dans l'URL et la chaîne de requête de la demande, (3) en soumettant = POST requêtes avec une collection de valeurs qui peuvent indiquer l'état et, (4) stockage des informations d'état par un mécanisme de persistance côté serveur qui est récupéré par une clé de session (la clé de session est résolue à partir de le cookie, URL/Querystring ou POST collection de valeurs.

Une explication de HTTP peut durer des jours, mais j'ai essayé de fournir une réponse concise mais conceptuellement complète, et d'inclure les liens appropriés pour une lecture plus approfondie des spécifications officielles.

16
smartcaveman

Votre navigateur est au-dessus de TCP/IP, car le Web est basé sur des normes, généralement le port 80, ce qui se passe lorsque vous entrez une adresse, comme google.com, votre ordinateur sur lequel le navigateur s'exécute, crée des paquets de données, encapsulées à chaque couche conformément aux normes OSI, (pensez aux enveloppes de différentes tailles, emballées dans chaque enveloppe de taille suivante), OSI définit 7 couches, dans l'une des enveloppes contient l'adresse source et l'adresse de destination (c'est-à-dire site Web) encodé en binaire.

Lorsqu'il atteint la 1ère couche, en termes OSI, il est transmis à travers l'émetteur multimédia (tel que câble, DSL).

Si vous êtes connecté via ISP, le paquet d'enveloppes en couches est transmis au FAI, le système réseau du FAI, parcourt le paquet d'enveloppes en couches en décodant dans l'ordre inverse pour trouver l'adresse, puis le FAI vérifie sa base de données du système de noms de domaine pour savoir s'ils ont une route vers cette adresse (mise en cache dans la mémoire, si c'est le cas, elle la transmet sur le réseau Internet - encore une fois un paquet d'enveloppes en couches).

Si ce n'est pas le cas, le FAI interroge le serveur DNS de niveau supérieur pour dire "Hé, donnez-moi l'itinéraire pour l'adresse fournie par vous, c'est-à-dire. le navigateur ', le serveur DNS de niveau supérieur passe ensuite la route au FAI qui est ensuite stocké dans la mémoire du serveur du FAI.

Le paquet d'enveloppes en couches est transmis et reçu par le serveur du site Web après un routage réussi des paquets (pensez au routage comme des panneaux indiquant les directions pour se rendre au serveur), qui à son tour, déballe le paquet d'enveloppes en couches, extrait l'adresse source et dit `` Aha, c'est pour moi, à droite, je connais l'adresse de destination (c'est-à-dire vous, le navigateur), puis le serveur met en paquets les pages Web dans des enveloppes en couches emballées et les renvoie (généralement en sens inverse, mais pas toujours le Cas).

Votre navigateur reçoit alors les enveloppes en paquets et déballe chacune d'entre elles. Ensuite, votre ordinateur désembrouille les données et votre navigateur affiche les pages à l'écran.

J'espère que cette réponse est suffisante pour votre compréhension.

8
t0mm13b
7
cMinor

Cela dépend du serveur Web, mais si vous vous demandez à quoi il ressemble du côté client, installez simplement Live Headers et Firebug pour firefox. Avec l'onglet net dans Firebug et les en-têtes live ouverts, il devrait être clair exactement comment les deux interagissent.

Pour un examen plus approfondi des données réelles dans les deux sens, utilisez wirehark .

4
Stefan Kendall

Il existe un produit commercial avec un logo intéressant qui vous permet de voir toutes sortes de trafic entre le serveur et le client nommé charles .

Les autres outils open source incluent: Live HttpHeaders , Wireshark ou Firebug .

3
miku

La communication entre un navigateur et un serveur Web a lieu à tellement de niveaux qu'il est presque impossible de répondre à cette question. HTTP joue un rôle, mais HTTP n'a pas de sens sans TCP qui n'a pas de sens sans IP qui n'a pas de sens sans un réseau physique sur lequel il a envoyé. Ensuite, il y a POST = vs demandes GET qui sont similaires mais suffisamment différentes pour justifier une discussion spéciale. Parfois, une demande HTTP doit être authentifiée, parfois, elle n'a pas besoin. Les types MIME doivent être mentionnés. Ensuite, un navigateur envoie une demande différente s'il existe un proxy Et puis les encodages jouent également un rôle. Donc, je suppose que la réponse la plus concise à ce genre de question est: le navigateur demande des données au serveur et le serveur donne les données demandées au navigateur.

2
René Nyffenegger