Coder une pile TCP/IP, 1 : Ethernet et ARP (2016)
(saminiir.com)-
Implémentation d'une pile TCP/IP
- Implémenter soi-même une pile TCP/IP peut sembler être une tâche complexe.
- Les spécifications essentielles de TCP se composent de l'analyse des en-têtes TCP, de la machine à états, du contrôle de congestion et du calcul du délai d'expiration de retransmission.
- Cette série d'articles de blog prévoit d'implémenter sous Linux une pile TCP/IP minimale en espace utilisateur.
- L'objectif de cet article et du logiciel est éducatif, afin d'approfondir l'apprentissage de la programmation réseau et système.
-
Périphériques TUN/TAP
- Un périphérique TAP est utilisé pour intercepter le trafic réseau de bas niveau dans le noyau Linux.
- Les périphériques TUN/TAP sont faciles à configurer depuis des programmes en espace utilisateur et sont utilisés par divers logiciels comme OpenVPN.
- Avec un périphérique TAP, il est possible de lire et d'écrire des données dans des tampons Ethernet.
-
Format des trames Ethernet
- Ethernet est à la base de diverses technologies réseau reliant des ordinateurs dans un LAN.
- La norme Ethernet a beaucoup évolué depuis sa première publication en 1980.
- L'en-tête d'une trame Ethernet peut être déclaré sous forme de structure C et comprend les champs DMAC, SMAC, Ethertype et payload.
-
Analyse des trames Ethernet
- L'attribut
packedest utilisé pour empêcher le compilateur GNU C d'optimiser l'agencement mémoire de la structure. - Le scénario complet d'analyse et de traitement d'une trame Ethernet est simple.
- L'attribut
-
Address Resolution Protocol (ARP)
- ARP est utilisé pour mapper dynamiquement des adresses Ethernet de 48 bits à des adresses de protocole.
- Le format des paquets ARP est relativement simple et comprend les champs type matériel, type de protocole, taille matérielle, taille de protocole, opcode et données.
-
Algorithme de résolution d'adresses
- Une
translation tableest utilisée pour stocker les résultats d'ARP afin d'éviter les requêtes ARP en double. - Le test ultime de l'implémentation d'ARP consiste à vérifier qu'elle répond correctement aux requêtes ARP.
- Une
-
Conclusion
- Une implémentation minimale du traitement des trames Ethernet et d'ARP est relativement facile et peut se faire en quelques lignes de code.
- Le code source du projet est disponible sur GitHub.
- Le prochain article poursuivra avec l'implémentation de l'écho ICMP et de sa réponse (ping), ainsi que de l'analyse des paquets IPv4.
Aucun commentaire pour le moment.