帮助理解linux / tcp.h

时间:2010-03-20 20:11:22

标签: c++ c sockets

我正在学习使用原始套接字,我试图删除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;
};

1 个答案:

答案 0 :(得分:2)

请参阅http://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure

res1在那里被称为保留。其他人的名字相同。

  

CWR(1位) - 减少拥塞窗口(CWR)
  ECE(1位) - ECN-Echo表示