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

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

這篇具有很好參考價值的文章主要介紹了網(wǎng)絡(luò)編程——TCP的特性之自動重傳/流量控制/擁塞控制,一篇說清楚。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1. ARQ自動重傳協(xié)議

自動重傳請求(Automatic Repeat-reQuest),通過使用確認(rèn)和超時這兩個機制,在不可靠服務(wù)的基礎(chǔ)上實現(xiàn)可靠的信息傳輸,其中包括停止等待ARQ協(xié)議和連續(xù)ARQ協(xié)議

1.1 停止等待ARQ

發(fā)送窗口大小為1,接收窗口大小也為1
發(fā)送方每發(fā)送一個數(shù)據(jù)包,就要等待接收方返回ack包,如果在定時時間內(nèi)沒收到ack包,則需要重新發(fā)送,而這個超時時間,是需要經(jīng)過RTT往返時延(從發(fā)送方發(fā)送數(shù)據(jù)開始,到發(fā)送方接收到來自接收方的確認(rèn)消息)來計算出來的。

當(dāng)數(shù)據(jù)正常傳輸時,發(fā)送完M1數(shù)據(jù)包后,等待接收方的M1數(shù)據(jù)包ACK,收到后繼續(xù)發(fā)送M2數(shù)據(jù)包并等待ACK
網(wǎng)絡(luò)編程——TCP的特性之自動重傳/流量控制/擁塞控制,一篇說清楚,網(wǎng)絡(luò),Linux應(yīng)用編程,網(wǎng)絡(luò),tcp/ip,服務(wù)器,linux,網(wǎng)絡(luò)協(xié)議

當(dāng)數(shù)據(jù)傳輸出錯時,假設(shè)數(shù)據(jù)包M1丟失,則一定超時時間后,進行一次重傳。
網(wǎng)絡(luò)編程——TCP的特性之自動重傳/流量控制/擁塞控制,一篇說清楚,網(wǎng)絡(luò),Linux應(yīng)用編程,網(wǎng)絡(luò),tcp/ip,服務(wù)器,linux,網(wǎng)絡(luò)協(xié)議

1.2 連續(xù)ARQ

連續(xù)ARQ發(fā)送方可連續(xù)發(fā)送多個分組的數(shù)據(jù),而不需要像停止等待ARQ一樣,等到應(yīng)答再進行發(fā)送,大大提升帶寬的利用率。
網(wǎng)絡(luò)編程——TCP的特性之自動重傳/流量控制/擁塞控制,一篇說清楚,網(wǎng)絡(luò),Linux應(yīng)用編程,網(wǎng)絡(luò),tcp/ip,服務(wù)器,linux,網(wǎng)絡(luò)協(xié)議

1)滑動窗口概念
滑動窗口協(xié)議在發(fā)送方和接收方之間各自維持一個滑動窗口,兩個窗口大小不一定相同。
主要提供TCP的可靠性(基于確認(rèn)重傳機制)以及TCP的流控特性(控制網(wǎng)絡(luò)傳輸時的流量,避免擁塞發(fā)生)。

滑動窗口其實類似一個收費站,收費站也就是窗口的位置是不變的,數(shù)據(jù)不停的在進行滑動。
網(wǎng)絡(luò)編程——TCP的特性之自動重傳/流量控制/擁塞控制,一篇說清楚,網(wǎng)絡(luò),Linux應(yīng)用編程,網(wǎng)絡(luò),tcp/ip,服務(wù)器,linux,網(wǎng)絡(luò)協(xié)議

2)滑動窗口重發(fā)機制
發(fā)送端維護一個窗口,窗口內(nèi)有多個分組,分組個數(shù)等于窗口的大小,窗口內(nèi)的分組可以直接連續(xù)發(fā)送數(shù)據(jù),不需要等待接收端返回的ACK,這樣可以提升對信道的利用率。

