色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

TCP/IP需要掌握的知識點(diǎn)(面試高頻)

廣東微電科技有限公司 ? 2021-12-07 10:31 ? 次閱讀

?

圖片

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

TCP/IP十個(gè)問題

一、TCP/IP模型

TCP/IP協(xié)議模型(Transmission Control Protocol/Internet Protocol),包含了一系列構(gòu)成互聯(lián)網(wǎng)基礎(chǔ)的網(wǎng)絡(luò)協(xié)議,是Internet的核心協(xié)議。

基于TCP/IP的參考模型將協(xié)議分成四個(gè)層次,它們分別是鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。下圖表示TCP/IP模型與OSI模型各層的對照關(guān)系。

圖片

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

TCP/IP協(xié)議族按照層次由上到下,層層包裝。最上面的是應(yīng)用層,這里面有http,ftp,等等我們熟悉的協(xié)議。而第二層則是傳輸層,著名的TCP和UDP協(xié)議就在這個(gè)層次。第三層是網(wǎng)絡(luò)層,IP協(xié)議就在這里,它負(fù)責(zé)對數(shù)據(jù)加上IP地址和其他的數(shù)據(jù)以確定傳輸?shù)哪繕?biāo)。第四層是數(shù)據(jù)鏈路層,這個(gè)層次為待傳送的數(shù)據(jù)加入一個(gè)以太網(wǎng)協(xié)議頭,并進(jìn)行CRC編碼,為最后的數(shù)據(jù)傳輸做準(zhǔn)備。

圖片

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

上圖清楚地表示了TCP/IP協(xié)議中每個(gè)層的作用,而TCP/IP協(xié)議通信的過程其實(shí)就對應(yīng)著數(shù)據(jù)入棧與出棧的過程。入棧的過程,數(shù)據(jù)發(fā)送方每層不斷地封裝首部與尾部,添加一些傳輸?shù)?a target="_blank">信息,確保能傳輸?shù)侥康牡亍3鰲5倪^程,數(shù)據(jù)接收方每層不斷地拆除首部與尾部,得到最終傳輸?shù)臄?shù)據(jù)。

圖片

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

上圖以HTTP協(xié)議為例,具體說明。

二、數(shù)據(jù)鏈路層

物理層負(fù)責(zé)0、1比特流與物理設(shè)備電壓高低、光的閃滅之間的互換。
數(shù)據(jù)鏈路層負(fù)責(zé)將0、1序列劃分為數(shù)據(jù)幀從一個(gè)節(jié)點(diǎn)傳輸?shù)脚R近的另一個(gè)節(jié)點(diǎn),這些節(jié)點(diǎn)是通過MAC來唯一標(biāo)識的(MAC,物理地址,一個(gè)主機(jī)會有一個(gè)MAC地址)。

圖片

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

封裝成幀: 把網(wǎng)絡(luò)層數(shù)據(jù)報(bào)加頭和尾,封裝成幀,幀頭中包括源MAC地址和目的MAC地址。

透明傳輸:零比特填充、轉(zhuǎn)義字符。

可靠傳輸: 在出錯(cuò)率很低的鏈路上很少用,但是無線鏈路WLAN會保證可靠傳輸。

差錯(cuò)檢測(CRC):接收者檢測錯(cuò)誤,如果發(fā)現(xiàn)差錯(cuò),丟棄該幀。

三、網(wǎng)絡(luò)層

1.IP協(xié)議

IP協(xié)議是TCP/IP協(xié)議的核心,所有的TCP,UDP,IMCP,IGMP的數(shù)據(jù)都以IP數(shù)據(jù)格式傳輸。要注意的是,IP不是可靠的協(xié)議,這是說,IP協(xié)議沒有提供一種數(shù)據(jù)未傳達(dá)以后的處理機(jī)制,這被認(rèn)為是上層協(xié)議:TCP或UDP要做的事情。

1.1 IP地址

在數(shù)據(jù)鏈路層中我們一般通過MAC地址來識別不同的節(jié)點(diǎn),而在IP層我們也要有一個(gè)類似的地址標(biāo)識,這就是IP地址。

32位IP地址分為網(wǎng)絡(luò)位和地址位,這樣做可以減少路由器中路由表記錄的數(shù)目,有了網(wǎng)絡(luò)地址,就可以限定擁有相同網(wǎng)絡(luò)地址的終端都在同一個(gè)范圍內(nèi),那么路由表只需要維護(hù)一條這個(gè)網(wǎng)絡(luò)地址的方向,就可以找到相應(yīng)的這些終端了。

A類IP地址:0.0.0.0~127.0.0.0
B類IP地址:128.0.0.1~191.255.0.0
C類IP地址:192.168.0.0~239.255.255.0
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

1.2 IP協(xié)議頭

圖片

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

這里只介紹:八位的TTL字段。這個(gè)字段規(guī)定該數(shù)據(jù)包在穿過多少個(gè)路由之后才會被拋棄。某個(gè)IP數(shù)據(jù)包每穿過一個(gè)路由器,該數(shù)據(jù)包的TTL數(shù)值就會減少1,當(dāng)該數(shù)據(jù)包的TTL成為零,它就會被自動拋棄。


