国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

TCP重傳, 滑動窗口, 流量控制, 擁塞控制

這篇具有很好參考價值的文章主要介紹了TCP重傳, 滑動窗口, 流量控制, 擁塞控制。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

TCP重傳, 滑動窗口, 流量控制, 擁塞控制

1. 重傳機制

TCP 實現(xiàn)可靠傳輸?shù)姆绞街?,是通過序列號與確認應(yīng)答。

在 TCP 中,當發(fā)送端的數(shù)據(jù)到達接收主機時,接收端主機會返回一個確認應(yīng)答消息,表示已收到消息。

針對數(shù)據(jù)可能丟失的情況, 用重傳機制來解決, 四種常見的重傳機制:

  • 超時重傳
  • 快速重傳
  • SACK
  • D-SACK
1.1 超時重傳

在發(fā)送數(shù)據(jù)時,設(shè)定一個定時器,當超過指定的時間后,沒有收到對方的 ACK 確認應(yīng)答報文,就會重發(fā)該數(shù)據(jù),也就是我們常說的超時重傳。

分為兩種:

  • 數(shù)據(jù)包丟失
  • 確認應(yīng)答丟失

TCP重傳, 滑動窗口, 流量控制, 擁塞控制,linux,tcp/ip,網(wǎng)絡(luò),服務(wù)器

超時時間:

RTT(Round-Trip Time 往返時延): 數(shù)據(jù)發(fā)送時刻到接收到確認的時刻的差值

RTO(Retransmission Timeout 超時重傳時間)

超時重傳時間 RTO 的值應(yīng)該略大于報文往返 RTT 的值。

TCP重傳, 滑動窗口, 流量控制, 擁塞控制,linux,tcp/ip,網(wǎng)絡(luò),服務(wù)器

實際上「報文往返 RTT 的值」是經(jīng)常變化的,因為我們的網(wǎng)絡(luò)也是時常變化的。也就因為「報文往返 RTT 的值」 是經(jīng)常波動變化的,所以「超時重傳時間 RTO 的值」應(yīng)該是一個動態(tài)變化的值。

實際中, 每當遇到一次超時重傳的時候,都會將下一次超時時間間隔設(shè)為先前值的兩倍。兩次超時,就說明網(wǎng)絡(luò)環(huán)境差,不宜頻繁反復(fù)發(fā)送。

1.2 快讀重傳

不以時間為驅(qū)動,而是以數(shù)據(jù)驅(qū)動重傳

TCP重傳, 滑動窗口, 流量控制, 擁塞控制,linux,tcp/ip,網(wǎng)絡(luò),服務(wù)器

在上圖,發(fā)送方發(fā)出了 1,2,3,4,5 份數(shù)據(jù):

  • 第一份 Seq1 先送到了,于是就 Ack 回 2;
  • 結(jié)果 Seq2 因為某些原因沒收到,Seq3 到達了,于是還是 Ack 回 2;
  • 后面的 Seq4 和 Seq5 都到了,但還是 Ack 回 2,因為 Seq2 還是沒有收到;
  • 發(fā)送端收到了三個 Ack = 2 的確認,知道了 Seq2 還沒有收到,就會在定時器過期之前,重傳丟失的 Seq2。
  • 最后,收到了 Seq2,此時因為 Seq3,Seq4,Seq5 都收到了,于是 Ack 回 6 。

快速重傳的工作方式是當收到三個相同的 ACK 報文時,會在定時器過期之前,重傳丟失的報文段。

快速重傳機制只解決了一個問題,就是超時時間的問題,但是它依然面臨著另外一個問題。就是重傳的時候,是重傳一個,還是重傳所有的問題。

1.3 SACK方法

實現(xiàn)重傳機制的方式叫:SACK( Selective Acknowledgment), 選擇性確認

這種方式需要在 TCP 頭部「選項」字段里加一個 SACK 的東西,它可以將已收到的數(shù)據(jù)的信息發(fā)送給「發(fā)送方」,這樣發(fā)送方就可以知道哪些數(shù)據(jù)收到了,哪些數(shù)據(jù)沒收到,知道了這些信息,就可以只重傳丟失的數(shù)據(jù)。

如下圖,發(fā)送方收到了三次同樣的 ACK 確認報文,于是就會觸發(fā)快速重發(fā)機制,通過 SACK 信息發(fā)現(xiàn)只有 200~299 這段數(shù)據(jù)丟失,則重發(fā)時,就只選擇了這個 TCP 段進行重復(fù)。

TCP重傳, 滑動窗口, 流量控制, 擁塞控制,linux,tcp/ip,網(wǎng)絡(luò),服務(wù)器

1.4 Duplicate SACK

