Analyse complète du processus d'analyse des pages WEB

1. Comprendre tout le processus de résolution des noms de domaine

Processus de résolution:
(1) Lancez une requête pour le nom de domaine www.baidu.com sur le serveur ISPDNS ou DNS défini sur le réseau informatique local
(2) Une fois que ISPDNS a reçu la demande, vérifiez s'il existe un enregistrement d'adresse correspondant au nom de domaine dans son cache. S'il y a un enregistrement, l'adresse IP est retournée directement, mais cet enregistrement sera marqué comme une réponse du serveur ne faisant pas autorité.
(3) Si le serveur DNS n'a aucun enregistrement de ce nom de domaine, ISPDNS lira les adresses de 13 serveurs de noms de domaine racine à partir du fichier de configuration ([AM] .root-servers.net)
Insérez la description de l'image ici
(4) Selon l'emplacement, chargez, ISPDNS Initier une demande au serveur miroir de l'un des serveurs de noms de domaine racine
(5) Une fois que le serveur de noms de domaine racine a reçu la demande, il résout que le nom de domaine de niveau supérieur de la demande est com., Puis renvoie l'enregistrement NS dans le domaine com, généralement 13 hôtes Nom et
Insérez la description de l'image ici
adresse IP (masquée) (6) Après avoir reçu le résultat renvoyé, ISPDNS envoie une autre demande à l'un
des serveurs. (7) Le serveur du domaine com analyse cette demande après avoir reçu la demande. Le domaine secondaire est baidu.com, donc le nom de domaine est récupéré. Enregistrement NS, retourne le résultat
(8) Après avoir reçu le résultat renvoyé, ISPDNS initie une demande au
Insérez la description de l'image ici
serveur faisant autorité dans le domaine baidu.com (9) Après avoir reçu la demande, le serveur faisant autorité dans le domaine baidu.com trouve qu'il y a www cet hôte, et cette adresse IP hôte retourné à ISPDNS
Insérez la description de l'image ici
(10) ISPDNS après réception du résultat de retour, le retour au client, et ce disque est stocké dans le cache
Insérez la description de l'image ici
de résolution illustration:

Insérez la description de l'image ici

2. Comprendre l'ensemble du processus de demande de page Web et dessiner un organigramme (11 processus gérés par nginx)

Processus de demande:
(1) résolution DNS

  1. · Afficher le cache du navigateur

  2. · Afficher le cache des fichiers d'hôtes

  3. · Afficher le cache du routeur

  4. · Afficher le cache du serveur de résolution ISP

  5. · Utiliser ISP-DNS pour lancer une requête de requête récursive

  6. · Le client obtient l'adresse IP correspondant à l'URL

(2) Établir une socket TCP et initier une connexion TCP

  1. · Trois poignées de main

(3) Réponse de redirection permanente du serveur
(4) Le navigateur suit l'adresse de redirection et envoie une demande http au serveur Web
(5) Le serveur accepte la demande

(6) Demande de traitement du serveur (Nginx)

  1. · NGX_HTTP_POST_READ_PHASE Après avoir reçu l'étape complète de post-traitement de l'en-tête HTTP

  2. · Étape de modification de l'URI NGX_HTTP_SERVER_REWRITE_PHASE, utilisée pour la redirection

  3. · NGX_HTTP_FIND_CONFIG_PHASE en fonction de l'URI pour rechercher les éléments de configuration du bloc d'emplacement avant de faire correspondre

  4. · NGX_HTTP_REWRITE_PHASE modifier l'URI après avoir trouvé le bloc d'emplacement à l'étape précédente

  5. · NGX_HTTP_POST_REWRITE_PHASE empêche la boucle sans fin causée par la réécriture de l'URL

  6. · NGX_HTTP_PREACCESS_PHASE Préparation avant la prochaine étape

  7. NGX_HTTP_ACCESS_PHASE permet au module HTTP de déterminer s'il faut autoriser cette demande à entrer sur le serveur Nginx

  8. · NGX_HTTP_POST_ACCESS_PHASE envoie un code d'erreur de déni de service à l'utilisateur

  9. · NGX_HTTP_TRY_FILES_PHASE défini pour accéder aux ressources de fichiers statiques

  10. · NGX_HTTP_CONTENT_PHASE Étape de traitement du contenu des requêtes HTTP

  11. · NGX_HTTP_LOG_PHASE Phase d'enregistrement après traitement de la demande

