mptcp核心流程分析

这篇具有很好参考价值的文章主要介绍了mptcp核心流程分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MPTCP流程分析

MPTCP(MultiPath TCP)是对常规TCP的一组扩展,提供多路径TCP服务,使传输连接能够同时跨多条路径运行。多路径TCP允许主机使用不同IP地址的不同路径来交换属于MPTCP连接的报文。对于网络层,每个MPTCP子流看起来就像一个普通的TCP流,因此不需要对应用程序进行任何更改。MPTCP管理这些子流的创建、删除和利用,以发送数据。在多路径TCP连接中管理的子流数量不是固定的,并且在多路径TCP连接的生存期内可能会有变动。

​ 在MPTCP建立、管理、使用子流的过程中,会在客户端与服务端之间交换MPTCP特有控制信息。所有MPTCP的控制信息都使用TCP的可选报头字段发出。IANA(The Internet Assigned Numbers Authority)为MPTCP的每种控制信息分配了一个唯一的TCP选项号(“Kind”,长度为一个字节),而单个消息将由“Subtype”(长度为四位)确定,其值存储在IANA注册表中。与所有TCP选项一样,Length字段(长度为一个字节)以字节为单位指定。MPTCP控制信息格式如下:
mptcp核心流程分析,网络,tcp/ip,服务器,linux,网络协议

一、初始化第一条流

与初始化普通TCP连接的信令相同,但是SYN、SYN/ACK和初始ACK(和数据)数据包会携带MP_CAPABLE选项。这个选项的长度是可变的,有多种用途。首先,验证远程主机是否支持MPTCP;其次,此选项允许主机交换一些信息,以验证附加子流的建立。第一条链接建立过程如下.
mptcp核心流程分析,网络,tcp/ip,服务器,linux,网络协议

其中,MP_CAPABLE包含的内容如下
mptcp核心流程分析,网络,tcp/ip,服务器,linux,网络协议

二、添加子流

一旦MPTCP连接通过MP_CAPABLE交换开始,就可以向该连接添加进一步的子流。在主流建立过程中,MP_CAPABLE握手中的密钥交换提供了在建立新的子流时可用于对端点进行身份验证的材料。一个新的子流作为正常的TCP SYN/ACK交换启动,但是需要在SYN/ACK和ACK数据包中携带MP_JOIN选项,它使用在初始MP_CAPABLE握手中交换的密钥材料。子流建立的过程如下图所示.

mptcp核心流程分析,网络,tcp/ip,服务器,linux,网络协议

其中,MP_JOIN包含的内容如下:
mptcp核心流程分析,网络,tcp/ip,服务器,linux,网络协议

三、数据包的发送

为了确保在随时可能出现或消失的子流上可靠、有序地传输数据,MPTCP使用64位数据序列号(DSN, Data Sequence Number),用于对通过MPTCP连接发送的所有数据包进行编号。每个子流都有自己的32位序列号空间,利用常规TCP序列号头,MPTCP选项将子流序列空间映射到数据序列空间。这样,在发生故障时,数据可以在不同的子流(映射到相同的DSN)上重新传输。

DSS (Data Sequence Signal)承载着数据序列映射。数据序列映射由子流序列号、数据序列号和该映射有效的长度组成。此选项还可以为接收到的DSN携带连接级确认(“数据ACK”)。

使用MPTCP,所有子流共享相同的接收缓冲区并发布相同的接收窗口。在MPTCP中有两个级别的确认。在每个子流上使用常规TCP确认来确认通过子流发送的段的接收,而不依赖于它们的DSN。此外,还有数据序列空间的连接级确认。这些确认跟踪字节流的进程并滑动接收窗口。

其中,DSS包含的信息如下:
mptcp核心流程分析,网络,tcp/ip,服务器,linux,网络协议

四、关闭连接

1.关闭子流

当主机想要关闭现有的子流而不是整个连接时,它可以发起一个常规的TCP FIN/ACK。

2.关闭整个MPTCP链接

当客户端想要通知服务端它没有更多的数据要发送时,它将这个“Data FIN”作为DSS的一部分发出信号。它具有与常规TCP FIN相同的语义和行为,但在连接级别。一旦成功接收到MPTCP连接上的所有数据,该消息将在连接级别上通过data ACK进行确认。

mptcp核心流程分析,网络,tcp/ip,服务器,linux,网络协议

