帮助理解 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的主要内容,如果未能解决你的问题,请参考以下文章

UITextView 还是别的啥?需要帮助理解

帮助理解 Scheme 中的 Continuations

C,帮助我理解这个 ASCII 问题

请帮助我理解以下 CSS 代码

谁能帮助理解这个 Knockout Observable?

素数,帮助理解平方根的使用