Lorsque vous commencez à apprendre comment les noms de domaine, les adresses IP, les serveurs Web et les sites Web s'accordent, ils peuvent être déroutants ou écrasante parfois. Comment tout est-il mis en place pour fonctionner si bien?
La session de questions-réponses d'aujourd'hui nous est offerte par SuperUser, une subdivision de Stack Exchange, un regroupement communautaire de sites Web de questions-réponses.
Photo gracieuseté de Rosmarie Voegtli (Flickr).
SuperUser lecteur utilisateur3407319 veut savoir si les serveurs Web ne détiennent chacun qu'un site:
Basé sur ce que je comprends du DNS et liant un nom de domaine avec l'adresse IP du Serveur Web un site Web est stocké sur, cela signifie-t-il que chaque serveur Web ne peut contenir qu'un site Web? Si les serveurs Web hébergent plus d'un site Web, comment tout cela peut-il être résolu pour que je puisse accéder au site Web que je veux sans aucun problème ou confusion?
Les serveurs Web ne détiennent chacun qu'un site Web ou en détiennent-ils plus? ?
SuperUser contributeur Bob a la réponse pour nous:
Fondamentalement, le navigateur inclut le nom de domaine dans la requête HTTP afin que le serveur web sache quel domaine a été demandé et peut répondre en conséquence. Requêtes HTTP
Voici comment se passe votre requête
1.
L'utilisateur fournit une URL au format // host: port / path. 2.
Le navigateur extrait la partie hôte (domaine) de l'URL et la traduit en une adresse IP (si nécessaire) dans un processus connu sous le nom de résolution de nom. Cette traduction peut se faire via DNS, mais elle n'est pas obligatoire (par exemple, le fichier hosts local sur les systèmes d'exploitation courants contourne DNS). 3.
Le navigateur ouvre une connexion TCP au port spécifié, ou par défaut au port 80 sur cette adresse IP. 4.
Le navigateur envoie une requête HTTP. Pour HTTP / 1.1, cela ressemble à ceci: L'en-tête de l'hôte est standard et requis dans HTTP / 1.1. Il n'a pas été spécifié dans la spécification HTTP / 1.0, mais certains serveurs le supportent de toute façon.
A partir de là, le serveur web dispose de plusieurs informations qu'il peut utiliser pour décider de la réponse. Notez qu'il est possible qu'un seul serveur Web soit lié à plusieurs adresses IP
L'adresse IP demandée, à partir du socket TCP (l'adresse IP du client est également disponible, mais elle est rarement utilisée, et parfois pour blocking / filtering)
- Le port demandé, à partir du socket TCP
- Le nom d'hôte demandé, tel que spécifié dans l'en-tête du navigateur dans la requête HTTP
- Le chemin demandé
- Tous les autres en-têtes (cookies , etc.)
- Comme vous semblez l'avoir remarqué, la configuration d'hébergement partagé la plus courante de nos jours place plusieurs sites Web sur une même adresse IP: la combinaison de port, laissant seulement l'hôte pour faire la différence entre les sites.
un hôte virtuel basé sur le nom dans Apache-land, tandis que Nginx les appelle les noms de serveurs dans les blocs de serveur, et IIS préfère le serveur virtuel
Qu'en est-il de HTTPS?
HTTPS est un peu différent. Tout est identique jusqu'à l'établissement de la connexion TCP, mais après cela un tunnel TLS crypté doit être établi. L'objectif est de ne pas divulguer d'informations sur la requête.
Afin de vérifier que le serveur Web possède réellement ce domaine, le serveur Web doit envoyer un certificat signé par un tiers de confiance. Le navigateur compare alors ce certificat avec le domaine demandé.
Cela présente un problème. Comment le serveur Web sait-il quel certificat hôte / site Web envoyer s'il a besoin de le faire avant la réception de la requête HTTP?
Traditionnellement, ceci a été résolu en ayant une adresse IP dédiée (ou port) pour chaque site nécessitant HTTPS. Évidemment, cela devient problématique car nous manquons d'adresses IPv4
Entrez SNI (Server Name Indication). Le navigateur transmet maintenant le nom d'hôte pendant les négociations TLS, de sorte que le serveur Web dispose de ces informations assez tôt pour envoyer le bon certificat. Côté serveur Web, la configuration est très similaire à la configuration des hôtes virtuels HTTP.
L'inconvénient est que le nom d'hôte est maintenant passé en texte brut avant le cryptage, et qu'il s'agit essentiellement d'informations divulguées. Cela est généralement considéré comme un compromis acceptable bien que le nom d'hôte soit normalement exposé dans une requête DNS.
Que faire si vous demandez un site Web par adresse IP uniquement?
Ce que fait le serveur Web lorsqu'il ne sait pas L'hôte spécifique que vous avez demandé dépend de l'implémentation et de la configuration du serveur Web. Généralement, un site Web "par défaut", "fourre-tout" ou "repli" est spécifié pour répondre à toutes les demandes qui ne spécifient pas explicitement un hôte.
Ce site Web par défaut peut être son propre site Web indépendant ( affiche souvent un message d'erreur), ou il pourrait être l'un des autres sites Web sur le serveur web en fonction des préférences de l'administrateur du serveur web.
Vous avez quelque chose à ajouter à l'explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d'autres utilisateurs de Stack Exchange? Découvrez le fil de discussion complet ici.
Comment désactiver la substitution automatique de texte dans OS X
La correction automatique ne cesse jamais de nous faire rire. Des sites Web entiers ont été construits sur ce que l'on appelle la correction automatique échoue. Aussi plaisants soient-ils, pour ceux d'entre nous qui ont tendance à être de bons orthographes, cela aggrave quand l'ordinateur pense qu'il sait mieux.
Activation des barres obliques dans les cellules dans Excel
Par défaut, la barre oblique (/) affiche les raccourcis vers les commandes du ruban dans Excel. Alors, que faites-vous si vous voulez entrer une barre oblique dans une cellule? Il existe un moyen de désactiver ce paramètre afin de pouvoir taper une barre oblique dans les cellules Pour empêcher la barre oblique d'activer les raccourcis de la commande du ruban, cliquez sur l'onglet "Fichier" Sur l'écran backstage, cliquez sur "Options" dans la liste des éléments à gauche.