Mise à jour: 03/02/2021 Auteur: Chris Carcaud Rubrique: réseau Publication: 06/01/2022

L'opération la plus courante sur un réseau est le chargement de ressources à partir d'un serveur web. Par exemple, la saisie d'une adresse dans un navigateur internet démarre une communication entre deux périphériques en respectant des règles et un protocole bien précis.

Les bases de la communication client serveur

HTTP (Hypertext Transfer Protocol) est le protocole de communication le plus utilisé sur Internet. Tous les types de média peuvent être transféré via HTTP que cela soit du texte, du HTML ou encore des films en streaming.

Afin d'illustrer cet échange d'informations, prenons le cas de figure d'un navigateur internet qui charge une page web. Le client, à savoir le navigateur web,  envoie au serveur une demande sous forme d'une requête HTTP pour laquelle le serveur répond en envoyant le contenu correspondant. Que ce soir lors de la demande ou de la réponse, la ressource est accompagnée d'un entête HTTP permettant ainsi au navigateur et au serveur de comprendre le message.

Que contient un entête HTTP

Pour chaque type de requête sur le réseau, il existe une méthode et bien souvent un entête HTTP spécifique. Sans entrer dans les détails, un client, par exemple un navigateur internet utilise principalement les méthodes HTTP suivantes:

GET: la requête GET est utilisée pour demander au serveur de nous envoyer une ressource (HTML, js, image, ...) que le navigateur va télécharger,

POST: la requête POST sert à envoyer au serveur web des données qu'il va stocker, par exemple lors de l'identification à son compte.

L'ensemble de cette communication est invisible pour l'internaute qui verra uniquement le résultat s'afficher sur le navigateur web. Pour visualiser une requête HTTP, ouvrez votre navigateur internet dans l'onglet réseau de l'outil de développement. En sélectionnant une requête, on se rend compte qu'automatiquement des informations sont envoyées à chaque téléchargement:

Host: précise le nom de domaine sur lequel la ressource devra être téléchargée,

User-Agent: identifie le type de navigateur et la plate-forme (Windows, android, Linux, ...),

Accept-Language: indique la langue du navigateur internet, par exemple fr-FR pour du français.

Voici les grands principes de la communication HTTP. Lorsque l'on cherche à comprendre les données d'un entête HTTP, l'analyse se porte le plus souvent sur les réponses que nous envoi un site web.

Comprendre les informations d'un HTTP header

Les webmasters de site internet vérifient régulièrement les réponses envoyées par le serveur. En effet, les entêtes HTTP déterminent aussi bien l'affichage d'une page internet que l'indexation du contenu par un moteur de recherche.

En premier lieu, le serveur web retourne un code d'état qui indique la disponibilité de la ressource. L'information se trouve dans la première ligne du HTTP header sous forme d'un code à 3 chiffres et d'un libellé. Les codes HTTP les plus fréquents sont:

200: tout va bien, la page peut être affichée,

301: la ressource a changé d'adresse, la nouvelle localisation est indiquée dans le header dans une ligne suivante,

404: le contenu n'a pas été trouvé. Il s'agit de l'erreur qui s'affiche parfois dans le navigateur internet

500: rien ne va plus, le script a échoué et aucune réponse ne peut être affichée.

 

La deuxième donnée essentielle contenue dans l'entête HTTP est le type du contenu. Le navigateur internet se sert de cette information pour décoder le contenu chargé sur le réseau. Il s'agit de la balise Content-Type qui renseigne le client sur le type de média (mime-type).

text/html: le contenu est du texte, typiquement la page HTML à afficher dans le navigateur,

image/gif: une image au format gif,

application/pdf: un document pdf qui sera affiché directement dans la fenêtre du navigateur internet.

 

Un troisième élément contenu dans le header HTTP est largement utilisé dans la communication HTTP, la mise en cache. En effet, la vitesse d'affichage est essentielle pour capter l'intérêt de l'internaute. Une donnée en cache sera toujours plus rapide à charger que de passer par le réseau.

Last-Modified: indique la date de la dernière modification du contenu,

Etag: est un identifiant unique généré par le serveur web. En théorie, tant que l'etag est le même que celui en cache, il n'y a aucune raison de recharger le contenu.

 

Les entêtes HTTP sont essentiels à la communication entre un client et un serveur sur un réseau tel qu'internet. Lorsque le navigateur internet n'affiche pas correctement un contenu ou dès qu'un moteur de cherche n'indexe plus le contenu d'un site web, ayez le réflexe de jeter un coup d'oeil aux header HTTP.