說一下什么是tcp的2MSL,為什么客戶端在 TIME-WAIT 狀態必須等待 2MSL 的時間?

1.TCP之2MSL

1.1 MSL

MSL:Maximum Segment Lifetime報文段最大生存時間,它是任何報文段被丟棄前在網絡內的最長時間

1.2為什么存在MSL

TCP報文段以IP數據報在網絡內傳輸,而IP數據報則有限制其生存時間的TTL字段,并且TTL的限制是基于跳數

1.3MSL大小定義

RFC文檔中規定為2分鐘,但是實際實現過程中,MSL一般為:30秒、1分鐘、2分鐘

2.1 何為2MSL狀態

在TCP調用connect建立socket的連接后,主動關閉socket連接的過程中有一個狀態為Time_Wait(也就是2MSL等待機制,需要停留2MSL的時間),具體見下面的圖:

在這里插入圖片描述

2.2什么時候有2MSL狀態

只有主動關閉socket連接的時候才有此狀態,并且在2MSL等待期間,定義這個連接的Socket
Pair(客戶的IP地址和端口號,服務器的IP地址和端口號)不能再被使用

3.1 2MSL機制作用

保證了最后一個ACK發送給被動關閉端,確保連接雙方關閉完成,如果沒有該機制,最后一個ACK丟失后會出現半連接的狀態

3.2 為什么客戶端在 TIME-WAIT 狀態必須等待 2MSL 的時間?

就好像分手一樣,客戶端主動關閉的,你得為這件事負責吧?客戶端為了確保服務器收到最后一次揮手的報文。如果最后一次丟包了,服務器沒有收到第四次揮手的報文,還以為客戶端不想分手,就會再重發一次第三次揮手的報文,看看客戶端是不是后悔了,不想分手了。這個等待時間就是為了接收超時重傳的報文。

假如客戶端發完就斷開了鏈接,然后服務器一直等不到回應,重傳了報文還是沒有得到回應,服務器不死心啊,服務器就關閉不了鏈接。客戶端這時就是典型的渣男角色,分手你別讓別人還抱有幻想是不是?

說多了,回歸正題, tcp最大的特點就是數據不會丟失啊,客戶端渣渣的建立了新連接,然后發現有一個舊的數據包,然后讓客戶端的新連接也不好了,這就叫自食其果。所以有了這個等待時間,既保證了雙方都正常關閉,又保證了所有報文段消失,不會在新連接中出現舊的請求報文段。

總結

主動發送 fin 關閉的一方,在 4 次揮手最后一次要等待一段時間我們稱這段時間為 ??2MSL??。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41573.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41573.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41573.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[高光譜]PyTorch使用CNN對高光譜圖像進行分類

項目原地址: Hyperspectral-Classificationhttps://github.com/eecn/Hyperspectral-ClassificationDataLoader講解: [高光譜]使用PyTorch的dataloader加載高光譜數據https://blog.csdn.net/weixin_37878740/article/details/130929358 一、模型加載 在…

使用JMeter創建數據庫測試

好吧!我一直覺得我不聰明,所以,我用最詳細,最明了的方式來書寫這個文章。我相信,我能明白的,你們一定能明白。 我的環境:MySQL:mysql-essential-5.1.51-win32 jdbc驅動:…

mysql 03.查詢(重點)

先準備測試數據,代碼如下: -- 創建數據庫 DROP DATABASE IF EXISTS mydb; CREATE DATABASE mydb; USE mydb;-- 創建student表 CREATE TABLE student (sid CHAR(6),sname VARCHAR(50),age INT,gender VARCHAR(50) DEFAULT male );-- 向student表插入數據…

PHP 公交公司充電樁管理系統mysql數據庫web結構apache計算機軟件工程網頁wamp

一、源碼特點 PHP 公交公司充電樁管理系統是一套完善的web設計系統,對理解php編程開發語言有幫助,系統具有完整的源代碼和數據庫,系統主要采用B/S模式開發。 源碼下載 https://download.csdn.net/download/qq_41221322/88220946 論文下…

【面試問題】當前系統查詢接口需要去另外2個系統庫中實時查詢返回結果拼接優化思路

文章目錄 場景描述優化思路分享資源 場景描述 接口需要從系統1查詢數據,查出的每條數據需要從另一個系統2中再去查詢某些字段, 比如:從系統1中查出100條數據,每條數據需要去系統2中再去查詢出行數據,可能系統1一條數…

socks5 保障網絡安全與爬蟲需求的完美融合

Socks5代理:跨足網絡安全和爬蟲領域的全能選手 Socks5代理作為一種通用的網絡協議,為多種應用場景提供了強大的代理能力。它不僅支持TCP和UDP的數據傳輸,還具備更高級的安全特性,如用戶身份驗證和加密通信。在網絡安全中&#xf…

蘋果手機批量刪除聯系人的2個方法,請查收!

