自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

TCP可靠傳輸,流量控制,擁塞控制,TCP的精華盡在于此

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
正如宮本武藏的口頭禪“排好隊,一個一個來”一樣,使用最笨的方法來解決最難的問題,既然你要可靠那么就一個一個確認(rèn),只要你沒告訴我你收到了,那么我就一直重發(fā)。

 [[334785]]

目錄

  • 抓包過程以及TCP包首部
  • 可靠傳輸
  • 窗口概念引出接收窗口 rwnd 和發(fā)送窗口 cwnd
  • 流量控制舉例來說明具體TCP流量控制過程
  • 擁塞控制慢開始和擁塞避免算法快重傳和快恢復(fù)算法
  • 流量控制和擁塞控制的區(qū)別

抓包過程以及TCP包首部

使用了 Wireshark 進行抓包,用兩個最常用的 curl 和 ping 命令來演示抓包情況,開啟抓包。

  1. ## 先訪問我自己的網(wǎng)站首頁 
  2.  curl https://zengzhiqin.kuaizhan.com  
  3. ## 再查看我自己網(wǎng)站的地址 
  4.  ping https://zengzhiqin.kuaizhan.com 

Wireshark根據(jù) ping 命令得到的地址進行條件過濾,得到上面兩個命令所得到的包,主要有 TCP(https基于tcp協(xié)議)協(xié)議和 ICMP(ping命令是基于 ICMP 協(xié)議)協(xié)議的包,如下圖所示:

 

TCP可靠傳輸,流量控制,擁塞控制,TCP的精華盡在于此

 

抓包分析

 

TCP可靠傳輸,流量控制,擁塞控制,TCP的精華盡在于此

 

TCP首部數(shù)據(jù)一一對應(yīng)

 

TCP可靠傳輸,流量控制,擁塞控制,TCP的精華盡在于此

 

TCP頭部

可靠傳輸

TCP 實現(xiàn)可靠傳輸?shù)乃姆N實現(xiàn)方法:

  • 校驗
  • 序號
  • 確認(rèn)
  • 重傳

第1,2兩種機制,在我公眾號另外一篇有詳細(xì)講解,這里我主要講述第3,4種。

可靠傳輸目的: 就是要讓發(fā)送方發(fā)送的所有數(shù)據(jù),接收方都能完整,按序收到。

正如宮本武藏的口頭禪“排好隊,一個一個來”一樣,使用最笨的方法來解決最難的問題,既然你要可靠那么就一個一個確認(rèn),只要你沒告訴我你收到了,那么我就一直重發(fā)。

可靠傳輸?shù)墓ぷ髟恚和V沟却齾f(xié)議

 

TCP可靠傳輸,流量控制,擁塞控制,TCP的精華盡在于此

 

可靠與不可靠解決方式

我分為了四張圖,豎線代表的是時間軸,RTT代表數(shù)據(jù)包發(fā)過去然后確認(rèn)包發(fā)回來的往返時間,分別是”無差錯你好我好大家好的情況下“,”發(fā)送超時或者失敗“情況下,”確認(rèn)超時“和”確認(rèn)丟失“的情況下來分析的。通過這種確認(rèn)重傳機制,TCP就可以實現(xiàn)可靠傳輸,也就是第3,4點的實現(xiàn)方式。需要知道的一點是,重傳這個動作是發(fā)送方自發(fā)行為,并不需要接收方通知它進行重傳。

窗口概念引出

上面的方法,確實不錯哈,用了最簡單的方法解決了可靠傳輸這個問題,可是網(wǎng)絡(luò)時時刻刻那么忙,我等你一來一回的確認(rèn)宮本武藏一個大招跳出去估計是一節(jié)一節(jié)的落地了,黃花菜都涼了。

上述停止等待協(xié)議最大的問題是信道利用率太低了。

 

TCP可靠傳輸,流量控制,擁塞控制,TCP的精華盡在于此

 

停止等待傳輸

RTT時間是由網(wǎng)絡(luò)狀況決定拯救不了,T2一般也是固定的,由公式可看出,想要提高信道利用率只能從 T1 下手。

 

TCP可靠傳輸,流量控制,擁塞控制,TCP的精華盡在于此

 

流水線傳輸

發(fā)送方可以連續(xù)發(fā)送多個包,不用每次都停下來等待確認(rèn)再繼續(xù)發(fā),將上面這些的連續(xù)發(fā)送的包用一個窗口來包含起來即TCP窗口的由來,如下圖:

 

TCP可靠傳輸,流量控制,擁塞控制,TCP的精華盡在于此

 

滑動窗口

既然你發(fā)送方為了不一個一個包發(fā)可以有窗口技術(shù),那么我接收方肯定也不甘落后得學(xué)起來啊,即不進行一個一個確認(rèn),轉(zhuǎn)而累積確認(rèn)。

 

