計算機網(wǎng)絡(luò)考試知識點梳理總結(jié)
傳輸層概
-
作用:傳輸層為它上面的應(yīng)用層提供通信服務(wù)。
-
在OSI七層參考模型中,傳輸層是面向通信的最高層,也是用戶功能的最底層。
-
傳輸層兩大重要的功能:復(fù)用 和 分用。
-
復(fù)用:在發(fā)送端,多個應(yīng)用進程公用一個傳輸層;
-
分用:在接收端,傳輸層會根據(jù)端口號將數(shù)據(jù)分派給不同的應(yīng)用進程。
-
-
和網(wǎng)絡(luò)層的區(qū)別:
-
網(wǎng)絡(luò)層為不同主機提供通信服務(wù),而傳輸層為不同主機的不同應(yīng)用提供通信服務(wù)。
-
網(wǎng)絡(luò)層只對報文頭部進行差錯檢測,而傳輸層對整個報文進行差錯檢測。
-
UDP(用戶數(shù)據(jù)報協(xié)議)詳解
UDP的特點
-
UDP只在IP數(shù)據(jù)報服務(wù)的基礎(chǔ)上增加了少量的功能:復(fù)用與分用、對整個報文的差錯檢測。
-
UDP是無連接的
通信前不需要建立連接,通信結(jié)束也無需釋放連接。
-
UDP是不可靠的
它是盡力而為交付,不能確保每一個數(shù)據(jù)報都送達。
-
UDP是面向報文的
所謂『面向報文』就是指:UDP數(shù)據(jù)傳輸?shù)膯挝皇菆笪?,且不會對?shù)據(jù)作任何 拆分 和 拼接 操作。
在發(fā)送端,應(yīng)用程序給傳輸層的UDP什么樣的數(shù)據(jù),UDP不會對數(shù)據(jù)進行切分,只增加一個UDP頭并交給網(wǎng)絡(luò)層。
在接收端,UDP收到網(wǎng)絡(luò)層的數(shù)據(jù)報后,去除IP數(shù)據(jù)報頭部后遍交給應(yīng)用層,不會作任何拼接操作。
-
UDP沒有擁塞控制
UDP始終以恒定的速率發(fā)送數(shù)據(jù),并不會根據(jù)網(wǎng)絡(luò)擁塞情況對發(fā)送速率作調(diào)整。這種方式有利有弊。
弊端:網(wǎng)絡(luò)擁塞時有些報文可能會丟失,因此UDP不可靠。
優(yōu)點:有些使用場景允許報文丟失,如:直播、語音通話,但對實時性要求很高,此時UDP還是很有用武之地的。
-
UDP支持一對一、一對多、多對多、多對一通信
而TCP只支持一對一通信。
-
UDP首部開銷小,只有8字節(jié)。
而TCP頭部至少由20字節(jié),相比于TCP要高效很多。
PS:問:UDP不可靠具體體現(xiàn)在哪些方面?數(shù)據(jù)報丟失?數(shù)據(jù)報順序?
UDP報文頭

-
源端口
-
目的端口
-
長度:整個數(shù)據(jù)報的長度
-
檢驗和:整個數(shù)據(jù)報的檢驗和。
TCP(傳輸控制協(xié)議)詳解
TCP特點
-
TCP是面向連接的
通信前需要建立連接,通信結(jié)束需要釋放連接。
-
TCP提供可靠交付服務(wù)
所謂『可靠』指的是:TCP發(fā)送的數(shù)據(jù)無重復(fù)、無丟失、無錯誤、與發(fā)送端順序一致。
-
TCP是面向字節(jié)流的
所謂『面向字節(jié)流』指的是:TCP以字節(jié)為單位。雖然傳輸?shù)倪^程中數(shù)據(jù)被劃分成一個個數(shù)據(jù)報,但這只是為了方便傳輸,接收端最終接受到的數(shù)據(jù)將與發(fā)送端的數(shù)據(jù)一模一樣。
-
TCP提供全雙工通信
所謂『全雙工通信』指的是:TCP的兩端既可以作為發(fā)送端,也可以作為接收端。
-
一條TCP連接的兩端只能有兩個端點
TCP只能提供點到點的通信,而UDP可以任意方式的通信。
TCP連接 與 套接字
-
什么是『TCP連接』?
TCP連接是一種抽象的概念,表示一條可以通信的鏈路。每條TCP連接有且僅有兩個端點,表示通信的雙方。且雙發(fā)在任意時刻都可以作為發(fā)送者和接收者。
-
什么是『套接字』?
一條TCP連接的兩端就是兩個套接字。套接字=IP地址: 端口號。因此,TCP連接=(套接字1,套接字2)=(IP1:端口號1,IP2:端口號2)
TCP頭部

