Headers en informatique : à quoi servent-ils dans les courriels, les fichiers et les réseaux ?

Qu’est-ce qu’un Header ou les Headers et quelles sont les informations qu’il renvoie : un bref examen des utilisations possibles en informatique.

En informatique, les Headers sont des portions de code qui contiennent des informations sur un fichier, un paquet de données ou un message. Les Headers sont utilisés pour transférer des informations importantes, telles que l’expéditeur et le destinataire d’un message, le type de données contenues dans un fichier ou le format d’un paquet de données.

Pour le cycle de retour aux sources, nous allons essayer d’expliquer brièvement le rôle des Headers dans différents domaines de l’informatique en soulignant les aspects les plus importants.

Les Headers sont des données qui apparaissent dans la partie initiale d’un fichier, d’un paquet ou d’un message, tel qu’un courrier électronique : on les trouve dans différents contextes. Voici les plus courants et les plus pertinents.

Headers des fichiers

Dans les fichiers que nous utilisons tous les jours, les Headers apparaissent comme une section au début du fichier lui-même qui contient des informations sur son contenu.

Ces Headers sont utilisés pour un large éventail de types de fichiers et servent souvent à aider les programmes à reconnaître et à interpréter correctement le contenu du fichier. En outre, les Headers sont souvent utilisés pour vérifier l’intégrité du fichier afin de s’assurer que l’élément n’a pas été endommagé ou modifié.

L’Header peut contenir des informations sur le format et la version du fichier. A l’exception des fichiers texte, qui n’ont pas d’Header, l’ouverture du fichier avec un éditeur de texte ou mieux encore avec un éditeur hexadécimal tel que HxD, présenté dans l’article sur le code binaire et la différence entre bits et octets, sur les premiers octets permet généralement de savoir à quel type de fichier on a affaire.

Headers en informatique : à quoi servent-ils dans les courriels, les fichiers et les réseaux ?

En effet, il ne faut pas toujours se fier uniquement à l’extension du fichier : il arrive qu’elle ne reflète pas le contenu réel du fichier et son format.

Si un fichier est endommagé, ce n’est pas nécessairement qu’il est vraiment irrécupérable : il se peut simplement qu’une extension incorrecte lui ait été attribuée. Nous avons vu comment le savoir de manière très simple.

Outre le format du fichier, l’Header peut également contenir ce que l’on appelle des métadonnées, c’est-à-dire une série d’informations supplémentaires sur le contenu du fichier : auteur, date et heure de création, informations sur le logiciel utilisé, copyright. Nous avons vu comment supprimer les propriétés additionnelles d’un fichier dans Windows.

Les Headers dans les courriers électroniques

En matière de courrier électronique, les Headers sont les informations qui sont insérées avant le corps du message proprement dit (texte du courrier électronique et pièces jointes). Ces Headers fournissent des informations essentielles pour l’envoi, le transfert, la réception et le tri de chaque courriel.

Lorsque vous ouvrez un courriel avec un client de messagerie ou un Webmail, l’application affiche de manière claire et bien structurée l’adresse électronique et le nom de l’expéditeur, du destinataire, de tout contact en copie de connaissance, la présence de toute pièce jointe, l’objet et le corps du message avec, le cas échéant, des images en ligne.

Dans Outlook, il suffit généralement de cliquer sur le menu Actions puis sur Voir la source du message ; dans Outlook.com, il faut cliquer sur les trois points en haut à droite du message puis choisir Voir, Voir la source du message ; dans Gmail, il suffit de sélectionner le message, de cliquer sur les trois points dans la colonne puis sur Afficher l’original ; dans Thunderbird et d’autres clients traditionnels, il suffit d’appuyer sur CTRL+U ou de sélectionner Autre, Voir la source.

Dans tous les cas, l’information qui s’affiche en premier correspond aux Headers du courriel. Voici quelques exemples d’Headers de courrier électronique que l’on trouve couramment :

  • De. Indique l’expéditeur du courriel, c’est-à-dire l’adresse électronique de l’expéditeur.
  • À. Indique le destinataire de l’e-mail, c’est-à-dire l’adresse e-mail du destinataire.
  • Cc. Une ou plusieurs personnes qui recevront une copie du courriel, c’est-à-dire l’adresse électronique des personnes qui recevront une copie carbone ou une copie de connaissance.
  • Cci. Les personnes qui recevront une copie cachée de l’e-mail.
  • Objet. L’objet du courriel, c’est-à-dire une brève description du contenu du courriel.
  • Date. Date et heure d’envoi du courriel.
  • Répondre à. Adresse électronique à laquelle le destinataire doit répondre.

