MPTCP 原始碼分析 一 MPTCP的三次握手

2021-07-27 15:47:54 字數 1059 閱讀 9647

簡述:

mptcp依然按照正常的tcp進行三次握手,只是在握手過程中增加了mptcp特有的資訊。

建立過程

三次握手過程如下圖所示:

左邊客戶端傳送的第乙個syn包攜帶有客戶端自身的key,右邊傳送syn/ack的時候攜帶了自身的key,

而最後左邊的客戶端傳送最後乙個ack的時候攜帶著雙方的key。mptcp中關於mp_capable的定義如下:

subtype的定義如下:

mptcp的核心實現

mptcp在客戶端上傳送syn包的呼叫情況如下:

關鍵函式為mptcp_syn_options對mptcp選項的填充,原始碼如下:

"net/mptcp/mptcp_output.c" line 843 of 1667

843 void mptcp_syn_options(struct sock *sk, struct tcp_out_options *opts,

844                unsigned *remaining)

845 else

864 }

由於三次握手的肯定是master sock,在850行到853行對mptcp選項進行了賦值。相應的

服務端傳送syn/ack包時使用mptcp_synack_options函式對選項進行了賦值。而最後乙個ack包

則是呼叫函式mptcp_established_options操作。

結論:

1. mptcp利用tcp的三次握手進行了key資訊的交換。

1.rfc6824 

Mangos原始碼分析 一)

mangos 原始碼分析 realmd 登陸伺服器 realmd 主程式 launch the realm server int main int argc,char argv h.add authlistensocket 進行一些引數設定 while stopevent 伺服器主迴圈 return...

testlink原始碼分析 一

testlink是乙個很好的用例管理開源元件,因為我之前也作過乙個用例管理的系統,但是遠沒有testlink靈活,本著學習的態度,自己分析一下testlink的源 一點理解,和大家分享,希望能拋磚引玉。下面來看一下testlink的資料庫設計。1 許可權管理 testlink提供了豐富的許可權管理,...

rabbitmq原始碼分析(一)

解壓後工程很整齊 先分析啟動入口點,環境為win7,其實對程式入口點我一直不太了解,感覺erlang程式的入口點沒有固定的,雖然可以通過檔案中的一些東西來分析出來,感覺不方便。prepare方法是幹什麼的,哦確保時間管理器都安裝了必須的幾個事件處理模組。上 啟動rabbit時呼叫模組中的start ...