Codificando un stack TCP/IP, 1: Ethernet y ARP (2016)
(saminiir.com)-
Implementación del stack TCP/IP
- Implementar directamente un stack TCP/IP puede parecer una tarea compleja.
- La especificación central de TCP se compone del análisis del encabezado TCP, la máquina de estados, el control de congestión y el cálculo del tiempo de espera de retransmisión.
- En esta serie de blog, se implementará un stack TCP/IP mínimo en espacio de usuario sobre Linux.
- El propósito de esta publicación y del software es educativo, para aprender con mayor profundidad sobre redes y programación de sistemas.
-
Dispositivo TUN/TAP
- Se usa un dispositivo TAP para interceptar tráfico de red de bajo nivel en el kernel de Linux.
- Los dispositivos TUN/TAP son fáciles de configurar desde programas en espacio de usuario y se usan en varios programas como OpenVPN.
- Con un dispositivo TAP se puede leer y escribir datos en búferes Ethernet.
-
Formato de trama Ethernet
- Ethernet es la base de varias tecnologías de red que conectan computadoras en una LAN.
- El estándar Ethernet ha evolucionado mucho desde que se publicó por primera vez en 1980.
- El encabezado de una trama Ethernet puede declararse como una estructura en C e incluye los campos DMAC, SMAC, Ethertype y payload.
-
Análisis de tramas Ethernet
- Se usa el atributo
packedpara evitar que el compilador GNU C optimice la disposición de memoria de la estructura. - El escenario completo para analizar y procesar tramas Ethernet es simple.
- Se usa el atributo
-
Protocolo de resolución de direcciones (ARP)
- ARP se usa para mapear dinámicamente direcciones Ethernet de 48 bits a direcciones de protocolo.
- El formato de paquete ARP es relativamente simple e incluye tipo de hardware, tipo de protocolo, tamaño de hardware, tamaño de protocolo, opcode y campos de datos.
-
Algoritmo de resolución de direcciones
- Para almacenar los resultados de ARP se usa una
translation table, con el fin de evitar solicitudes ARP duplicadas. - La prueba definitiva de la implementación de ARP es verificar si responde correctamente a las solicitudes ARP.
- Para almacenar los resultados de ARP se usa una
-
Conclusión
- La implementación mínima del procesamiento de tramas Ethernet y ARP es relativamente sencilla y puede hacerse con unas cuantas líneas de código.
- El código fuente del proyecto puede consultarse en GitHub.
- En la siguiente publicación se continuará con la implementación de eco y respuesta ICMP (ping), así como con el análisis de paquetes IPv4.
Aún no hay comentarios.