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

【HBZ分享】TCP可靠性傳輸如何保證的?

這篇具有很好參考價(jià)值的文章主要介紹了【HBZ分享】TCP可靠性傳輸如何保證的?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

ACK機(jī)制

  1. ACK機(jī)制是發(fā)送方與接收方的一個(gè)相互確認(rèn)
  2. 客戶(hù)端向服務(wù)端發(fā)送連接請(qǐng)求,此時(shí)服務(wù)端要回饋給客戶(hù)端ACK,以表示服務(wù)端接到了客戶(hù)端請(qǐng)求,這是第一和的第二次握手
  3. 客戶(hù)端接收到服務(wù)端響應(yīng)后,同樣也要回饋服務(wù)端的響應(yīng),告知服務(wù)端我收到了你的回饋,我們可以進(jìn)行傳輸數(shù)據(jù)了,此時(shí)客戶(hù)端就會(huì)帶著數(shù)據(jù)發(fā)送給服務(wù)端。、
  4. 以上就是ACK機(jī)制,只有當(dāng)雙方都確認(rèn)了,才會(huì)進(jìn)行數(shù)據(jù)發(fā)送

流量控制

  1. 流量控制是接收方發(fā)起的,即服務(wù)器端
  2. 服務(wù)器端通過(guò)win來(lái)告知客戶(hù)端自己還剩多少流量來(lái)接受數(shù)據(jù)
  3. 比如服務(wù)端告知客戶(hù)端我只有200個(gè)字段的流量了,則此時(shí)服務(wù)端會(huì)攜帶一個(gè)rwnd = 200的報(bào)文給客戶(hù)端,這是客戶(hù)端就知道了服務(wù)端能接收的流量,那么客戶(hù)端發(fā)送的數(shù)據(jù)包就不會(huì)超過(guò)200字節(jié)

擁塞控制

  1. 擁塞控制是發(fā)送方發(fā)起的,即客戶(hù)端,是一種自適應(yīng)算法,利用多種機(jī)制,根據(jù)網(wǎng)絡(luò)狀況自動(dòng)調(diào)整發(fā)送頻率,以避免網(wǎng)絡(luò)擁堵
  2. 慢啟動(dòng):發(fā)送端會(huì)以一個(gè)較小的窗口值開(kāi)始發(fā)送,每收到一個(gè)ACK后,下一次窗口值就會(huì)翻倍增加,知道窗口值達(dá)到最大值位置。如果過(guò)程中沒(méi)有丟包,那就會(huì)加快發(fā)送的速度頻率,如果丟包,就會(huì)降低發(fā)送速度
  3. 快速重傳:當(dāng)發(fā)送端發(fā)送的數(shù)據(jù)報(bào)文沒(méi)有在規(guī)定時(shí)間內(nèi)收到ACK回復(fù),發(fā)送端會(huì)認(rèn)為該數(shù)據(jù)報(bào)文丟失了,那客戶(hù)端就會(huì)立刻重傳
  4. 擁塞避免:當(dāng)收到3個(gè)重復(fù)ACK,注意,這里是收到。發(fā)送端會(huì)認(rèn)為網(wǎng)絡(luò)擁塞,他會(huì)減少發(fā)送速率。并降低發(fā)送端發(fā)送的數(shù)據(jù)量,從而減少網(wǎng)絡(luò)擁塞現(xiàn)象

重傳機(jī)制

  1. 觸發(fā)重傳也有很多種方式
  2. 超時(shí)重傳:超過(guò)等待時(shí)間依然沒(méi)有收到ACK響應(yīng),則會(huì)重傳, 一般來(lái)說(shuō)超時(shí)時(shí)間(RTO) > 往返時(shí)間(RTT), 往返時(shí)間就是發(fā)送到服務(wù)端,再由服務(wù)端返回的兩段時(shí)間相加
  3. 快速重傳(數(shù)據(jù)驅(qū)動(dòng)): TCP會(huì)給每個(gè)包編號(hào)seq, 第一個(gè)包編號(hào)就是隨機(jī)數(shù),接收方收到多個(gè)包后,方便組裝還原,如果發(fā)生丟包,可以知道是哪一個(gè)包丟了。
  4. 比如服務(wù)端收到6號(hào)包,但沒(méi)有收到14號(hào)包,ACK就會(huì)記錄,期待收到14號(hào)包。過(guò)了一段時(shí)間,14號(hào)包還是沒(méi)收到,但是收到了24號(hào)包,ACK里面編號(hào)不會(huì)變化,會(huì)一直期待收到14號(hào)包。所以就會(huì)不斷的重試。當(dāng)客戶(hù)端收到了3個(gè)連續(xù)的ACK回復(fù) 或 超時(shí)了還沒(méi)收到ACK,會(huì)認(rèn)為14號(hào)包丟失,會(huì)重新發(fā)14號(hào)包,因?yàn)?4號(hào)包已經(jīng)記錄在A(yíng)CK編號(hào)里面了,所以客戶(hù)端收到的ACK就會(huì)有期待14號(hào)包的信息,重傳成功后,雙方才會(huì)進(jìn)行正常通信。
  5. 缺點(diǎn):快速重傳解決了時(shí)間超時(shí)問(wèn)題,但存在重傳的時(shí)候,究竟是重傳丟失的那一個(gè)包,還是重傳丟失包之后的所有包。因?yàn)閬G失的包會(huì)導(dǎo)致后面的包不會(huì)記錄在A(yíng)CK中,所以此時(shí)客戶(hù)端時(shí)不知道后面的包是否已經(jīng)收到

