mptcp包结构


http://www.cnblogs.com/zhuting/p/5969617.html


TCP/IP数据包

MPTCP是常规TCP协议的扩展,想要了解MPTCP数据包,首先得了解常规的TCP包。

如上图所示,为TCP/IP的数据包格式,TCP/IP数据包分为四大块:黄色的数据链路层头部,蓝色的IP头部,紫色TCP头部,还有最后的数据报内容。

详细内容参考http://blog.csdn.net/alexander_xfl/article/details/17412223

TCP头部选项

头部选项在TCP头部和数据包内容之间,一个TCP包可能没有头部选项,也可能同时有好几个头部选项。TCP头部选项的格式如下,通过kind字段区分不同的头部选项。

2013年,RFC6824将kind=30分配给了MPTCP。

红色标注的部分为RFC组织在2013年新标准化的选项字段,在做包解析的时候,根据TCP头部选项的kind值就可以判断该包是否为MPTCP包了。

MPTCP包结构

MPTCP选项的典型结构为

其中,kind字段表示该头部选项为MPTCP头部选项,kind=30。Length字段表示该头部选项的长度,subtype选项表示该MPTCP选项的子类型,剩下的字节则为该子类选项的具体数据。根据subtype值的不同,MPTCP选项的子类型有以下几种

每个MPTCP选项子类对应的结构为:

0x0:MP_CAPABLE

0x1:MP_JOIN

0x2:DSS

0x3:ADD_ADDR

0x4:REMOVE_ADDR

0x5:MP_PRIO

0x6:MP_FAIR

0x7:MP_FASTCLOSE



posted @   张同光  阅读(182)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示