主要使用了 SACK 來告訴「發(fā)送方」有哪些數(shù)據(jù)被重復(fù)接收了。

分為ACK丟包和網(wǎng)絡(luò)延時

2. 滑動窗口

流量控制可以讓發(fā)送端根據(jù)接收端的實際接受能力控制發(fā)送的數(shù)據(jù)量。它的具體操作是,接收端主機向發(fā)送端主機通知自己可以接收數(shù)據(jù)的大小,于是發(fā)送端會發(fā)送不會超過該大小的數(shù)據(jù),該限制大小即為窗口大小,即窗口大小由接收端主機決定。

TCP 首部中,專門有一個字段來通知窗口大小,接收主機將自己可以接收的緩沖區(qū)大小放在該字段中通知發(fā)送端。當接收端的緩沖區(qū)面臨數(shù)據(jù)溢出時,窗口大小的值也是隨之改變,設(shè)置為一個更小的值通知發(fā)送端,從而控制數(shù)據(jù)的發(fā)送量,這樣達到流量的控制。這個控制流程的窗口也可以稱作滑動窗口。

3. 流量控制

TCP重傳, 滑動窗口, 流量控制, 擁塞控制,linux,tcp/ip,網(wǎng)絡(luò),服務(wù)器

左邊發(fā)送端, 右邊接收端, 白色空余位置, 粉色有數(shù)據(jù)但是未發(fā)送(為讀到內(nèi)存中), 灰色已發(fā)送

從三次握手 -> 數(shù)據(jù)通信 -> 四次揮手全過程:

TCP重傳, 滑動窗口, 流量控制, 擁塞控制,linux,tcp/ip,網(wǎng)絡(luò),服務(wù)器

# fast sender: 客戶端
# slow recerver: 服務(wù)器
# win: 滑動窗口大小
# mss: maximum segment size, 單條數(shù)據(jù)的最大長度

第4~9步: 客戶端給服務(wù)器發(fā)送數(shù)據(jù)

  • 1(1024):1 (1-0)表示之前一共給服務(wù)器發(fā)送了1個字節(jié),(1024)表示這次要發(fā)送的數(shù)據(jù)量為 1k
  • 1025(1024):1025(1025-0)表示之前一共給服務(wù)器發(fā)送了1025個字節(jié),(1024)表示這次要發(fā)送的數(shù)據(jù)量為 1k

第10步:

  • ack6145: 服務(wù)器給客戶端回復(fù)數(shù)據(jù),6145是確認序號, 代表實際接收的字節(jié)數(shù)

    服務(wù)器實際接收的字節(jié)數(shù) = 確認序號 - 客戶端生成的隨機序號 ===> 6145 = 6145 - 0

  • win2048:服務(wù)器告訴客戶端我的緩存還有2k,也就是還有4k還在緩存中沒有被讀走

第11步:win4096表示滑動窗口變?yōu)?k,代表還可以接收4k數(shù)據(jù),還有2k在緩存中

第12步:客戶端又給服務(wù)器發(fā)送了1k數(shù)據(jù)

第13步: 第一次揮手,F(xiàn)IN表示客戶端主動和服務(wù)器斷開連接,并且發(fā)送了1k數(shù)據(jù)到服務(wù)器端

第14步: 第二次揮手,回復(fù)ACK, 同意斷開連接

第15, 16步: 服務(wù)器端從讀緩沖區(qū)中讀數(shù)據(jù), 第16步數(shù)據(jù)讀完, 滑動窗口變成最大的6k

第17步:

  • FIN: 服務(wù)器請求和客戶端斷開連接
  • 8001(0): 服務(wù)器一共給客戶端發(fā)送的字節(jié)數(shù) 8001 - 8000 = 1個字節(jié),攜帶的數(shù)據(jù)量為0(FIN不計算在內(nèi))
  • ack8194: 服務(wù)器收到了客戶端的多少個字節(jié): 8194 - 0 = 8194個字節(jié)

第18步: 第四次揮手

  • ACK: 客戶端同意了服務(wù)器斷開連接的請求
  • 8002: 確認序號, 可以計算出服務(wù)器給客戶端發(fā)送了多少數(shù)據(jù),8002 - 8000 = 2 個字節(jié)

4. 擁塞控制

在網(wǎng)絡(luò)出現(xiàn)擁堵時,如果繼續(xù)發(fā)送大量數(shù)據(jù)包,可能會導(dǎo)致數(shù)據(jù)包時延、丟失等,這時 TCP 就會重傳數(shù)據(jù),但是一重傳就會導(dǎo)致網(wǎng)絡(luò)的負擔(dān)更重,于是會導(dǎo)致更大的延遲以及更多的丟包,這個情況就會進入惡性循環(huán)被不斷地放大…

