91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

TCP協(xié)議擁塞控制的滑動窗口協(xié)議解析

西西 ? 來源: Chinaunix ? 作者:windhawkgyang ? 2020-10-08 17:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

TCP協(xié)議作為一個(gè)可靠的面向流的傳輸協(xié)議,其可靠性和流量控制由滑動窗口協(xié)議保證,而擁塞控制則由控制窗口結(jié)合一系列的控制算法實(shí)現(xiàn)。

一、滑動窗口協(xié)議

關(guān)于這部分自己不曉得怎么敘述才好,因?yàn)槔斫獾牟糠指?,下面就用自己的理解來介紹下TCP的精髓:滑動窗口協(xié)議。

所謂滑動窗口協(xié)議,自己理解有兩點(diǎn):1. “窗口”對應(yīng)的是一段可以被發(fā)送者發(fā)送的字節(jié)序列,其連續(xù)的范圍稱之為“窗口”;2. “滑動”則是指這段“允許發(fā)送的范圍”是可以隨著發(fā)送的過程而變化的,方式就是按順序“滑動”。在引入一個(gè)例子來說這個(gè)協(xié)議之前,我覺得很有必要先了解以下前提:

-1. TCP協(xié)議的兩端分別為發(fā)送者A和接收者B,由于是全雙工協(xié)議,因此A和B應(yīng)該分別維護(hù)著一個(gè)獨(dú)立的發(fā)送緩沖區(qū)和接收緩沖區(qū),由于對等性(A發(fā)B收和B發(fā)A收),我們以A發(fā)送B接收的情況作為例子;

-2. 發(fā)送窗口是發(fā)送緩存中的一部分,是可以被TCP協(xié)議發(fā)送的那部分,其實(shí)應(yīng)用層需要發(fā)送的所有數(shù)據(jù)都被放進(jìn)了發(fā)送者的發(fā)送緩沖區(qū);

-3. 發(fā)送窗口中相關(guān)的有四個(gè)概念:已發(fā)送并收到確認(rèn)的數(shù)據(jù)(不再發(fā)送窗口和發(fā)送緩沖區(qū)之內(nèi))、已發(fā)送但未收到確認(rèn)的數(shù)據(jù)(位于發(fā)送窗口之中)、允許發(fā)送但尚未發(fā)送的數(shù)據(jù)以及發(fā)送窗口外發(fā)送緩沖區(qū)內(nèi)暫時(shí)不允許發(fā)送的數(shù)據(jù);

-4. 每次成功發(fā)送數(shù)據(jù)之后,發(fā)送窗口就會在發(fā)送緩沖區(qū)中按順序移動,將新的數(shù)據(jù)包含到窗口中準(zhǔn)備發(fā)送;

TCP建立連接的初始,B會告訴A自己的接收窗口大小,比如為‘20’:

字節(jié)31-50為發(fā)送窗口

A發(fā)送11個(gè)字節(jié)后,發(fā)送窗口位置不變,B接收到了亂序的數(shù)據(jù)分組:

只有當(dāng)A成功發(fā)送了數(shù)據(jù),即發(fā)送的數(shù)據(jù)得到了B的確認(rèn)之后,才會移動滑動窗口離開已發(fā)送的數(shù)據(jù);同時(shí)B則確認(rèn)連續(xù)的數(shù)據(jù)分組,對于亂序的分組則先接收下來,避免網(wǎng)絡(luò)重復(fù)傳遞:

二、流量控制

流量控制方面主要有兩個(gè)要點(diǎn)需要掌握。一是TCP利用滑動窗口實(shí)現(xiàn)流量控制的機(jī)制;二是如何考慮流量控制中的傳輸效率。

1. 流量控制

所謂流量控制,主要是接收方傳遞信息給發(fā)送方,使其不要發(fā)送數(shù)據(jù)太快,是一種端到端的控制。主要的方式就是返回的ACK中會包含自己的接收窗口的大小,并且利用大小來控制發(fā)送方的數(shù)據(jù)發(fā)送:

這里面涉及到一種情況,如果B已經(jīng)告訴A自己的緩沖區(qū)已滿,于是A停止發(fā)送數(shù)據(jù);等待一段時(shí)間后,B的緩沖區(qū)出現(xiàn)了富余,于是給A發(fā)送報(bào)文告訴A我的rwnd大小為400,但是這個(gè)報(bào)文不幸丟失了,于是就出現(xiàn)A等待B的通知||B等待A發(fā)送數(shù)據(jù)的死鎖狀態(tài)。為了處理這種問題,TCP引入了持續(xù)計(jì)時(shí)器(Persistence timer),當(dāng)A收到對方的零窗口通知時(shí),就啟用該計(jì)時(shí)器,時(shí)間到則發(fā)送一個(gè)1字節(jié)的探測報(bào)文,對方會在此時(shí)回應(yīng)自身的接收窗口大小,如果結(jié)果仍未0,則重設(shè)持續(xù)計(jì)時(shí)器,繼續(xù)等待。

2. 傳遞效率

一個(gè)顯而易見的問題是:單個(gè)發(fā)送字節(jié)單個(gè)確認(rèn),和窗口有一個(gè)空余即通知發(fā)送方發(fā)送一個(gè)字節(jié),無疑增加了網(wǎng)絡(luò)中的許多不必要的報(bào)文(請想想為了一個(gè)字節(jié)數(shù)據(jù)而添加的40字節(jié)頭部吧?。晕覀兊脑瓌t是盡可能一次多發(fā)送幾個(gè)字節(jié),或者窗口空余較多的時(shí)候通知發(fā)送方一次發(fā)送多個(gè)字節(jié)。對于前者我們廣泛使用Nagle算法,即:

*1. 若發(fā)送應(yīng)用進(jìn)程要把發(fā)送的數(shù)據(jù)逐個(gè)字節(jié)地送到TCP的發(fā)送緩存,則發(fā)送方就把第一個(gè)數(shù)據(jù)字節(jié)先發(fā)送出去,把后面的字節(jié)先緩存起來;

*2. 當(dāng)發(fā)送方收到第一個(gè)字節(jié)的確認(rèn)后(也得到了網(wǎng)絡(luò)情況和對方的接收窗口大小),再把緩沖區(qū)的剩余字節(jié)組成合適大小的報(bào)文發(fā)送出去;

*3. 當(dāng)?shù)竭_(dá)的數(shù)據(jù)已達(dá)到發(fā)送窗口大小的一半或以達(dá)到報(bào)文段的最大長度時(shí),就立即發(fā)送一個(gè)報(bào)文段;

對于后者我們往往的做法是讓接收方等待一段時(shí)間,或者接收方獲得足夠的空間容納一個(gè)報(bào)文段或者等到接受緩存有一半空閑的時(shí)候,再通知發(fā)送方發(fā)送數(shù)據(jù)。

三、擁塞控制

網(wǎng)絡(luò)中的鏈路容量和交換結(jié)點(diǎn)中的緩存和處理機(jī)都有著工作的極限,當(dāng)網(wǎng)絡(luò)的需求超過它們的工作極限時(shí),就出現(xiàn)了擁塞。擁塞控制就是防止過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中,這樣可以使網(wǎng)絡(luò)中的路由器或鏈路不致過載。常用的方法就是:

1. 慢開始、擁塞控制

2. 快重傳、快恢復(fù)

一切的基礎(chǔ)還是慢開始,這種方法的思路是這樣的:

-1. 發(fā)送方維持一個(gè)叫做“擁塞窗口”的變量,該變量和接收端口共同決定了發(fā)送者的發(fā)送窗口;

-2. 當(dāng)主機(jī)開始發(fā)送數(shù)據(jù)時(shí),避免一下子將大量字節(jié)注入到網(wǎng)絡(luò),造成或者增加擁塞,選擇發(fā)送一個(gè)1字節(jié)的試探報(bào)文;

-3. 當(dāng)收到第一個(gè)字節(jié)的數(shù)據(jù)的確認(rèn)后,就發(fā)送2個(gè)字節(jié)的報(bào)文;

-4. 若再次收到2個(gè)字節(jié)的確認(rèn),則發(fā)送4個(gè)字節(jié),依次遞增2的指數(shù)級;

-5. 最后會達(dá)到一個(gè)提前預(yù)設(shè)的“慢開始門限”,比如24,即一次發(fā)送了24個(gè)分組,此時(shí)遵循下面的條件判定:

*1. cwnd 《 ssthresh, 繼續(xù)使用慢開始算法;

*2. cwnd 》 ssthresh,停止使用慢開始算法,改用擁塞避免算法;

*3. cwnd = ssthresh,既可以使用慢開始算法,也可以使用擁塞避免算法;

-6. 所謂擁塞避免算法就是:每經(jīng)過一個(gè)往返時(shí)間RTT就把發(fā)送方的擁塞窗口+1,即讓擁塞窗口緩慢地增大,按照線性規(guī)律增長;

-7. 當(dāng)出現(xiàn)網(wǎng)絡(luò)擁塞,比如丟包時(shí),將慢開始門限設(shè)為原先的一半,然后將cwnd設(shè)為1,執(zhí)行慢開始算法(較低的起點(diǎn),指數(shù)級增長);

上述方法的目的是在擁塞發(fā)生時(shí)循序減少主機(jī)發(fā)送到網(wǎng)絡(luò)中的分組數(shù),使得發(fā)生擁塞的路由器有足夠的時(shí)間把隊(duì)列中積壓的分組處理完畢。慢開始和擁塞控制算法常常作為一個(gè)整體使用,而快重傳和快恢復(fù)則是為了減少因?yàn)閾砣麑?dǎo)致的數(shù)據(jù)包丟失帶來的重傳時(shí)間,從而避免傳遞無用的數(shù)據(jù)到網(wǎng)絡(luò)??熘貍鞯臋C(jī)制是:

-1. 接收方建立這樣的機(jī)制,如果一個(gè)包丟失,則對后續(xù)的包繼續(xù)發(fā)送針對該包的重傳請求;

-2. 一旦發(fā)送方接收到三個(gè)一樣的確認(rèn),就知道該包之后出現(xiàn)了錯誤,立刻重傳該包;

-3. 此時(shí)發(fā)送方開始執(zhí)行“快恢復(fù)”算法:

*1. 慢開始門限減半;

*2. cwnd設(shè)為慢開始門限減半后的數(shù)值;

