色猫咪av在线网址_91精品国产福利在线观看雪梨还会玩转热点_丁香花的视频免费观看_国产手机在线A∨免费视频_十八禁av无码免费网站APP_综合色一区二区亚洲_日韩精品小电影_漂亮人妻熟睡中被公侵犯_全新成人高清无码片_高级厕所偷窥白领美女嘘嘘

當(dāng)前位置: 首頁 >應(yīng)用方案 >技術(shù)應(yīng)用 >

TCP協(xié)議重傳機(jī)制詳解

TCP/IP協(xié)議是計算機(jī)通信網(wǎng)絡(luò)中目前使用最多的網(wǎng)絡(luò)通信協(xié)議,同時也融入了生活的方方面面,不管是瀏覽網(wǎng)頁使用的http/https協(xié)議、物聯(lián)網(wǎng)設(shè)備使用的MQTT/MQTTS協(xié)議與下載文件使用的ftp協(xié)議、工業(yè)以太網(wǎng)中使用的Modbus TCP協(xié)議等很多應(yīng)用層協(xié)議,都是基于TCP/IP協(xié)議。TCP/IP協(xié)議在傳輸數(shù)據(jù)的同時,也提供了以下功能:

1、慢啟動:網(wǎng)絡(luò)環(huán)境擁塞檢測;

2、重傳機(jī)制:保證數(shù)據(jù)的完整性,與連接可靠性;

3、滑動窗口:流量控制,降低網(wǎng)絡(luò)環(huán)境壓力,避免數(shù)據(jù)丟包;

4、Keep-alive:網(wǎng)絡(luò)異常檢測;

本文將介紹TCP協(xié)議的重傳機(jī)制與如何通調(diào)整重傳機(jī)制,提高特定情況下的TCP連接穩(wěn)定性。

一、TCP協(xié)議簡介

TCPTransmission Control Protocol,傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。TCP協(xié)議提供了一種全雙工的、面向連接的、可靠的字節(jié)流服務(wù),是TCP/IP協(xié)議簇中最重要也是最復(fù)雜的協(xié)議。為了保證數(shù)據(jù)的可靠傳輸,TCP協(xié)議采用了重傳機(jī)制。

TCP協(xié)議的主要特點包括:

面向連接:通信前需要先三次握手建立連接,通信后四次揮手釋放連接。

可靠性:通過序號解決報文亂序/丟失、超時重傳、擁塞控制、滑動窗口、檢驗和等方式保證數(shù)據(jù)傳輸?shù)目煽啃浴?/span>

字節(jié)流:沒有固定的報文邊界,數(shù)據(jù)在TCP中以字節(jié)流的形式傳輸。

全雙工:通信兩端在任意時刻可以互相發(fā)送數(shù)據(jù),既可以是客戶端也可以是服務(wù)端。

TCP假設(shè)它可以從較低級別的協(xié)議獲得簡單的、可能不可靠的數(shù)據(jù)報服務(wù),原則上TCP應(yīng)該能夠在從硬線連接到分組交換或電路交換網(wǎng)絡(luò)的各種通信系統(tǒng)之上操作。

二、重傳機(jī)制詳解

TCP重傳機(jī)制的基本工作原理是,在數(shù)據(jù)傳輸過程中,當(dāng)發(fā)送方?jīng)]有接收到確認(rèn)信息(ACK)時,會重傳之前的數(shù)據(jù)。這種重傳機(jī)制確保了數(shù)據(jù)的完整性和正確性。

重傳機(jī)制的實現(xiàn)方式主要有兩種:超時重傳和快速重傳。

1、超時重傳

超時重傳是TCP協(xié)議在發(fā)送數(shù)據(jù)時,設(shè)定一個定時器。當(dāng)超過指定的時間(即RTO,Retransmission Timeout超時重傳時間)后,如果沒有收到對方的ACK確認(rèn)應(yīng)答報文,就會重發(fā)該數(shù)據(jù)。每次當(dāng)遇到一次超時重傳時,都會將下一次超時時間間隔設(shè)為先前值的兩倍。這是TCP在應(yīng)對網(wǎng)絡(luò)環(huán)境差、不宜頻繁反復(fù)發(fā)送的情況時采取的策略。