TCP協(xié)議提供兩種滑動窗口協(xié)議:回退(Go-Back-N)以及選擇重傳(Selective Repeat來解決連續(xù)ARQ模式下傳輸數(shù)據(jù)出錯的問題。
1)回退(Go-Back-N)協(xié)議
發(fā)送窗口大小 n > 1,接收窗口 = 1,當(dāng)發(fā)生數(shù)據(jù)丟失時,會重傳所有大于最后一個ACK的包
網(wǎng)絡(luò)編程——TCP的特性之自動重傳/流量控制/擁塞控制,一篇說清楚,網(wǎng)絡(luò),Linux應(yīng)用編程,網(wǎng)絡(luò),tcp/ip,服務(wù)器,linux,網(wǎng)絡(luò)協(xié)議
在這種模式下,發(fā)送端會維護一塊發(fā)送端的數(shù)據(jù)緩存,當(dāng)需要重發(fā)窗口中的分組報文,便會從緩存里讀取數(shù)據(jù)發(fā)送。
這里采用的是累計確認(rèn)的形式,不像停止等待ARQ,現(xiàn)在不需要對數(shù)據(jù)幀進行逐個的確認(rèn),而是對按序到達的最后一個分組進行確認(rèn),假設(shè)發(fā)送方發(fā)送了5個包,但是第三個包丟失,則接收方只返回前兩個包的ACK,此時發(fā)送方因為不知道后面的三個包有沒有發(fā)送成功,只能選擇這三個包進行重傳。
2)選擇重傳(Selective Repeat)協(xié)議
發(fā)送窗口大小 > 1,接收窗口大小 > 1,當(dāng)發(fā)生數(shù)據(jù)丟失,只重傳丟失的數(shù)據(jù)包。
此時已經(jīng)無法依賴ACK包去做選擇重傳了,因為ACK只能表示收到了哪些包,但中間的包丟失時,則無法表示。
所以在這里引入了SACK**(Selective Acknowledgement)**,存儲在TCP頭部的可變選項中,記錄接收窗口緩存中還未收到的數(shù)據(jù)包信息。
網(wǎng)絡(luò)編程——TCP的特性之自動重傳/流量控制/擁塞控制,一篇說清楚,網(wǎng)絡(luò),Linux應(yīng)用編程,網(wǎng)絡(luò),tcp/ip,服務(wù)器,linux,網(wǎng)絡(luò)協(xié)議
具體例子如下:
網(wǎng)絡(luò)編程——TCP的特性之自動重傳/流量控制/擁塞控制,一篇說清楚,網(wǎng)絡(luò),Linux應(yīng)用編程,網(wǎng)絡(luò),tcp/ip,服務(wù)器,linux,網(wǎng)絡(luò)協(xié)議

1.3 總結(jié)

協(xié)議 窗口大小 是否有序接收 具體做法
停止等待ARQ 發(fā)送=1, 接收=1 有序 發(fā)送窗口每次只能發(fā)送一個數(shù)據(jù)包,然后就停止等待ack包。接收窗口有序的接收數(shù)據(jù)包,接收成功后發(fā)送ack包給發(fā)送窗口,如果收到的數(shù)據(jù)包是無序的,就直接丟棄
連續(xù)ARQ-回退協(xié)議 發(fā)送 = N,接收 = 1 有序 發(fā)送窗口每次最多一次性發(fā)送n個數(shù)據(jù)包,接收窗口有序的接收數(shù)據(jù)包,當(dāng)接收到有序的數(shù)據(jù)包后,發(fā)送ack包給發(fā)送窗口,如果收到的數(shù)據(jù)包時無序的,就直接丟棄。當(dāng)數(shù)據(jù)包丟失的時候,會將發(fā)送窗口中的后面的所有數(shù)據(jù)包都重新發(fā)送
連續(xù)ARQ-選擇重傳協(xié)議 發(fā)送 = N,接收 = N 無序 發(fā)送窗口每次最多一次性發(fā)送n個數(shù)據(jù)包,接收窗口無序的接收數(shù)據(jù)包,當(dāng)接收到數(shù)據(jù)包后,發(fā)送ack包給發(fā)送窗口,ack中會攜帶SACK信息,也就是接收窗口中的緩存信息。發(fā)送端會根據(jù)SACK信息來只重傳丟失的數(shù)據(jù)包

2. TCP的流量控制

目的:防止分組丟失進而觸發(fā)自動重傳機制,造成網(wǎng)絡(luò)流量的浪費。

原理:如果發(fā)送者發(fā)送數(shù)據(jù)過快,接收者來不及接收,那么就會有數(shù)據(jù)分組丟失。為了避免這種分組丟失,接收端會通知發(fā)送端它的接收窗口大?。═CP首部中有一個窗口大小值),此時發(fā)送者也將發(fā)送窗口大小更改為這個值,讓接收者來得及接收。