這個(gè)字段的最大值也就是255,也就是說一個(gè)協(xié)議包也就在路由器里面穿行255次就會被拋棄了,根據(jù)系統(tǒng)的不同,這個(gè)數(shù)字也不一樣,一般是32或者是64。

2.ARP及RARP協(xié)議

ARP 是根據(jù)IP地址獲取MAC地址的一種協(xié)議。

ARP(地址解析)協(xié)議是一種解析協(xié)議,本來主機(jī)是完全不知道這個(gè)IP對應(yīng)的是哪個(gè)主機(jī)的哪個(gè)接口,當(dāng)主機(jī)要發(fā)送一個(gè)IP包的時(shí)候,會首先查一下自己的ARP高速緩存(就是一個(gè)IP-
MAC地址對應(yīng)表緩存)。

如果查詢的IP-MAC值對不存在,那么主機(jī)就向網(wǎng)絡(luò)發(fā)送一個(gè)ARP協(xié)議廣播包,這個(gè)廣播包里面就有待查詢的IP地址,而直接收到這份廣播的包的所有主機(jī)都會查詢自己的IP地址,如果收到廣播包的某一個(gè)主機(jī)發(fā)現(xiàn)自己符合條件,那么就準(zhǔn)備好一個(gè)包含自己的MAC地址的ARP包傳送給發(fā)送ARP廣播的主機(jī)。

而廣播主機(jī)拿到ARP包后會更新自己的ARP緩存(就是存放IP-
MAC對應(yīng)表的地方)。發(fā)送廣播的主機(jī)就會用新的ARP緩存數(shù)據(jù)準(zhǔn)備好數(shù)據(jù)鏈路層的的數(shù)據(jù)包發(fā)送工作。

RARP協(xié)議的工作與此相反,不做贅述。

3. ICMP協(xié)議

IP協(xié)議并不是一個(gè)可靠的協(xié)議,它不保證數(shù)據(jù)被送達(dá),那么,自然的,保證數(shù)據(jù)送達(dá)的工作應(yīng)該由其他的模塊來完成。其中一個(gè)重要的模塊就是ICMP(網(wǎng)絡(luò)控制報(bào)文)協(xié)議。ICMP不是高層協(xié)議,而是IP層的協(xié)議。

當(dāng)傳送IP數(shù)據(jù)包發(fā)生錯(cuò)誤。比如主機(jī)不可達(dá),路由不可達(dá)等等,ICMP協(xié)議將會把錯(cuò)誤信息封包,然后傳送回給主機(jī)。給主機(jī)一個(gè)處理錯(cuò)誤的機(jī)會,這
也就是為什么說建立在IP層以上的協(xié)議是可能做到安全的原因。

四、ping

ping可以說是ICMP的最著名的應(yīng)用,是TCP/IP協(xié)議的一部分。利用“ping”命令可以檢查網(wǎng)絡(luò)是否連通,可以很好地幫助我們分析和判定網(wǎng)絡(luò)故障。

例如:當(dāng)我們某一個(gè)網(wǎng)站上不去的時(shí)候。通常會ping一下這個(gè)網(wǎng)站。ping會回顯出一些有用的信息。一般的信息如下:

圖片

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

ping這個(gè)單詞源自聲納定位,而這個(gè)程序的作用也確實(shí)如此,它利用ICMP協(xié)議包來偵測另一個(gè)主機(jī)是否可達(dá)。原理是用類型碼為0的ICMP發(fā)請
求,受到請求的主機(jī)則用類型碼為8的ICMP回應(yīng)。

ping程序來計(jì)算間隔時(shí)間,并計(jì)算有多少個(gè)包被送達(dá)。用戶就可以判斷網(wǎng)絡(luò)大致的情況。我們可以看到, ping給出來了傳送的時(shí)間和TTL的數(shù)據(jù)。

五、Traceroute

Traceroute是用來偵測主機(jī)到目的主機(jī)之間所經(jīng)路由情況的重要工具,也是最便利的工具。

Traceroute的原理是非常非常的有意思,它收到到目的主機(jī)的IP后,首先給目的主機(jī)發(fā)送一個(gè)TTL=1的UDP數(shù)據(jù)包,而經(jīng)過的第一個(gè)路由器收到這個(gè)數(shù)據(jù)包以后,就自動把TTL減1,而TTL變?yōu)?以后,路由器就把這個(gè)包給拋棄了,并同時(shí)產(chǎn)生
一個(gè)主機(jī)不可達(dá)的ICMP數(shù)據(jù)報(bào)給主機(jī)。主機(jī)收到這個(gè)數(shù)據(jù)報(bào)以后再發(fā)一個(gè)TTL=2的UDP數(shù)據(jù)報(bào)給目的主機(jī),然后刺激第二個(gè)路由器給主機(jī)發(fā)ICMP數(shù)據(jù)
報(bào)。如此往復(fù)直到到達(dá)目的主機(jī)。這樣,traceroute就拿到了所有的路由器IP。

圖片

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

六、TCP/UDP

TCP/UDP都是是傳輸層協(xié)議,但是兩者具有不同的特性,同時(shí)也具有不同的應(yīng)用場景,下面以圖表的形式對比分析。

圖片

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

面向報(bào)文

