MPTCP,多连接的TCP连接。不知道看官们是否有过疑问,WIFI和4G能否同时使用呢?基于WIFI建立的连接,能否利用4G网络进行传输呢?以前还真是没有想过这类问题,在男闺的好奇中,一起搜索了相关的资料,网上资料少的可怜,献上大神的理解,来呀来呀 。下面,聊一聊自己的胡思乱想。
服务器的IP为C,端口为80。小采风的WIFI的IP为A,4G的IP地址为B,某个应用APP的端口号为1314,如果(A,1314,C,80)作为一次连接的唯一标识,那么(B,1314,C,80)在同一时刻就不能建立连接。而神奇的MPTCP,可以实现这两种标识连接。正如百科上的一句话,MPTCP的核心思想是:
定义一种在两个主机之间建立连接的方式,而不是在两个接口之间。
那么,我们还是来简单看一看MPTCP的工作原理吧!
MPTCP位于应用层与网络层之间,其可以分为两层multipathTCP和TCP。基于MPTCP工作时,开启多个TCP子连接。应用层将数据传递给MPTCP,其将数据分段,添加控制字头后,传递给合适的TCP子连接。
与传统的基于TCP的连接不同的是,三次握手的同时,发送包含MP_CAPABLE的选项字段和用于安全传输的key。第三次握手时,客户端传输两者的key。
连接建立后,客户端与服务端进行通信,告知对方自己未用的地址信息(此处应该是指WIFI、4G等模块地址),如果双方相同类型的均处于未用状态,可以建立子连接。子连接的建立依然遵守TCP的三次握手,而TCP选项换成了MP_JOIN,token是基于key的一个hash值,rand为一个随机数,而HMAC是基于rand的一个hash值,其值的具体含义请参考上面推荐的博客地址。
master subsock与应用程序建立标准的socket连接,而slave subsock于应用程序并不可见。multipath control block用于对子连接的管理,每次数据段到来后,基于一定的算法选择合适的子连接进行数据传输。
关于MPTCP的可靠性,流量控制与拥塞控制,以及发送与接收窗口的调整,是进一步的学习内容。小采风愿意与看官一起,携手走向星辰大海。