(7) Le serveur renvoie une réponse HTML
(8) Le navigateur commence l'analyse et le rendu après avoir reçu la réponse

  1. · Construire un arbre dom, en utilisant la méthode de traversée profonde

  2. · Analyser CSS dans l'arbre de règles CSS

  3. · Créer un arbre de rendu selon l'arbre DOM et CSSOM

  4. · Arborescence de rendu de mise en page

  5. · Dessiner un arbre de rendu

3. Étudiez les champs et les significations du protocole http

Structure de message de demande / réponse HTTP:
· Ligne de demande · Ligne de réponse
· En-tête de demande · En-tête de réponse
· Corps de demande · Ligne vierge
· Corps de réponse
Exemple de message de demande: Exemple de
Insérez la description de l'image ici
message de réponse:
Insérez la description de l'image ici
(1) Méthode de demande: POST, GET, PUT , DELETE
(2) URL de demande: http: //chapter17/user.html
(3) Protocole HTTP et version: HTTP1.1
(4) Accepter: indique que le client attend le format de support renvoyé par le serveur, mais parce que le serveur peut ne pas avoir tout Le type de ressource attendu, donc Accept définira plusieurs types et définira la priorité
(5) Accept-Charset: indique le format de codage du contenu que le client attend du serveur. Plusieurs codes peuvent être spécifiés.
(6) Accept-Language: indique la langue du contenu que le client s'attend à renvoyer.
(7) Content-Type: indique le type de support et le format de codage du contenu. La méthode GET utilise généralement le format texte / html. La méthode POST utilise généralement application / x-www-form-urlencoded.
(8) Content-Language: ce champ est la réponse à Accept-Language. A travers ce champ, le serveur informe le client de la langue des informations de corps renvoyées
(9) Content-Length: indique la longueur de corps de la demande / réponse transmise. GET n'a pas ce corps car il n'y a pas de corps. Lorsque le corps est trop grand, ce champ n'est pas requis pour la transmission par bloc.
(10) Content-Location: indique que le serveur informe le client d'autres adresses facultatives de la ressource demandée
(11) Content-MD5: ce champ est utilisé pour vérifier le contenu du corps.
(12) Date: Si le serveur n'a pas de cache, il indique l'heure de génération instantanée du message de réponse. Si le serveur a un cache, il indique l'heure à laquelle le contenu de la réponse est mis en cache.
(13) Âge: indique l'heure à laquelle la ressource a été mise en cache, en secondes
(14) Expire: indique que le serveur informe le client lorsque la ressource n'est pas valide.
(15) ETag: indique une balise de ressource, chaque ressource peut fournir plusieurs informations de balise couramment utilisées pour juger de l'efficacité de la ressource.
(16) Autoriser: indique le type de méthode HTTP auquel la ressource prend en charge l'accès.
(17) Connexion: indique les propriétés du client et du serveur négociant la connexion. La valeur commune est close, indiquant à l'autre partie de fermer la connexion après la fin de la demande en cours.
(18) Sauf: utilisé pour demander la permission au serveur avant d'envoyer la demande.
(19) De: Généralement utilisé pour marquer l'adresse e-mail de l'expéditeur de la demande, ce qui équivaut à affecter une personne responsable à la demande.
(20) Hôte: le protocole RFC stipule que toutes les requêtes HTTP doivent porter l'en-tête Host, même s'il n'y a pas de valeur, une chaîne vide doit être ajoutée. Indique l'adresse de l'hôte qui a initié la demande.
(21) Dernière modification: marque la dernière heure de modification de la ressource.
(22) IF-Modified-Since: lorsque le navigateur demande des ressources statiques au serveur, si le navigateur a un cache localement, il portera cet en-tête, la valeur est l'heure de la dernière modification de la ressource et demande au serveur si elle a été Modifiez.
(23) Plage: indique la plage d'octets de demande spécifiée lorsque le client demande une partie de la ressource.
(24) Content-Range: indique la plage d'octets des données Body transmises dans le bloc de ressources global lorsque le serveur répond à la demande.
(25) Emplacement: indique que lorsque le serveur envoie un message de réponse 302 au client, il pointe vers l'URL cible.
(26) Max-Forwards: indique que le nombre de passerelles ou de proxys est limité, c'est-à-dire le nombre maximal de transferts.
(27) Référent: couramment utilisé dans la stratégie de restriction de même origine, qui représente l'URI de l'origine de la demande, c'est-à-dire la page parent de la ressource de page actuelle. En traçant Referer, nous pouvons dessiner des chaînes de saut complexes entre les pages de ressources.
(28) Serveur: utilisé pour renvoyer des informations logicielles liées au serveur pour informer le client que le service HTTP actuel est fourni par le logiciel XYZ.
(29) User-Agent: transporte les informations actuelles de l'agent utilisateur, y compris généralement la version et les informations de modèle du navigateur, du noyau du navigateur et du système d'exploitation.
(30) Transfer-Encoding: indique le type de transformation à adopter pour les données Body lors de la réponse aux informations Body transmises par le paquet.
(31) Mise à niveau: indique que le serveur recommande que le client mette à niveau le protocole de transmission
(32) Vary: ce champ est utilisé pour le contrôle du cache, puis l'ajout de cet en-tête au paquet de demande peut indiquer au serveur de cache d'utiliser différentes unités de cache pour les réponses aux différents paramètres Vary.
(33) Via: ce champ est utilisé pour marquer un nœud de routage de passerelle par lequel passe une demande, indiquant des informations de passerelle
(34) Avertissement: utilisé pour ajouter des informations d'avertissement supplémentaires dans la réponse, y compris des codes d'erreur et des descriptions d'erreur.
(35) WWW-Authenticate: c'est l'en-tête qui doit être transporté lorsque le code d'erreur 401 non autorisé est renvoyé. Cet en-tête portera un défi au client, informant le client que le client doit porter la réponse à cette question pour demander au serveur de continuer à accéder à la ressource cible.
(36) Autorisation: pour certaines ressources nécessitant des autorisations spéciales d'accès, le client doit fournir des informations d'authentification par nom d'utilisateur et mot de passe dans la demande. C'est une réponse à WWW-Authenticate
(37) cache-control: ce champ peut être utilisé à la fois pour les demandes et les réponses.
Lorsque la valeur du champ est no-cache, le cache n'est pas autorisé. Pour la demande, le serveur ne doit pas utiliser le contenu du cache pour retourner directement. Pour la réponse, le client ne doit pas mettre en cache le contenu des ressources de la réponse.
Lorsque la valeur du champ est no-store, cela signifie que les données de demande / réponse ne doivent pas être conservées à d'autres endroits. Ce type d'informations est sensible et doit rester volatile.
Lorsque la valeur du champ est sans transformation, cela signifie que l'autre partie ne doit pas transformer les données.
Lorsque la valeur du champ est uniquement mise en cache, elle est uniquement utilisée dans l'en-tête de la demande, indiquant au serveur de ne pas recharger tant que le contenu a été mis en cache.
Lorsque la valeur du champ est max-stale, elle n'est utilisée que dans l'en-tête de la demande, indiquant que le client autorise le serveur à renvoyer le contenu des ressources du cache qui a expiré, mais le délai d'expiration maximal est limité.
Lorsque la valeur du champ est min-fresh, elle est uniquement utilisée dans l'en-tête de la demande, ce qui indique que le client restreint le serveur aux contenus de ressource qui sont sur le point d'expirer.
Lorsque la valeur du champ est publique, elle est uniquement utilisée dans l'en-tête de réponse, indiquant que le client est autorisé à mettre en cache les informations de réponse et peut être utilisé par d'autres.
Lorsque la valeur du champ est privée, elle n'est utilisée que dans l'en-tête de réponse, ce qui signifie que le client n'est autorisé à mettre en cache les informations de réponse que pour son propre usage et ne doit pas être partagé avec d'autres.

