关于TCP数据结构, doff,res1,res2,window,check,urg_ptr是什么意思

<<用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>
Published At
Categories with 服务器类
Tagged with
comments powered by Disqus