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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于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最大的设计失误
· 单元测试从入门到精通