TCP頭部長度有20字節(jié)的固定部分,選項部分長度不定,但最多40字節(jié),因此TCP頭部在20-60字節(jié)之間。
-
源端口 和 目的端口
傳輸層和網(wǎng)絡(luò)層一大重要區(qū)別就是傳輸層指定了數(shù)據(jù)報發(fā)往的應(yīng)用進程,因此需要端口號標識。
-
序號
當前TCP數(shù)據(jù)報數(shù)據(jù)部分的第一個字節(jié)的序號。我們知道,TCP是面向字節(jié)的,它會對發(fā)送的每一個字節(jié)進行編號,而且不同數(shù)據(jù)報之間是連續(xù)編號的。
由于本字段4字節(jié),可以給[0,2^32-1]個字節(jié)進行編號(大約4G),而且序號循環(huán)使用,當發(fā)送完2^32-1個字節(jié)后,序號又從0開始。一般來說,當2^32-1個字節(jié)被發(fā)送的時候,前面的字節(jié)早就發(fā)送成功了,因此序號可以循環(huán)使用。
-
確認號
表示當前主機作為接收端時,期望接收的下一個字節(jié)的編號是多少。也表示,當前主機已經(jīng)正確接收的最后一個字節(jié)序號+1。
-
數(shù)據(jù)偏移(報文長度)
它表明了數(shù)據(jù)報頭部的長度。
-
保留字段
-
標識符
TCP有7種標識符,用于表示TCP報文的性質(zhì)。它們只能為0或1。
-
URG=1
當URG字段被置1,表示本數(shù)據(jù)報的數(shù)據(jù)部分包含緊急信息,此時緊急指針有效。緊急數(shù)據(jù)一定位于當前數(shù)據(jù)包數(shù)據(jù)部分的最前面,緊急指針標明了緊急數(shù)據(jù)的尾部。如control+c:這個命令要求操作系統(tǒng)立即停止當前進程。此時,這條命令就會存放在數(shù)據(jù)包數(shù)據(jù)部分的開頭,并由緊急指針標識命令的位置,并URG字段被置1。 -
ACK=1
ACK被置1后確認號字段才有效。此外,TCP規(guī)定,在連接建立后傳送的所有報文段都必須把ACK置1。 -
PSH=1
當接收方收到PSH=1的報文后,會立即將數(shù)據(jù)交付給應(yīng)用程序,而不會等到緩沖區(qū)滿后再提交。一些交互式應(yīng)用需要這樣的功能,降低命令的響應(yīng)時間。 -
RST=1
當該值為1時,表示當前TCP連接出現(xiàn)嚴重問題,必須要釋放重連。 -
SYN=1
SYN在建立連接時使用。當SYN=1,ACK=0時,表示當前報文段是一個連接請求報文。當SYN=1,ACK=1時,表示當前報文段是一個同意建立連接的應(yīng)答報文。 -
FIN=1
FIN=1表示此報文段是一個釋放連接的請求報文。
-
接收窗口大小
該字段用于實現(xiàn)TCP的流量控制。它表示當前接收方的接收窗口的剩余容量,發(fā)送方收到該值后會將發(fā)送窗口調(diào)整成該值的大小。發(fā)送窗口的大小又決定了發(fā)送速率,所以接收方通過設(shè)置該值就可以控制發(fā)送放的發(fā)送速率。發(fā)送方每收到一個數(shù)據(jù)報都要調(diào)整當前的發(fā)送窗口。
-
檢驗和
用于接收端檢驗整個數(shù)據(jù)包在傳輸過程中是否出錯。
-
緊急指針
用于標識緊急數(shù)據(jù)的尾部。
-
選項字段
上述字段都是每個TCP頭部必須要有的,而選項字段是可選的,且長度可變,最長40字節(jié)。
最常用的選項字段為MMS:最大報文長度。
TCP三次握手

