bonjour,
je programme en c++ sur les raw socket. Je souhaite utiliser le protocole TCP.
voici la déclaration des données membres dans une classe:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
unsigned short tcp_port_src; //Port source: 16 bits --> Le numéro de port de la source.
unsigned short tcp_port_dst; //Port Destinataire: 16 bits --> Le numéro de port du destinataire.
unsigned int tcp_seq; //Numéro de séquence: 32 bits --> Le numéro du premier octet de données par rapport au début de la transmission (sauf si SYN est marqué). Si SYN est marqué, le numéro de séquence est le numéro de séquence initial (ISN) et le premier octet à pour numéro ISN+1.
unsigned int tcp_ack; //Accusé de réception: 32 bits --> Si ACK est marqué ce champ contient le numéro de séquence du prochain octet que le récepteur s'attend à recevoir. Une fois la connexion établie, ce champ est toujours renseigné.
/*
Data Offset: 4 bits --> La taille de l'en-tête TCP en nombre de mots de 32 bits. Il indique là ou commence les données. L'en-tête TCP, dans tous les cas à une taille correspondant à un nombre entier de mots de 32 bits.
Réservé: 6 bits --> Réservés pour usage futur. Doivent nécessairement être à 0.
Control Bits : 6 bits
URG: Urgent Pointer field significant
ACK: Acknowledgment field significant
PSH: Push Function
RST: Reset the connection
SYN: Synchronize sequence numbers
FIN: No more data from sender
*/
unsigned short tcp_dataOffset:4, tcp_reserve:6, tcp_Curg:1, tcp_Cack:1, tcp_Cpsh:1, tcp_Crst:1, tcp_Csyn:1, tcp_Cfin:1;
unsigned short tcp_win; //Fenêtre: 16 bits --> Le nombre d'octets à partir de la position marquée dans l'accusé de réception que le récepteur est capable de recevoir.
unsigned short tcp_sum; //Checksum: 16 bits
unsigned short tcp_urgentPointeur; |
j'ai vu que l'on pouvait utiliser tous les bits d'un short, int, char. le tout se réalise avec :nombre ou nombre représente le nombre de bit a utiliser.
comme dans la déclaration suivante:
unsigned short tcp_dataOffset:4, tcp_reserve:6, tcp_Curg:1, tcp_Cack:1, tcp_Cpsh:1, tcp_Crst:1, tcp_Csyn:1, tcp_Cfin:1;
cependant, les questions que je me pose sont comment initialiser chaque valeur?
doit on utiliser de l'exa, du binaire ou du décimal?
en ce qui me concerne, chaque valeur sera rentré en décimal, il faudra surement que je les transforme ...
Partager