参考链接

  • MPTCP源码解读

  • 苹果MPTCP

  • MPTCP官网

  • 小米8刷机MPTCP教程

  • MPTCP的RFC文档

  • Apple WWDC

  • MPTCP配置

  • mptcp的Linux安装文章来源地址https://www.toymoban.com/news/detail-788972.html

到了这里,关于mptcp核心流程分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UE5 独立程序的网络TCP/UDP服务器与客户端基础流程

    引擎源码版,复制EngineSourcePrograms路径下的BlankProgram空项目示例。 重命名BlankProgram,例如CustomTcpProgram,并修改项目名称。  修改.Build.cs内容 修改Target.cs内容     修改Private文件夹内.h.cpp文件名并修改.cpp内容 刷新引擎 在项目.Build.cs中加入模块  .cpp 客户端.cpp 未完待续。。

    2024年01月17日
    浏览(56)
  • 《TCP/IP网络编程》阅读笔记--基于UDP的服务器端/客户端

    目录 1--TCP和UDP的主要区别 2--基于 UDP 的数据 I/O 函数 3--基于 UDP 的回声服务器端/客户端 4--UDP客户端Socket的地址分配 5--UDP存在数据边界 6--UDP已连接与未连接的设置 ① TCP 提供的是可靠数据传输服务,而 UDP 提供的是不可靠数据传输服务; ② UDP 在结构上比 TCP 更简洁,其不会

    2024年02月09日
    浏览(58)
  • Linux网络编程之TCP/IP实现高并发网络服务器设计指南

    目录 引言: 多进程服务器 例程分享: 多线程服务器  例程分享: I/O多路复用服务器 select 例程分享: poll 例程分享: epoll 例程分享: 总结建议         随着互联网的迅猛发展,服务器面临着越来越多的并发请求。如何设计一个能够高效处理大量并发请求的服务器成为

    2024年02月20日
    浏览(50)
  • 《TCP/IP网络编程》阅读笔记--基于Windows实现Hello Word服务器端和客户端

    目录 1--Hello Word服务器端 2--客户端 3--编译运行 3-1--编译服务器端 3-2--编译客户端 3-3--运行 运行结果:

    2024年02月10日
    浏览(61)
  • 深空物联网通信中视频流的智能多路TCP拥塞控制|文献阅读|文献分析和学习|拥塞控制|MPTCP|SVC

    那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 https://blog.csdn.net/yu_cblog/category_12379430.html?spm=1001.2014.3001.5482 今天给大家讲解一下这篇文献,

    2024年02月13日
    浏览(42)
  • 第13章 网络 Page741~744 asio核心类 ip::tcp::socket

    liburl库使用\\\"curl*\\\" 代表socket 句柄 asio库使用ip::tcp::socket类代表TCP协议下的socket对象。 将“句柄”换成“对象”,因为asio库是不打折扣的C++库 ip::tcp::socket提供一下常用异步操作都以async开头 表13-3 tcp::socket提供的异步操作 async_connect() Start an asynchronous connect async_read_some() Start an

    2024年02月20日
    浏览(31)
  • 第13章 网络 Page747~749 asio核心类 ip::tcp::resolver

    如果新浪的IP地址变了,该怎么办呢? ip::tcp::resolver 可以帮我们用上www.sina.com.cn,因为它负责将人类可读的多种网址信息,一步 到位地解析成ip::tcp::socket建立连接所需要的ip::tcp::endpoint结构,address类被直接跳过。 实际操作分三步 第一步 准备解析条件。 条件是一个类型 ip::t

    2024年02月19日
    浏览(41)
  • 【Linux网络】TCP/IP三次握手、四次挥手流程

    目录 一、三次握手,建立连接 二、四次挥手,断开连接 三、主要字段  1、标志位(Flags)  2、序号(sequence number)  3、确认号(acknowledgement number) 四、三次握手的报文变化 五、四次挥手的报文变化 六、面试题 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手,

    2024年02月08日
    浏览(47)
  • 基于TCP/UDP的socket服务器搭建流程

    TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需 要建立连接 TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付 TCP面向字节流,实际上是TCP把数据看成一连串

    2023年04月08日
    浏览(48)
  • 判断服务器IP否被墙 是否被TCP阻断

    现在国内很多购买国外主机服务器的,但往往很多主机商的机子用的人多了,国内使用者用这些服务器做啥的都有,正儿八经的做外贸其实没多大事情,但往往有些人就是不遵守法律法规,长此以往用的人多了,这些国外的主机商提供的服务器ip就会遭到国内的封杀。 今天教

    2024年02月12日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包