Les Forums

Les Forums

Les forums sont fermés. Ils restent présent pour consultation et archivage.
Vous pouvez désormais poser vos questions directement dans les commentaires en bas de chaque page du site.
Alors n'hésitez pas à participer

entete IP en Langage C

Bonjour à tous,
Je manipule actuellement des entetes IP.
Ils sont représenté par des strucutures en langage C.
J'ai repris ce qui a été fait sur le sujet.
Par exemple, d'apres la RFC, le TTL d'un entête IP est codé sur 8 bits.
Une variable de type "char" est donc utilisée car elle même codé sur 8 bits. Je comprends que le TTL soit représenté par une variable de type char.
Par contre,pour représenter les données de type variable on utilise un tableau d'1 caractéres. char ip_data[1] dans l'exemple.
Et c'est la que je ne comprends pas. A quoi sert ce IP_DATA[1] ?
pour quoi un tableau de 1 caracteres et pas une variable de type char ?
Merci de votre aide

typedef struct IP_HEAD_tag{
unsigned char ip_header_len:4; // 4 bits. Length of the header in dwords
unsigned char ip_ver:4; // 4 bits. Version of IP
unsigned char ip_tos; // Type of service
unsigned short ip_len; // Total packet length
unsigned short ip_id; // Datagram identification
unsigned short ip_fragoff; // Fragment offset
unsigned char ip_ttl; // Time to live
unsigned char ip_proto; // Protocol
unsigned short ip_chksum; // Checksum
unsigned int ip_src_addr; // Source address
unsigned int ip_dst_addr; // Destination address
unsigned char ip_data[1]; // Variable length data area
}IP_HEAD;