TCP可靠傳輸,流量控制,擁塞控制,TCP的精華盡在于此

 

接收方累積確認(rèn)方式

接收窗口 rwnd 和發(fā)送窗口 cwnd

此處涉及到二個窗口:

接收窗口receiver window(即rwnd),是接收方根據(jù)自己的承受能力設(shè)置的接收緩存值大小,反映了接收方的接收能力,來做流量控制。

擁塞窗口congestion window(即cwnd),是發(fā)送方根據(jù)網(wǎng)絡(luò)擁塞程度設(shè)置的網(wǎng)絡(luò)窗口值,發(fā)送窗口=min(rwnd,cwnd)即是接收窗口和擁塞窗口的最小值,來做擁塞控制。

窗口數(shù)據(jù)結(jié)構(gòu)如下:

 

TCP可靠傳輸,流量控制,擁塞控制,TCP的精華盡在于此

 

窗口數(shù)據(jù)結(jié)構(gòu)

其實看似這么高深的東西,一步步想過來竟是如此簡單,感嘆一句”啊,聰明的人類“(調(diào)皮一下哈哈哈)。

流量控制

上面說到了通過窗口可以增大信道的利用率,然后就是窗口的大小怎么設(shè)置,設(shè)置多大,窗口還可以用來做什么?

發(fā)送方如果發(fā)的過快,那么接收方就會來不及接受,就會丟包,這肯定不行啊,萬一別人給我發(fā)了很多紅包丟一個我都不想噠~

 

TCP可靠傳輸,流量控制,擁塞控制,TCP的精華盡在于此

 

分段傳輸

流量控制目的:讓發(fā)送方根據(jù)網(wǎng)絡(luò)狀況動態(tài)的調(diào)整發(fā)送頻率,好讓接收方來得及接收。

TCP利用滑動窗口機制實現(xiàn)流量控制。發(fā)送方的發(fā)送窗口是動態(tài)變化的,取決于接收方返回的報文段的窗口大小,可能是數(shù)據(jù)報文段也可能是確認(rèn)報文,因為TCP包首部都有窗口信息,還是這張圖再看一下窗口數(shù)據(jù):

 

TCP可靠傳輸,流量控制,擁塞控制,TCP的精華盡在于此

 

舉例來說明具體TCP流量控制過程

A主機向B主機發(fā)送數(shù)據(jù),建立連接的時候 B 告訴 A:”大哥,我的rwnd=400byte“,假設(shè)每個報文段都是100byte,初始序號是1,三次流量控制溝通過程如下:

 

TCP可靠傳輸,流量控制,擁塞控制,TCP的精華盡在于此

 

舉例來說明具體TCP流量控制過程

這張圖,最后 rwnd=0 了,這種情況持續(xù)到接收端騰出了新的接收緩存之后 B會主動給 A發(fā)送他的新的 rwnd,0窗口通知的時候 A 就會一直等待接收方新的 rwnd 通知,為了防止新的 rwnd 丟失了,之前的文章很多都分析過這種情況,為了解決包超時收不到確認(rèn)設(shè)置了等待一段時間就重傳,四次揮手過程設(shè)置了最后需要等待 2MSL 時間發(fā)送端才關(guān)閉,這些時間都是通過設(shè)置計時器來計時,都是為了解決包丟失了造成死鎖。同樣這里為了解決新的 rwnd 丟失了造成 A 死鎖發(fā)送端只要收到了0窗口通知就會啟動計時器,若時間到了就會重新發(fā)送一個0窗口探測報文,接收方再回復(fù)現(xiàn)在的接收窗口。

 

[[334789]]

 

瘋狂試探

擁塞控制

我家小區(qū)網(wǎng)絡(luò)最好的時候是晚上3-6點,上午10-12點,下午3-5點,這些時間段我玩王者最暢快,晚上8-11點網(wǎng)絡(luò)高峰時段每次卡一下回過神我就站在了泉水(真的好開心)。

試想一下原本網(wǎng)絡(luò)就不好,然后你還一次性向網(wǎng)絡(luò)倒那么多數(shù)據(jù)包,大家都別過去了都超時,然后超時時間到了又都重發(fā),惡性循環(huán)下去使得原本就不富裕的網(wǎng)絡(luò)更加雪上加霜,因此 TCP 你要自己學(xué)聰明,進行擁塞控制。 擁塞控制的目的就是防止過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中,網(wǎng)絡(luò)堵塞使得包一直到不了接收端。

 

TCP可靠傳輸,流量控制,擁塞控制,TCP的精華盡在于此

 

擁塞控制起到的作用

