亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

TCP/IP協議中三次握手過程及原因是什么

發布時間:2021-11-20 09:47:01 來源:億速云 閱讀:169 作者:柒染 欄目:大數據

這期內容當中小編將會給大家帶來有關TCP/IP協議中三次握手過程及原因是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

三次握手都做什么?

三次握手 建立起 TCP連接 的 reliable,分配初始序列號和資源,在相互確認之后開始數據的傳輸。有 主動打開(一般是client) 和 被動打開(一般是server)。

TCP使用3次握手建立一條連接,該握手初始化了傳輸可靠性以及數據順序性必要的信息,這些信息包括兩個方向的初始序列號,確認號由初始序列號生成,使用3次握手是因為3次握手已經準備好了傳輸可靠性以及數據順序性所必要的信息,該握手的第3次實際上并不是需要單獨傳輸的,完全可以和數據一起傳輸。詳細過程如下所示:

第一步,Client會進入SYN_SENT狀態,并發送Syn 消息給Server端,SYN標志位在此場景下被設置為1,同時會帶上Client這端分配好的Seq號,這個序列號是一個U32的整型數,該數值的分配是根據時間產生的一個隨機值,通常情況下每間隔4ms會加1。除此之外還會帶一個MSS,也就是最大報文段長度,表示Tcp傳往另一端的最大數據塊的長度。

第二步,Server端在收到,Syn消息之后,會進入SYN_RCVD狀態,同時返回Ack消息給Client,用來通知Client,Server端已經收到SYN消息并通過了確認。這一步Server端包含兩部分內容,一部分是回復Client的Syn消息,其中ACK=1,Seq號設置為Client的Syn消息的Seq數值+1;另一部分是主動發送Sever端的Syn消息給Client,Seq號碼是Server端上面對應的序列號,當然Syn標志位也會設置成1,MSS表示的是Server這一端的最大數據塊長度。

第三步,Client在收到第二步消息之后,首先會將Client端的狀態從SYN_SENT變換成ESTABLISHED,此時Client發消息給Server端,這個方向的通道已經建立成功,Client可以發送消息給Server端了,Server端也可以成功收到這些消息。其次,Client端需要回復ACK消息給Server端,消息包含ACK狀態被設置為1,Seq號碼被設置成Server端的序列號+1。(備注:這一步往往會與Client主動發起的數據消息,合并到一起發送給Server端。)

第四步,Server端在收到這個Ack消息之后,會進入ESTABLISHED狀態,到此時刻Server發向Client的通道連接建立成功,Server可以發送數據給Client,TCP的全雙工連接建立完成。

TCP/IP協議中三次握手過程及原因是什么

圖片來自網絡,侵權請告知,會及時刪除

為什么需要三次握手?

TCP的連接因為是全雙工的,也就是Client和Server兩端,發送消息兩個方向的連接都要建立成功。如果要保證雙向連接都成功的話,三次通信是最少的次數了。大于三次的話,后面的次數通信就沒有必要了,是在浪費資源。

二次的話,會怎么樣,可不可以呢?答案是不可以,我們來看下,下面的場景。

在談論這個之前,我們先要知道TCP是基于IP協議的,而IP協議是有路由的,IP協議不能夠保證先發送的數據先到達,這當中依賴于IP協議底層的網絡質量,以及Client與Server之間的路由跳數。

Client在發送完Syn消息1,這里稱作Syn1之后,假設因為網絡原因,Syn1并沒有到達Server端,這個時候Client端已經超時,Client之后重新發起SYN消息,這里稱作Syn2。結果由于網絡原因Syn2先到達Server,Server于是與Client基于Syn2建立了連接,結果沒過多久Syn1又到達了Server,Server于是關掉了Syn2建立的那條連接,又重新建立了一條連接。對于Client來說新建立的這條連接是早就過時的,所以Client不會在這條連接上發送任何數據,這就導致了Server端長時間收不到數據,Client新的連接被斷掉了。

三次握手失敗了會怎么樣?

這里要看是在那個階段失敗的,Client在發送SYN之后沒有收到ACK消息,Client會進行重傳,第一次重傳時間5.5-6s之間,第二次重傳會是24s,不成功還會繼續嘗試,伯克利系統在超過75s之后,如果還是不成功,會放棄嘗試連接。(備注:這里面的重傳時間設置,與底層的定時器設置有過關系,可以參考TCP/IP詳解卷1,這里不做詳談。)

如果Server沒有收到最后的一次Ack消息,同樣的原理,Server也會進行重傳第二步的Syn+Ack消息。

三次握手的狀態轉換?

TCP的狀態變化圖如下所示,Client和Server的初始狀態都是CLOSED狀態,其中:

Client:

CLOSED-----發送Syn 消息--->SYN_SENT-----收到Server端發回的SYN+ACK--->ESTABLISHED---發送和接收數據-->......

Server:

CLOSED----收到Client端發送過來的SYN消息-->SYN_RCVD-----發送SYN+ACK消息--->SYN_RCVD----收到Client發回來的ACK消息--->ESTABLISHED-----發送和接收數據-->......

TCP/IP協議中三次握手過程及原因是什么

其中TCP的三次握手與Scoket的函數對應關系如下所示:

TCP/IP協議中三次握手過程及原因是什么

備注:connect時,觸發了連接請求,向服務器發送了SYN J包,這時connect進入阻塞狀態;服務器監聽到連接請求,即收到SYN J包,調用accept函數接收請求向客戶端發送SYN K ,ACK J+1,這時accept進入阻塞狀態;客戶端收到服務器的SYN K ,ACK J+1之后,這時connect返回,并對SYN K進行確認;服務器收到ACK K+1時,accept返回,至此三次握手完畢,連接建立。

上述就是小編為大家分享的TCP/IP協議中三次握手過程及原因是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洛隆县| 西华县| 同江市| 濮阳市| 阿鲁科尔沁旗| 通化市| 盖州市| 离岛区| 渭南市| 本溪市| 百色市| 秦安县| 孙吴县| 禹城市| 周至县| 大城县| 淳安县| 新郑市| 丹棱县| 泸定县| 呈贡县| 扎囊县| 元阳县| 乐山市| 兴业县| 荆州市| 哈尔滨市| 那坡县| 蓬莱市| 宿州市| 房产| 定安县| 日喀则市| 永修县| 西吉县| 县级市| 呼和浩特市| 长春市| 开远市| 通州区| 祁门县|