Cómo crear su propio paquete tcp / IP y agregar su propia carga útil y enviarla a otro sistema usando el lenguaje de programación c

Las comunicaciones TCP / IP generalmente pasan por la pila de red del núcleo. El sistema operativo proporciona una abstracción como los sockets de Berkeley para simplificar las comunicaciones. Por ejemplo, un cliente típico

  1. Crea el zócalo. (Aquí no ocurre ninguna actividad de red. Esto solo asigna las estructuras necesarias en memoria).
  2. Conectar. (Esto inicia el protocolo de enlace TCP. La persona que llama debe especificar la IP y el puerto).
  3. Leer y escribir flujos de datos. (El kernel maneja paquetes caídos / duplicados, reintentos, etc. automáticamente).
  4. Cierra la conexión. (Esto le permite al otro lado saber cerrar la conexión y libera los recursos asociados con el zócalo).

Algunos sistemas admiten acceso de nivel inferior (por ejemplo, sockets sin procesar y sockets de paquetes) que permiten al programador tener un control más directo sobre el encabezado del paquete, la fragmentación, etc. Estas interfaces de acceso de bajo nivel se utilizan para algunas aplicaciones específicas, como rastreadores de paquetes. , varias herramientas de seguridad de red y protocolos de enrutamiento como IGMP.

Muchos protocolos de alto nivel tienen bibliotecas para facilitar su uso. Por ejemplo, libcurl se puede usar para hacer solicitudes HTTP. Estas bibliotecas pueden ser mucho más fáciles que intentar hacer solicitudes utilizando una interfaz de socket sin procesar.

De hecho, estoy trabajando en eso ahora y, francamente, es una tarea compleja. Dependiendo de lo que desee enviar (propósito del mensaje IP), el contenido de su paquete variará. Supongo que conoce el conjunto de protocolos TCP / IP y comprende todos los protocolos y su propósito correctamente. Hay disponibles códigos de ejemplo en línea que le mostrarán los pasos exactos que debe seguir, según la plataforma que desee utilizar para enviar el paquete. Desearía poder ayudar más, pero eso es todo lo que sé al respecto en este momento.