TCP傳輸優(yōu)化-Nagle算法,即流量控制算法

  1. TCP協(xié)議中,無(wú)論發(fā)送多少大小的數(shù)據(jù),每次都會(huì)帶上協(xié)議頭
  2. 如果數(shù)據(jù)量太小,甚至小于協(xié)議頭的數(shù)據(jù)量,并且請(qǐng)求頻率極高,那么就會(huì)浪費(fèi)資源,協(xié)議頭的內(nèi)容就會(huì)占很大資源,并且頻率高,數(shù)據(jù)小,也會(huì)造成擁塞,并占用資源
  3. TCP默認(rèn)開(kāi)啟了Nagle算法
  4. Nagle算法會(huì)將多個(gè)小包囤積 并 合并,然后一起發(fā)送,類(lèi)似于kafka的buffer機(jī)制。
  5. Nagle算法只有當(dāng)收到服務(wù)器響應(yīng)的時(shí)候,才會(huì)發(fā)送第二個(gè)包,否則不會(huì)發(fā)送。當(dāng)然也不會(huì)一直等,當(dāng)長(zhǎng)時(shí)間沒(méi)收到服務(wù)器響應(yīng),超過(guò)了超時(shí)時(shí)間,則會(huì)立即發(fā)送,即使每收到服務(wù)器響應(yīng)也會(huì)發(fā)送。或者數(shù)據(jù)長(zhǎng)度達(dá)到了MSS大小時(shí),即使沒(méi)收到服務(wù)端響應(yīng),也會(huì)立即發(fā)送第二個(gè)數(shù)據(jù)包
  6. 缺點(diǎn):實(shí)時(shí)性差,延遲很大,因?yàn)檎G闆r下只有收到服務(wù)器響應(yīng),才會(huì)發(fā)送第二個(gè)數(shù)據(jù)包,所以當(dāng)實(shí)時(shí)性是強(qiáng)需求時(shí),需要關(guān)閉Nagle算法

文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-692097.html

