TCP流控機(jī)制前言
TCP/IP協(xié)議是計(jì)算機(jī)通信網(wǎng)絡(luò)中目前使用最多的協(xié)議,同時(shí)也融入了生活的方方面面,不管是瀏覽網(wǎng)頁(yè)使用的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ù)的同時(shí),也提供了以下功能:
1、慢啟動(dòng):網(wǎng)絡(luò)環(huán)境擁塞檢測(cè);
2、重傳機(jī)制:保證數(shù)據(jù)的完整性,與連接可靠性;
3、滑動(dòng)窗口:流量控制,降低網(wǎng)絡(luò)環(huán)境壓力,避免數(shù)據(jù)丟包;
4、Keep-alive:網(wǎng)絡(luò)異常檢測(cè)。
正因?yàn)橐蕴W(wǎng)在我們生活中廣泛的引用,以及物聯(lián)網(wǎng)無(wú)線數(shù)傳終端設(shè)備的普及,而以太網(wǎng)設(shè)備的處理能力以及網(wǎng)絡(luò)接口的速度又可能差異巨大。比如目前主流的PC、交換機(jī)與路由器等網(wǎng)絡(luò)設(shè)備都支持1000Mbps的連接速度,而老的產(chǎn)品能支持到100Mbps,甚至某些低成本以太網(wǎng)模組產(chǎn)品只能支持到10Mbps,所有怎樣才能保證以太網(wǎng)設(shè)備在通訊的時(shí)候,接收數(shù)據(jù)的穩(wěn)定性,并且在接收方?jīng)]有能力接收數(shù)據(jù)的情況下“告訴”對(duì)方暫時(shí)不要發(fā)送數(shù)據(jù)呢?
本文將介紹TCP滑動(dòng)窗口,并且如何通過(guò)滑動(dòng)窗口實(shí)現(xiàn)流量控制機(jī)制。
TCP(Transmission Control Protocol,傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。TCP提供了一種全雙工的、面向連接的、可靠的字節(jié)流服務(wù),是TCP/IP協(xié)議簇中最重要也是最復(fù)雜的協(xié)議。
TCP協(xié)議的主要特點(diǎn)包括:
面向連接:通信前需要先三次握手建立連接,通信后四次揮手釋放連接。
可靠性:通過(guò)序號(hào)解決報(bào)文亂序/丟失、超時(shí)重傳、擁塞控制、滑動(dòng)窗口、檢驗(yàn)和等方式保證數(shù)據(jù)傳輸?shù)目煽啃浴?/span>
字節(jié)流:沒(méi)有固定的報(bào)文邊界,數(shù)據(jù)在TCP中以字節(jié)流的形式傳輸。
全雙工通信:通信兩端在任意時(shí)刻可以互相發(fā)送數(shù)據(jù),既可以是客戶端也可以是服務(wù)端。
TCP假設(shè)它可以從較低級(jí)別的協(xié)議獲得簡(jiǎn)單的、可能不可靠的數(shù)據(jù)報(bào)服務(wù),原則上TCP協(xié)議應(yīng)該能夠在從硬線連接到分組交換或電路交換網(wǎng)絡(luò)的各種通信系統(tǒng)之上操作。
上圖中是通過(guò)wireshark抓取的一段TCP連接報(bào)文,Win=64240表示客戶端(192.168.3.111:53065)的接收窗口為64240,WS=256代表窗口縮放256倍,即64240*256。Win=64240表示服務(wù)器(192.168.3.207:8000)的接收窗口為64240,WS=32代表窗口縮放32倍,即64240*32
從上圖中可以看出,當(dāng)發(fā)送方應(yīng)用層有大量數(shù)據(jù)發(fā)送的時(shí)候,發(fā)送方并不一定會(huì)等待接收方的ACK,并且接收方的接收窗口會(huì)有一個(gè)變小,再變大的過(guò)程。
上圖為客戶端(192.168.3.111)一直往服務(wù)器(192.168.3.207)發(fā)送數(shù)據(jù)且服務(wù)器不從協(xié)議棧讀出數(shù)據(jù)的一段報(bào)文,從上圖中可以看到,服務(wù)器的接收窗口一直處于下降狀態(tài)??蛻舳藬?shù)據(jù)正常在發(fā)送
當(dāng)發(fā)送方一直發(fā)送,直到接收方ACK Win=160的時(shí)候,發(fā)送方發(fā)送了最后160字節(jié)。后續(xù)發(fā)送方一直發(fā)送窗口檢測(cè)包,而非應(yīng)用層數(shù)據(jù)。(此時(shí)在一些操作系統(tǒng)下若發(fā)送方應(yīng)用層使用阻塞api,那么發(fā)送線程就會(huì)阻塞在發(fā)送函數(shù)中)無(wú)法繼續(xù)發(fā)送數(shù)據(jù)。
今天的分享就到這里啦,億佰特人每一天都致力于更好的助力物聯(lián)化、智能化、自動(dòng)化的物聯(lián)網(wǎng)應(yīng)用發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的官網(wǎng)進(jìn)行了解,還有客服在線答疑哦!
相關(guān)閱讀:
1、無(wú)線模塊通過(guò)TCP/IP協(xié)議向PC端數(shù)據(jù)傳輸解析
2、基礎(chǔ)通信協(xié)議棧:TCP協(xié)議、IP協(xié)議詳解
3、UDP協(xié)議與TCP協(xié)議區(qū)別對(duì)比及應(yīng)用場(chǎng)景方案
4、什么是TCP協(xié)議粘包以及如何解決TCP粘包問(wèn)題
5、物聯(lián)網(wǎng)應(yīng)用中常見(jiàn)通信協(xié)議匯總分享
7 X 24 銷(xiāo)售服務(wù)熱線
4000-330-990深圳辦事處柯經(jīng)理:18218726658 杭州辦事處戴經(jīng)理:17512568697
常州辦事處崔經(jīng)理:15906110783 南京辦事處葛經(jīng)理:17626012283
業(yè)務(wù)郵箱:support@cdebyte.com
全國(guó)銷(xiāo)售投訴電話:19934352316
地址:四川省成都市高新西區(qū)西區(qū)大道199號(hào)B5棟(前臺(tái)座機(jī):028-61543675)
?? 成都億佰特電子科技有限公司【版權(quán)所有】 蜀ICP備13019384號(hào)-3