具體案例:假設(shè)一開始主機A和B的窗口都是400,那么在發(fā)送時,主機A會連續(xù)發(fā)送400個字節(jié)的數(shù)據(jù),如果201~300號意外丟失了,主機B會返回響應(yīng)ACK=1,ack=201,rwnd=300,這表示主機B已接收到201號之前的數(shù)據(jù),并將自己的接收窗口設(shè)置為300。此時A收到后將發(fā)送窗口大小也設(shè)置為300,達到流量控制的目的。

3. TCP的擁塞控制

目的:防止過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中,避免出現(xiàn)網(wǎng)絡(luò)負(fù)載過大的情況,常用的算法就是:
慢開始、擁塞避免、快重傳、快恢復(fù)

原理:發(fā)送方維持一個擁塞窗口cwnd(congestion window)的狀態(tài)變量,擁塞窗口的大小取決于網(wǎng)絡(luò)的擁塞程度,并且動態(tài)地在變化。另外考慮到接受方的接收能力 發(fā)送方的發(fā)送窗口小于或等于擁塞窗口

3.1 慢開始算法

原理:一開始不發(fā)送大量的數(shù)據(jù),防止網(wǎng)絡(luò)負(fù)載過大,由小到大逐漸增加擁塞窗口的大小,來探測網(wǎng)絡(luò)的擁塞程度

具體案例:發(fā)送方每次經(jīng)過一個傳輸輪次之后,擁塞窗口cwnd就直接加倍,這樣比直接一下把許多報文注入網(wǎng)絡(luò)要慢的多。
網(wǎng)絡(luò)編程——TCP的特性之自動重傳/流量控制/擁塞控制,一篇說清楚,網(wǎng)絡(luò),Linux應(yīng)用編程,網(wǎng)絡(luò),tcp/ip,服務(wù)器,linux,網(wǎng)絡(luò)協(xié)議

3.2 擁塞避免算法

原理:當(dāng)擁塞窗口cwnd到達慢開始門限ssthresh后,讓擁塞窗口緩慢增長,每經(jīng)過一個傳輸輪次后,將cwnd值加一,而不是直接加倍。使cwnd已經(jīng)到達一定值的情況下,網(wǎng)絡(luò)不容易出現(xiàn)阻塞。

慢開始門限ssthresh與擁塞窗口cwnd的關(guān)系
當(dāng)cwnd<ssthresh時,使用慢開始算法
當(dāng)cwnd>ssthresh時,改用擁塞避免算法
當(dāng)cwnd=ssthresh時,慢開始與擁塞避免算法任意

具體案例:擁塞窗口cwnd初始值為1,慢開始門限ssthresh初始值是16
1)在cwnd<ssthresh,執(zhí)行慢開始算法,cwnd的值在經(jīng)過一個輪次傳輸后值翻倍
2)當(dāng)cwnd>ssthresh,執(zhí)行擁塞避免算法,每一個輪次,cwnd的值只加1
3)當(dāng)cmnd = 24時,假設(shè)發(fā)生網(wǎng)絡(luò)阻塞,將進行”乘法減小“,ssthresh = cwnd / 2,cwnd為0,重新開始慢開始算法
網(wǎng)絡(luò)編程——TCP的特性之自動重傳/流量控制/擁塞控制,一篇說清楚,網(wǎng)絡(luò),Linux應(yīng)用編程,網(wǎng)絡(luò),tcp/ip,服務(wù)器,linux,網(wǎng)絡(luò)協(xié)議

3.3 快重傳算法

原理:快速進行重傳,當(dāng)接收方在收到一個失序的報文段后就立即發(fā)出重復(fù)確認(rèn),發(fā)送方只要一連收到三個重復(fù)確認(rèn)就認(rèn)為是網(wǎng)絡(luò)阻塞,立即重傳對方尚未收到的報文段,而不必繼續(xù)等待設(shè)置的重傳計時器時間到期。(提高網(wǎng)絡(luò)吞吐量百分之20左右)

具體案例
網(wǎng)絡(luò)編程——TCP的特性之自動重傳/流量控制/擁塞控制,一篇說清楚,網(wǎng)絡(luò),Linux應(yīng)用編程,網(wǎng)絡(luò),tcp/ip,服務(wù)器,linux,網(wǎng)絡(luò)協(xié)議

3.4 快恢復(fù)算法

原理:快速恢復(fù)傳輸,和快重傳搭配使用,當(dāng)發(fā)生快重傳時,進行”乘法減小“算法,此時不會再進行慢開始算法,而是執(zhí)行快恢復(fù)算法,直接將cwnd設(shè)置為ssthresh減半后的值。

