成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

TCP 四次揮手,你熟了!那意外情況呢?惡意攻擊呢?單端跑路呢?

網絡 網絡管理
當我們聊到 TCP 協議的時候,聊的最多的就是三次握手與四次揮手,但是你有沒有想過,三次握手或者四次揮手時,如果發生異常了,是如何處理的?又是由誰處理的?

一、序

當我們聊到 TCP 協議的時候,聊的最多的就是三次握手與四次揮手,但是你有沒有想過,三次握手或者四次揮手時,如果發生異常了,是如何處理的?又是由誰處理的?

前兩天的文章聊到了 TCP 的三次握手的異常情況,今天繼續聊聊四次揮手。

TCP 作為一個靠譜的協議,在傳輸數據的前后,需要在雙端之間建立連接,并在雙端各自維護連接的狀態。TCP 并沒有多么神奇,在面對著多變的網絡情況,也只能通過不斷的重傳和各種算法來保證可靠性。

當數據傳輸完成,需要斷開連接的時候,TCP 會通過四次握手來完成雙端的斷連,并回收各自的資源。那么今天就來繼續聊聊,TCP 四次揮手過程中,如果出現異常,單端跑路等問題,是如何處理的。

[[312418]]

二、TCP 四次揮手

1. 簡單理解四次揮手

雖然是在說四次揮手的異常情況,在此之前,我們還是先來簡單了解一下 TCP 的四次揮手。

當數據傳輸完成,需要斷開連接的時候,TCP 會采取四次揮手的方式,來安全的斷開連接。

為什么握手需要三次,而揮手需要四次呢?

本質上來說,雙端都需要經過一次「分手」的過程,來保證自己和對端的狀態正確。本著友好協商的態度,你先提出的分手,也要把最大的善意給對方,不能打了對方一個措手不及。你說不玩了就不玩了,那以后誰還敢和你玩。

下面這張圖,是比較經典的 TCP 四次揮手的消息和雙端狀態的變化。

我們解釋一下這張圖:

  • 初始時雙端還都處于 ESTABLISHED 狀態并傳輸數據,某端可以主動發起「FIN」包準備斷開連接,在這里的場景下,是客戶端發起「FIN」請求。在發出「FIN」后,客戶端進入 FIN-WAIT-1 狀態。
  • 服務端收到「FIN」消息后,回復「ACK」表示知道了,并從 ESTABLISHED 狀態進入 CLOSED-WAIT 狀態,開始做一些斷開連接前的準備工作。
  • 客戶端收到之前「FIN」的回復「ACK」消息后,進入 FIN-WAIT-2 狀態。而當服務端做好斷開前的準備工作后,也會發送一個「FIN,ACK」的消息給客戶端,表示我也好了,請求斷開連接,并在發送消息后,服務端進入 LAST-ACK 狀態。
  • 客戶端在收到「FIN,ACK」消息后,會立即回復「ACK」表示知道了,并進入 TIME_WAIT 狀態,為了穩定和安全考慮,客戶端會在 TIME-WAIT 狀態等待 2MSL 的時長,最終進入 CLOSED 狀態。
  • 服務端收到客戶端回復的「ACK」消息后,直接從 LAST-ACK 狀態進入 CLOSED 狀態。

正常的經過四次揮手之后,雙端都進入 CLOSED 狀態,在此之后,雙端正式斷開了連接。

2. TCP 揮手的異常情況

四次揮手的正常發包和應答過程,我們已經簡單了解了,接下來就繼續看看,四次揮手過程中,出現的異常情況。

三次握手的正常發包和應答,以及雙端的狀態扭轉我們已經講了,接下來就來看看在這三次握手的過程中,出現的異常情況。

(1) 斷開連接的 FIN 包丟了。

我們前面一直強調過,如果一個包發出去,在一定時間內,只要沒有收到對端的「ACK」回復,均認為這個包丟了,會觸發超時重傳機制。而不會關心到底是自己發的包丟了,還是對方的「ACK」丟了。

所以在這里,如果客戶端率先發的「FIN」包丟了,或者沒有收到對端的「ACK」回復,則會觸發超時重傳,直到觸發重傳的次數,直接關閉連接。

對于服務端而言,如果客戶端發來的「FIN」沒有收到,就沒有任何感知。會在一段時間后,也關閉連接。

(2) 服務端第一次回復的 ACK 丟了。

此時因為客戶端沒有收到「ACK」應答,會嘗試重傳之前的「FIN」請求,服務端收到后,又會再重傳「ACK」。

而此時服務端已經進入 CLOSED-WAIT 狀態,開始做斷開連接前的準備工作。當準備好之后,會回復「FIN,ACK」,注意這個消息是攜帶了之前「ACK」的響應序號的。

只要這個消息沒丟,客戶端可以憑借「FIN,ACK」包中的響應序號,直接從 FIN-WAIT-1 狀態,進入 TIME-WAIT 狀態,開始長達 2MSL 的等待。

(3) 服務端發送的 FIN,ACK 丟了。

服務端在超時后會重傳,此時客戶端有兩種情況,要么處于 FIN-WAIT-2 狀態(之前的 ACK 也丟了),會一直等待;要么處于 TIME-WAIT 狀態,會等待 2MSL 時間。