PS:TCP協(xié)議中,主動發(fā)起請求的一端稱為『客戶端』,被動連接的一端稱為『服務(wù)端』。不管是客戶端還是服務(wù)端,TCP連接建立完后都能發(fā)送和接收數(shù)據(jù)。
起初,服務(wù)器和客戶端都為CLOSED狀態(tài)。在通信開始前,雙方都得創(chuàng)建各自的傳輸控制塊(TCB)。
服務(wù)器創(chuàng)建完TCB后遍進入LISTEN狀態(tài),此時準備接收客戶端發(fā)來的連接請求。
第一次握手
客戶端向服務(wù)端發(fā)送連接請求報文段。該報文段的頭部中SYN=1,ACK=0,seq=x。請求發(fā)送后,客戶端便進入SYN-SENT狀態(tài)。
-
PS1:SYN=1,ACK=0表示該報文段為連接請求報文。
-
PS2:x為本次TCP通信的字節(jié)流的初始序號。
TCP規(guī)定:SYN=1的報文段不能有數(shù)據(jù)部分,但要消耗掉一個序號。
第二次握手
服務(wù)端收到連接請求報文段后,如果同意連接,則會發(fā)送一個應(yīng)答:SYN=1,ACK=1,seq=y,ack=x+1。該應(yīng)答發(fā)送完成后便進入SYN-RCVD狀態(tài)。
-
PS1:SYN=1,ACK=1表示該報文段為連接同意的應(yīng)答報文。
-
PS2:seq=y表示服務(wù)端作為發(fā)送者時,發(fā)送字節(jié)流的初始序號。
-
PS3:ack=x+1表示服務(wù)端希望下一個數(shù)據(jù)報發(fā)送序號從x+1開始的字節(jié)。
第三次握手
當客戶端收到連接同意的應(yīng)答后,還要向服務(wù)端發(fā)送一個確認報文段,表示:服務(wù)端發(fā)來的連接同意應(yīng)答已經(jīng)成功收到。該報文段的頭部為:ACK=1,seq=x+1,ack=y+1。
客戶端發(fā)完這個報文段后便進入ESTABLISHED狀態(tài),服務(wù)端收到這個應(yīng)答后也進入ESTABLISHED狀態(tài),此時連接的建立完成!
為什么連接建立需要三次握手,而不是兩次握手?
防止失效的連接請求報文段被服務(wù)端接收,從而產(chǎn)生錯誤。
PS:失效的連接請求:若客戶端向服務(wù)端發(fā)送的連接請求丟失,客戶端等待應(yīng)答超時后就會再次發(fā)送連接請求,此時,上一個連接請求就是『失效的』。
若建立連接只需兩次握手,客戶端并沒有太大的變化,仍然需要獲得服務(wù)端的應(yīng)答后才進入ESTABLISHED狀態(tài),而服務(wù)端在收到連接請求后就進入ESTABLISHED狀態(tài)。此時如果網(wǎng)絡(luò)擁塞,客戶端發(fā)送的連接請求遲遲到不了服務(wù)端,客戶端便超時重發(fā)請求,如果服務(wù)端正確接收并確認應(yīng)答,雙方便開始通信,通信結(jié)束后釋放連接。此時,如果那個失效的連接請求抵達了服務(wù)端,由于只有兩次握手,服務(wù)端收到請求就會進入ESTABLISHED狀態(tài),等待發(fā)送數(shù)據(jù)或主動發(fā)送數(shù)據(jù)。但此時的客戶端早已進入CLOSED狀態(tài),服務(wù)端將會一直等待下去,這樣浪費服務(wù)端連接資源。
TCP四次揮手

