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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

tcp当主动发出syn_一文读懂TCP四次挥手工作原理及面试常见问题汇总

發布時間:2024/1/23 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tcp当主动发出syn_一文读懂TCP四次挥手工作原理及面试常见问题汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡述

本文主要介紹TCP四次揮手的工作原理,以及在面試中常見的問題。

字段含義

seq序號:Sequence Number,占32位,用來標識從TCP源端向目的端發送的字節流,發起方發送數據時對此進行對比。

ack序號:Acknowledge Number,占32位,只有ACK標志位為1時,確認序號字段才有效,ack=seq+1。

Flags標志位:

URG:Urgent Pointer緊急指針有效;

ACK:確認序號有效;

PSH:接收方應該盡快將這個報文交給應用層;

RST:重置連接;

SYN:發起一個新連接;

FIN:釋放一個連接;

注意:標志位ACK和ack序號是不同的概念。確認方ack=發起方Seq+1,兩端配對。

四次揮手

四次揮手及釋放或解除TCP連接,連接的釋放必須是一方主動釋放,另一方被動釋放。流程如下:

圖 1 四次揮手原理圖

1) 第一次揮手,客戶端發出連接釋放syn包(FIN=1,seq=u)到服務器端,并且停止再發送數據,主動關閉連接,進入FIN-WAIT-1狀態,等待服務器端確認。

2) 第二次揮手,服務器端收到客戶端發送的連接釋放syn包后,即發出確認syn包(ACK=1,seq=v,ack=u+1)到客戶端,進入CLOSE-WAIT狀態,此時TCP處于半關閉狀態。客戶端收到服務器端確認后,進入FIN-WAIT-2狀態,等待服務器端發出的連接釋放syn包。

3) 第三次揮手,當服務器端數據傳送完畢后,服務器端發送連接釋放syn包(FIN=1,ACK=1,seq=w,ack=u+1),服務器端計入LAST-ACK狀態,等待客戶端最后確認。

4) 第四次揮手,當客戶端收到服務器端連接釋放syn包后,客戶端發出確認syn包(ACK=1,seq=u+1,ack=w+1),客戶端進入TIME-WAIT狀態。此時TCP未釋放,需要經過時間等待計時器設置的時間2MSL后,客戶端才進入CLOSED狀態。

5) 服務器端只要收到客戶端發出的確認,立即進入CLOSED狀態,由此完成四次揮手。

常見面試題

問題1:為什么"握手"是三次,"揮手"卻要四次?

TCP建立連接時之所以只需要"三次握手",是因為在第二次"握手"過程中,服務器端發送給客戶端的TCP報文是以SYN與ACK作為標志位的。SYN是請求連接標志,表示服務器端同意建立連接;ACK是確認報文,表示告訴客戶端,服務器端收到了它的請求報文。即SYN建立連接報文與ACK確認接收報文是在同一次"握手"當中傳輸的,所以"三次握手"不多也不少,正好讓雙方明確彼此信息互通。

TCP釋放連接時之所以需要"四次揮手",是因為FIN釋放連接報文與ACK確認接收報文是分別由第二次和第三次"握手"傳輸的。釋放連接時,被動方服務器,突然收到主動方客戶端釋放連接的請求時并不能立即釋放連接,因為還有必要的數據需要處理,所以服務器先返回ACK確認收到報文,經過CLOSE-WAIT階段準備好釋放連接之后,才能返回FIN釋放連接報文。

問題2:為什么客戶端在TIME-WAIT階段要等待2MSL?

客戶端發出最后的ACK確認報文時,并不能確定服務器端能夠收到該段報文。所以客戶端在發送完ACK確認報文之后,會設置一個時長為2MSL的計時器。MSL指的是Maximum Segment Lifetime:一段TCP報文在傳輸過程中的最大生命周期。2MSL即是服務器端發出為FIN報文和客戶端發出的ACK確認報文所能保持有效的最大時長。服務器端在1MSL內沒有收到客戶端發出的ACK確認報文,就會再次向客戶端發出FIN報文;如果客戶端在2MSL內,再次收到了來自服務器端的FIN報文,說明服務器端由于各種原因沒有接收到客戶端發出的ACK確認報文。客戶端再次向服務器端發出ACK確認報文,計時器重置,重新開始2MSL的計時;否則客戶端在2MSL內沒有再次收到來自服務器端的FIN報文,說明服務器端正常接收了ACK確認報文,客戶端可以進入CLOSED階段,完成"四次揮手"。

所以,客戶端要經歷時長為2SML的TIME-WAIT階段;這也是為什么客戶端比服務器端晚進入CLOSED階段的原因。

ok,以上就是TCP四次揮手工作原理及面試常見問題匯總,看完記得轉發、點贊和收藏。如果有錯誤,歡迎批評指正,感謝。

(云渺書齋)

總結

以上是生活随笔為你收集整理的tcp当主动发出syn_一文读懂TCP四次挥手工作原理及面试常见问题汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

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