帮助理解 linux/tcp.h
Posted
技术标签:
【中文标题】帮助理解 linux/tcp.h【英文标题】:Help understanding linux/tcp.h 【发布时间】:2010-03-20 20:11:21 【问题描述】:我正在学习使用原始套接字,并试图将 tcp 标头数据解析出来,但我似乎无法弄清楚 res1、ece 和 cwr 是什么。通过我的网络书和谷歌,我知道其余的代表什么,但似乎在这三个方面找不到任何东西。 下面是我包含区域中的 tcphdr 结构。当我弄清楚它们代表什么时,我已经对这些部分进行了一些评论。
struct tcphdr
__be16 source;
__be16 dest;
__be32 seq;
__be32 ack_seq;
\#if defined(__LITTLE_ENDIAN_BITFIELD)
__u16 res1:4,
doff:4,//tcp header length
fin:1,//final
syn:1,//synchronization
rst:1,//reset
psh:1,//push
ack:1,//ack
urg:1,// urge
ece:1,
cwr:1;
\#elif defined(__BIG_ENDIAN_BITFIELD)
__u16 doff:4,//tcp header length
res1:4,
cwr:1,
ece:1,
urg:1,//urge
ack:1,//ack
psh:1,//push
rst:1,//reset
syn:1,//synchronization
fin:1;//final
\#else
\#error "Adjust your <asm/byteorder.h> defines"
\#endif
__be16 window;
__sum16 check;
__be16 urg_ptr;
;
【问题讨论】:
res1
可能只是“保留”。不过我不知道其他人的线索。
【参考方案1】:
见http://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure
res1 在那里被称为保留。其他同名。
CWR(1 位)- 减少拥塞窗口 (CWR) ECE (1 bit) – ECN-Echo 表示
【讨论】:
谢谢!我在书中使用的 tcp 标头的描述有点不同。 标准的问题在于它们太多了......(而且它们一直在变化)以上是关于帮助理解 linux/tcp.h的主要内容,如果未能解决你的问题,请参考以下文章