所以,TCP 不能忽略網(wǎng)絡(luò)上發(fā)生的事,它被設(shè)計成一個無私的協(xié)議,當網(wǎng)絡(luò)發(fā)送擁塞時,TCP 會自我犧牲,降低發(fā)送的數(shù)據(jù)量。

于是,就有了擁塞控制,控制的目的就是避免「發(fā)送方」的數(shù)據(jù)填滿整個網(wǎng)絡(luò)。

為了在「發(fā)送方」調(diào)節(jié)所要發(fā)送數(shù)據(jù)的量,定義了一個叫做「擁塞窗口」的概念。

擁塞窗口 cwnd是發(fā)送方維護的一個的狀態(tài)變量,它會根據(jù)網(wǎng)絡(luò)的擁塞程度動態(tài)變化的

我們在前面提到過發(fā)送窗口 swnd 和接收窗口 rwnd 是約等于的關(guān)系,那么由于加入了擁塞窗口的概念后,此時發(fā)送窗口的值是swnd = min(cwnd, rwnd),也就是擁塞窗口和接收窗口中的最小值。

擁塞窗口 cwnd 變化的規(guī)則:

  • 只要網(wǎng)絡(luò)中沒有出現(xiàn)擁塞,cwnd 就會增大;
  • 但網(wǎng)絡(luò)中出現(xiàn)了擁塞,cwnd 就減少;

其實只要「發(fā)送方」沒有在規(guī)定時間內(nèi)接收到 ACK 應(yīng)答報文,也就是發(fā)生了超時重傳,就會認為網(wǎng)絡(luò)出現(xiàn)了擁塞。文章來源地址http://www.zghlxwxcb.cn/news/detail-815871.html

