日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TCP四次握手释放连接

發布時間:2023/12/4 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TCP四次握手释放连接 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、四次握手的過程


TCP需要三次握手才能建立連接,整個過程如下圖所示:


假設A運行的是TCP客戶端進程,而B運行的是TCP服務端進程。最開始的時候兩端的TCP進程都處于ESTABLISHED(已建立連接)狀態。

這時候,A主動關閉,請求釋放連接。


(1)第一次握手 ?A→ B

A的TCP客戶進程向B發出釋放連接請求報文段,其中FIN(終止位)=1,seq(序號)=u

TCP規定,當報文段的FIN=1時,表明此報文段的發送方的數據已發生完畢,并要求釋放連接;FIN報文段(FIN=1的報文段)不能攜帶數據,但是要消耗掉一個序號。

在A發送完畢之后,A的TCP客戶端進程進入FIN-WAIT-1(終止等待1狀態。


(2)第二次握手 ?B→A

B在收到連接釋放連接請求報文段之后,隨即向A發送確認報文段。其中ACK=1,seq=v,ack(確認號)=u+1

在B發送完畢之后,B的TCP服務端進程進入CLOSE-WAIT(關閉等待)狀態。

TCP服務器進程這時應該通知高層應用經常,從A到B這個方向的連接就要釋放了,這時的TCP連接處于半關閉(half-close)狀態。

A在收到B的確認報文段之后,就進入FIN-WAIT-2(終止等待2)狀態,等待B發出的連接釋放報文段。


(3)第三次握手?B→A 若B已經沒有要向A發送的數據,其應用進程就通知TCP釋放連接。B向A發出釋放連接報文段,其中FIN=1,ACK=1,seq=w,ack=u+1 TCP規定,當報文段的FIN=1時,表明此報文段的發送方的數據已發生完畢,并要求釋放連接;FIN報文段(FIN=1的報文段)不能攜帶數據,但是要消耗掉一個序號。

在B發送完畢之后,B的TCP服務端進程進入LAST-ACK(最后確認狀態。


(4)第四次握手 A→B

A在接收到B的釋放連接請求報文段之后,必須對此發出確認。其中ACK=1,seq=u+1,ack=w+1


A在發送完畢之后,進入到TIME-WAIT(時間等待)狀態。B在接收到A的確認之后,進入到CLOSED(關閉)狀態。


在經過時間等待計時器設置的時間2MSL之后,A才進入到CLOSED狀態。


以上就是所說的四次握手過程。



二、四次握手的原因


四次握手可以看成是兩個二次握手,分別是A的TCP客戶端進程請求釋放連接和B的TCP服務端進程請求釋放連接。


為什么A在發送最后一次確認報文段之后還需要等待2MSL時間呢?主要有兩個原因,一是為了讓B能夠按照正常步驟進入CLOSED狀態,二是為了防止已失效的請求連接報文段出現在下次連接中,因而產生錯誤。


原因如下:

第一,為了保證A發送的最后一個ACK報文段能夠到達B。因為這個ACK報文段有可能丟失,這樣B就無法接收到而進入CLOSED狀態。于是B會重傳請求釋放連接的報文段,A在這段等待時間接收到了,重傳ACK報文段,這樣B還是會順利接收到確認報文段,進入CLOSED狀態。如果此時A已經關閉了,那么就無法收到B的請求報文段,也不會發送ACK報文段,這樣B就無法進入CLOSED狀態了。


第二,在這2MSL的等待時間內,本次連接的所有報文都已經從網絡中消失,從而不會出現失效的報文出現在下次連接中。


參考資料:

1、TCP協議中的三次握手和四次揮手(圖解)?http://blog.csdn.net/whuslei/article/details/6667471

2、簡析TCP的三次握手與四次分手?http://www.jellythink.com/archives/705

3、TCP三次握手詳解及釋放連接過程 ?http://blog.csdn.net/oney139/article/details/8103223




總結

以上是生活随笔為你收集整理的TCP四次握手释放连接的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。