TCP連接的釋放一共需要四步,因此稱為『四次揮手』。我們知道,TCP連接是雙向的,因此在四次揮手中,前兩次揮手用于斷開一個方向的連接,后兩次揮手用于斷開另一方向的連接。
第一次揮手
若A認為數(shù)據(jù)發(fā)送完成,則它需要向B發(fā)送連接釋放請求。該請求只有報文頭,頭中攜帶的主要參數(shù)為:FIN=1,seq=u。此時,A將進入FIN-WAIT-1狀態(tài)。
-
PS1:FIN=1表示該報文段是一個連接釋放請求。
-
PS2:seq=u,u-1是A向B發(fā)送的最后一個字節(jié)的序號。
第二次揮手
B收到連接釋放請求后,會通知相應(yīng)的應(yīng)用程序,告訴它A向B這個方向的連接已經(jīng)釋放。此時B進入CLOSE-WAIT狀態(tài),并向A發(fā)送連接釋放的應(yīng)答,其報文頭包含:ACK=1,seq=v,ack=u+1。
-
PS1:ACK=1:除TCP連接請求報文段以外,TCP通信過程中所有數(shù)據(jù)報的ACK都為1,表示應(yīng)答。
-
PS2:seq=v,v-1是B向A發(fā)送的最后一個字節(jié)的序號。
-
PS3:ack=u+1表示希望收到從第u+1個字節(jié)開始的報文段,并且已經(jīng)成功接收了前u個字節(jié)。
A收到該應(yīng)答,進入FIN-WAIT-2狀態(tài),等待B發(fā)送連接釋放請求。
第二次揮手完成后,A到B方向的連接已經(jīng)釋放,B不會再接收數(shù)據(jù),A也不會再發(fā)送數(shù)據(jù)。但B到A方向的連接仍然存在,B可以繼續(xù)向A發(fā)送數(shù)據(jù)。
第三次揮手
當B向A發(fā)完所有數(shù)據(jù)后,向A發(fā)送連接釋放請求,請求頭:FIN=1,ACK=1,seq=w,ack=u+1。B便進入LAST-ACK狀態(tài)。
第四次揮手
A收到釋放請求后,向B發(fā)送確認應(yīng)答,此時A進入TIME-WAIT狀態(tài)。該狀態(tài)會持續(xù)2MSL時間,若該時間段內(nèi)沒有B的重發(fā)請求的話,就進入CLOSED狀態(tài),撤銷TCB。當B收到確認應(yīng)答后,也便進入CLOSED狀態(tài),撤銷TCB。
為什么A要先進入TIME-WAIT狀態(tài),等待2MSL時間后才進入CLOSED狀態(tài)?
為了保證B能收到A的確認應(yīng)答。若A發(fā)完確認應(yīng)答后直接進入CLOSED狀態(tài),那么如果該應(yīng)答丟失,B等待超時后就會重新發(fā)送連接釋放請求,但此時A已經(jīng)關(guān)閉了,不會作出任何響應(yīng),因此B永遠無法正常關(guān)閉。
TCP可靠傳輸?shù)膶崿F(xiàn)
TCP的可靠性表現(xiàn)在:它向應(yīng)用層提供的數(shù)據(jù)是 無差錯的、有序的、無丟失的,簡單的說就是:TCP最終遞交給應(yīng)用層的數(shù)據(jù)和發(fā)送者發(fā)送的數(shù)據(jù)是一模一樣的。TCP采用了流量控制、擁塞控制、連續(xù)ARQ等技術(shù)來保證它的可靠性。
PS:網(wǎng)絡(luò)層傳輸?shù)臄?shù)據(jù)單元為『數(shù)據(jù)報』,傳輸層的數(shù)據(jù)單元為『報文段』,但為了方便起見,可以統(tǒng)稱為『分組』。
停止等待協(xié)議(ARQ協(xié)議)
TCP保證其可靠性采用的是更為復(fù)雜的滑動窗口協(xié)議,但停止等待協(xié)議是它的簡化版,為了方便理解,這里先介紹停止等待協(xié)議。
-
AQR協(xié)議
ARQ(Automatic Repeat reQuest)自動重傳請求。顧名思義,當請求失敗時它會自動重傳,直到請求被正確接收為止。這種機制保證了每個分組都能被正確接收。停止等待協(xié)議是一種ARQ協(xié)議。
-
停止等待協(xié)議的原理
-
無差錯的情況
A向B每發(fā)送一個分組,都要停止發(fā)送,等待B的確認應(yīng)答;A只有收到了B的確認應(yīng)答后才能發(fā)送下一個分組。
-
分組丟失和出現(xiàn)差錯的情況
發(fā)送者擁有超時計時器。每發(fā)送一個分組便會啟動超時計時器,等待B的應(yīng)答。若超時仍未收到應(yīng)答,則A會重發(fā)剛才的分組。
分組出現(xiàn)差錯:若B收到分組,但通過檢查和字段發(fā)現(xiàn)分組在運輸途中出現(xiàn)差錯,它會直接丟棄該分組,并且不會有任何其他動作。A超時后便會重新發(fā)送該分組,直到B正確接收為止。
分組丟失:若分組在途中丟失,B并沒有收到分組,因此也不會有任何響應(yīng)。當A超時后也會重傳分組,直到正確接收該分組的應(yīng)答為止。
綜上所述:當分組丟失 或 出現(xiàn)差錯 的情況下,A都會超時重傳分組。
-
應(yīng)答丟失 和 應(yīng)答遲到 的情況
TCP會給每個字節(jié)都打上序號,用于判斷該分組是否已經(jīng)接收。
應(yīng)答丟失:若B正確收到分組,并已經(jīng)返回應(yīng)答,但應(yīng)答在返回途中丟失了。此時A也收不到應(yīng)答, 從而超時重傳。緊接著B又收到了該分組。接收者根據(jù)序號來判斷當前收到的分組是否已經(jīng)接收,若已接收則直接丟棄,并補上一個確認應(yīng)答。
應(yīng)答遲到:若由于網(wǎng)絡(luò)擁塞,A遲遲收不到B發(fā)送的應(yīng)答,因此會超時重傳。B收到該分組后,發(fā)現(xiàn)已經(jīng)接收,便丟棄該分組,并向A補上確認應(yīng)答。A收到應(yīng)答后便繼續(xù)發(fā)送下一個分組。但經(jīng)過了很長時間后,那個失效的應(yīng)答最終抵達了A,此時A可根據(jù)序號判斷該分組已經(jīng)接收,此時只需簡單丟棄即可。
-
-
停止等待協(xié)議的注意點
-
每發(fā)送完一個分組,該分組必須被保留,直到收到確認應(yīng)答為止。
-
必須給每個分組進行編號。以便按序接收,并判斷該分組是否已被接收。
-
必須設(shè)置超時計時器。每發(fā)送一個分組就要啟動計時器,超時就要重發(fā)分組。
-
計時器的超時時間要大于應(yīng)答的平均返回時間,否則會出現(xiàn)很多不必要的重傳,降低傳輸效率。但超時時間也不能太長。
-
滑動窗口協(xié)議(連續(xù)ARQ協(xié)議)
-
連續(xù)ARQ協(xié)議
在ARQ協(xié)議發(fā)送者每次只能發(fā)送一個分組,在應(yīng)答到來前必須等待。而連續(xù)ARQ協(xié)議的發(fā)送者擁有一個發(fā)送窗口,發(fā)送者可以在沒有得到應(yīng)答的情況下連續(xù)發(fā)送窗口中的分組。這樣降低了等待時間,提高了傳輸效率。
-
累計確認
在連續(xù)ARQ協(xié)議中,接收者也有個接收窗口,接收者并不需要每收到一個分組就返回一個應(yīng)答,可以連續(xù)收到分組之后統(tǒng)一返回一個應(yīng)答。這樣能節(jié)省流量。TCP頭部的ack字段就是用來累計確認,它表示已經(jīng)確認的字節(jié)序號+1,也表示期望發(fā)送者發(fā)送的下一個分組的起始字節(jié)號。
-
發(fā)送窗口