Outre les Headers « standard », de nombreux autres Headers peuvent être combinés, comme ceux qui indiquent si l’expéditeur a été vérifié, la priorité du message, si le courriel est du spam, c’est-à-dire du courrier indésirable, et bien d’autres choses encore.

Les Headers de courrier électronique sont importants car ils fournissent des informations claires et structurées sur le courrier électronique et facilitent le processus de traitement du message par le destinataire.

Les données contenues dans les Headers peuvent également être utilisées pour filtrer et gérer automatiquement les courriels en fonction de leurs caractéristiques.

L’expéditeur des courriels peut être facilement usurpé : en règle générale, il n’est donc jamais judicieux de se fier à l’adresse électronique indiquée.

Les attaques par hameçonnage reposent précisément sur la technique de l’usurpation d’adresse : l’adresse de l’expéditeur, qui ne correspond pas à l’adresse réelle, est créée dans le but précis d’induire le destinataire en erreur.

En cas de doute sur l’origine d’un courriel, il est possible de déterminer sa provenance et son expéditeur en examinant les Headers de réception.

Les Headers de réception contiennent des informations précieuses sur la séquence de transmission du message par les serveurs de messagerie.

Chaque fois qu’un serveur de messagerie traite un message électronique entre l’expéditeur et le destinataire, il ajoute une ligne Received à l’Header, indiquant l’adresse IP du serveur qui a reçu le message, la date et l’heure de réception, ainsi que d’autres informations. La même chose se produit lorsqu’un serveur de messagerie envoie le courrier électronique à un autre serveur.

Il est évident que si, en analysant les Headers Received, le courrier électronique provient de serveurs inconnus (par exemple des IP et des hôtes asiatiques) alors que l’expéditeur du message est une société, une banque ou une institution italienne, il est évident qu’il y a une odeur et que le courrier électronique doit être immédiatement mis à la poubelle.

Bien que Received soit un Header standard défini par le protocole SMTP (Simple Mail Transfer Protocol), certains serveurs de messagerie ajoutent encore des Headers X-Received personnalisés qui intègrent des informations supplémentaires pour le traitement du courrier électronique.

L’Header Received situé au bas de l’Header ou de la source du courrier électronique est généralement celui qui renvoie les informations les plus utiles sur l’origine du message.

Dans l’exemple de la figure, le dernier Header Received révèle que le message provient d’un système TIM « de détail » (non professionnel) avec une IP publique indiquée (95.251.x.x). En revanche, l’appareil local (connecté au réseau de l’expéditeur) avait l’IP privée 192.168.1.201.

Dans ce cas précis, comme on peut le voir, l’e-mail a été collecté directement à partir des serveurs de Google (par smtp.gmail.com avec ESMTPSA id.…).

Les Headers dans les réseaux

Dans le domaine des réseaux, les Headers sont des données insérées au début des paquets de données transmis sur un réseau : pas nécessairement sur l’internet, mais aussi au sein du réseau local.

Les Headers contiennent des informations importantes sur le paquet de données, telles que l’adresse IP de l’expéditeur et du destinataire, le port source et le port de destination, le type de protocole utilisé, etc.

Voici quelques exemples d’Headers que l’on trouve et utilise couramment dans les paquets de données :

  • Header IP. Il contient des informations sur l’adresse IP de l’expéditeur et du destinataire du paquet de données, la version du protocole IP utilisé et d’autres informations pertinentes.
  • Headers TCP/UDP. Nous avons vu la différence entre les paquets TCP et UDP. Ces Headers contiennent des informations sur le port source et le port de destination du paquet de données, le type de protocole utilisé et d’autres informations pertinentes.
  • Header Ethernet. Cet Header contient des informations sur l’adresse MAC de l’expéditeur et du destinataire du paquet de données, le type de protocole utilisé, etc.

Les Headers de réseau sont importants car ils fournissent des informations cruciales pour la transmission et le traitement des paquets de données sur le réseau. En outre, ils peuvent être utilisés pour filtrer et gérer automatiquement les paquets de données en fonction de leur type spécifique et du type d’informations qu’ils transportent.