【想要清理通訊錄里的“僵尸號”,但是突然發現手機不能批量刪除。一個一個刪除太麻煩了,有什么辦法可以一次性多刪幾個人嗎?】 小編想問問果粉們平時都是怎么刪除聯系人的?特別是要刪除多個聯系人的時候,大家還是選擇…

matlab保存圖片

僅作為記錄,大佬請跳過。 文章目錄 用界面中的“另存為”用saveas 用界面中的“另存為” 即可。 參考 感謝大佬博主文章:傳送門 用saveas 必須在編輯器中的plot之后用saveas(也就是不能在命令行中單獨使用——比如在編輯器中plot&#xf…

神經網絡基礎-神經網絡補充概念-46-指數加權平均的偏差修正

由來 指數加權平均(Exponential Moving Average,EMA)在初始時可能會受到偏差的影響,特別是在數據量較小時,EMA的值可能會與實際數據有較大的偏差。為了修正這種偏差,可以使用偏差修正方法,通常…

基于平臺的城市排水泵站管理系統設計

安科瑞 耿敏花 近年來我國城市內澇災害頻發,造成人員傷亡以及經濟損失嚴重,嚴重威脅著城市的安全。數據顯示,2015-2018年我國平均每年受淹或發生內澇城市的數量約占我國城市數量的1/5;人民生命財產也損失嚴重,據統計&a…

基于YOLOv5n/s/m不同參數量級模型開發構建茶葉嫩芽檢測識別模型,使用pruning剪枝技術來對模型進行輕量化處理,探索不同剪枝水平下模型性能影響【續】

這里主要是前一篇博文的后續內容,簡單回顧一下:本文選取了n/s/m三款不同量級的模型來依次構建訓練模型,所有的參數保持同樣的設置,之后探索在不同剪枝處理操作下的性能影響。 在上一篇博文中保持30的剪枝程度得到的效果還是比較理…

C++ 學習系列3 -- 函數壓棧與出棧

在C中,函數壓棧(函數調用)和出棧(函數返回)是函數調用過程中的兩個關鍵步驟。下面將逐步解釋這兩個過程: 一 函數壓棧與出棧過程簡介 函數壓棧(函數調用)的過程如下: …

2020年3月全國計算機等級考試真題(C語言二級)

2020年3月全國計算機等級考試真題(C語言二級) 第1題 有以下程序 void fun1 (char*p) { char*q; qp; while(*q!\0) { (*Q); q; } } main() { char a[]{"Program"},*p; p&a[3]; fun1(p); print…

【C語言學習】本地變量

本地變量 1.函數每次運行,就會產生一個獨立的變量空間,在這個空間中的變量,是函數的這次運行所獨有的,稱之為本地變量。 2.定義在函數內部的變量就是本地變量。 3.參數也是本地變量 變量的生存期和作用域 1.生存期:變量…

新能源電動車充電樁控制主板安全特點

新能源電動車充電樁控制主板安全特點 你是否曾經擔心過充電樁的安全問題?充電樁主板又是什么樣的呢?今天我們就來聊聊這個話題。 充電樁主板采用雙重安全防護系統,包括防水、防護、防塵等,確保充電樁安全、可靠。不僅如此,充電樁主板采用先…

簡單的洗牌算法

目錄 前言 問題 代碼展現及分析 poker類 game類 Text類 前言 洗牌算法為ArrayList具體使用的典例,可以很好的讓我們快速熟系ArrayList的用法。如果你對ArrayList還不太了解除,推薦先看本博主的ArrayList的詳解。 ArrayList的詳解_WHabcwu的博客-CSD…

mysql mysql 容器 忽略大小寫配置

首先能夠連接上mysql,然后輸入下面這個命令查看mysql是否忽略大小寫 show global variables like %lower_case%; lower_case_table_names 0:不忽略大小寫 lower_case_table_names 1:忽略大小寫 mysql安裝分為兩種(根據自己的my…

sql server Varchar轉換為Datetime

將Varchar轉換為Datetime是一個常見的需求,在處理日期和時間數據時特別有用。在SQL Server中,可以使用CONVERT函數或CAST函數將Varchar轉換為Datetime。 使用CONVERT函數 CONVERT函數可以將一個值從一個類型轉換為另一個類型。以下是使用CONVERT函數將…

FPGA芯片IO口上下拉電阻的使用

FPGA芯片IO口上下拉電阻的使用 為什么要設置上下拉電阻一、如何設置下拉電阻二、如何設置上拉電阻為什么要設置上下拉電阻 這里以高云FPGA的GW1N-UV2QN48C6/I5來舉例,這個芯片的上電默認初始化階段,引腳是弱上來模式,且模式固定不能通過軟件的配置來改變。如下圖所示: 上…

centos 7.x 單用戶模式

最近碰到 centos 7.9 一些參數設置錯誤無法啟動系統的情況,研究后可以使用單用戶模式進入系統進行恢復操作。 進入啟動界面,按 e ro 替換為 rw init/sysroot/bin/sh 替換前 替換后 Ctrl-x 進行重啟進入單用戶模式 執行 chroot /sysroot 可以查看日…