tcp、udp协议栈

tcp
tcp

struct tcphdr {
     __be16    source; //源端口
     __be16    dest; //目的端口
     __be32    seq; //序列号
     __be32    ack_seq; //确认号
#if defined(__LITTLE_ENDIAN_BITFIELD)
     __u16     res1:4,
          doff:4, //头长度
          fin:1,
          syn:1,
          rst:1,
          psh:1,
          ack:1,
          urg:1,
          ece:1,
          cwr:1;
#elif defined(__BIG_ENDIAN_BITFIELD)
     __u16     doff:4,
          res1:4,
          cwr:1,
          ece:1,
          urg:1,
          ack:1,
          psh:1,
          rst:1,
          syn:1,
          fin:1;
#else
#error    "Adjust your <asm/byteorder.h> defines"
#endif    
     __be16    window; //窗口大小
     __sum16   check; //检验和
     __be16    urg_ptr; //紧急指针
};

udp
udp

struct udphdr {
     __be16    source;
     __be16    dest;
     __be16    len; //数据报长度
     __sum16   check;
};

MSS (Maximum Segment Size)
最大报文长度。是TCP协议定义的一个选项,用于在TCP连接建立时,收发双方协商通信时每一个报文段所能承载的最大数据长度
这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以一般MSS值1460

TCP选项
选项字段是一个选项的列表,可包含多个选项

选项类型0,单字节选项,表示选项列表的结束
选项类型1,单字节选项,无操作,该选项可用在两个选项之间,用于选项结构的对齐
选项类型2,最大报文段长度选项
选项类型3,窗口扩大因子选项
选项类型8,时间戳选项

posted @   thomas_blog  阅读(288)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示