• Sábado 14 de Diciembre de 2024, 11:54

Autor Tema:  Dudas En Un Tcp Header Struct  (Leído 1087 veces)

Ziara

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Dudas En Un Tcp Header Struct
« en: Jueves 13 de Marzo de 2008, 20:17 »
0
Hola, me he encontrado con la siguiente estructura de la cabecera TCP:

# struct tcphdr // structure TCP Header
# {
# //Pour processeur de type little-endian
# unsigned short source; // port source
# unsigned short dest; // port de destination
# unsigned int seq; // Sequence number
# unsigned int ack_seq; // acknowledge sequence
#
# unsigned short res1:4, // Reserved 1 : 4 bits
# doff:4, // Data Offset
# fin:1, // Flag FINISH
# syn:1, // Flag SYNCHRONIZE
# rst:1, // Flag RESET
# psh:1, // Flag PUSH
# ack:1, // Flag ACKNOLEDGE
# urg:1, // Flag URGENT
# res2:2; // Reserved 2 : 2 bits (res1 + res2 = 6 bits reserved)
#
# unsigned short window;
# unsigned short check; // checksum
# unsigned short urg_ptr; // urgent
# };

La parte intermedia:

1 unsigned short res1:4, // Reserved 1 : 4 bits
2 doff:4, // Data Offset
3 fin:1, // Flag FINISH
4 syn:1, // Flag SYNCHRONIZE
5 rst:1, // Flag RESET
6 psh:1, // Flag PUSH
7 ack:1, // Flag ACKNOLEDGE
8 urg:1, // Flag URGENT
9 res2:2; // Reserved 2 : 2 bits (res1 + res2 = 6 bits reserved)

siguiente la estructura que tiene una cabecera TCP, después del unsigned int ack_seq; vendría:

TCP header length (4bits)
6 bits reservados
1 bit de flag URG
1 bit de flag ACK
1 bit de flag PSH
1 bit de flag RST
1 bit de flag SYN
1 bit de flag FIN

entiendo que u_short son 16 bits que engloba el resto (desde la linea 1-9, donde se encuentra la parte intermedia) pero por qué en primer lugar hace res1:4, (creo que eso es que la res1 toma 4 bits) y el último lugar res2:2 si los bits reservados están entre TCP header length (doff) y fin:1??

y creo que el orden de los flags están al revés porque pone que es little-endian puede ser?

3 fin:1, // Flag FINISH
4 syn:1, // Flag SYNCHRONIZE
5 rst:1, // Flag RESET
6 psh:1, // Flag PUSH
7 ack:1, // Flag ACKNOLEDGE
8 urg:1, // Flag URGENT

pero tampoco sé qué implica ello... con little-endian, por ejemplo el campo source port, el primer bit será el menos significativo(LSB)? y al hacer la conversion con ntohs afecta en algo?

gracias por la paciencia.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.