面向報(bào)文的傳輸方式是應(yīng)用層交給UDP多長的報(bào)文,UDP就照樣發(fā)送,即一次發(fā)送一個(gè)報(bào)文。因此,應(yīng)用程序必須選擇合適大小的報(bào)文。若報(bào)文太長,則IP層需要分片,降低效率。若太短,會是IP太小。

面向字節(jié)流

面向字節(jié)流的話,雖然應(yīng)用程序和TCP的交互是一次一個(gè)數(shù)據(jù)塊(大小不等),但TCP把應(yīng)用程序看成是一連串的無結(jié)構(gòu)的字節(jié)流。TCP有一個(gè)緩沖,當(dāng)應(yīng)用程序傳送的數(shù)據(jù)塊太長,TCP就可以把它劃分短一些再傳送。

關(guān)于擁塞控制,流量控制,是TCP的重點(diǎn),后面講解。

TCP和UDP協(xié)議的一些應(yīng)用

圖片

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

什么時(shí)候應(yīng)該使用TCP?

當(dāng)對網(wǎng)絡(luò)通訊質(zhì)量有要求的時(shí)候,比如:整個(gè)數(shù)據(jù)要準(zhǔn)確無誤的傳遞給對方,這往往用于一些要求可靠的應(yīng)用,比如HTTP、HTTPS、FTP等傳輸文件的協(xié)議,POP、SMTP等郵件傳輸?shù)膮f(xié)議。

什么時(shí)候應(yīng)該使用UDP?

當(dāng)對網(wǎng)絡(luò)通訊質(zhì)量要求不高的時(shí)候,要求網(wǎng)絡(luò)通訊速度能盡量的快,這時(shí)就可以使用UDP。

七、DNS

DNS(Domain Name
System,域名系統(tǒng)),因特網(wǎng)上作為域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫,能夠使用戶更方便的訪問互聯(lián)網(wǎng),而不用去記住能夠被機(jī)器直接讀取的IP數(shù)串。通過主機(jī)名,最終得到該主機(jī)名對應(yīng)的IP地址的過程叫做域名解析(或主機(jī)名解析)。DNS協(xié)議運(yùn)行在UDP協(xié)議之上,使用端口號53。

八、TCP連接的建立與終止

1.三次握手

TCP是面向連接的,無論哪一方向另一方發(fā)送數(shù)據(jù)之前,都必須先在雙方之間建立一條連接。在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),連接是通過三次握手進(jìn)行初始化的。三次握手的目的是同步連接雙方的序列號和確認(rèn)號并交換
TCP窗口大小信息。

圖片

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

第一次握手:建立連接。客戶端發(fā)送連接請求報(bào)文段,將SYN位置為1,Sequence
Number為x;然后,客戶端進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器的確認(rèn);

第二次握手:服務(wù)器收到SYN報(bào)文段。服務(wù)器收到客戶端的SYN報(bào)文段,需要對這個(gè)SYN報(bào)文段進(jìn)行確認(rèn),設(shè)置Acknowledgment Number為x+1(Sequence Number+1);同時(shí),自己自己還要發(fā)送SYN請求信息,將SYN位置為1,Sequence
Number為y;服務(wù)器端將上述所有信息放到一個(gè)報(bào)文段(即SYN+ACK報(bào)文段)中,一并發(fā)送給客戶端,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);

第三次握手:客戶端收到服務(wù)器的SYN+ACK報(bào)文段。然后將Acknowledgment
Number設(shè)置為y+1,向服務(wù)器發(fā)送ACK報(bào)文段,這個(gè)報(bào)文段發(fā)送完畢以后,客戶端和服務(wù)器端都進(jìn)入ESTABLISHED狀態(tài),完成TCP三次握手。

為什么要三次握手?

為了防止已失效的連接請求報(bào)文段突然又傳送到了服務(wù)端,因而產(chǎn)生錯(cuò)誤。

具體例子:“已失效的連接請求報(bào)文段”的產(chǎn)生在這樣一種情況下:client發(fā)出的第一個(gè)連接請求報(bào)文段并沒有丟失,而是在某個(gè)網(wǎng)絡(luò)結(jié)點(diǎn)長時(shí)間的滯留了,以致延誤到連接釋放以后的某個(gè)時(shí)間才到達(dá)server。本來這是一個(gè)早已失效的報(bào)文段。但server收到此失效的連接請求報(bào)文段后,就誤認(rèn)為是client再次發(fā)出的一個(gè)新的連接請求。于是就向client發(fā)出確認(rèn)報(bào)文段,同意建立連接。假設(shè)不采用“三次握手”,那么只要server發(fā)出確認(rèn),新的連接就建立了。由于現(xiàn)在client并沒有發(fā)出建立連接的請求,因此不會理睬server的確認(rèn),也不會向server發(fā)送數(shù)據(jù)。但server卻以為新的運(yùn)輸連接已經(jīng)建立,并一直等待client發(fā)來數(shù)據(jù)。這樣,server的很多資源就白白浪費(fèi)掉了。采用“三次握手”的辦法可以防止上述現(xiàn)象發(fā)生。例如剛才那種情況,client不會向server的確認(rèn)發(fā)出確認(rèn)。server由于收不到確認(rèn),就知道client并沒有要求建立連接。”

2.四次揮手