到了這里,關(guān)于【HBZ分享】TCP可靠性傳輸如何保證的?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • TCP消息傳輸可靠性保證

    TCP消息傳輸可靠性保證

    三次握手 TCP 提供面向有連接的通信傳輸。面向有連接是指在數(shù)據(jù)通信開(kāi)始之前先做好兩端之間的準(zhǔn)備工作。 所謂三次握手是指建立一個(gè) TCP 連接時(shí)需要客戶(hù)端和服務(wù)器端總共發(fā)送三個(gè)包以確認(rèn)連接的建立。在socket編程中,這一過(guò)程由客戶(hù)端執(zhí)行connect來(lái)觸發(fā)。 第一次握手:客

    2024年02月12日
    瀏覽(21)
  • rabbitmq如何保證消息的可靠性傳輸(簡(jiǎn)述版本)?

    我需要從三點(diǎn)去考慮, 生產(chǎn)者弄丟了數(shù)據(jù),生產(chǎn)者將消息發(fā)送的Exchange并且路由到隊(duì)列 隊(duì)列需要將消息給它持久化 消費(fèi)者要成功消費(fèi)隊(duì)列中的消息 RabbitMQ提供了confirm機(jī)制,保證了消息消息發(fā)送的Exchange交換機(jī),那么還提供了return機(jī)制,可以保證消息從exchange路由到隊(duì)列中,如

    2024年02月13日
    瀏覽(26)
  • TCP如何保證服務(wù)的可靠性

    TCP如何保證服務(wù)的可靠性

    TCP保證可靠性一般有以下幾種方法: (1) 確認(rèn)應(yīng)答 :ACK和序列號(hào) (2) 超時(shí)重傳 :發(fā)送數(shù)據(jù)包在一定的時(shí)間周期內(nèi)沒(méi)有收到相應(yīng)的ACK,等待一定的時(shí)間,超時(shí)之后就認(rèn)為這個(gè)數(shù)據(jù)包丟失,就會(huì)重新發(fā)送 (3) 流量控制 :控制發(fā)送方發(fā)送窗口的大小來(lái)實(shí)現(xiàn)流量控制 (4) 擁

    2024年02月15日
    瀏覽(20)
  • 2.6 TCP與UDP的可靠性傳輸

    2.6 TCP與UDP的可靠性傳輸

    參考小林圖解網(wǎng)絡(luò) 1.1、超時(shí)重傳 超時(shí)重傳,就是在發(fā)送數(shù)據(jù)時(shí),設(shè)定一個(gè)定時(shí)器,當(dāng)超過(guò)指定的時(shí)間后,沒(méi)有收到對(duì)方的 ACK 確認(rèn)應(yīng)答報(bào)文,就會(huì)重發(fā)該數(shù)據(jù)。 TCP 會(huì)在以下兩種情況發(fā)生超時(shí)重傳: 數(shù)據(jù)包丟失 確認(rèn)應(yīng)答丟失 超時(shí)重傳時(shí)間 RTO是一個(gè)動(dòng)態(tài)變化的值,其值應(yīng)該略

    2024年02月09日
    瀏覽(21)
  • RabbitMQ如何保證消息可靠性

    RabbitMQ如何保證消息可靠性

    目錄 1、RabbitMQ消息丟失的可能性 1.1 生產(chǎn)者消息丟失場(chǎng)景 1.2 MQ導(dǎo)致消息丟失 1.3 消費(fèi)者丟失 2、如何保證生產(chǎn)者消息的可靠性 2.1 生產(chǎn)者重試機(jī)制 2.2 生產(chǎn)者確認(rèn)機(jī)制 2.3 實(shí)現(xiàn)生產(chǎn)者確認(rèn) 2.3.1 配置yml開(kāi)啟生產(chǎn)者確認(rèn) 2.3.2 定義ReturnCallback 2.3.3 定義ConfirmCallback 3、MQ消息可靠性 3.1

    2024年02月20日
    瀏覽(25)
  • [rocketmq] 如何保證消息可靠性

    1、生產(chǎn)者發(fā)送消息到Broker時(shí); 2、Broker內(nèi)部存儲(chǔ)消息到磁盤(pán)以及主從復(fù)制同步時(shí); 3、Broker把消息推送給消費(fèi)者或者消費(fèi)者主動(dòng)拉取消息時(shí); 1.重試策略,發(fā)送消息失敗后會(huì)進(jìn)行一定的重試策略 重試機(jī)制:固定重試次數(shù),同步刷盤(pán)會(huì)切換 broker 重試,異步刷盤(pán)會(huì)在同一 broker

    2024年02月11日
    瀏覽(30)
  • 計(jì)算機(jī)網(wǎng)絡(luò)學(xué)習(xí)09(TCP傳輸可靠性保障)

    計(jì)算機(jī)網(wǎng)絡(luò)學(xué)習(xí)09(TCP傳輸可靠性保障)

    1、TCP 如何保證傳輸?shù)目煽啃裕?基于數(shù)據(jù)塊傳輸 : 應(yīng)用數(shù)據(jù)被分割成 TCP 認(rèn)為最適合發(fā)送的數(shù)據(jù)塊,再傳輸給網(wǎng)絡(luò)層,數(shù)據(jù)塊被稱(chēng)為報(bào)文段或段。 對(duì)失序數(shù)據(jù)包重新排序以及去重: TCP 為了保證不發(fā)生丟包,就給每個(gè)包一個(gè)序列號(hào),有了序列號(hào)能夠?qū)⒔邮盏降臄?shù)據(jù)根據(jù)序列號(hào)

    2024年02月01日
    瀏覽(25)
  • 如何保證 RabbitMQ 的消息可靠性?

    如何保證 RabbitMQ 的消息可靠性?

    項(xiàng)目開(kāi)發(fā)中經(jīng)常會(huì)使用消息隊(duì)列來(lái) 完成異步處理、應(yīng)用解耦、流量控制等功能 。雖然消息隊(duì)列的出現(xiàn)解決了一些場(chǎng)景下的問(wèn)題,但是同時(shí)也引出了一些問(wèn)題,其中使用消息隊(duì)列時(shí)如何保證消息的可靠性就是一個(gè)常見(jiàn)的問(wèn)題。 如果在項(xiàng)目中遇到需要保證消息一定被消費(fèi)的場(chǎng)景

    2024年02月07日
    瀏覽(27)
  • 如何保證消息的可靠性(面試題)

    如何保證消息的可靠性(面試題)

    面試題 :Rebbitmq怎么保證消息的可靠性 消費(fèi)者在接收到消息后,默認(rèn)情況下RabbitMQ會(huì)自動(dòng)確認(rèn)消息(autoAck=true)。為保證消息可靠性,可以設(shè)置autoAck=false,使得消費(fèi)者在處理完消息后手動(dòng)發(fā)送確認(rèn)(basicAck)。如果消費(fèi)者在處理過(guò)程中發(fā)生異?;蛘呶赐瓿商幚砭徒K止運(yùn)行,那

    2024年04月14日
    瀏覽(27)
  • rabbitmq如何保證消息的可靠性

    RabbitMQ可以通過(guò)以下方式來(lái)保證消息的可靠性: 在發(fā)布消息時(shí),可以設(shè)置消息的delivery mode為2,這樣消息會(huì)被持久化存儲(chǔ)在磁盤(pán)上,即使RabbitMQ服務(wù)器重啟,消息也不會(huì)丟失。 可以創(chuàng)建持久化的隊(duì)列,這樣即使RabbitMQ服務(wù)器重啟,隊(duì)列也不會(huì)丟失。 在消費(fèi)者端,可以 設(shè)置手動(dòng)

    2024年01月23日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包