也就是說,在之后的一小段時間內客戶端還在,客戶端在收到服務端發來的「FIN,ACK」包后,也會回復一個「ACK」應答,并做自己的狀態切換。

(4) 客戶端最后回復的 ACK 丟了。

客戶端在回復「ACK」后,會進入 TIME-WAIT 狀態,并開始長達 2MSL 的等待,服務端因為沒有收到「ACK」的回復,會重試一段時間,直到服務端重試超時后主動斷開。

或者等待新的客戶端接入后,收到服務端重試的「FIN」消息后,回復「RST」消息,在收到「RST」消息后,復位服務端的狀態。

(5) 客戶端收到 ACK 后,服務端跑路了。

客戶端在收到「ACK」后,進入了 FIN-WAIT-2 狀態,等待服務端發來的「FIN」包,而如果服務端跑路了,這個包永遠都等不到。

在 TCP 協議中,是沒有對這個狀態的處理機制的。但是協議不管,系統來湊,操作系統會接管這個狀態,例如在 Linux 下,就可以通過 tcp_fin_timeout 參數,來對這個狀態設定一個超時時間。

需要注意的是,當超過 tcp_fin_timeout 的限制后,狀態并不是切換到 TIME_WAIT,而是直接進入 CLOSED 狀態。

參考:https://blog.huoding.com/2016/09/05/542

(6) 客戶端收到 ACK 后,客戶端自己跑路了。

客戶端收到「ACK」后直接跑路,服務端后續在發送的「FIN,ACK」就沒有接收端,也就不會得到回復,會不斷的走 TCP 的超時重試的機制,此時服務端處于 LAST-ACK 狀態。

那就要分 2 種情況分析:

在超過一定時間后,服務端主動斷開。

收到「RST」后,主動斷開連接。

「RST」消息是一種重置消息,表示當前錯誤了,應該回到初始的狀態。如果客戶端跑路后有新的客戶端接入,會在此發送「SYN」以期望建立連接,此時這個「SYN」將被忽略,并直接回復「FIN,ACK」消息,新客戶端在收到「FIN」消息后是不會認的,并且會回復一個「RST」消息。

三、小結時刻

今天我們聊了 TCP 在四次揮手階段出現錯誤時的一些處理策略。

大多數情況下,TCP 協議本身已經保證了可靠性,例如超時重傳,而有些時候,又需要操作系統來接管一些狀態,例如 tcp_fin_timeout 等。

 

責任編輯:趙寧寧 來源: 承香墨影
相關推薦

2020-01-10 09:51:23

TCP惡意攻擊

2020-01-08 11:24:01

TCP三次握手協議

2020-01-07 22:15:43

TCP三次握手丟包

2022-08-05 11:03:59

TCP 四次揮手三次握手

2020-02-13 21:30:23

TCP三次握手四次揮手

2019-02-01 09:38:16

2024-07-11 10:55:27

2021-10-14 20:33:16

TCP連接關閉

2023-10-24 15:22:09

TCPUDP

2019-07-16 11:06:09

TCP四次揮手半關閉

2024-01-12 08:23:11

TCPACK服務器

2015-10-13 09:42:52

TCP網絡協議

2019-06-12 11:26:37

TCP三次握手四次揮手

2023-09-02 22:02:58

TCP協議四次揮手

2020-08-27 07:41:28

TCP協議數據

2023-10-17 15:44:19

TCP四次揮手

2020-09-09 16:12:02

網絡技術遠程辦公網絡基礎設施

2021-01-29 06:11:08

TCP通信三次握手

2021-05-18 12:27:40

TCP控制協議

2021-03-01 11:55:36

硬盤SSDHHD
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.久久| 国产精品入口 | 亚洲精品二区 | 在线亚洲精品 | 在线亚州 | 国产成人免费视频网站视频社区 | 亚洲视频免费在线看 | 国产精品高潮呻吟久久av黑人 | 99精品视频免费在线观看 | 久久里面有精品 | 色综合久久天天综合网 | 激情福利视频 | 天堂一区二区三区四区 | 九九久久在线看 | 国产一区二区在线免费观看 | 日本在线一区二区 | 日韩免费视频一区二区 | 国产精品精品3d动漫 | 成人做爰999 | 国产精品久久久久久妇女6080 | 欧美精品一区二区三区四区 | 国产精品久久福利 | www.久久久久久久久久久久 | 天堂一区二区三区四区 | 国产免费视频 | 夜夜爽99久久国产综合精品女不卡 | 亚洲精品久久久 | 亚洲大片在线观看 | 精品亚洲一区二区三区 | 亚洲欧洲精品成人久久奇米网 | 国产精品久久国产精品99 gif | 欧美性video 精品亚洲一区二区 | 欧美二区三区 | 国产亚洲精品精品国产亚洲综合 | 天天拍天天色 | 免费99精品国产自在在线 | 久久99精品久久久久子伦 | 亚洲自拍偷拍免费视频 | 亚洲欧美激情国产综合久久久 | 91视频网址 | 美女天堂 |