當(dāng)客戶端和服務(wù)器通過三次握手建立了TCP連接以后,當(dāng)數(shù)據(jù)傳送完畢,肯定是要斷開TCP連接的啊。那對于TCP的斷開連接,這里就有了神秘的“四次分手”。

圖片

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

第一次分手:主機(jī)1(可以使客戶端,也可以是服務(wù)器端),設(shè)置Sequence
Number,向主機(jī)2發(fā)送一個(gè)FIN報(bào)文段;此時(shí),主機(jī)1進(jìn)入FIN_WAIT_1狀態(tài);這表示主機(jī)1沒有數(shù)據(jù)要發(fā)送給主機(jī)2了;

第二次分手:主機(jī)2收到了主機(jī)1發(fā)送的FIN報(bào)文段,向主機(jī)1回一個(gè)ACK報(bào)文段,Acknowledgment Number為Sequence Number加1;主機(jī)1進(jìn)入FIN_WAIT_2狀態(tài);主機(jī)2告訴主機(jī)1,我“同意”你的關(guān)閉請求;

第三次分手:主機(jī)2向主機(jī)1發(fā)送FIN報(bào)文段,請求關(guān)閉連接,同時(shí)主機(jī)2進(jìn)入LAST_ACK狀態(tài);

第四次分手:主機(jī)1收到主機(jī)2發(fā)送的FIN報(bào)文段,向主機(jī)2發(fā)送ACK報(bào)文段,然后主機(jī)1進(jìn)入TIME_WAIT狀態(tài);主機(jī)2收到主機(jī)1的ACK報(bào)文段以后,就關(guān)閉連接;此時(shí),主機(jī)1等待2MSL后依然沒有收到回復(fù),則證明Server端已正常關(guān)閉,那好,主機(jī)1也可以關(guān)閉連接了。

為什么要四次分手?

TCP協(xié)議是一種面向連接的、可靠的、基于字節(jié)流的運(yùn)輸層通信協(xié)議。TCP是全雙工模式,這就意味著,當(dāng)主機(jī)1發(fā)出FIN報(bào)文段時(shí),只是表示主機(jī)1已經(jīng)沒有數(shù)據(jù)要發(fā)送了,主機(jī)1告訴主機(jī)2,它的數(shù)據(jù)已經(jīng)全部發(fā)送完畢了;但是,這個(gè)時(shí)候主機(jī)1還是可以接受來自主機(jī)2的數(shù)據(jù);當(dāng)主機(jī)2返回ACK報(bào)文段時(shí),表示它已經(jīng)知道主機(jī)1沒有數(shù)據(jù)發(fā)送了,但是主機(jī)2還是可以發(fā)送數(shù)據(jù)到主機(jī)1的;當(dāng)主機(jī)2也發(fā)送了FIN報(bào)文段時(shí),這個(gè)時(shí)候就表示主機(jī)2也沒有數(shù)據(jù)要發(fā)送了,就會告訴主機(jī)1,我也沒有數(shù)據(jù)要發(fā)送了,之后彼此就會愉快的中斷這次TCP連接。

為什么要等待2MSL?

MSL:報(bào)文段最大生存時(shí)間,它是任何報(bào)文段被丟棄前在網(wǎng)絡(luò)內(nèi)的最長時(shí)間。
原因有二:

保證TCP協(xié)議的全雙工連接能夠可靠關(guān)閉

保證這次連接的重復(fù)數(shù)據(jù)段從網(wǎng)絡(luò)中消失

第一點(diǎn):如果主機(jī)1直接CLOSED了,那么由于IP協(xié)議的不可靠性或者是其它網(wǎng)絡(luò)原因,導(dǎo)致主機(jī)2沒有收到主機(jī)1最后回復(fù)的ACK。那么主機(jī)2就會在超時(shí)之后繼續(xù)發(fā)送FIN,此時(shí)由于主機(jī)1已經(jīng)CLOSED了,就找不到與重發(fā)的FIN對應(yīng)的連接。所以,主機(jī)1不是直接進(jìn)入CLOSED,而是要保持TIME_WAIT,當(dāng)再次收到FIN的時(shí)候,能夠保證對方收到ACK,最后正確的關(guān)閉連接。

第二點(diǎn):如果主機(jī)1直接CLOSED,然后又再向主機(jī)2發(fā)起一個(gè)新連接,我們不能保證這個(gè)新連接與剛關(guān)閉的連接的端口號是不同的。也就是說有可能新連接和老連接的端口號是相同的。一般來說不會發(fā)生什么問題,但是還是有特殊情況出現(xiàn):假設(shè)新連接和已經(jīng)關(guān)閉的老連接端口號是一樣的,如果前一次連接的某些數(shù)據(jù)仍然滯留在網(wǎng)絡(luò)中,這些延遲數(shù)據(jù)在建立新連接之后才到達(dá)主機(jī)2,由于新連接和老連接的端口號是一樣的,TCP協(xié)議就認(rèn)為那個(gè)延遲的數(shù)據(jù)是屬于新連接的,這樣就和真正的新連接的數(shù)據(jù)包發(fā)生混淆了。所以TCP連接還要在TIME_WAIT狀態(tài)等待2倍MSL,這樣可以保證本次連接的所有數(shù)據(jù)都從網(wǎng)絡(luò)中消失。

九、TCP流量控制