4. Apprenez la méthode de requête HTTP et le type et la signification du code d'état retourné

1xx: Message
100 Continuer Le serveur n'a reçu qu'une partie de la demande, mais une fois que le serveur n'a pas rejeté la demande, le client doit continuer à envoyer les demandes restantes
101 Protocole de commutation Protocole de commutation du serveur, le serveur suivra la demande du client de basculer vers un autre protocole

2xx: Succès
200 Demande OK réussie
201 La demande créée a été créée et une nouvelle ressource a été créée
202 Acceptée La demande de traitement a été acceptée, mais le traitement n'est pas terminé
203 Le
document d' information sans autorité est retourné normalement, mais certains en-têtes de réponse peuvent être Incorrect, car une copie du document est utilisée
204 Aucun contenu Aucun nouveau document, le navigateur doit continuer à afficher le document d'origine. Si l'utilisateur actualise la page régulièrement et que le serveur peut déterminer que le document de l'utilisateur est suffisamment nouveau, ce code d'état est utile.
205 Réinitialiser le contenu Il n'y a pas de nouveau document, mais le navigateur doit réinitialiser le contenu qu'il affiche pour forcer le navigateur à effacer le formulaire Contenu d'entrée
206 Contenu partiel Le client a envoyé une demande GET avec un en-tête Range et le serveur l'a terminée

