04.01 關於網絡通訊裡的TCP三次握手的簡單講解

大家好,歡迎大家來到LIUSE網絡安全,本次文章做了對TCP三次握手、四次揮手的簡單講解。如果大家不喜歡看文章,那可以點開鄙人的頭像找到視頻《LIUSE網絡-對TCP三次握手、四次揮手的講解》那裡做了一些視頻的講解。寫的不好,或者講的不好,還請夥計們海涵~

關於網絡通訊裡的TCP三次握手的簡單講解

TCP的基本概念:

TCP(Transmission Control Protocol 傳輸控制協議)是一種面向連接的、可靠的、基於字節流的傳輸層通信協議,由IETF的RFC 793定義。TCP層是位於IP層之上,應用層之下的中間層。

TCP是一個面向連接的協議,所以如果主機間想要進行交互就必須要和對方建立連接

TCP的連接過程:

TCP連接必須要經過三次“握手”才能夠建立,其中的過程非常複雜,現在我們只簡單的敘述一下三次握手的過程:

  1. 第一次握手:主機A向主機B發出連接請求數據包:“兄弟,你在嗎?我有點事跟你說。”

  2. 第二次握手:主機B向主機A發送同意連接和同步數據包:“沒問題的兄dei,你來吧。”

  3. 第三次握手:主機A再發出一個ACK數據包確認主機B的請求:“好的兄弟,我這就來。”

三次握手建立完成後,主機A才可以向主機B正式發送數據。

關於網絡通訊裡的TCP三次握手的簡單講解

圖解TCP三次握手

關於TCP的6個標誌位的含義:

  1. SYN(synchronous建立聯機)

  2. ACK(acknowledgement 確認)

  3. PSH(push傳送)

  4. FIN(finish結束)

  5. RST(reset重置)

  6. URG(urgent緊急)

關於網絡通訊裡的TCP三次握手的簡單講解

TCP報文頭部結構

常規下的通訊:

  1. TCP服務器進程先創建傳輸控制塊TCB,時刻準備接受客戶進程的連接請求,此時服務器就進入了LISTEN(監聽)狀態;

  2. TCP客戶進程也是先創建傳輸控制塊TCB,然後向服務器發出連接請求報文,這是報文首部中的同部位SYN=1,同時選擇一個初始序列號 seq=x ,此時,TCP客戶端進程進入了 SYN-SENT(同步已發送狀態)狀態。TCP規定,SYN報文段(SYN=1的報文段)不能攜帶數據,但需要消耗掉一個序號。

  3. TCP服務器收到請求報文後,如果同意連接,則發出確認報文。確認報文中應該 ACK=1,SYN=1,確認號是ack=x+1,同時也要為自己初始化一個序列號 seq=y,此時,TCP服務器進程進入了SYN-RCVD(同步收到)狀態。這個報文也不能攜帶數據,但是同樣要消耗一個序號。

  4. TCP客戶進程收到確認後,還要向服務器給出確認。確認報文的ACK=1,ack=y+1,自己的序列號seq=x+1,此時,TCP連接建立,客戶端進入ESTABLISHED(已建立連接)狀態。TCP規定,ACK報文段可以攜帶數據,但是如果不攜帶數據則不消耗序號。

  5. 當服務器收到客戶端的確認後也進入ESTABLISHED狀態,此後雙方就可以開始通信了。

好啦以上就是TCP三次握手的基本過程啦。寫的略渣,希望大神勿噴,鄙人多謝啦~


分享到:


相關文章: