亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

關于這部分自己不曉得怎么敘述才好,因為理解的部分更多,下面就用自己的理解來介紹下TCP的精髓:滑動窗口協(xié)議。

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

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

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

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

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

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

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

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

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

二、流量控制

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

1. 流量控制

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

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

2. 傳遞效率

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

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

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

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

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

三、擁塞控制

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

1. 慢開始、擁塞控制

2. 快重傳、快恢復

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

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

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

-3. 當收到第一個字節(jié)的數(shù)據(jù)的確認后,就發(fā)送2個字節(jié)的報文;

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

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

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

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

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

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

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

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

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

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

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

*1. 慢開始門限減半;

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

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

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

    關注

    8

    文章

    1417

    瀏覽量

    82873
  • TCP協(xié)議
    +關注

    關注

    1

    文章

    101

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

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

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

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

    什么是Modbus TCP協(xié)議

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

    TCP協(xié)議的性能測試與評估方法

    的、基于字節(jié)流的傳輸層通信協(xié)議。它通過三次握手建立連接,使用序列號和確認應答機制保證數(shù)據(jù)的有序傳輸,并通過滑動窗口機制控制數(shù)據(jù)流量,以避免網(wǎng)絡擁塞
    的頭像 發(fā)表于 01-22 10:03 ?2057次閱讀

    調(diào)試TCP協(xié)議連接的常用工具

    在網(wǎng)絡通信中,TCP(傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。調(diào)試TCP連接問題對于網(wǎng)絡工程師和開發(fā)者來說是一項
    的頭像 發(fā)表于 01-22 09:59 ?4998次閱讀

    TCP協(xié)議的常見應用場景

    在現(xiàn)代通信網(wǎng)絡中,TCP協(xié)議因其可靠性和穩(wěn)定性而被廣泛應用于各種場景。 1. 網(wǎng)頁瀏覽 1.1 HTTP和HTTPS HTTP(超文本傳輸協(xié)議) :TCP是HTTP
    的頭像 發(fā)表于 01-22 09:55 ?3117次閱讀

    如何優(yōu)化TCP協(xié)議的性能

    優(yōu)化TCP協(xié)議的性能可以從多個方面入手,以下是一些關鍵的策略和方法: 一、調(diào)整TCP參數(shù) TCP窗口大小 : 重要性 :
    的頭像 發(fā)表于 01-22 09:52 ?1346次閱讀

    TCP協(xié)議在網(wǎng)絡通信中的應用

    的、基于字節(jié)流的傳輸層通信協(xié)議。它的主要任務是確保數(shù)據(jù)能夠正確、完整地從一個網(wǎng)絡端點傳輸?shù)搅硪粋€端點。TCP通過三次握手建立連接,通過序列號和確認應答機制保證數(shù)據(jù)的順序和完整性,通過滑動窗口
    的頭像 發(fā)表于 01-22 09:50 ?1027次閱讀

    TCP協(xié)議的安全性分析

    使用確認機制來確保數(shù)據(jù)段被正確接收。如果一個段丟失,發(fā)送方將重新發(fā)送該段。 流量控制TCP使用窗口大小來控制發(fā)送方發(fā)送數(shù)據(jù)的速率,以避免接收方被過多的數(shù)據(jù)淹沒。
    的頭像 發(fā)表于 01-22 09:48 ?1113次閱讀

    TCP協(xié)議與UDP協(xié)議的區(qū)別

    。 UDP(用戶數(shù)據(jù)報協(xié)議) : 無連接 :UDP不建立連接,數(shù)據(jù)可以直接發(fā)送,不需要任何握手過程。 不可靠性 :UDP不保證數(shù)據(jù)的可靠傳輸,數(shù)據(jù)包可能會丟失,不會重傳。 2. 數(shù)據(jù)傳輸 TCP : 流控制
    的頭像 發(fā)表于 01-22 09:44 ?1548次閱讀

    什么是TCP協(xié)議及其工作原理

    協(xié)議之一。它提供了一種可靠的、有序的、基于字節(jié)流的數(shù)據(jù)傳輸服務。TCP協(xié)議的主要特點包括: 面向連接 :在數(shù)據(jù)傳輸之前,TCP需要在通信雙方之間建立一個連接。 可靠傳輸 :
    的頭像 發(fā)表于 01-22 09:41 ?2021次閱讀

    TCP三次握手協(xié)議的作用

    在計算機網(wǎng)絡中,數(shù)據(jù)的傳輸需要在發(fā)送方和接收方之間建立一個穩(wěn)定的連接,以確保數(shù)據(jù)的完整性和順序。TCP(傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,它通過三次握
    的頭像 發(fā)表于 01-03 17:15 ?1361次閱讀

    TCP-UART數(shù)據(jù)透傳技術(shù),居然如此簡單!

    連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。它主要用于在不可靠的網(wǎng)絡環(huán)境中提供穩(wěn)定的數(shù)據(jù)傳輸服務,確保數(shù)據(jù)能夠按照順序、無錯誤地到達接收端。 TCP通過三次握手建立連接,使用滑動窗口
    的頭像 發(fā)表于 12-30 16:46 ?860次閱讀
    <b class='flag-5'>TCP</b>-UART數(shù)據(jù)透傳技術(shù),居然如此簡單!

    TCP-UART透傳示例~看完就會源碼開放!

    連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。它主要用于在不可靠的網(wǎng)絡環(huán)境中提供穩(wěn)定的數(shù)據(jù)傳輸服務,確保數(shù)據(jù)能夠按照順序、無錯誤地到達接收端。 TCP通過三次握手建立連接,使用滑動窗口
    的頭像 發(fā)表于 12-30 16:43 ?863次閱讀
    <b class='flag-5'>TCP</b>-UART透傳示例~看完就會源碼開放!