如果發(fā)送方把數(shù)據(jù)發(fā)送得過快,接收方可能會來不及接收,這就會造成數(shù)據(jù)的丟失。所謂流量控制就是讓發(fā)送方的發(fā)送速率不要太快,要讓接收方來得及接收。

利用滑動窗口機(jī)制可以很方便地在TCP連接上實(shí)現(xiàn)對發(fā)送方的流量控制。

設(shè)A向B發(fā)送數(shù)據(jù)。在連接建立時(shí),B告訴了A:“我的接收窗口是 rwnd = 400 ”(這里的 rwnd 表示 receiver window)
。因此,發(fā)送方的發(fā)送窗口不能超過接收方給出的接收窗口的數(shù)值。請注意,TCP的窗口單位是字節(jié),不是報(bào)文段。假設(shè)每一個(gè)報(bào)文段為100字節(jié)長,而數(shù)據(jù)報(bào)文段序號的初始值設(shè)為1。大寫ACK表示首部中的確認(rèn)位ACK,小寫ack表示確認(rèn)字段的值ack。

圖片

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

從圖中可以看出,B進(jìn)行了三次流量控制。第一次把窗口減少到 rwnd = 300 ,第二次又減到了 rwnd = 100 ,最后減到 rwnd = 0,即不允許發(fā)送方再發(fā)送數(shù)據(jù)了。這種使發(fā)送方暫停發(fā)送的狀態(tài)將持續(xù)到主機(jī)B重新發(fā)出一個(gè)新的窗口值為止。B向A發(fā)送的三個(gè)報(bào)文段都設(shè)置了 ACK = 1,只有在ACK=1時(shí)確認(rèn)號字段才有意義。

TCP為每一個(gè)連接設(shè)有一個(gè)持續(xù)計(jì)時(shí)器(persistence timer)。只要TCP連接的一方收到對方的零窗口通知,就啟動持續(xù)計(jì)時(shí)器。若持續(xù)計(jì)時(shí)器設(shè)置的時(shí)間到期,就發(fā)送一個(gè)零窗口控測報(bào)文段(攜1字節(jié)的數(shù)據(jù)),那么收到這個(gè)報(bào)文段的一方就重新設(shè)置持續(xù)計(jì)時(shí)器。

十、TCP擁塞控制

1.慢開始和擁塞避免

發(fā)送方維持一個(gè)擁塞窗口 cwnd ( congestion window
)的狀態(tài)變量。擁塞窗口的大小取決于網(wǎng)絡(luò)的擁塞程度,并且動態(tài)地在變化。發(fā)送方讓自己的發(fā)送窗口等于擁塞窗口。

發(fā)送方控制擁塞窗口的原則是:只要網(wǎng)絡(luò)沒有出現(xiàn)擁塞,擁塞窗口就再增大一些,以便把更多的分組發(fā)送出去。但只要網(wǎng)絡(luò)出現(xiàn)擁塞,擁塞窗口就減小一些,以減少注入到網(wǎng)絡(luò)中的分組數(shù)。

慢開始算法

當(dāng)主機(jī)開始發(fā)送數(shù)據(jù)時(shí),如果立即所大量數(shù)據(jù)字節(jié)注入到網(wǎng)絡(luò),那么就有可能引起網(wǎng)絡(luò)擁塞,因?yàn)楝F(xiàn)在并不清楚網(wǎng)絡(luò)的負(fù)荷情況。
因此,較好的方法是 先探測一下,即由小到大逐漸增大發(fā)送窗口,也就是說,由小到大逐漸增大擁塞窗口數(shù)值。

通常在剛剛開始發(fā)送報(bào)文段時(shí),先把擁塞窗口 cwnd
設(shè)置為一個(gè)最大報(bào)文段MSS的數(shù)值。而在每收到一個(gè)對新的報(bào)文段的確認(rèn)后,把擁塞窗口增加至多一個(gè)MSS的數(shù)值。用這樣的方法逐步增大發(fā)送方的擁塞窗口 cwnd
,可以使分組注入到網(wǎng)絡(luò)的速率更加合理。

圖片

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

每經(jīng)過一個(gè)傳輸輪次,擁塞窗口 cwnd 就加倍。一個(gè)傳輸輪次所經(jīng)歷的時(shí)間其實(shí)就是往返時(shí)間RTT。
不過“傳輸輪次”更加強(qiáng)調(diào):把擁塞窗口cwnd所允許發(fā)送的報(bào)文段都連續(xù)發(fā)送出去,并收到了對已發(fā)送的最后一個(gè)字節(jié)的確認(rèn)。

另,慢開始的“慢”并不是指cwnd的增長速率慢,而是指在TCP開始發(fā)送報(bào)文段時(shí)先設(shè)置cwnd=1,使得發(fā)送方在開始時(shí)只發(fā)送一個(gè)報(bào)文段(目的是試探一下網(wǎng)絡(luò)的擁塞情況),然后再逐漸增大cwnd。

為了防止擁塞窗口cwnd增長過大引起網(wǎng)絡(luò)擁塞,還需要設(shè)置一個(gè)慢開始門限ssthresh狀態(tài)變量。慢開始門限ssthresh的用法如下:

當(dāng) cwnd < ssthresh 時(shí),使用上述的慢開始算法。

當(dāng) cwnd > ssthresh 時(shí),停止使用慢開始算法而改用擁塞避免算法。

