我正在学习使用原始套接字,我试图删除tcp头数据,但我似乎无法弄清楚res1,ece和cwr是什么。通过我的网络书和谷歌,我知道其余的代表什么,但似乎无法在这三个上找到任何东西。 下面是我的include区域中的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;
};
答案 0 :(得分:2)
请参阅http://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure
res1在那里被称为保留。其他人的名字相同。
CWR(1位) - 减少拥塞窗口(CWR)
ECE(1位) - ECN-Echo表示