TCP協議特點和三向交握/四次揮手

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

一.TCP的特性

TCP提供一種連線導向的、可靠的位元組流服務
在一個TCP串連中,僅有兩方進行彼此通訊。廣播和多播不能用於TCP
TCP使用校正和,確認和重傳機制來保證可靠傳輸
TCP給資料分節進行排序,並使用累積確認保證資料的順序不變和非重複
TCP使用滑動視窗機制來實現流量控制,通過動態改變視窗的大小進行擁塞控制
注意:TCP 並不能保證資料一定會被對方接收到,因為這是不可能的。TCP 能夠做到的是,如果有可能,就把資料遞送到接收方,否則就(通過放棄重傳並且中斷串連這一手段)通知使用者。因此準確說 TCP 也不是 100% 可靠的協議,它所能提供的是資料的可靠遞送或故障的可靠通知。

二.三向交握與四次揮手

所謂三向交握(Three-way Handshake),是指建立一個 TCP 串連時,需要用戶端和伺服器總共發送3個包。
三向交握的目的是串連伺服器指定連接埠,建立 TCP 串連,並同步串連雙方的序號和確認號,交換 TCP 視窗大小資訊。在 socket 編程中,用戶端執行 connect() 時。將觸發三向交握。

第一次握手(SYN=1, seq=x):
用戶端發送一個 TCP 的 SYN 標誌位置1的包,指明用戶端打算已連線的服務器的連接埠,以及初始序號 X,儲存在包頭的序號(Sequence Number)欄位裡。發送完畢後,用戶端進入 SYN_SEND 狀態。

第二次握手(SYN=1, ACK=1, seq=y, ACKnum=x+1):
伺服器發回確認包(ACK)應答。即 SYN 標誌位和 ACK 標誌位均為1。伺服器端選擇自己 ISN 序號,放到 Seq 域裡,同時將確認序號(Acknowledgement Number)設定為客戶的 ISN 加1,即X+1。 發送完畢後,伺服器端進入 SYN_RCVD 狀態。

第三向交握(ACK=1,ACKnum=y+1)
用戶端再次發送確認包(ACK),SYN 標誌位為0,ACK 標誌位為1,並且把伺服器發來 ACK 的序號欄位+1,放在確定欄位中發送給對方,並且在資料區段放寫ISN的+1發送完畢後,用戶端進入 ESTABLISHED 狀態,當伺服器端接收到這個包時,也進入 ESTABLISHED 狀態,TCP 握手結束。

TCP 的串連的拆除需要發送四個包,因此稱為四次揮手(Four-way handshake),也叫做改進的三向交握。用戶端或伺服器均可主動發起揮手動作,在 socket 編程中,任何一方執行 close() 操作即可產生揮手操作。

第一次揮手(FIN=1,seq=x)
假設用戶端想要關閉串連,用戶端發送一個 FIN 標誌位置為1的包,表示自己已經沒有資料可以發送了,但是仍然可以接受資料。發送完畢後,用戶端進入 FIN_WAIT_1 狀態。

第二次揮手(ACK=1,ACKnum=x+1)
伺服器端確認用戶端的 FIN 包,發送一個確認包,表明自己接受到了用戶端關閉串連的請求,但還沒有準備好關閉串連。發送完畢後,伺服器端進入 CLOSE_WAIT 狀態,用戶端接收到這個確認包之後,進入 FIN_WAIT_2 狀態,等待伺服器端關閉串連。

第三次揮手(FIN=1,seq=y)
伺服器端準備好關閉串連時,向用戶端發送結束串連請求,FIN 置為1。
發送完畢後,伺服器端進入 LAST_ACK 狀態,等待來自用戶端的最後一個ACK。

第四次揮手(ACK=1,ACKnum=y+1)
用戶端接收到來自伺服器端的關閉請求,發送一個確認包,並進入 TIME_WAIT狀態,等待可能出現的要求重傳的 ACK 包。伺服器端接收到這個確認包之後,關閉串連,進入 CLOSED 狀態。用戶端等待了某個固定時間(兩個最大段生命週期,2MSL,2 Maximum Segment Lifetime)之後,沒有收到伺服器端的 ACK ,認為伺服器端已經正常關閉串連,於是自己也關閉串連,進入 CLOSED 狀態。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.