urg syn rst psh protocolo fin ejemplos caracteristicas banderas tcp

syn - Calcule el tamaño y el inicio de los datos del paquete TCP(excluyendo el encabezado)



protocolo udp caracteristicas (3)

¿Cómo voy a calcular el tamaño y el byte inicial de los datos en un paquete tcp (excluyendo la información del encabezado)?


Me pregunto si su pregunta se refiere a un nivel más alto que el tcp / ip real. Por lo general, no tendemos a pensar en tcp / ip en términos de paquetes en un nivel superior porque lo que se trata en realidad es una "secuencia" de bytes. Entonces, lo que sucede es que creas un protocolo (o usas uno existente, por supuesto) donde invocas la llamada de API de recepción para recibir un encabezado y los datos, para que sepas exactamente qué tan grande es el encabezado y dónde comienzan tus datos.


Voy a suponer que está tratando con un paquete TCP / IP. Tendrá que calcular este tamaño usted mismo.

El encabezado IP tiene un campo ''Longitud total'' que le da la longitud de todo el paquete IP en bytes. Si resta el número de palabras de 32 bits que componen el encabezado (dado por el campo de Longitud del encabezado en el encabezado IP) sabrá el tamaño del paquete TCP. Por lo general, el encabezado es de 20 bytes para el paquete IP, a menos que las Opciones estén presentes.

En el encabezado TCP , el campo Desplazamiento de datos especifica el tamaño del encabezado TCP en palabras de 32 bits. De nuevo, puede restar el número (multiplicado por 4 para darle la cantidad de bytes en el encabezado) del tamaño del paquete TCP que calculó anteriormente para obtener el tamaño de los datos en el paquete TCP.

Dada la longitud del encabezado en el encabezado IP y el desplazamiento de datos en el encabezado TCP, puede agregar esos dos y multiplicar por 4 para obtener el desplazamiento del byte hasta que se inicien los datos en el paquete TCP.


Acabo de capturar un paquete TCP en mi enrutador, luego calculé la longitud de los datos TCP.

IHL = 5 Total Length = 0x00a8 Data Offset = 8 --------------------- 0x00a8 - (5 + 8) * 4 = 116 bytes

# tcpdump -n -i br-lan -c 1 -e -XX tcp port 22 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on br-lan, link-type EN10MB (Ethernet), capture size 65535 bytes 15:33:53.917593 ae:ca:87:aa:aa:aa > b8:e8:56:bb:bb:bb, ethertype IPv4 (0x0800), length 182: 192.168.31.1.22 > 192.168.31.102.54076: Flags [P.], seq 582717816:582717932, ack 442380252, win 4706, options [nop,nop,TS val 100656432 ecr 1139948861], length 116 0x0000: b8e8 56bb bbbb aeca 87aa aaaa 0800 4510 ..V........x..E. ^ 0x0010: 00a8 8d0c 4000 4006 ed7b c0a8 1f01 c0a8 ....@.@..{...... ^^^^ 0x0020: 1f66 0016 d33c 22bb 9178 1a5e 2fdc 8018 .f...<"..x.^/... ^ 0x0030: 1262 c052 0000 0101 080a 05ff e530 43f2 .b.R.........0C. 0x0040: 3d3d f6e4 f672 736f 6c6c 191f 64ec 80a6 ==...rsoll..d... 0x0050: ba74 e8f7 b2ce 99ec 2725 2d49 f4f6 7760 .t......''%-I..w` 0x0060: c83f 5130 83bb ca22 c32c 6251 7381 08e2 .?Q0...".,bQs... 0x0070: c036 1c12 f22f fe8b c36a eeff c95c 36fa .6.../...j.../6. 0x0080: 7baa 810b 4c75 8ccf 19e4 62df 2c2c c5fd {...Lu....b.,,.. 0x0090: a0c8 aa53 1130 d413 7097 f1cd 34dc 92b7 ...S.0..p...4... 0x00a0: ea9b 3bd6 02f8 ea93 c8f3 7d32 4a58 39aa ..;.......}2JX9. 0x00b0: 12d3 e2bd 18d4 ......

Todo el marco de ethernet

Encabezado IP (IHL / longitud total)

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version|**IHL**|Type of Service|**********Total Length*********| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | <-- optional +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DATA ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Encabezado TCP (compensación de datos)

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port | Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acknowledgment Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | |C|E|U|A|P|R|S|F| | | Offset| Res. |W|C|R|C|S|S|Y|I| Window | | ******| |R|E|G|K|H|T|N|N| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | Urgent Pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+