具體案例:cwnd為24時,收到三個重復(fù)確認(rèn),則進行快重傳,此時執(zhí)行”乘法減小“算法,ssthresh = cwnd/2,cwnd = ssthresh,直接便開始了擁塞避免算法。

注意:在TCP Reno版本采用快恢復(fù)算法時,慢開始算法只是在TCP連接建立時和網(wǎng)絡(luò)出現(xiàn)超時時才使用,其他例如收到三個重復(fù)的確認(rèn),則會執(zhí)行快恢復(fù)算法。
網(wǎng)絡(luò)編程——TCP的特性之自動重傳/流量控制/擁塞控制,一篇說清楚,網(wǎng)絡(luò),Linux應(yīng)用編程,網(wǎng)絡(luò),tcp/ip,服務(wù)器,linux,網(wǎng)絡(luò)協(xié)議文章來源地址http://www.zghlxwxcb.cn/news/detail-859018.html

到了這里,關(guān)于網(wǎng)絡(luò)編程——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四大機制!小白也能懂?。ㄖ貍鳈C制、滑動窗口、流量控制、擁塞控制)

    八股文——TCP四大機制!小白也能懂?。ㄖ貍鳈C制、滑動窗口、流量控制、擁塞控制)

    TCP巨復(fù)雜!同時在八股計算機網(wǎng)絡(luò)中也經(jīng)常被問到,必須會!這篇文章將讓小白有個大體框架,知道怎么個事,面試中可以有話說,也能讓佬更加鞏固知識點。 TCP是一個可靠的傳輸協(xié)議,為了保證它的可靠性,出現(xiàn)七七八八的機制,它可能有數(shù)據(jù)的破壞、丟包、重復(fù)以及分片

    2024年04月25日
    瀏覽(26)
  • 【網(wǎng)絡(luò)編程】TCP傳輸控制協(xié)議(Transmission Control Protocol)

    【網(wǎng)絡(luò)編程】TCP傳輸控制協(xié)議(Transmission Control Protocol)

    (??? ),Hello我是 祐言QAQ 我的博客主頁:C/C++語言,數(shù)據(jù)結(jié)構(gòu),Linux基礎(chǔ),ARM開發(fā)板,網(wǎng)絡(luò)編程等領(lǐng)域UP?? 快上??,一起學(xué)習(xí),讓我們成為一個強大的攻城獅! 送給自己和讀者的一句雞湯??: 集中起來的意志可以擊穿頑石! 作者水平很有限,如果發(fā)現(xiàn)錯誤,請在評論區(qū)指

    2024年02月09日
    瀏覽(20)
  • 網(wǎng)路原理-傳輸層UDP,TCP/IP(確認(rèn)應(yīng)答,超時重傳,連接管理,三次握手,四次揮手,狀態(tài)轉(zhuǎn)換,流量控制,滑動窗口,擁塞控制,延時應(yīng)答,捎帶應(yīng)答,異常情況,面向字節(jié)流)-網(wǎng)絡(luò)層(IP協(xié)議,地址管理)

    網(wǎng)路原理-傳輸層UDP,TCP/IP(確認(rèn)應(yīng)答,超時重傳,連接管理,三次握手,四次揮手,狀態(tài)轉(zhuǎn)換,流量控制,滑動窗口,擁塞控制,延時應(yīng)答,捎帶應(yīng)答,異常情況,面向字節(jié)流)-網(wǎng)絡(luò)層(IP協(xié)議,地址管理)

    本節(jié)重點 ? 理解傳輸層的作?,深?理解TCP的各項特性和機制 ? 對整個TCP/IP協(xié)議有系統(tǒng)的理解 ? 對TCP/IP協(xié)議體系下的其他重要協(xié)議和技術(shù)有?定的了解 我們之前編寫完了基本的 java socket ,要知道,我們之前所寫的所有代碼都在應(yīng)?層,都是為了 完成某項業(yè)務(wù),如翻譯等。

    2024年04月15日
    瀏覽(27)
  • 網(wǎng)絡(luò)編程——TCP編程

    網(wǎng)絡(luò)編程——TCP編程

    在C語言中進行TCP編程的一般步驟如下: (1) 包含頭文件: 在代碼中包含必要的頭文件,以便使用TCP編程所需的函數(shù)和數(shù)據(jù)類型。通常情況下,你需要包含 sys/socket.h、netinet/in.h 和 arpa/inet.h。 (2) 創(chuàng)建套接字: 使用 socket() 函數(shù)創(chuàng)建一個套接字,該套接字將用于網(wǎng)絡(luò)通信。

    2024年02月05日
    瀏覽(18)
  • 【網(wǎng)絡(luò)編程】網(wǎng)絡(luò)編程套接字(三)TCP網(wǎng)絡(luò)程序

    【網(wǎng)絡(luò)編程】網(wǎng)絡(luò)編程套接字(三)TCP網(wǎng)絡(luò)程序

    與前邊的UDP網(wǎng)絡(luò)程序相同,創(chuàng)建套接字的接口都是socket,下邊對socket接口進行介紹: 協(xié)議家族選擇AF_INET,因為我們要進行網(wǎng)絡(luò)通信。 而第二個參數(shù),為服務(wù)類型,傳入SOCK_STREAM,我們編寫TCP程序,所以要選擇流式的服務(wù)。 第三個參數(shù)默認(rèn)傳入0,由前兩個參數(shù)就可以推出這是

    2024年02月16日
    瀏覽(92)
  • 【網(wǎng)絡(luò)編程】TCP Socket編程

    【網(wǎng)絡(luò)編程】TCP Socket編程

    流套接字: 使用傳輸層TCP協(xié)議 TCP: 即Transmission Control Protocol(傳輸控制協(xié)議),傳輸層協(xié)議。 TCP的特點: 有連接 可靠傳輸 面向字節(jié)流 有接收緩沖區(qū),也有發(fā)送緩沖區(qū) 大小不限 ServerSocket 是 創(chuàng)建TCP服務(wù)端Socket 的API。 注意: ServerSocket 只能用于 服務(wù)器端。 構(gòu)造方法: 方法簽名

    2024年02月07日
    瀏覽(26)
  • 網(wǎng)絡(luò)編程 p4 TCP編程

    網(wǎng)絡(luò)編程 p4 TCP編程

    基本介紹 基于客戶端——服務(wù)端的網(wǎng)絡(luò)通信; 底層使用的是TCP/IP協(xié)議; 應(yīng)用場景舉例:客戶端發(fā)送數(shù)據(jù),服務(wù)端接收并顯示在控制臺; 基于Socket的TCP編程; 示意圖 netstat指令 netstat -an 可以查看當(dāng)前主機網(wǎng)絡(luò)情況,包括 端口監(jiān)聽 情況和 網(wǎng)絡(luò)連接 情況; netstat -an|more 可以分

    2024年02月17日
    瀏覽(19)
  • 【C++】6.網(wǎng)絡(luò)編程:網(wǎng)絡(luò)編程(TCP&UDP)

    【C++】6.網(wǎng)絡(luò)編程:網(wǎng)絡(luò)編程(TCP&UDP)

    網(wǎng)絡(luò)編程是C++ API操作中很重要的一部分,包含 TCP 和 UDP 。 網(wǎng)絡(luò)傳輸模型可以抽象為7個層: 物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會話層、表示層、應(yīng)用層 。 但在使用TCP/IP協(xié)議時,可以簡化為這4層: 網(wǎng)絡(luò)接口、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層 。 TCP:可靠傳輸,三次握手建立

    2024年02月16日
    瀏覽(28)
  • 網(wǎng)絡(luò)編程 TCP電子網(wǎng)絡(luò)詞庫

    ?電子詞典: 要求: 登錄注冊功能,不能重復(fù)登錄,重復(fù)注冊。用戶信息也存儲在數(shù)據(jù)庫中。 單詞查詢功能 歷史記錄功能,存儲單詞,意思,以及查詢時間,存儲在數(shù)據(jù)庫 基于TCP,支持多客戶端連接 采用數(shù)據(jù)庫保存用戶信息與歷史記錄 將dict.txt的數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫中保存。

    2024年02月17日
    瀏覽(13)
  • 網(wǎng)絡(luò)編程『簡易TCP網(wǎng)絡(luò)程序』

    網(wǎng)絡(luò)編程『簡易TCP網(wǎng)絡(luò)程序』

    ??個人主頁: 北 海 ??所屬專欄: Linux學(xué)習(xí)之旅、神奇的網(wǎng)絡(luò)世界 ??操作環(huán)境: CentOS 7.6 阿里云遠程服務(wù)器 隨著數(shù)字時代的來臨,TCP網(wǎng)絡(luò)程序已成為程序員不可或缺的技術(shù)領(lǐng)域。本博客將帶領(lǐng)讀者深入研究,從最基礎(chǔ)的字符串回響開始,逐步探索至多進程、多線程服務(wù)器

    2024年02月04日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包