簡述:
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 ...