到了這里,關(guān)于TCP重傳, 滑動窗口, 流量控制, 擁塞控制的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • TCP滑動窗口、流量控制及擁塞控制詳解

    TCP滑動窗口、流量控制及擁塞控制詳解

    TCP雖然是面向字節(jié)流的,但是TCP傳輸?shù)膯卧_實報文段。一個TCP報文段分為首部和數(shù)據(jù)部分。TCP首部前20個字節(jié)是固定的,后面有4N個字節(jié)是可選的。因此,TCP首部最小字節(jié)數(shù)是20個字節(jié)。 下面我們看下一TCP首部中幾個重要的字段: 源端口 和 目的端口 各占兩個字節(jié) 序號 ,占

    2024年02月02日
    瀏覽(29)
  • 【網(wǎng)絡(luò)】傳輸層——TCP(滑動窗口&&流量控制&&擁塞控制&&延遲應(yīng)答&&捎帶應(yīng)答)

    【網(wǎng)絡(luò)】傳輸層——TCP(滑動窗口&&流量控制&&擁塞控制&&延遲應(yīng)答&&捎帶應(yīng)答)

    ??作者:一只大喵咪1201 ??專欄:《網(wǎng)絡(luò)》 ??格言: 你只管努力,剩下的交給時間! 上篇文章對TCP可靠性機制講解了一部分,這篇文章接著繼續(xù)講解。 在上篇文章中,本喵講解了TCP的確認應(yīng)答機制: 如上圖所示,主機A每發(fā)送一個數(shù)據(jù)段,主機B都要給一個 ACK 確認應(yīng)答,

    2024年02月12日
    瀏覽(21)
  • 【計算機網(wǎng)絡(luò)】深入理解TCP協(xié)議二(連接管理機制、WAIT_TIME、滑動窗口、流量控制、擁塞控制)

    【計算機網(wǎng)絡(luò)】深入理解TCP協(xié)議二(連接管理機制、WAIT_TIME、滑動窗口、流量控制、擁塞控制)

    正常情況下,TCP需要經(jīng)過三次握手建立連接+四次揮手斷開鏈接,下面看一個圖: 服務(wù)器的狀態(tài)變化: [CLOSED - LISTEN] 服務(wù)器端調(diào)用listen后進入LISTEN狀態(tài), 等待客戶端連接; [LISTEN - SYN_RCVD] 一旦監(jiān)聽到連接請求(同步報文段), 就將該連接放入內(nèi)核等待隊列中, 并向客戶端發(fā)送SYN確認

    2024年02月07日
    瀏覽(27)
  • TCP之超時重傳、流量控制和擁塞控制

    TCP超時重傳是TCP協(xié)議中的一種機制,用于在發(fā)生丟包或數(shù)據(jù)包未及時確認的情況下,重新發(fā)送未確認的數(shù)據(jù)段。 當發(fā)送方發(fā)送一個數(shù)據(jù)段后,會啟動一個定時器(稱為超時計時器),等待接收方的確認。如果在超時時間內(nèi)未收到確認,發(fā)送方就會認為該數(shù)據(jù)段已經(jīng)丟失,并進

    2024年02月10日
    瀏覽(25)
  • TCP/IP網(wǎng)絡(luò)參考模型(端口號、TCP滑動窗口、TCP擁塞控制、IP協(xié)議號、以太網(wǎng)幀)

    TCP/IP網(wǎng)絡(luò)參考模型(端口號、TCP滑動窗口、TCP擁塞控制、IP協(xié)議號、以太網(wǎng)幀)

    目錄 TCP/IP四/五層模型 應(yīng)用層常見協(xié)議——傳輸數(shù)據(jù)PDU 傳輸層協(xié)議——傳輸數(shù)據(jù)段 端口號 TCP面向連接服務(wù)CONS? TCP報文格式 TCP數(shù)據(jù)傳輸——ACK確認機制 TCP會話建立——三次握手 TCP會話結(jié)束——四次握手 TCP流量控制——滑動窗口協(xié)議 TCP可靠傳輸機制 TCP擁塞控制 UDP無面向連

    2024年02月03日
    瀏覽(79)
  • 網(wǎng)絡(luò)編程——TCP的特性之自動重傳/流量控制/擁塞控制,一篇說清楚

    網(wǎng)絡(luò)編程——TCP的特性之自動重傳/流量控制/擁塞控制,一篇說清楚

    自動重傳請求(Automatic Repeat-reQuest),通過使用確認和超時這兩個機制,在不可靠服務(wù)的基礎(chǔ)上實現(xiàn)可靠的信息傳輸,其中包括停止等待ARQ協(xié)議和連續(xù)ARQ協(xié)議 1.1 停止等待ARQ 發(fā)送窗口大小為1,接收窗口大小也為1 發(fā)送方每發(fā)送一個數(shù)據(jù)包,就要等待接收方返回ack包,如果在定

    2024年04月26日
    瀏覽(32)
  • TCP的滑動窗口與擁塞控制

    TCP的滑動窗口與擁塞控制

    客戶端每發(fā)送的一個包,服務(wù)器端都應(yīng)該有個回復(fù),如果服務(wù)器端超過一定的時間沒有回復(fù),客戶端就會重新發(fā)送這個包,直到有回復(fù)。 為了保證順序性,每一個包都有一個 ID。在建立連接的時候,會商定起始的 ID 是什么,然后按照 ID 一個個發(fā)送。為了保證不丟包,對于發(fā)

    2024年02月07日
    瀏覽(23)
  • TCP的滑動窗口和擁塞控制

    TCP的滑動窗口和擁塞控制

    目錄 滑動窗口 1.發(fā)送窗口和接收窗口 2.滑動窗口的分類 停止等待協(xié)議:發(fā)送窗口大小 = 1, 接收窗口大小= 1 后退N幀協(xié)議(GBN):發(fā)送窗口大小 1,接收窗口大小 = 1 選擇重傳協(xié)議(SR) :發(fā)送窗口大小 1, 接收窗口大小 1 擁塞控制 慢開始算法和擁塞避免: 快重傳和快恢復(fù):

    2024年04月10日
    瀏覽(26)
  • TCP的擁塞控制算法:慢啟動、擁塞避免、快重傳、快恢復(fù)

    TCP的擁塞控制算法:慢啟動、擁塞避免、快重傳、快恢復(fù)

    一、前言:什么是擁塞?什么是擁塞控制? 擁塞 :隨著網(wǎng)絡(luò)中的主機增加其發(fā)送速率并使網(wǎng)絡(luò)變得十分擁擠,此時會經(jīng)常發(fā)生丟包現(xiàn)象,導(dǎo)致網(wǎng)絡(luò)的傳輸效率急劇降低。 分組的超時重傳通常被作為網(wǎng)絡(luò)擁塞的標志 。 如果不對網(wǎng)絡(luò)擁塞進行控制,整個網(wǎng)絡(luò)的吞吐量將隨著輸

    2024年02月02日
    瀏覽(21)
  • TCP協(xié)議之滑動窗口和擁塞窗口

    TCP協(xié)議之滑動窗口和擁塞窗口

    如果發(fā)送一個新的包,需要等待上一個包的 ACK 回來之后才能發(fā)送,這樣效率顯然是很低的。也就是每經(jīng)過一個 RTT(RTT指的是一個數(shù)據(jù)包從發(fā)送到接收到ACK確認包的花費時間,RTT是會隨著網(wǎng)絡(luò)的變化而變化) 的時間,我們只能發(fā)送一個包,假設(shè)一個 RTT 是 100ms,那在一秒中我

    2024年02月05日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包