Red de conocimiento informático - Conocimiento informático - Ayúdame a analizar este programa. Si conoces VC++, vamos. Tengo prisa.

Ayúdame a analizar este programa. Si conoces VC++, vamos. Tengo prisa.

Este código se utiliza principalmente para procesar paquetes TCP/IP y es necesario tener conocimientos básicos de los encabezados IP. Entre ellos, PIPHDR representa el puntero del encabezado del protocolo IP,

ETHDR representa el encabezado de Ethernet y PTCPHDR representa el puntero del encabezado del protocolo TCP.

pkt_data representa los datos del paquete sin procesar recibidos, más el tamaño del encabezado Ethernet, que es el encabezado IP, ya que el encabezado IP sigue al encabezado Ethernet.

h_lenver en el encabezado ip representa la longitud y la versión del encabezado IP. Es un byte. Los 4 bits superiores son la versión y los 4 bits inferiores son la longitud. Dado que la longitud se mantiene en el campo h_lenver y se liberará 2 bits a la derecha (>> 2), es necesario multiplicar el IPLen por 4.

proto==6 indica que la comunicación actual utiliza el protocolo IPV6 y pkt_data+sizeof(ETHDR)+IPLen puede obtener el encabezado tcp. El siguiente paso es obtener el puerto de origen (SrcPort) y el puerto de destino (DesPort) del encabezado TCP. Finalmente, calcule la longitud del contenido real y guárdelo en

nstrlen, y almacene el contenido real. en nstrlen. La dirección de los datos se almacena en pstr.