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