MPTCP 源碼分析(一) MPTCP的三向交握

來源:互聯網
上載者:User

標籤:

簡述:     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 1667843 void mptcp_syn_options(struct sock *sk, struct tcp_out_options *opts,
844                unsigned *remaining)
845 {
846     struct tcp_sock *tp = tcp_sk(sk);
847
848     opts->options |= OPTION_MPTCP;
849     if (is_master_tp(tp)) {
850         opts->mptcp_options |= OPTION_MP_CAPABLE | OPTION_TYPE_SYN;
851         *remaining -= MPTCP_SUB_LEN_CAPABLE_SYN_ALIGN;
852         opts->mp_capable.sender_key = tp->mptcp_loc_key;
853         opts->dss_csum = !!sysctl_mptcp_checksum;
854     } else {
855         struct mptcp_cb *mpcb = tp->mpcb;
856
857         opts->mptcp_options |= OPTION_MP_JOIN | OPTION_TYPE_SYN;
858         *remaining -= MPTCP_SUB_LEN_JOIN_SYN_ALIGN;
859         opts->mp_join_syns.token = mpcb->mptcp_rem_token;
860         opts->mp_join_syns.low_prio  = tp->mptcp->low_prio;
861         opts->addr_id = tp->mptcp->loc_id;
862         opts->mp_join_syns.sender_nonce = tp->mptcp->mptcp_loc_nonce;
863     }
864 }由於三向交握的肯定是master sock,在850行到853行對MPTCP選項進行了賦值。相應的服務端發送SYN/ACK包時使用mptcp_synack_options函數對選項進行了賦值。而最後一個ACK包則是調用函數mptcp_established_options操作。 結論:1. MPTCP利用TCP的三向交握進行了KEY資訊的交換。 參考文獻:1.RFC6824 https://tools.ietf.org/html/rfc6824#page-4 

MPTCP 源碼分析(一) MPTCP的三向交握

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.