擁塞控制算法有四種:

  1. 慢開始
  2. 擁塞避免
  3. 快重傳
  4. 快恢復(fù)

慢開始和擁塞避免算法

 

TCP可靠傳輸,流量控制,擁塞控制,TCP的精華盡在于此

 

慢開始和擁塞避免算法

一個傳輸輪次指的是發(fā)送了一批報文段并且收到了確認(rèn)的時間 RTT。

慢開始是指數(shù)增長,一直試探網(wǎng)絡(luò)狀況如果健康就一直指數(shù)增長。到了ssthresh值的時候,這是慢開始輪限值,開始線性增長,一直增長到網(wǎng)絡(luò)擁塞的話,跳崖式降低一夜回到解放前,從1開始,將新的ssthresh值調(diào)低為原來擁塞時候的一半又開始指數(shù)增長,就這樣動態(tài)的變化。

快重傳和快恢復(fù)算法

 

TCP可靠傳輸,流量控制,擁塞控制,TCP的精華盡在于此

 

快重傳和快恢復(fù)算法

從圖可以看到這個算法前面和慢開始擁塞避免算法是一致的,主要是調(diào)整了跳崖式降低發(fā)送速率這個地方,這樣從0開始效率太低了,如果是男女朋友間在發(fā)送微信豈不是被折磨的心癢癢。

擁塞窗口cwnd每次指數(shù)增長一次都是在收到了確認(rèn)報文的情況下增長的,比如A發(fā)送1,23,4,5,6這些報文段,2丟失了,1345都收到了那么每次345收到都會給A發(fā)送確認(rèn)1收到了的確認(rèn)報文讓他發(fā)2(這個地方上一篇有提到),這種算法就是在2的超時計時器到期之前收到了三個確認(rèn)之后就馬上重傳2,接收方都催著要了哥,后面三個確認(rèn)包都到了說明網(wǎng)絡(luò)厚愛好的嘛就是你迷路了,因此進行快速重傳還是將新的ssthresh值調(diào)低為原來擁塞時候的一半又開始指數(shù)增長,現(xiàn)在一般是用這種,上面那種方法猶豫效率太低了被淘汰了。

流量控制和擁塞控制的區(qū)別

流量控制是點到點的問題,一對一,如果接收方的數(shù)據(jù)來不及接收那么就能直接找到發(fā)送方這個罪魁禍?zhǔn)?,主要是因為接收方來不及接受發(fā)送方的數(shù)據(jù);

擁塞控制是多對一,一個接收方 面對多個發(fā)送方出現(xiàn)了網(wǎng)絡(luò)擁堵,接收方找不到具體的發(fā)送方,主要是因為網(wǎng)絡(luò)發(fā)生了堵塞發(fā)送方數(shù)據(jù)遲遲到不了接收方。

簡單理解,擁塞控制是路上堵車,流量控制是停車場停車車位不夠。

這篇內(nèi)容陸陸續(xù)續(xù)寫了好幾天了,感覺概念性的東西很多,我已經(jīng)盡量再用聊天式的輕松語氣來寫了。北京今天下雨了,五道口兩旁的樹木長得郁郁蔥蔥,抬頭看見樹葉將天空撕成了碎片,耳機里一直在循環(huán)毛不易低沉性感聲線唱著的”一路山程“,我就這樣撐著傘走在這個都市的心臟上,一路憧憬著未來。

 

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2010-06-10 15:14:32

TCP傳輸控制協(xié)議

2020-02-10 20:54:48

擁塞流量控制

2019-07-02 10:22:15

TCP流量數(shù)據(jù)

2019-04-16 11:02:10

TCPIPLinux

2021-07-27 05:13:12

TCPUDP 擁塞

2020-04-20 10:51:26

TCP擁塞控制網(wǎng)絡(luò)協(xié)議

2023-12-26 01:07:03

TCP擁塞控制

2024-09-06 09:51:47

2010-06-17 17:48:05

TCP傳輸控制協(xié)議

2010-06-13 15:32:57

TCP協(xié)議

2023-10-17 16:30:00

TCP

2022-07-27 07:36:01

TCP可靠性

2021-10-11 14:27:06

TCP擁塞控制

2010-02-03 23:04:31

流量控制P2P華夏創(chuàng)新

2020-08-13 08:43:24

TCP固定窗口滑動窗口

2022-10-17 08:21:29

UDPTCP

2010-06-17 23:21:16

TCP傳輸控制協(xié)議

2023-10-08 12:14:42

Sentinel流量控制

2019-11-26 08:24:13

TCP擁塞控制網(wǎng)絡(luò)協(xié)議

2023-11-30 18:03:02

TCP傳輸
點贊
收藏

51CTO技術(shù)棧公眾號