日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TCP协议——流量控制和拥塞控制

發(fā)布時(shí)間:2023/12/4 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TCP协议——流量控制和拥塞控制 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

**

一、流量控制

**

1.1 什么是流量控制

Sender won’t overflow receiver’s buffer by transmitting too much, too fast. (防止發(fā)送方發(fā)的太快,耗盡接收方的資源,從而使接收方來不及處理)

1.2 流量控制的一些知識(shí)點(diǎn)

(1)接收端抑制發(fā)送端的依據(jù):接收端緩沖區(qū)的大小
(2)流量控制的目標(biāo)是接收端,是怕接收端來不及處理
(3)流量控制的機(jī)制是丟包

1.3 怎么樣實(shí)現(xiàn)流量控制?

使用滑動(dòng)窗口

1.4 滑動(dòng)窗口

滑動(dòng)窗口是什么?

滑動(dòng)窗口是類似于一個(gè)窗口一樣的東西,是用來告訴發(fā)送端可以發(fā)送數(shù)據(jù)的大小或者說是窗口標(biāo)記了接收端緩沖區(qū)的大小,這樣就可以實(shí)現(xiàn)批量發(fā)送數(shù)據(jù)

為什么會(huì)出現(xiàn)滑動(dòng)窗口

在確認(rèn)應(yīng)答策略中,對每一個(gè)發(fā)送的數(shù)據(jù)段,都要給一個(gè)ACK確認(rèn)應(yīng)答,收到ACK后再發(fā)送下一個(gè)數(shù)據(jù)段,這樣做有一個(gè)比較大的缺點(diǎn),就是性能比較差,尤其是數(shù)據(jù)往返的時(shí)間長的時(shí)候

使用滑動(dòng)窗口,就可以一次發(fā)送多條數(shù)據(jù),從而就提高了性能

滑動(dòng)窗口原理

TCP中采用滑動(dòng)窗口來進(jìn)行流量控制,滑動(dòng)窗口的大小意味著接收方還有多大的緩沖區(qū)可以用于接收數(shù)據(jù)。發(fā)送方可以通過滑動(dòng)窗口的大小來確定應(yīng)該發(fā)送多少字節(jié)的數(shù)據(jù)。當(dāng)滑動(dòng)窗口為0時(shí),發(fā)送方一般不能再發(fā)送數(shù)據(jù)報(bào)。

滑動(dòng)窗口協(xié)議的基本原理就是在任意時(shí)刻,發(fā)送方都維持了一個(gè)連續(xù)的允許發(fā)送的幀的序號(hào),稱為發(fā)送窗口;同時(shí),接收方也維持了一個(gè)連續(xù)的允許接收的幀的序號(hào),稱為接收窗口。發(fā)送窗口和接收窗口的序號(hào)的上下界不一定要一樣,甚至大小也可以不同。不同的滑動(dòng)窗口協(xié)議窗口大小一般不同。發(fā)送方窗口內(nèi)的序列號(hào)代表了那些已經(jīng)被發(fā)送,但是還沒有被確認(rèn)的幀,或者是那些可以被發(fā)送的幀。

(1)接收端將自己可以接收的緩沖區(qū)大小放入TCP首部中的“窗口大小”字段,通過ACK來通知發(fā)送端
(2)窗口大小字段越大,說明網(wǎng)絡(luò)的吞吐率越高
(3)窗口大小指的是無需等待確認(rèn)應(yīng)答而可以繼續(xù)發(fā)送數(shù)據(jù)的最大值,即就是說不需要接收端的應(yīng)答,可以一次連續(xù)的發(fā)送數(shù)據(jù)
(4)操作系統(tǒng)內(nèi)核為了維護(hù)滑動(dòng)窗口,需要開辟發(fā)送緩沖區(qū),來記錄當(dāng)前還有那些數(shù)據(jù)沒有應(yīng)答,只有確認(rèn)應(yīng)答過的數(shù)據(jù),才能從緩沖區(qū)刪掉

ps:發(fā)送緩沖區(qū)如果太大,就會(huì)有空間開銷

(5)接收端一旦發(fā)現(xiàn)自己的緩沖區(qū)快滿了,就會(huì)將窗口大小設(shè)置成一個(gè)更小的值通知給發(fā)送端,發(fā)送端收到這個(gè)值后,就會(huì)減慢自己的發(fā)送速度
(6)如果接收端發(fā)現(xiàn)自己的緩沖區(qū)滿了,就會(huì)將窗口的大小設(shè)置為0,此時(shí)發(fā)送端將不再發(fā)送數(shù)據(jù),但是需要定期發(fā)送一個(gè)窗口探測數(shù)據(jù)段,使接收端把窗口大小告訴發(fā)送端
ps:在TCP的首部中,有一個(gè)16為窗口字段,此字段就是用來存放窗口大小信息的

滑動(dòng)窗口的優(yōu)點(diǎn)

可以高效可靠的發(fā)送大量的數(shù)據(jù)

1.1 超時(shí)重傳

TCP服務(wù)必須能夠重傳超時(shí)時(shí)間內(nèi)未收到確認(rèn)報(bào)文段的TCP報(bào)文段。TCP為每個(gè)TCP模塊都維護(hù)了一個(gè)重傳定時(shí)器,定時(shí)器在第一次發(fā)送TCP報(bào)文段時(shí)啟動(dòng),如果超時(shí)時(shí)間內(nèi)未收到接收方的確認(rèn)號(hào)報(bào)文段,TCP模塊將重傳TCP報(bào)文段并重置定時(shí)器。 至于下次重傳的超時(shí)時(shí)間如何選擇,以及最多重傳幾次,這是TCP的重傳策略。 與TCP超時(shí)重連的策略相似。

流量控制的處理過程:

TCP連接階段,雙方協(xié)商窗口尺寸,同時(shí)接收方預(yù)留數(shù)據(jù)緩存區(qū);

發(fā)送方根據(jù)協(xié)商的結(jié)果,發(fā)送符合窗口尺寸的數(shù)據(jù)字節(jié)流,并等待對方的確認(rèn);

發(fā)送方根據(jù)確認(rèn)信息,改變窗口的尺寸,增加或者減少發(fā)送未得到確認(rèn)的字節(jié)流中的字節(jié)數(shù)。調(diào)整過程包括:如果出現(xiàn)發(fā)送擁塞,發(fā)送窗口縮小為原來的一半,同時(shí)將超時(shí)重傳的時(shí)間間隔擴(kuò)大一倍。

**

2、擁塞控制

**

2.1 什么是擁塞控制

too many sources sending too much data too fast for network to handle
防止發(fā)送方發(fā)的太快,使得網(wǎng)絡(luò)來不及處理,從而導(dǎo)致網(wǎng)絡(luò)擁塞

流量控制雖然可以高效可靠的傳送大量的數(shù)據(jù),但是如果在剛開始階段就發(fā)送大量的數(shù)據(jù),可能會(huì)導(dǎo)致網(wǎng)絡(luò)擁堵,因?yàn)榫W(wǎng)絡(luò)上的計(jì)算機(jī)太多了。
TCP模塊為了防止過多的數(shù)據(jù)注入網(wǎng)絡(luò),使網(wǎng)絡(luò)中的路由器或鏈路不致于過載。以此提高網(wǎng)絡(luò)利用率,降低丟包率,并抱證網(wǎng)絡(luò)資源對每條數(shù)據(jù)流的公平性而采取的控制手段。

2.2 擁塞控制的實(shí)現(xiàn)

擁塞控制包含四部分內(nèi)容:慢啟動(dòng)、擁塞避免、快速重傳、快速恢復(fù)。

  • 慢啟動(dòng): 網(wǎng)絡(luò)傳輸剛開始時(shí),并不知道網(wǎng)絡(luò)的實(shí)際情況,所以采取一種試探的方式控制數(shù)據(jù)的發(fā)送速率。慢啟動(dòng)階段,數(shù)據(jù)的發(fā)送速率以指數(shù)方式增長,即就是擁塞窗口的增長,每次都是收到確認(rèn)報(bào)文段數(shù)量的2倍。可以看出慢啟動(dòng)并不慢,擁塞窗口增長的速度很快。所以,為其設(shè)置了一個(gè)慢啟動(dòng)門限,當(dāng)達(dá)到門限時(shí),就進(jìn)入到擁塞避免階段。

  • 擁塞避免: 當(dāng)擁塞窗口的大小采用慢啟動(dòng)方式增長到慢啟動(dòng)門限時(shí),就進(jìn)入擁塞避免階段,擁塞避免階段不再以指數(shù)形式增長擁塞窗口,而是每經(jīng)過一個(gè)往返時(shí)間RTT就將發(fā)送方的擁塞窗口+1, 使其增長速度減緩。按照線性方式增長。如果發(fā)生網(wǎng)絡(luò)擁塞,比如丟包時(shí),就將慢啟動(dòng)門限設(shè)為原來的一半,然后將擁塞窗口設(shè)置為1,開始執(zhí)行慢啟動(dòng)算法。(較低的起點(diǎn),指數(shù)級(jí)增長)。

  • 快速重傳: 假設(shè)發(fā)送方發(fā)送的報(bào)文段分別為: M1,M2,M3,M4,M5,M6 , 當(dāng)接收方收到M1和M2后,M3報(bào)文段丟失,接著收到的M4,M5,M6都不做處理,而是沒接收到一個(gè)報(bào)文段就對M2重復(fù)確認(rèn),發(fā)送方接收到重復(fù)的三次確認(rèn)報(bào)文段,就對其后的報(bào)文段進(jìn)行重新發(fā)送,而不需要等待超時(shí)時(shí)間到達(dá)。當(dāng)快速重傳后,立即進(jìn)入到快速恢復(fù)階段。

  • 快速恢復(fù):將慢啟動(dòng)門限設(shè)置為原來的一半,然后將擁塞窗口設(shè)置為現(xiàn)在的慢啟動(dòng)門限值,不再執(zhí)行慢啟動(dòng)算法,而是直接進(jìn)入擁塞避免階段。使發(fā)送窗口成線性方式增大。


**

3、流量控制&擁塞控制的聯(lián)系與區(qū)別

**

3.1 相同點(diǎn)

(1)現(xiàn)象都是丟包;
(2)實(shí)現(xiàn)機(jī)制都是讓發(fā)送方發(fā)的慢一點(diǎn),發(fā)的少一點(diǎn)

3.2 不同點(diǎn)

(1)丟包位置不同 流量控制丟包位置是在接收端上 擁塞控制丟包位置是在路由器上
(2)作用的對象不同 流量控制的對象是接收方,怕發(fā)送方發(fā)的太快,使得接收方來不及處理 擁塞控制的對象是網(wǎng)絡(luò),怕發(fā)送方發(fā)的太快,造成網(wǎng)絡(luò)擁塞,使得網(wǎng)絡(luò)來不及處理

3.3 聯(lián)系

  • 擁塞控制
    擁塞控制通常表示的是一個(gè)全局性的過程,它會(huì)涉及到網(wǎng)絡(luò)中所有的主機(jī)、
    所有的路由器和降低網(wǎng)絡(luò)傳輸性能的所有因素

  • 流量控制
    流量控制發(fā)生在發(fā)送端和接收端之間,只是點(diǎn)到點(diǎn)之間的控制

總結(jié)

以上是生活随笔為你收集整理的TCP协议——流量控制和拥塞控制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。