當(dāng) cwnd = ssthresh 時(shí),既可使用慢開始算法,也可使用擁塞控制避免算法。

擁塞避免

讓擁塞窗口cwnd緩慢地增大,即每經(jīng)過一個(gè)往返時(shí)間RTT就把發(fā)送方的擁塞窗口cwnd加1,而不是加倍
。這樣擁塞窗口cwnd按線性規(guī)律緩慢增長,比慢開始算法的擁塞窗口增長速率緩慢得多。

圖片

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

無論在慢開始階段還是在擁塞避免階段,只要發(fā)送方判斷網(wǎng)絡(luò)出現(xiàn)擁塞(其根據(jù)就是沒有收到確認(rèn)),就要把慢開始門限ssthresh設(shè)置為出現(xiàn)擁塞時(shí)的發(fā)送
方窗口值的一半(但不能小于2)。然后把擁塞窗口cwnd重新設(shè)置為1,執(zhí)行慢開始算法。

這樣做的目的就是要迅速減少主機(jī)發(fā)送到網(wǎng)絡(luò)中的分組數(shù),使得發(fā)生 擁塞的路由器有足夠時(shí)間把隊(duì)列中積壓的分組處理完畢。

如下圖,用具體數(shù)值說明了上述擁塞控制的過程。現(xiàn)在發(fā)送窗口的大小和擁塞窗口一樣大。

圖片

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

2.快重傳和快恢復(fù)

快重傳

快重傳算法首先要求接收方每收到一個(gè)失序的報(bào)文段后就立即發(fā)出重復(fù)確認(rèn)(為的是使發(fā)送方及早知道有報(bào)文段沒有到達(dá)對方)而不要等到自己發(fā)送數(shù)據(jù)時(shí)才進(jìn)行捎帶確認(rèn)。

圖片

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

接收方收到了M1和M2后都分別發(fā)出了確認(rèn)。現(xiàn)在假定接收方?jīng)]有收到M3但接著收到了M4。

顯然,接收方不能確認(rèn)M4,因?yàn)镸4是收到的失序報(bào)文段。根據(jù) 可靠傳輸原理,接收方可以什么都不做,也可以在適當(dāng)時(shí)機(jī)發(fā)送一次對M2的確認(rèn)。

但按照快重傳算法的規(guī)定,接收方應(yīng)及時(shí)發(fā)送對M2的重復(fù)確認(rèn),這樣做可以讓
發(fā)送方及早知道報(bào)文段M3沒有到達(dá)接收方。發(fā)送方接著發(fā)送了M5和M6。接收方收到這兩個(gè)報(bào)文后,也還要再次發(fā)出對M2的重復(fù)確認(rèn)。這樣,發(fā)送方共收到了
接收方的四個(gè)對M2的確認(rèn),其中后三個(gè)都是重復(fù)確認(rèn)。

快重傳算法還規(guī)定,發(fā)送方只要一連收到三個(gè)重復(fù)確認(rèn)就應(yīng)當(dāng)立即重傳對方尚未收到的報(bào)文段M3,而不必 繼續(xù)等待M3設(shè)置的重傳計(jì)時(shí)器到期。

由于發(fā)送方盡早重傳未被確認(rèn)的報(bào)文段,因此采用快重傳后可以使整個(gè)網(wǎng)絡(luò)吞吐量提高約20%。

快恢復(fù)

與快重傳配合使用的還有快恢復(fù)算法,其過程有以下兩個(gè)要點(diǎn):

當(dāng)發(fā)送方連續(xù)收到三個(gè)重復(fù)確認(rèn),就執(zhí)行“乘法減小”算法,把慢開始門限ssthresh減半。

與慢開始不同之處是現(xiàn)在不執(zhí)行慢開始算法(即擁塞窗口cwnd現(xiàn)在不設(shè)置為1),而是把cwnd值設(shè)置為 慢開始門限ssthresh減半后的數(shù)值,然后開始執(zhí)行擁塞避免算法(“加法增大”),使擁塞窗口緩慢地線性增大。

圖片

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

研發(fā)銷售6軸、9軸電子羅盤(陀螺儀|加速計(jì)|磁力計(jì))、傾角傳感器、姿態(tài)傳感器,慣導(dǎo)、數(shù)據(jù)采集盒、IoT遠(yuǎn)程智慧監(jiān)測等

產(chǎn)品廣泛應(yīng)用于:無人機(jī)、無人船、巡檢/引導(dǎo)/送餐/水下機(jī)器人、AGV、云臺裝置、望遠(yuǎn)鏡、Qiang支瞄準(zhǔn)鏡、雷達(dá)定位、聚光太陽能、工礦/隧道無人設(shè)備等!

核心研發(fā)人員十年技術(shù)積累,專業(yè)研發(fā)團(tuán)隊(duì),軍工級品質(zhì),替代進(jìn)口。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 網(wǎng)絡(luò)協(xié)議

    關(guān)注

    3

    文章

    269

    瀏覽量

    21602
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1378

    瀏覽量

    79218