3xx: Rediriger
300 choix multiples choix multiples, liste de liens, les utilisateurs peuvent sélectionner une connexion pour atteindre la destination, autoriser jusqu'à cinq adresses
301 Déplacé de manière permanente La page demandée a été transférée vers la nouvelle URL
302 Trouvé La page demandée a été temporairement transférée vers La nouvelle URL
303 Voir Autre La page demandée se trouve sous une autre URL.
304 Non modifié Le document n'a pas été modifié comme prévu. Le document tamponné du client a développé une demande conditionnelle (fournissant généralement un en-tête IF-Modified-Since indiquant que le client ne souhaite que des documents plus récents que la date spécifiée). Le document tamponné peut continuer à être utilisé.
305 Use Proxy Le document demandé par le client doit être extrait du serveur proxy spécifié dans l'en-tête Location
et utilisé dans la version précédente. Ce code n'est plus utilisé mais il reste.
307 Redirection temporaire La page demandée a été temporairement transférée vers une nouvelle URL

4xx: Erreur client
400 Mauvaise demande Le serveur n'a pas compris la demande
401 Non autorisé La page demandée nécessite un nom d'utilisateur et un mot de passe
402 Paiement requis Ce code n'est pas encore disponible
403 Interdit La page demandée nécessite un nom d'utilisateur et un mot de passe
404 Introuvable Le serveur ne peut pas trouver la demande Page
405 Méthode non autorisée La méthode spécifiée dans la demande n'est pas autorisée
406 Non acceptable La réponse générée par le serveur ne peut pas être acceptée par le client
407 Authentification proxy requise L'utilisateur doit d'abord utiliser un serveur proxy pour vérifier, afin que la demande soit traitée
408 Request Timeout request Le temps d'attente du serveur est dépassé
409 Conflit En raison d'un conflit, la demande ne peut pas être terminée
410 Terminé La page demandée n'est pas disponible
411 Longueur requise "Content-Length" n'est pas défini, s'il n'y a pas un tel serveur de contenu n'acceptera pas la demande
412 Condition préalable Échec de la demande Les conditions préalables sont évaluées comme un échec par le serveur
413 Entrée de demande trop grande La demande n'est pas acceptée en raison de la grande taille de la demande
414 URL de demande trop longue La demande ne sera pas acceptée en raison de l'URL longue
415 U Type de support non pris en charge Le serveur n'accepte pas la demande car le type de support n'est pas pris en charge
416 Le serveur ne peut pas satisfaire l'
échec de l'attente de la plage 417 spécifiée par le client dans la demande

5xx: Erreur de serveur
500 La demande d'erreur du serveur interne n'est pas terminée, le serveur a rencontré une situation imprévisible
501 La demande non implémentée n'est pas terminée, le serveur ne prend pas en charge la fonction demandée
502 La demande de mauvaise passerelle n'est pas terminée, le serveur a reçu une réponse non valide du serveur en amont
503 La demande de service non disponible n'est pas terminée, le serveur est temporairement surchargé ou arrêté
504 Délai d'expiration de la passerelle Délai d'expiration de la passerelle
505 Version HTTP non prise en charge Le serveur ne prend pas en charge la version du protocole HTTP spécifiée dans la demande

Publié 21 articles originaux · gagné 14 · visité 4075

Je suppose que tu aimes

Origine blog.csdn.net/m0_38103658/article/details/101538556
conseillé
Classement