發(fā)送窗口的大小由接收窗口的剩余大小決定。接收者會把當前接收窗口的剩余大小寫入應(yīng)答TCP報文段的頭部,發(fā)送者收到應(yīng)答后根據(jù)該值和當前網(wǎng)絡(luò)擁塞情況設(shè)置發(fā)送窗口的大小。發(fā)送窗口的大小是不斷變化的。發(fā)送窗口由三個指針構(gòu)成:
發(fā)送者每收到一個應(yīng)答,后沿就可以向前移動指定的字節(jié)。此時若窗口大小仍然沒變,前沿也可以向前移動指定字節(jié)。當p2和前沿重合時,發(fā)送者必須等待確認應(yīng)答。
-
p1
p1指向發(fā)送窗口的后沿,它后面的字節(jié)表示已經(jīng)發(fā)送且已收到應(yīng)答。 -
p2
p2指向尚未發(fā)送的第一個字節(jié)。p1-p2間的字節(jié)表示已經(jīng)發(fā)送,但還沒收到確認應(yīng)答。這部分的字節(jié)仍需保留,因為可能還要超時重發(fā)。p2-p3間的字節(jié)表示可以發(fā)送,但還沒有發(fā)送的字節(jié)。 -
p3
p3指向發(fā)送窗口的前沿,它前面的字節(jié)尚未發(fā)送,且不允許發(fā)送。
-
-
接收窗口