收藏 人收藏

    評論

    相關(guān)推薦

    Aigtek功率放大器應(yīng)用:電感線圈的知識點(diǎn)分享

    電磁驅(qū)動是功率放大器的一大基礎(chǔ)應(yīng)用領(lǐng)域,其中我們最常見的就是用功放來驅(qū)動電感線圈,那么關(guān)于電感線圈的這10大知識點(diǎn)你都知道嗎?今天Aigtek安泰電子來給大家介紹一下電感線圈的基礎(chǔ)知識
    的頭像 發(fā)表于 01-07 15:43 ?146次閱讀
    Aigtek功率放大器應(yīng)用:電感線圈的<b class='flag-5'>知識點(diǎn)</b>分享

    面試題】人工智能工程師高頻面試題匯總:Transformer篇(題目+答案)

    ,或者深度學(xué)習(xí)的框架,還有怎么優(yōu)化模型,Transformer的一些知識,這些都是加分項(xiàng),能有效提高面試通過率。本篇小編整理了一些高頻的Transformer方面的面
    的頭像 發(fā)表于 12-13 15:06 ?597次閱讀
    【<b class='flag-5'>面試</b>題】人工智能工程師<b class='flag-5'>高頻</b><b class='flag-5'>面試</b>題匯總:Transformer篇(題目+答案)

    硬件工程師需要掌握的硬件基礎(chǔ)知識

    作為一個(gè)資深硬件工程師,我們需要掌握一些硬件基礎(chǔ)知識,今天總結(jié)一下哪些算是基礎(chǔ)知識。給學(xué)電子方面想從事硬件工作的同學(xué)們一點(diǎn)提示。給未走出大學(xué)
    的頭像 發(fā)表于 12-02 09:22 ?490次閱讀
    硬件工程師<b class='flag-5'>需要</b><b class='flag-5'>掌握</b>的硬件基礎(chǔ)<b class='flag-5'>知識</b>

    硬件工程師面試基礎(chǔ)知識點(diǎn)

    皮爾斯振蕩器(Pierce oscillator) 上圖中,U1為增益很大的反相放大器,CL1、CL2為匹配電容,是電容三點(diǎn)式電路的分壓電容,接地點(diǎn)就是分壓點(diǎn)。以接地點(diǎn)即分壓點(diǎn)為參考點(diǎn),輸入和輸出是反相的,但從并聯(lián)諧振回路即石英
    的頭像 發(fā)表于 11-21 11:04 ?284次閱讀
    硬件工程師<b class='flag-5'>面試</b>基礎(chǔ)<b class='flag-5'>知識點(diǎn)</b>

    接口測試?yán)碚摗⒁蓡柺珍浥c擴(kuò)展相關(guān)知識點(diǎn)

    本文章使用王者榮耀游戲接口、企業(yè)微信接口的展示結(jié)合理論知識,講解什么是接口測試、接口測試?yán)碚摗⒁蓡柺珍浥c擴(kuò)展相關(guān)知識點(diǎn)知識學(xué)院,快來一起看看吧~
    的頭像 發(fā)表于 11-15 09:12 ?373次閱讀
    接口測試?yán)碚摗⒁蓡柺珍浥c擴(kuò)展相關(guān)<b class='flag-5'>知識點(diǎn)</b>

    什么是socket編程 socket與tcp/ip協(xié)議的關(guān)系

    基于TCP/IP協(xié)議族,這是一組用于網(wǎng)絡(luò)通信的協(xié)議,包括傳輸控制協(xié)議(TCP)和互聯(lián)網(wǎng)協(xié)議(IP)。 Socket與TCP/
    的頭像 發(fā)表于 11-01 16:01 ?457次閱讀

    EtherNet/IP主站轉(zhuǎn)Modbus-TCP協(xié)議網(wǎng)關(guān)

    捷米特JM-EIPM-TCP網(wǎng)關(guān)實(shí)現(xiàn)連接EtherNet/IP設(shè)備和網(wǎng)絡(luò)到Modbus TCP網(wǎng)絡(luò)系統(tǒng)。該網(wǎng)關(guān)可實(shí)現(xiàn)雙向數(shù)據(jù)交換,既允許現(xiàn)有的、低成本的EtherNet/IP設(shè)備集成到
    的頭像 發(fā)表于 09-25 11:49 ?283次閱讀
    EtherNet/<b class='flag-5'>IP</b>主站轉(zhuǎn)Modbus-<b class='flag-5'>TCP</b>協(xié)議網(wǎng)關(guān)

    EtherNet/IP轉(zhuǎn)Modbus-TCP協(xié)議網(wǎng)關(guān)(EtherNet/IP轉(zhuǎn)Modbus-TCP

    一,設(shè)備主要功能 捷米特JM-EIP-TCP型網(wǎng)關(guān)實(shí)現(xiàn)EtherNet/IP網(wǎng)絡(luò)與Modbus TCP網(wǎng)絡(luò)之間的數(shù)據(jù)通訊,可支持Modbus TCP主站/Modbus
    的頭像 發(fā)表于 09-04 11:09 ?471次閱讀
    EtherNet/<b class='flag-5'>IP</b>轉(zhuǎn)Modbus-<b class='flag-5'>TCP</b>協(xié)議網(wǎng)關(guān)(EtherNet/<b class='flag-5'>IP</b>轉(zhuǎn)Modbus-<b class='flag-5'>TCP</b>)

    一文了解TCP/IP協(xié)議

    TCP/IP協(xié)議是現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)通信的基礎(chǔ),是互聯(lián)網(wǎng)及局域網(wǎng)廣泛使用的一套協(xié)議。TCP/IP協(xié)議集包括許多協(xié)議,其中最重要的是傳輸控制協(xié)議(TCP
    的頭像 發(fā)表于 08-07 15:38 ?2335次閱讀
    一文了解<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b>協(xié)議

    華納云:TCP IP協(xié)議的發(fā)展和優(yōu)勢

    TCP/IP(Transmission Control Protocol/Internet Protocol,傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議)是互聯(lián)網(wǎng)和現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)的基礎(chǔ)協(xié)議集。它定義了數(shù)據(jù)在網(wǎng)絡(luò)上
    的頭像 發(fā)表于 07-25 16:49 ?542次閱讀

    TCP IP協(xié)議屬性設(shè)置中的IP配置

    在現(xiàn)代網(wǎng)絡(luò)中,TCP/IP協(xié)議是基礎(chǔ)架構(gòu)的重要組成部分。掌握TCP/IP協(xié)議屬性設(shè)置中的IP配置
    的頭像 發(fā)表于 07-23 10:10 ?582次閱讀

    模擬電子技術(shù)知識點(diǎn)問題總結(jié)概覽

    給大家分享模擬電子技術(shù)知識點(diǎn)問題總結(jié)。
    的頭像 發(fā)表于 05-08 15:16 ?1224次閱讀
    模擬電子技術(shù)<b class='flag-5'>知識點(diǎn)</b>問題總結(jié)概覽

    一篇搞定DCS系統(tǒng)相關(guān)知識點(diǎn)

    目標(biāo)。DCS系統(tǒng)廣泛應(yīng)用于各個(gè)行業(yè),如化工、電力、制藥等。在這些行業(yè)中,DCS系統(tǒng)可以實(shí)現(xiàn)對生產(chǎn)過程的集中監(jiān)控和分散控制,提高生產(chǎn)效率和產(chǎn)品質(zhì)量,降低能耗和減少環(huán)境污染,從而保證產(chǎn)品質(zhì)量,并確保生產(chǎn)過程的安全可靠。 二.DCS系統(tǒng)知識點(diǎn)
    的頭像 發(fā)表于 03-26 18:40 ?981次閱讀
    一篇搞定DCS系統(tǒng)相關(guān)<b class='flag-5'>知識點(diǎn)</b>

    Ethernet/IP轉(zhuǎn)Modbus TCP網(wǎng)關(guān)

    Ethernet/IP轉(zhuǎn)Modbus TCP網(wǎng)關(guān),YC-EIP-TCP工業(yè)級EtherNet/IP 網(wǎng)關(guān),支持ModBus主從站,即插即用 無需編程 輕松組態(tài) ,即實(shí)現(xiàn)數(shù)據(jù)交互,導(dǎo)軌安
    的頭像 發(fā)表于 02-27 17:50 ?519次閱讀
    Ethernet/<b class='flag-5'>IP</b>轉(zhuǎn)Modbus <b class='flag-5'>TCP</b>網(wǎng)關(guān)

    嵌入式軟件開發(fā)應(yīng)該掌握哪些知識?

    知識點(diǎn)學(xué)習(xí) 熟悉 Linux 的基本使用對于嵌入式軟件開發(fā)至關(guān)重要。包括文件系統(tǒng)的管理、用戶權(quán)限的控制、軟件包管理等。嵌入式開發(fā)人員需要能夠在 Linux 環(huán)境下進(jìn)行開發(fā)、調(diào)試和部署工作。因此我們需要
    發(fā)表于 02-19 11:23
    主站蜘蛛池模板: 国产精品久久久久久熟妇吹潮软件 | 同桌别揉我奶了嗯啊 | 亚洲不卡视频在线 | 美女内射少妇一区二区四区 | 婷婷久久综合九色综合伊人色 | 一本道亚洲区免费观看 | 里番acg纲手的熟蜜姬训练场 | 久久夜色噜噜噜亚洲AV0000 | 麻豆精品一区二正一三区 | 佐山爱巨大肥臀在线 | 91热久久免费精品99 | 麻豆官网md.pub | 亚洲视频无码高清在线 | 中文字幕A片视频一区二区 中文字幕AV在线一二三区 | 97人妻中文字幕免费视频 | 97国产成人精品视频 | 一本二卡三卡四卡乱码麻豆 | 99综合之综合久久伊人 | 啦啦啦 中文 中国 免费 高清在线 | 国产免费69成人精品视频 | 日日噜噜大屁股熟妇 | 国产精品一区二区在线播放 | 国产精品资源网站在线观看 | 久久一er精这里有精品 | 99re这里只有精品视频 | 麻豆成人久久精品二区三区网站 | 久久无码AV亚洲精品色午夜麻豆 | 囯产精品久久久久久久久蜜桃 | 被老师按在办公桌吸奶头 | 男同志vdieos免费 | 97午夜精品| 久久香蕉国产线看观看 | 高清国产在线播放成人 | 艳鉧动漫片1~6全集在线 | 亚洲精品久久7777777 | 超碰99热在线精品视频 | 麻豆免费版 | 99视频网址 | 超碰免费视频caoporn | 国产91专区 | 国产电影午夜成年免费视频 |