*3. 執(zhí)行擁塞避免算法(高起點(diǎn),線性增長);

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1424

    瀏覽量

    83496
  • TCP協(xié)議
    +關(guān)注

    關(guān)注

    1

    文章

    101

    瀏覽量

    12767
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    TCP/IP(Socket)協(xié)議深度剖析

    TCP/IP協(xié)議作為互聯(lián)網(wǎng)通信的基礎(chǔ)架構(gòu),其核心機(jī)制Socket編程承載著全球數(shù)據(jù)交換的使命。本文將深入剖析這一協(xié)議的七層架構(gòu)、三次握手與四次揮手的精妙設(shè)計(jì)、流量控制
    的頭像 發(fā)表于 03-03 17:06 ?456次閱讀

    制藥裝備制造企業(yè)生產(chǎn)線自動化焊接設(shè)備通過EtherNet/IP轉(zhuǎn)Modbus TCP協(xié)議轉(zhuǎn)換網(wǎng)關(guān)與中央控制室的TCP協(xié)議控制系統(tǒng)

    一、項(xiàng)目背景與行業(yè)痛點(diǎn) ?案例背景 華東地區(qū)某大型制藥裝備制造企業(yè),生產(chǎn)線配備12臺采用EtherNet/IP協(xié)議的自動化焊接設(shè)備作為從站,需要與中央控制室的TCP協(xié)議
    的頭像 發(fā)表于 01-09 17:39 ?1206次閱讀
    制藥裝備制造企業(yè)生產(chǎn)線自動化焊接設(shè)備通過EtherNet/IP轉(zhuǎn)Modbus <b class='flag-5'>TCP</b><b class='flag-5'>協(xié)議</b>轉(zhuǎn)換網(wǎng)關(guān)與中央<b class='flag-5'>控制</b>室的<b class='flag-5'>TCP</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>控制</b>系統(tǒng)

    為什么會有TCP/IP協(xié)議

    見了面,完全不能交流信息。因而他們需要定義一些共通的東西來進(jìn)行交流,TCP/IP就是為此而生。TCP/IP不是一個(gè)協(xié)議,而是一個(gè)協(xié)議族的統(tǒng)稱。 里面包括了IP
    發(fā)表于 12-03 06:28

    生物疫苗生產(chǎn)精度保障依托總線協(xié)議的Modbus TCP 轉(zhuǎn) RTU案例

    在工業(yè)自動化領(lǐng)域的生物疫苗生產(chǎn)車間中,某企業(yè)采用威綸通 HMI(Modbus RTU 協(xié)議)負(fù)責(zé)發(fā)酵罐、純化設(shè)備的實(shí)時(shí)操作監(jiān)控與參數(shù)設(shè)定,搭配羅克韋爾 Micro800 系列 PLC(Modbus TCP 協(xié)議
    的頭像 發(fā)表于 11-14 15:14 ?458次閱讀
    生物疫苗生產(chǎn)精度保障依托總線<b class='flag-5'>協(xié)議</b>的Modbus <b class='flag-5'>TCP</b> 轉(zhuǎn) RTU案例

    智能物流立體倉庫通訊困境:基于協(xié)議轉(zhuǎn)換的Modbus TCP 轉(zhuǎn) Modbus RTU解決方案

    在工業(yè)自動化領(lǐng)域的智能物流自動化立體倉庫中,塔訊 TX 131-RE-RS/TCP在某企業(yè)采用研華工控機(jī)(Modbus RTU 協(xié)議)負(fù)責(zé)倉儲管理系統(tǒng)(WMS)的訂單下發(fā)、庫存統(tǒng)計(jì),搭配三菱 Q 系列 PLC(Modbus TCP
    的頭像 發(fā)表于 11-08 11:25 ?376次閱讀
    智能物流立體倉庫通訊困境:基于<b class='flag-5'>協(xié)議</b>轉(zhuǎn)換的Modbus <b class='flag-5'>TCP</b> 轉(zhuǎn) Modbus RTU解決方案

    Modbus TCP與RTU協(xié)議詳解:網(wǎng)關(guān)采集如何選?

    深控網(wǎng)關(guān)如何工作: 我們的高端系列網(wǎng)關(guān)具備多串口 + 網(wǎng)口的配置,可以同時(shí)接入RS-485總線上的RTU設(shè)備和網(wǎng)絡(luò)上的TCP設(shè)備。網(wǎng)關(guān)作為一個(gè)數(shù)據(jù)匯聚點(diǎn),將不同協(xié)議的數(shù)據(jù)統(tǒng)一采集、處理,并轉(zhuǎn)換成標(biāo)準(zhǔn)協(xié)議(如MQTT、OPC UA
    的頭像 發(fā)表于 11-04 10:34 ?388次閱讀

    如何理解工業(yè)物聯(lián)網(wǎng)網(wǎng)關(guān)的協(xié)議解析功能

    工業(yè)物聯(lián)網(wǎng)網(wǎng)關(guān)的協(xié)議解析功能是其核心能力之一,它通過將不同工業(yè)設(shè)備使用的多樣化通信協(xié)議轉(zhuǎn)換為統(tǒng)一格式,實(shí)現(xiàn)異構(gòu)設(shè)備間的無縫互聯(lián)與數(shù)據(jù)交互。以下從功能定位、技術(shù)實(shí)現(xiàn)、應(yīng)用場景三個(gè)維度展開分析: 一
    的頭像 發(fā)表于 10-15 11:40 ?434次閱讀

    解析DCQCN:RDMA在數(shù)據(jù)中心網(wǎng)絡(luò)的關(guān)鍵擁塞控制協(xié)議

    DCQCN ( Data Center Quantized Congestion Notification),數(shù)據(jù)中心量化擁塞通知。它是一種專門為數(shù)據(jù)中心網(wǎng)絡(luò)設(shè)計(jì)的端到端擁塞控制協(xié)議。
    的頭像 發(fā)表于 09-15 11:45 ?1860次閱讀
    <b class='flag-5'>解析</b>DCQCN:RDMA在數(shù)據(jù)中心網(wǎng)絡(luò)的關(guān)鍵<b class='flag-5'>擁塞</b><b class='flag-5'>控制</b><b class='flag-5'>協(xié)議</b>

    協(xié)議解析網(wǎng)關(guān)是什么?有什么功能?

    協(xié)議解析網(wǎng)關(guān)是一種位于不同網(wǎng)絡(luò)或設(shè)備之間的中間件設(shè)備或軟件系統(tǒng),主要作用是解決不同通信協(xié)議之間的不兼容性問題。它能夠接收來自不同設(shè)備或系統(tǒng)的數(shù)據(jù)包,識別其攜帶的協(xié)議格式(如Modbus
    的頭像 發(fā)表于 08-13 14:04 ?872次閱讀
    <b class='flag-5'>協(xié)議</b><b class='flag-5'>解析</b>網(wǎng)關(guān)是什么?有什么功能?

    GraniStudio : TCP/IP(Socket)協(xié)議深度剖析

    在工業(yè)自動化與物聯(lián)網(wǎng)領(lǐng)域,TCP/IP(Socket)協(xié)議作為應(yīng)用最廣泛的網(wǎng)絡(luò)通信標(biāo)準(zhǔn),是實(shí)現(xiàn)設(shè)備間數(shù)據(jù)交互的核心技術(shù)。GraniStudio 軟件作為工業(yè)級零代碼開發(fā)平臺,其內(nèi)置的 TCP/IP
    的頭像 發(fā)表于 08-03 22:20 ?1186次閱讀
    GraniStudio : <b class='flag-5'>TCP</b>/IP(Socket)<b class='flag-5'>協(xié)議</b>深度剖析

    如何測試協(xié)議分析儀的實(shí)時(shí)響應(yīng)效率?

    )。 對復(fù)雜協(xié)議解析,優(yōu)先使用專用協(xié)議芯片(如USB 3.x分析儀內(nèi)置專用控制器)。 示例測試報(bào)告片段 [td]測試項(xiàng)目測試方法實(shí)測結(jié)果理論值性能達(dá)標(biāo)率 10Gbps以太網(wǎng)吞吐量信號發(fā)
    發(fā)表于 07-24 14:19

    什么是Modbus TCP協(xié)議

    Modbus TCP是一種基于TCP/IP協(xié)議的Modbus通信協(xié)議,用于在客戶機(jī)和服務(wù)器之間進(jìn)行數(shù)據(jù)通信。它常用于工業(yè)自動化控制、電力監(jiān)控
    的頭像 發(fā)表于 07-23 17:18 ?4258次閱讀
    什么是Modbus <b class='flag-5'>TCP</b><b class='flag-5'>協(xié)議</b>

    協(xié)議分析儀能監(jiān)測哪些異常行為?

    。 檢測方法:協(xié)議分析儀可解析非標(biāo)準(zhǔn)字段內(nèi)容,結(jié)合威脅情報(bào)匹配已知隱蔽通道模式。 隧道攻擊(Tunneling Attack) 實(shí)例: HTTP:將Modbus TCP流量封裝在HTTP POST
    發(fā)表于 07-22 14:20

    51+單片機(jī)TCP-IP+協(xié)議棧ZLIP源碼

    概述 單片機(jī)上網(wǎng)技術(shù),是當(dāng)前的一個(gè)熱門技術(shù)。單片機(jī)上網(wǎng)技術(shù)中的一個(gè)重要部分是在單片上實(shí)現(xiàn) TCP/IP 協(xié)議?!,F(xiàn)在可獲得的 TCP/IP 源代碼一般并不為 51 單片機(jī)設(shè)計(jì),而 51 單片機(jī)
    發(fā)表于 04-22 15:11

    Modbus TCP轉(zhuǎn)Profibus DP主站網(wǎng)關(guān):跨協(xié)議集成的核心樞紐

    一、產(chǎn)品定位:主站級協(xié)議融合 在工業(yè)自動化系統(tǒng)中,如何實(shí)現(xiàn)不同通信協(xié)議設(shè)備的高效協(xié)同一直是技術(shù)難點(diǎn)。三格電子推出的Modbus TCP轉(zhuǎn)Profibus DP主站網(wǎng)關(guān),以強(qiáng)大的協(xié)議轉(zhuǎn)換
    的頭像 發(fā)表于 04-17 16:04 ?837次閱讀
    Modbus <b class='flag-5'>TCP</b>轉(zhuǎn)Profibus DP主站網(wǎng)關(guān):跨<b class='flag-5'>協(xié)議</b>集成的核心樞紐