-
接收者收到的字節(jié)會存入接收窗口,接收者會對已經(jīng)正確接收的有序字節(jié)進行累計確認,發(fā)送完確認應(yīng)答后,接收窗口就可以向前移動指定字節(jié)。
如果某些字節(jié)并未按序收到,接收者只會確認最后一個有序的字節(jié),從而亂序的字節(jié)就會被重新發(fā)送。
-
連續(xù)ARQ的注意點
-
同一時刻發(fā)送窗口的大小并不一定和接收窗口一樣大。雖然發(fā)送窗口的大小是根據(jù)接收窗口的大小來設(shè)定的,但應(yīng)答在網(wǎng)絡(luò)中傳輸是有時間的,有可能t1時間接收窗口大小為m,但當確認應(yīng)答抵達發(fā)送者時,接收窗口的大小已經(jīng)發(fā)生了變化。此外發(fā)送窗口的大小還隨網(wǎng)絡(luò)擁塞情況影響。當網(wǎng)絡(luò)出現(xiàn)擁塞時,發(fā)送窗口將被調(diào)小。
-
TCP標準并未規(guī)定未按序到達的字節(jié)的處理方式。但TCP一般都會緩存這些字節(jié),等缺少的字節(jié)到達后再交給應(yīng)用層處理。這比直接丟棄亂序的字節(jié)要節(jié)約帶寬。
-
TCP標準規(guī)定接收方必須要有累計確認功能。接收方可以對多個TCP報文段同時確認,但不能拖太長時間,一般是0.5S以內(nèi)。此外,TCP允許接收者在有數(shù)據(jù)要發(fā)送的時候捎帶上確認應(yīng)答。但這種情況一般較少,因為一般很少有兩個方向都要發(fā)送數(shù)據(jù)的情況。
流量控制
-
什么是流量控制?
如果發(fā)送者發(fā)送過快,接收者來不及接收,那么就會有分組丟失。為了避免分組丟失,控制發(fā)送者的發(fā)送速度,使得接收者來得及接收,這就是流量控制。
-
流量控制的目的?
流量控制根本目的是防止分組丟失,它是構(gòu)成TCP可靠性的一方面。
-
如何實現(xiàn)流量控制?
由滑動窗口協(xié)議(連續(xù)ARQ協(xié)議)實現(xiàn)。滑動窗口協(xié)議既保證了分組無差錯、有序接收,也實現(xiàn)了流量控制。
-
流量控制引發(fā)的死鎖
當發(fā)送者收到了一個窗口為0的應(yīng)答,發(fā)送者便停止發(fā)送,等待接收者的下一個應(yīng)答。但是如果這個窗口不為0的應(yīng)答在傳輸過程丟失,發(fā)送者一直等待下去,而接收者以為發(fā)送者已經(jīng)收到該應(yīng)答,等待接收新數(shù)據(jù),這樣雙方就相互等待,從而產(chǎn)生死鎖。
-
持續(xù)計時器
為了避免流量控制引發(fā)的死鎖,TCP使用了持續(xù)計時器。每當發(fā)送者收到一個零窗口的應(yīng)答后就啟動該計時器。時間一到便主動發(fā)送報文詢問接收者的窗口大小。若接收者仍然返回零窗口,則重置該計時器繼續(xù)等待;若窗口不為0,則表示應(yīng)答報文丟失了,此時重置發(fā)送窗口后開始發(fā)送,這樣就避免了死鎖的產(chǎn)生。
擁塞控制
-
擁塞控制 和 流量控制 的區(qū)別?
PS:擁塞控制是針對于網(wǎng)絡(luò)而言的,它是防止往網(wǎng)絡(luò)中寫入太多分組,從而導(dǎo)致網(wǎng)絡(luò)擁塞的情況;而流量控制是針對接收者的,它是通過控制發(fā)送者的發(fā)送速度保證接收者能夠來得及接收。
-
擁塞控制:擁塞控制是作用于網(wǎng)絡(luò)的,它是防止過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中,避免出現(xiàn)網(wǎng)絡(luò)負載過大的情況;
-
流量控制:流量控制是作用于接收者的,它是控制發(fā)送者的發(fā)送速度從而使接收者來得及接收。
擁塞控制的目的?
-
緩解網(wǎng)絡(luò)壓力
-
保證分組按時到達
慢開始算法 和 擁塞避免算法
-
加法增加:指的是擁塞避免算法,使得發(fā)送窗口以線性的方式增長;
-
乘法減?。褐傅氖遣还墚斍罢褂寐_始算法還是擁塞避免算法,只要發(fā)生擁塞時,慢開始門限將會變成當前窗口的一半。
-
發(fā)送方維護一個發(fā)送窗口,發(fā)送窗口的大小取決于網(wǎng)絡(luò)的擁塞情況和接收窗口的大小,發(fā)送窗口是動態(tài)變化的。
-
發(fā)送方還維護一個慢開始門限
-
算法的具體過程:
-
慢開始算法的作用:慢開始算法將發(fā)送窗口從小擴大,而且按指數(shù)級擴大,從而避免一開始就往網(wǎng)絡(luò)中注入過多的分組從而導(dǎo)致?lián)砣凰鼘⒋翱诼龜U大的過程其實也在探測網(wǎng)絡(luò)擁塞情況的過程,當發(fā)現(xiàn)出現(xiàn)擁塞時,及時降低發(fā)送速度,從而減緩網(wǎng)絡(luò)擁塞。
-
擁塞避免算法的作用:擁塞避免算法使發(fā)送窗口以線性方式增長,而非指數(shù)級增長,從而使網(wǎng)絡(luò)更加不容易發(fā)生擁塞。
-
AIMD算法(加法增大乘法減小算法)。慢開始算法 和 擁塞避免算法 還有個名稱叫做『加法增大乘法減小算法』。
-
通信開始時,發(fā)送方的發(fā)送窗口設(shè)為1,并發(fā)送第一個分組M1;
-
接收方收到M1后,返回確認應(yīng)答,此時發(fā)送方發(fā)送窗口擴大兩倍,并發(fā)送M2、M3;(即,發(fā)送方每次收到確認應(yīng)答后,都將發(fā)送窗口設(shè)為當前值的兩倍)
-
若發(fā)送窗口>慢開始門限,則使用擁塞避免算法,每次收到確認應(yīng)答后都將發(fā)送窗口+1;
-
若發(fā)送方出現(xiàn)了超時重傳,則表明網(wǎng)絡(luò)出現(xiàn)擁塞,此時:
a)慢開始門限設(shè)為當前發(fā)送窗口的一半
b)發(fā)送窗口設(shè)為1
c)啟用擁塞避免算法PS:發(fā)送超時重傳時,發(fā)送窗口有可能已經(jīng)超過了慢開始門限,也有可能還沒超過;此時不管何種情況,都一律啟用擁塞避免算法,并執(zhí)行上述三步操作!
-
發(fā)送窗口 < 慢開始門限:使用慢開始算法
-
發(fā)送窗口 > 慢開始門限:使用擁塞避免算法
-
發(fā)送窗口 = 慢開始門限:使用慢開始算法或擁塞避免算法
快重傳算法 和 快恢復(fù)算法
-
上述慢開始算法和擁塞避免算法能保證網(wǎng)絡(luò)出現(xiàn)擁塞時進行相應(yīng)的處理,而快重傳和快恢復(fù)是一種擁塞預(yù)防的方式,此時網(wǎng)絡(luò)可能尚未出現(xiàn)擁塞,但已經(jīng)有擁塞的征兆,因此得作出一些預(yù)防措施。
-
快重傳原理:因為TCP具有累計確認的能力,因此接收者收到一個分組的時候不會立即發(fā)出應(yīng)答,可能需要等待收到多個分組之后再同一發(fā)出累計確認。但快重傳算法就要求,接收者如果接收到一個亂序的分組的話,就必須立即發(fā)出前一個正確分組的確認應(yīng)答,這樣能讓發(fā)送者盡早地知道有一個分組可能丟失。
-
快恢復(fù)原理:當發(fā)送者收到同一個分組的三個確認應(yīng)答后,就基本可以判斷這個分組已經(jīng)丟失了;這時候無需等待超時,直接執(zhí)行『乘法減小加法增大』:
-
將慢開始門限減半
-
將發(fā)送窗口減半(不設(shè)為1)
-
使用擁塞避免算法
相關(guān)文章
linux網(wǎng)絡(luò)協(xié)議是什么?該如何去理解?
很多人熟悉windows的協(xié)議,但是對linux網(wǎng)絡(luò)協(xié)議卻不怎么了解,本片文章就是叫我們?nèi)绾稳チ私鈒inux網(wǎng)絡(luò)協(xié)議,需要的朋友可以參考下2014-09-17組件計算機網(wǎng)絡(luò)系統(tǒng)建設(shè)的案例
這篇文章主要為大家介紹了以辦公大樓計算機網(wǎng)絡(luò)系統(tǒng)建設(shè)為實例,講述了計算機網(wǎng)絡(luò)系統(tǒng)建設(shè)的大概思路,需要的朋友可以參考下2014-09-15計算機網(wǎng)絡(luò)c類網(wǎng)絡(luò)劃分子網(wǎng)介紹
本文將詳細介紹計算機網(wǎng)絡(luò)c類網(wǎng)絡(luò)劃分子網(wǎng),需要了解更多的朋友可以參考下2012-11-19- 今天,隨著計算機的廣泛應(yīng)用和網(wǎng)絡(luò)的流行,越來越多的單位和部門開始引入計算機網(wǎng)絡(luò)管理,從而相應(yīng)的需要更多的優(yōu)秀網(wǎng)管。已有幾年“腦齡"的你是不是也有成為網(wǎng)管的雄心壯2010-09-07
- 第 1 步:檢驗電纜 首先,檢查計算機與網(wǎng)絡(luò)插口之間的電纜。對于 10/100 網(wǎng)絡(luò)環(huán)境,只需一種能檢查開路、短路和布線的工具即可工2010-09-07
- ★計算機網(wǎng)絡(luò)是什么? 這是首先必須解決的一個問題,絕對是核心概念.我們講的計算機網(wǎng)絡(luò),其實就是利用通訊設(shè)備和線路將地理位置不同的、功能獨立的多個計算機系統(tǒng)2010-09-07