1 TCP協(xié)議重傳機(jī)制

上圖中是通過wireshark抓取的一段TCP通訊中出現(xiàn)超時重傳且自動恢復(fù)的報文截圖,IP地址為192.168.3.111的是客戶端,192.168.3.108的是服務(wù)器,客戶端一直在向服務(wù)器發(fā)送數(shù)據(jù)。

1.1、如何判斷有沒有出現(xiàn)重傳

2 TCP協(xié)議重傳機(jī)制

正常情況下,服務(wù)器應(yīng)該Ack 客戶端的seq(序號2031+len(數(shù)據(jù)長度20)即上圖中第二條報文的ACK=2051

3 TCP協(xié)議重傳機(jī)制

在上圖中我們可以看到,重傳的報文seq一直為2051,并且數(shù)據(jù)seq=2051的報文傳輸了四次,都沒有服務(wù)器的ACK。所以判斷TCP有沒有發(fā)生重傳最直觀的方法就是看有沒有重復(fù)的seq,還有一種是看seq有沒有突然下降,如下所示:

1.2 linuxwindows下默認(rèn)超時重傳的間隔與次數(shù)

4 TCP協(xié)議重傳機(jī)制

Linux下的重傳間隔與次數(shù)

5 TCP協(xié)議重傳機(jī)制

Windows的重傳間隔與次數(shù)

TCP協(xié)議中,若在重傳次數(shù)內(nèi)沒有收到對方的ACK,那么協(xié)議棧會主動RST這條鏈路。應(yīng)用層會表現(xiàn)為連接斷開,由于應(yīng)用層并不能知道連接斷開原因,所以某些時候會錯誤的認(rèn)為是被對方主動斷開連接,如果不通過抓包,就很難找到斷開連接的原因。

1.3 如何合理設(shè)置重傳次數(shù)以保證來保證連接的可靠性

在一般的計算機(jī)網(wǎng)絡(luò)中,TCP通訊雙方的協(xié)議棧機(jī)制完整,系統(tǒng)資源充足,應(yīng)用層處理速度快,所以一般的情況下,系統(tǒng)默認(rèn)的重傳參數(shù)就能滿足幾乎大部分由于網(wǎng)絡(luò)環(huán)境異常導(dǎo)致的丟包。但很多低成本嵌入式以太網(wǎng)方案因為成本與資源的原因,設(shè)備處理速度慢、內(nèi)存資源等限制,在某些情況下無法接收過多的數(shù)據(jù),導(dǎo)致數(shù)據(jù)丟包,無法ACK發(fā)送方的數(shù)據(jù)。導(dǎo)致連接異常斷開。但這種情況完全可以通過降低發(fā)送頻率或者增加重傳次數(shù)的方法來避免。

2、快速重傳

快速重傳是一種不以時間為驅(qū)動,而是以數(shù)據(jù)驅(qū)動的重傳機(jī)制??焖僦貍魍ㄟ^收到同一丟失數(shù)據(jù)包的多個重復(fù)確認(rèn)(ACK)來觸發(fā)。特定的觸發(fā)條件通常被稱為“三重重復(fù)ACK”。如果接收方檢測到同一丟失數(shù)據(jù)包在重復(fù)ACK中連續(xù)三次被確認(rèn),則認(rèn)為這是丟失數(shù)據(jù)包已丟失且后續(xù)數(shù)據(jù)包正在到達(dá)接收方的強(qiáng)烈指示。發(fā)送方在收到這樣的信號后,會假設(shè)丟包的可能性很高,并立即發(fā)起快速重傳,從而更快地從數(shù)據(jù)包丟失中恢復(fù)并保持更順暢的數(shù)據(jù)流。這兩種重傳機(jī)制共同確保了TCP協(xié)議在數(shù)據(jù)傳輸過程中的可靠性和穩(wěn)定性。

今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動化的發(fā)展,提升資源利用率,更多產(chǎn)品及相關(guān)資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)進(jìn)行了解,也可以直接撥打400電話咨詢技術(shù)專員!


4000-330-990

https://www.wjx.cn/jq/84863372.aspx