<<用TCP/IP进行网际互联第一卷>>中,对tcp报文头格式指出顺序如下:
源端口 目的端口 序号 确认号
首部长度 保留未用 码元比特 窗口
校验和 紧急指针 选项(若有) 填充
数据
但是在linux中的
1<netinet tcp.h=""> 中,结构定义为:
2struct tcphdr
3{
4u_int16_t source; //源端口
5u_int16_t dest; //目的端口
6u_int32_t seq; //序号
7u_int32_t ack_seq; //确认号
8# if __BYTE_ORDER == __LITTLE_ENDIAN
9u_int16_t res1:4;
10u_int16_t doff:4;
11
12u_int16_t fin:1;
13u_int16_t syn:1;
14u_int16_t rst:1;
15u_int16_t psh:1;
16u_int16_t ack:1;
17u_int16_t urg:1;
18
19u_int16_t res2:2;
20# elif __BYTE_ORDER == __BIG_ENDIAN
21u_int16_t doff:4;
22u_int16_t res1:4;
23u_int16_t res2:2;
24
25u_int16_t urg:1;
26u_int16_t ack:1;
27u_int16_t psh:1;
28u_int16_t rst:1;
29u_int16_t syn:1;
30u_int16_t fin:1;
31# else
32# error "Adjust your <bits endian.h=""> defines"
33# endif
34u_int16_t window;
35u_int16_t check;
36u_int16_t urg_ptr;
37};
38
39字段共有16个(前面4个加上中间9个,还有最后3个)!
40有没有高手告诉我doff,res1,res2,window,check,urg_ptr是什么意思啊?
41
42\---------------------------------------------------------------
43
44doff=首部长度
45window=窗口
46check=校验和
47urg_ptr=紧急指针</bits></netinet>