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