En général, les Headers sont présents dans de nombreux protocoles de réseau et sont également largement utilisés au niveau des applications. Pensez par exemple aux applications de messagerie instantanée et de vidéoconférence que nous utilisons tous les jours : elles font également un usage intensif des Headers.

Dans la pile ISO/OSI, TCP est un protocole qui opère au niveau du transport et qui est orienté vers la fiabilité de la communication (par exemple, différemment d’UDP).

En effet, les paquets de données, ou plutôt les segments de données, peuvent suivre différents chemins (« routes ») de l’expéditeur au destinataire : les informations contenues dans les Headers sont utilisées pour recomposer les différents fragments et fournir un ACK (Acknowledgment), c’est-à-dire un accusé de réception à l’expéditeur.

L’Header TCP en bref : comment il est composé

L’Header TCP pèse 20 octets et est divisé en plusieurs champs contenant des informations spécifiques. Parmi les champs les plus importants de l’Header TCP figurent les suivants :

  • Port source et port de destination. Chaque segment TCP possède un port source et un port de destination qui identifient le processus qui a généré le segment et le processus qui doit le recevoir.
  • Numéro de séquence. Comme nous l’avons mentionné précédemment, cet Header exprime le numéro de séquence des données contenues dans le segment TCP spécifique. Le numéro de séquence est utilisé pour garantir que les données sont réassemblées dans l’ordre correct lors de la réception des paquets.
  • Dans le cas de l’UDP et d’autres protocoles sans connexion, le phénomène de perte de paquets ou de paquets, s’il est limité, n’est pas si important, alors qu’il l’est dans le cas des connexions TCP.
  • Numéro d’accusé de réception. Il indique le prochain numéro de séquence que l’expéditeur s’attend à recevoir du destinataire. Le numéro d’accusé de réception est utilisé pour confirmer la réception des données et pour gérer la fenêtre de réception du récepteur.
  • Décalage de l’Header. Cette information précise la longueur de l’Header TCP. En pratique, elle indique où commence ce que l’on appelle la charge utile du segment TCP.
  • Drapeaux. Il s’agit d’informations de contrôle essentielles pour la gestion de la connexion TCP (SYN, ACK, FIN, RST, …).

Headers HTTP : un autre exemple intéressant

En remontant la pile ISO/OSI en ce qui concerne TCP, prenons un exemple intéressant au niveau de l’application.

HTTP et bien sûr sa version cryptée HTTPS fonctionnent à un niveau supérieur (par exemple IMAP, POP3, SMTP, FTP, DHCP, SSH, Telnet, DNS, NTP, …) et sont des protocoles de communication pour l’échange de données entre les clients et les serveurs Web.

Dans le contexte du HTTP, les Headers sont utilisés pour transmettre des informations supplémentaires entre le client et le serveur. Les paires nom-valeur formant les Headers peuvent être divisées en deux catégories : les Headers de requête et les Headers de réponse.

Les Headers de requête sont envoyés par le client au serveur et comprennent des informations telles que la méthode de requête (par exemple GET, POST, HEAD), l’URL demandée, les Headers d’authentification, les préférences linguistiques du client et les informations de mise en cache.

Ces Headers aident le serveur web à comprendre les besoins du client et à fournir la réponse appropriée.

Les Headers de réponse sont envoyés par le serveur au client en réponse à la requête du client et comprennent des informations telles que le code d’état HTTP (par exemple 200 OK, 404 Not Found, 500 Internal Server Error, etc.), le type de contenu renvoyé (par exemple HTML, XML, JSON), la date et l’heure de la réponse et les informations de mise en cache.

Ces Headers aident le client à comprendre comment interpréter la réponse reçue du serveur.

Les Headers HTTP sont utilisés à de nombreuses fins, notamment l’authentification, la gestion du cache, la compression des données, la gestion des sessions et la sécurité.

Par exemple, l’Header « Authorisation » est utilisé pour fournir des informations d’authentification ; l’Header « Cookie » est utilisé pour gérer les sessions entre le client et le serveur. Nous avons vu par exemple la signification d’une session expirée sur Facebook et sur toute autre plateforme web.

Essayez, par exemple, le site Security Headers et indiquez les noms de domaine de vos sites web préférés : le service montre tous les Headers qui sont renvoyés par le serveur distant.