當前位置:首頁 » 網路連接 » 計算機網路的3種定時器
擴展閱讀
無線信號網路的原理 2025-09-25 04:21:16
如何電腦查找無線網密碼 2025-09-25 04:12:41

計算機網路的3種定時器

發布時間: 2023-06-12 21:41:47

計算機網路

數據鏈路層差錯控制問題。但提問問題的背景信息太少,不太清楚你的問題前提條件都還有什麼。只能試著按照一般情況解答:
1、幀序號用3比特編號。當發送序號佔用3個比特時,就可組成共有8個不同的發送序號,從000到111。當數據幀的發送序號為111時,下一個發送序號就又是000。
2、默認該網路採用的是連續ARQ協議的工作原理。要點就是:在發送完一個數據幀後,不是停下來等待應答幀,而是可以連續再發送若干個數據幀。如果這時收到了接收端發來的確認幀,那麼還可以接著發送數據幀。由於減少了等待時間,整個通信的吞吐量就提高了。
3、根據題意,我們現在設發送序號用3比特來編碼,即發送的幀序號可以有從0到7等8個不同的序號;又設發送窗口WT=5。那麼,發送端在開始發送時,發送窗口將指明:即使在未收到對方確認信息的情況下,發送端可連續發送#0幀~#4幀等5個幀。若發送端發完了這5個幀(#0幀~#4幀)但仍末收到確認信息,則由於發送窗口已填滿,就必須停止發送而進入等待狀態。當收到0號幀的確認信息後,發送窗口就可以向前移動1個號,這時,#5幀已落人到發送窗口之內,因此發送端現在就可發送這個#5幀。其後假設又有3幀(#1至#3幀)的確認幀陸續到達發送端。於是發送窗口又可再向前移動3個號。此時,發送端又可繼續發送#6幀、#7幀和新的#0幀。
4、當用 n個比特進行編號時,若發送窗口的大小為WT,接收窗口的大小為WR,則只有WT≤2的n次方-1和WT+WR≤2的n次方成立時,滑動窗口協議才能正常工作。
但根據題目描述舉例,設n=3,WT=WR=5,當對某一序號的數據幀的 ACK 丟失時,接收端很可能將把這個#數據幀當做一個新的數據幀收下來,因此滑動窗口很可能不能正常工作。
5、選擇重傳ARQ協議
可設法只重傳出現差錯的數據幀或者是定時器超時的數據幀。但這時必須加大接收窗口,以便先收下發送序號不連續但仍處在接收窗口中的那些數據幀。等到所缺序號的數據幀收到後再一並送交主機。這就是選擇重傳ARQ協議。
使用選擇重傳ARQ協議可以避免重復傳送那些本來已經正確到達接收端的數據幀。但我們付出的代價是在接收端要設置具有相當容量的緩存空間,這在許多情況下是不夠經濟的。
正因如此,選擇重傳ARQ協議在目前就遠沒有連續則協議使用得那麼廣泛。今後存儲器晶元的價格會更加便宜,選擇重傳ARQ協議還是有可能受到更多的重視。 .
對於選擇重傳ARQ協議,接收窗口顯然不應該大於發送窗口。若用n比特進行編號,則接收窗口的最大值必須滿足:WR≤2n-1 。當接收窗口隊為最大值時,即WR=2n-1。例如:在n=3時,可以算出WT=WR=4。

❷ 關於計算機網路的最簡單的理解,說說看

以我大學考試的理解,無非是對於一些演算法的理解(比如CRC演算法、擁塞)和協議的分析(IPv4協議分析)

❸ 計算機網路自學筆記:TCP

如果你在學習這門課程,僅僅為了理解網路工作原理,那麼只要了解TCP是可靠傳輸,數據傳輸丟失時會重傳就可以了。如果你還要參加研究生考試或者公司面試等,那麼下面內容很有可能成為考查的知識點,主要的重點是序號/確認號的編碼、超時定時器的設置、可靠傳輸和連接的管理。

1 TCP連接

TCP面向連接,在一個應用進程開始向另一個應用進程發送數據之前,這兩個進程必須先相互「握手」,即它們必須相互發送某些預備報文段,以建立連接。連接的實質是雙方都初始化與連接相關的發送/接收緩沖區,以及許多TCP狀態變數。

這種「連接」不是一條如電話網路中端到端的電路,因為它們的狀態完全保留在兩個端系統中。

TCP連接提供的是全雙工服務 ,應用層數據就可在從進程B流向進程A的同時,也從進程A流向進程B。

TCP連接也總是點對點的 ,即在單個發送方與單個接收方之間建立連接。

一個客戶機進程向伺服器進程發送數據時,客戶機進程通過套接字傳遞數據流。

客戶機操作系統中運行的 TCP軟體模塊首先將這些數據放到該連接的發送緩存里 ,然後會不時地從發送緩存里取出一塊數據發送。

TCP可從緩存中取出並放入報文段中發送的數據量受限於最大報文段長MSS,通常由最大鏈路層幀長度來決定(也就是底層的通信鏈路決定)。 例如一個鏈路層幀的最大長度1500位元組,除去數據報頭部長度20位元組,TCP報文段的頭部長度20位元組,MSS為1460位元組。

報文段被往下傳給網路層,網路層將其封裝在網路層IP數據報中。然後這些數據報被發送到網路中。

當TCP在另一端接收到一個報文段後,該報文段的數據就被放人該連接的接收緩存中。應用程序從接收緩存中讀取數據流(注意是應用程序來讀,不是操作系統推送)。

TCP連接的每一端都有各自的發送緩存和接收緩存。

因此TCP連接的組成包括:主機上的緩存、控制變數和與一個進程連接的套接字變數名,以及另一台主機上的一套緩存、控制變數和與一個進程連接的套接字。

在這兩台主機之間的路由器、交換機中,沒有為該連接分配任何緩存和控制變數。

2報文段結構

TCP報文段由首部欄位和一個數據欄位組成。數據欄位包含有應用層數據。

由於MSS限制了報文段數據欄位的最大長度。當TCP發送一個大文件時,TCP通常是將文件劃分成長度為MSS的若干塊。

TCP報文段的結構。

首部包括源埠號和目的埠號,它用於多路復用/多路分解來自或送至上層應用的數據。另外,TCP首部也包括校驗和欄位。報文段首部還包含下列欄位:

32比特的序號欄位和32比特的確認號欄位。這些欄位被TCP發送方和接收方用來實現可靠數據傳輸服務。

16比特的接收窗口欄位,該欄位用於流量控制。該欄位用於指示接收方能夠接受的位元組數量。

4比特的首部長度欄位,該欄位指示以32比特的字為單位的TCP首部長度。一般TCP首部的長度就是20位元組。

可選與變長的選項欄位,該欄位用於當發送方與接收方協商最大報文段長度,或在高速網路環境下用作窗口調節因子時使用。

標志欄位ACK比特用於指示確認欄位中的ACK值的有效性,即該報文段包括一個對已被成功接收報文段的確認。 SYN和FIN比特用於連接建立和拆除。 PSH、URG和緊急指針欄位通常沒有使用。

•序號和確認號

TCP報文段首部兩個最重要的欄位是序號欄位和確認號欄位。

TCP把數據看成一個無結構的但是有序的位元組流。TCP序號是建立在傳送的位元組流之上,而不是建立在傳送的報文段的序列之上。

一個報文段的序號是該報文段首位元組在位元組流中的編號。

例如,假設主機A上的一個進程想通過一條TCP連接向主機B上的一個進程發送一個數據流。主機A中的TCP將對數據流中的每一個位元組進行編號。假定數據流由一個包含4500位元組的文件組成(可以理解為應用程序調用send函數傳遞過來的數據長度),MSS為1000位元組(鏈路層一次能夠傳輸的位元組數),如果主機決定數據流的首位元組編號是7。TCP模塊將為該數據流構建5個報文段(也就是分5個IP數據報)。第一個報文段的序號被賦為7;第二個報文段的序號被賦為1007,第三個報文段的序號被賦為2007,以此類推。前面4個報文段的長度是1000,最後一個是500。

確認號要比序號難理解一些。前面講過,TCP是全雙工的,因此主機A在向主機B發送數據的同時,也可能接收來自主機B的數據。從主機B到達的每個報文段中的序號欄位包含了從B流向A的數據的起始位置。 因此主機B填充進報文段的確認號是主機B期望從主機A收到的下一報文段首位元組的序號。

假設主機B已收到了來自主機A編號為7-1006的所有位元組,同時假設它要發送一個報文段給主機A。主機B等待主機A的數據流中位元組1007及後續所有位元組。所以,主機B會在它發往主機A的報文段的確認號欄位中填上1007。

再舉一個例子,假設主機B已收到一個來自主機A的包含位元組7-1006的報文段,以及另一個包含位元組2007-3006的報文段。由於某種原因,主機A還沒有收到位元組1007-2006的報文段。

在這個例子中,主機A為了重組主機B的數據流,仍在等待位元組1007。因此,A在收到包含位元組2007-3006的報文段時,將會又一次在確認號欄位中包含1007。 因為TCP只確認數據流中至第一個丟失報文段之前的位元組數據,所以TCP被稱為是採用累積確認。

TCP的實現有兩個基本的選擇:

1接收方立即丟棄失序報文段;

2接收方保留失序的位元組,並等待缺少的位元組以填補該間隔。

一條TCP連接的雙方均可隨機地選擇初始序號。 這樣做可以減少將那些仍在網路中的來自兩台主機之間先前連接的報文段,誤認為是新建連接所產生的有效報文段的可能性。

•例子telnet

Telnet由是一個用於遠程登錄的應用層協議。它運行在TCP之上,被設計成可在任意一對主機之間工作。

假設主機A發起一個與主機B的Telnet會話。因為是主機A發起該會話,因此主機A被標記為客戶機,主機B被標記為伺服器。用戶鍵入的每個字元(在客戶機端)都會被發送至遠程主機。遠程主機收到後會復制一個相同的字元發回客戶機,並顯示在Telnet用戶的屏幕上。這種「回顯」用於確保由用戶發送的字元已經被遠程主機收到並處理。因此,在從用戶擊鍵到字元顯示在用戶屏幕上之間的這段時間內,每個字元在網路中傳輸了兩次。

現在假設用戶輸入了一個字元「C」,假設客戶機和伺服器的起始序號分別是42和79。前面講過,一個報文段的序號就是該報文段數據欄位首位元組的序號。因此,客戶機發送的第一個報文段的序號為42,伺服器發送的第一個報文段的序號為79。前面講過,確認號就是主機期待的數據的下一個位元組序號。在TCP連接建立後但沒有發送任何數據之前,客戶機等待位元組79,而伺服器等待位元組42。

如圖所示,共發了3個報文段。第一個報文段是由客戶機發往伺服器,其數據欄位里包含一位元組的字元「C」的ASCII碼,其序號欄位里是42。另外,由於客戶機還沒有接收到來自伺服器的任何數據,因此該報文段中的確認號欄位里是79。

第二個報文段是由伺服器發往客戶機。它有兩個目的:第一個目的是為伺服器所收到的數據提供確認。伺服器通過在確認號欄位中填入43,告訴客戶機它已經成功地收到位元組42及以前的所有位元組,現在正等待著位元組43的出現。第二個目的是回顯字元「C」。因此,在第二個報文段的數據欄位里填入的是字元「C」的ASCII碼,第二個報文段的序號為79,它是該TCP連接上從伺服器到客戶機的數據流的起始序號,也是伺服器要發送的第一個位元組的數據。

這里客戶機到伺服器的數據的確認被裝載在一個伺服器到客戶機的數據的報文段中,這種確認被稱為是捎帶確認.

第三個報文段是從客戶機發往伺服器的。它的唯一目的是確認已從伺服器收到的數據。

3往返時延的估計與超時

TCP如同前面所講的rdt協議一樣,採用超時/重傳機制來處理報文段的丟失問題。最重要的一個問題就是超時間隔長度的設置。顯然,超時間隔必須大於TCP連接的往返時延RTT,即從一個報文段發出到收到其確認時。否則會造成不必要的重傳。

•估計往返時延

TCP估計發送方與接收方之間的往返時延是通過採集報文段的樣本RTT來實現的,就是從某報文段被發出到對該報文段的確認被收到之間的時間長度。

也就是說TCP為一個已發送的但目前尚未被確認的報文段估計sampleRTT,從而產生一個接近每個RTT的采樣值。但是,TCP不會為重傳的報文段計算RTT。

為了估計一個典型的RTT,採取了某種對RTT取平均值的辦法。TCP據下列公式來更新

EstimatedRTT=(1-)*EstimatedRTT+*SampleRTT

即估計RTT的新值是由以前估計的RTT值與sampleRTT新值加權組合而成的。

參考值是a=0.125,因此是一個加權平均值。顯然這個加權平均對最新樣本賦予的權值

要大於對老樣本賦予的權值。因為越新的樣本能更好地反映出網路當前的擁塞情況。從統計學觀點來講,這種平均被稱為指數加權移動平均

除了估算RTT外,還需要測量RTT的變化,RTT偏差的程度,因為直接使用平均值設置計時器會有問題(太靈敏)。

DevRTT=(1-β)*DevRTT+β*|SampleRTT-EstimatedRTT|

RTT偏差也使用了指數加權移動平均。B取值0.25.

•設置和管理重傳超時間隔

假設已經得到了估計RTT值和RTT偏差值,那麼TCP超時間隔應該用什麼值呢?TCP將超時間隔設置成大於等於估計RTT值和4倍的RTT偏差值,否則將造成不必要的重傳。但是超時間隔也不應該比估計RTT值大太多,否則當報文段丟失時,TCP不能很快地重傳該報文段,從而將給上層應用帶來很大的數據傳輸時延。因此,要求將超時間隔設為估計RTT值加上一定餘量。當估計RTT值波動較大時,這個余最應該大些;當波動比較小時,這個餘量應該小些。因此使用4倍的偏差值來設置重傳時間。

TimeoutInterval=EstimatedRTT+4*DevRTT

4可信數據傳輸

網際網路的網路層服務是不可靠的。IP不保證數據報的交付,不保證數據報的按序交付,也不保證數據報中數據的完整性。

TCP在IP不可靠的盡力而為服務基礎上建立了一種可靠數據傳輸服務。

TCP提供可靠數據傳輸的方法涉及前面學過的許多原理。

TCP採用流水線協議、累計確認。

TCP推薦的定時器管理過程使用單一的重傳定時器,即使有多個已發送但還未被確認的報文段也一樣。重傳由超時和多個ACK觸發。

在TCP發送方有3種與發送和重傳有關的主要事件:從上層應用程序接收數據,定時器超時和收到確認ACK。

從上層應用程序接收數據。一旦這個事件發生,TCP就從應用程序接收數據,將數據封裝在一個報文段中,並將該報文段交給IP。注意到每一個報文段都包含一個序號,這個序號就是該報文段第一個數據位元組的位元組流編號。如果定時器還沒有計時,則當報文段被傳給IP時,TCP就啟動一個該定時器。

第二個事件是超時。TCP通過重傳引起超時的報文段來響應超時事件。然後TCP重啟定時器。

第三個事件是一個來自接收方的確認報文段(ACK)。當該事件發生時,TCP將ACK的值y與變數SendBase(發送窗口的基地址)進行比較。TCP狀態變數SendBase是最早未被確認的位元組的序號。就是指接收方已正確按序接收到數據的最後一個位元組的序號。TCP採用累積確認,所以y確認了位元組編號在y之前的所有位元組都已經收到。如果Y>SendBase,則該ACK是在確認一個或多個先前未被確認的報文段。因此發送方更新其SendBase變數,相當於發送窗口向前移動。

另外,如果當前有未被確認的報文段,TCP還要重新啟動定時器。

快速重傳

超時觸發重傳存在的另一個問題是超時周期可能相對較長。當一個報文段丟失時,這種長超時周期迫使發送方等待很長時間才重傳丟失的分組,因而增加了端到端時延。所以通常發送方可在超時事件發生之前通過觀察冗餘ACK來檢測丟包情況。

冗餘ACK就是接收方再次確認某個報文段的ACK,而發送方先前已經收到對該報文段的確認。

當TCP接收方收到一個序號比所期望的序號大的報文段時,它認為檢測到了數據流中的一個間隔,即有報文段丟失。這個間隔可能是由於在網路中報文段丟失或重新排序造成的。因為TCP使用累計確認,所以接收方不向發送方發回否定確認,而是對最後一個正確接收報文段進行重復確認(即產生一個冗餘ACK)

如果TCP發送方接收到對相同報文段的3個冗餘ACK.它就認為跟在這個已被確認過3次的報文段之後的報文段已經丟失。一旦收到3個冗餘ACK,TCP就執行快速重傳 ,

即在該報文段的定時器過期之前重傳丟失的報文段。

5流量控制

前面講過,一條TCP連接雙方的主機都為該連接設置了接收緩存。當該TCP連接收到正確、按序的位元組後,它就將數據放入接收緩存。相關聯的應用進程會從該緩存中讀取數據,但沒必要數據剛一到達就立即讀取。事實上,接收方應用也許正忙於其他任務,甚至要過很長時間後才去讀取該數據。如果應用程序讀取數據時相當緩慢,而發送方發送數據太多、太快,會很容易使這個連接的接收緩存溢出。

TCP為應用程序提供了流量控制服務以消除發送方導致接收方緩存溢出的可能性。因此,可以說 流量控制是一個速度匹配服務,即發送方的發送速率與接收方應用程序的讀速率相匹配。

前面提到過,TCP發送方也可能因為IP網路的擁塞而被限制,這種形式的發送方的控制被稱為擁塞控制(congestioncontrol)。

TCP通過讓接收方維護一個稱為接收窗口的變數來提供流量控制。接收窗口用於告訴發送方,該接收方還有多少可用的緩存空間。因為TCP是全雙工通信,在連接兩端的發送方都各自維護一個接收窗口變數。 主機把當前的空閑接收緩存大小值放入它發給對方主機的報文段接收窗口欄位中,通知對方它在該連接的緩存中還有多少可用空間。

6 TCP連接管理

客戶機中的TCP會用以下方式與伺服器建立一條TCP連接:

第一步: 客戶機端首先向伺服器發送一個SNY比特被置為1報文段。該報文段中不包含應用層數據,這個特殊報文段被稱為SYN報文段。另外,客戶機會選擇一個起始序號,並將其放置到報文段的序號欄位中。為了避免某些安全性攻擊,這里一般隨機選擇序號。

第二步: 一旦包含TCP報文段的用戶數據報到達伺服器主機,伺服器會從該數據報中提取出TCPSYN報文段,為該TCP連接分配TCP緩存和控制變數,並向客戶機TCP發送允許連接的報文段。這個允許連接的報文段還是不包含應用層數據。但是,在報文段的首部卻包含3個重要的信息。

首先,SYN比特被置為1。其次,該 TCP報文段首部的確認號欄位被置為客戶端序號+1最後,伺服器選擇自己的初始序號,並將其放置到TCP報文段首部的序號欄位中。 這個允許連接的報文段實際上表明了:「我收到了你要求建立連接的、帶有初始序號的分組。我同意建立該連接,我自己的初始序號是XX」。這個同意連接的報文段通常被稱為SYN+ACK報文段。

第三步: 在收到SYN+ACK報文段後,客戶機也要給該連接分配緩存和控制變數。客戶機主機還會向伺服器發送另外一個報文段,這個報文段對伺服器允許連接的報文段進行了確認。因為連接已經建立了,所以該ACK比特被置為1,稱為ACK報文段,可以攜帶數據。

一旦以上3步完成,客戶機和伺服器就可以相互發送含有數據的報文段了。

為了建立連接,在兩台主機之間發送了3個分組,這種連接建立過程通常被稱為 三次握手(SNY、SYN+ACK、ACK,ACK報文段可以攜帶數據) 。這個過程發生在客戶機connect()伺服器,伺服器accept()客戶連接的階段。

假設客戶機應用程序決定要關閉該連接。(注意,伺服器也能選擇關閉該連接)客戶機發送一個FIN比特被置為1的TCP報文段,並進人FINWAIT1狀態。

當處在FINWAIT1狀態時,客戶機TCP等待一個來自伺服器的帶有ACK確認信息的TCP報文段。當它收到該報文段時,客戶機TCP進入FINWAIT2狀態。

當處在FINWAIT2狀態時,客戶機等待來自伺服器的FIN比特被置為1的另一個報文段,

收到該報文段後,客戶機TCP對伺服器的報文段進行ACK確認,並進入TIME_WAIT狀態。TIME_WAIT狀態使得TCP客戶機重傳最終確認報文,以防該ACK丟失。在TIME_WAIT狀態中所消耗的時間是與具體實現有關的,一般是30秒或更多時間。

經過等待後,連接正式關閉,客戶機端所有與連接有關的資源將被釋放。 因此TCP連接的關閉需要客戶端和伺服器端互相交換連接關閉的FIN、ACK置位報文段。

❹ 計算機網路體系分為哪四層

1.、應用層

應用層對應於OSI參考模型的高層,為用戶提供所需要的各種服務,例如:FTP、Telnet、DNS、SMTP等.

2.、傳輸層

傳輸層對應於OSI參考模型的傳輸層,為應用層實體提供端到端的通信功能,保證了數據包的順序傳送及數據的完整性。該層定義了兩個主要的協議:傳輸控制協議(TCP)和用戶數據報協議(UDP).

TCP協議提供的是一種可靠的、通過「三次握手」來連接的數據傳輸服務;而UDP協議提供的則是不保證可靠的(並不是不可靠)、無連接的數據傳輸服務.

3.、網際互聯層

網際互聯層對應於OSI參考模型的網路層,主要解決主機到主機的通信問題。它所包含的協議設計數據包在整個網路上的邏輯傳輸。注重重新賦予主機一個IP地址來完成對主機的定址,它還負責數據包在多種網路中的路由。

該層有三個主要協議:網際協議(IP)、互聯網組管理協議(IGMP)和互聯網控制報文協議(ICMP)。

IP協議是網際互聯層最重要的協議,它提供的是一個可靠、無連接的數據報傳遞服務。

4.、網路接入層(即主機-網路層)

網路接入層與OSI參考模型中的物理層和數據鏈路層相對應。它負責監視數據在主機和網路之間的交換。事實上,TCP/IP本身並未定義該層的協議,而由參與互連的各網路使用自己的物理層和數據鏈路層協議,然後與TCP/IP的網路接入層進行連接。地址解析協議(ARP)工作在此層,即OSI參考模型的數據鏈路層。

(4)計算機網路的3種定時器擴展閱讀:

OSI將計算機網路體系結構(architecture)劃分為以下七層:

物理層: 將數據轉換為可通過物理介質傳送的電子信號相當於郵局中的搬運工人。

數據鏈路層: 決定訪問網路介質的方式。

在此層將數據分幀,並處理流控制。本層指定拓撲結構並提供硬體定址,相當於郵局中的裝拆箱工人。

網路層: 使用權數據路由經過大型網路 相當於郵局中的排序工人。

傳輸層: 提供終端到終端的可靠連接 相當於公司中跑郵局的送信職員。

會話層: 允許用戶使用簡單易記的名稱建立連接 相當於公司中收寄信、寫信封與拆信封的秘書。

表示層: 協商數據交換格式 相當公司中簡報老闆、替老闆寫信的助理。

應用層: 用戶的應用程序和網路之間的介面老闆。

❺ 簡述RIP的工作原理

一、概述
RIP協議的全稱是路由信息協議(Routing Information Protocol),它是一種內部網關協議(IGP),用於一個自治系統(AS)內的路由信息的傳遞。RIP協議是基於距離矢量演算法(Distance Vector Algorithms)的,它使用「跳數」,即metric來衡量到達目標地址的路由距離。

二、該協議的局限性
1、協議中規定,一條有效的路由信息的度量(metric)不能超過15,這就使得該協議不能應用於很大型的網路,應該說正是由於設計者考慮到該協議只適合於小型網路所以才進行了這一限制。對於metric為16的目標網路來說,即認為其不可到達。
2、該路由協議應用到實際中時,很容易出現「計數到無窮大」的現象,這使得路由收斂很慢,在網路拓撲結構變化以後需要很長時間路由信息才能穩定下來。
3、該協議以跳數,即報文經過的路由器個數為衡量標准,並以此來選擇路由,這一措施欠合理性,因為沒有考慮網路延時、可靠性、線路負荷等因素對傳輸質量和速度的影響。

三、RIP(版本1)報文的格式和特性
3.1、RIP(版本1)報文的格式
0 7 15 31
命令字(1位元組) 版本(1位元組) 必須為0(2位元組)
地址類型標識符(2位元組) 必須為0(2位元組)
IP地址
必須為0
必須為0
Metric值(1—16)
(最多可以有24個另外的路由,與前20位元組具有相同的格式)

「命令字」欄位為1時表示RIP請求,為2時表示RIP應答。地址類型標志符在實際應用中總是為2,即地址類型為IP地址。「IP地址」欄位表明目的網路地址,「Metric」欄位表明了到達目的網路所需要的「跳數」。

3.2. RIP的特性
(1)路由信息更新特性:
路由器最初啟動時只包含了其直連網路的路由信息,並且其直連網路的metric值為1,然後它向周圍的其他路由器發出完整路由表的RIP請求(該請求報文的「IP地址」欄位為0.0.0.0)。路由器根據接收到的RIP應答來更新其路由表,具體方法是添加新的路由表項,並將其metric值加1。如果接收到與已有表項的目的地址相同的路由信息,則分下面三種情況分別對待:第一種情況,已有表項的來源埠與新表項的來源埠相同,那麼無條件根據最新的路由信息更新其路由表;第二種情況,已有表項與新表項來源於不同的埠,那麼比較它們的metric值,將metric值較小的一個最為自己的路由表項;第三種情況,新舊表項的metric值相等,普遍的處理方法是保留舊的表項。
路由器每30秒發送一次自己的路由表(以RIP應答的方式廣播出去)。針對某一條路由信息,如果180秒以後都沒有接收到新的關於它的路由信息,那麼將其標記為失效,即metric值標記為16。在另外的120秒以後,如果仍然沒有更新信息,該條失效信息被刪除。
2)RIP版本1對RIP報文中「版本」欄位的處理:
0:忽略該報文。
1:版本1報文,檢查報文中「必須為0」的欄位,若不符合規定,忽略該報文。
>1:不檢查報文中「必須為0」的欄位,僅處理RFC 1058中規定的有意義的欄位。因此,運行RIP版本1的機器能夠接收處理RIP版本2的報文,但會丟失其中的RIP版本2新規定的那些信息。

(3)RIP版本1對地址的處理
RIP版本1不能識別子網網路地址,因為在其傳送的路由更新報文中不包含子網掩碼,因此RIP路由信息要麼是主機地址,用於點對點鏈路的路由;要麼是A、B、C類網路地址,用於乙太網等的路由;另外,還可以是0.0.0.0,即預設路由信息。

(4)計數到無窮大(Counting to Infinity)
前面在RIP的局限性一部分提到了可能出現的計數到無窮大的現象,下面就來分析一下該現象的產生原因與過程。考察下面的簡單網路:
c(目的網路)----router A------router B
在正常情況下,對於目標網路,A路由器的metric值為1,B路由器的metric值為2。當目標網路與A路由器之間的鏈路發生故障而斷掉以後:
c(目的網路)--||--router A------router B
A路由器會將針對目標網路C的路由表項的metric值置為16,即標記為目標網路不可達,並准備在每30秒進行一次的路由表更新中發送出去,如果在這條信息還未發出的時候,A路由器收到了來自B的路由更新報文,而B中包含著關於C的metric為2的路由信息,根據前面提到的路由更新方法,路由器A會錯誤的認為有一條通過B路由器的路徑可以到達目標網路C,從而更新其路由表,將對於目標網路C的路由表項的metric值由16改為3,而對於的埠變為與B路由器相連接的埠。很明顯,A會將該條信息發給B,B將無條件更新其路由表,將metric改為4;該條信息又從B發向A,A將metric改為5……最後雙發的路由表關於目標網路C的metric值都變為16,此時,才真正得到了正確的路由信息。這種現象稱為「計數到無窮大」現象,雖然最終完成了收斂,但是收斂速度很慢,而且浪費了網路資源來發送這些循環的分組。
另外,從這里我們也可以看出,metric值的最大值的選擇實際上存在著矛盾,如果選得太小,那麼適用的網路規模太小;如果選得過大,那麼在出現計數到無窮大現象的時候收斂時間會變得很長。
3.3. 為了提高RIP性能的兩項措施
3.3.1. 水平分割
在上面的「計數到無窮大」現象中,產生的原因是A、B之間互相傳送了「欺騙信息」,那麼針對這種情況,我們自然會想到如果能將這些「欺騙信息」去掉,那麼不就可以在一定程度上避免「計數到無窮大」了嗎。水平分割正是這樣一種解決手段。
「普通的水平分割」是:如果一條路由信息是從X埠學習到的,那麼從該埠發出的路由更新報文中將不再包含該條路由信息。
「帶毒化逆轉的水平分割」是:如果一條路由信息是從X埠學習到的,那麼從該埠發出的路由更新報文中將繼續包含該條路由信息,而且將這條信息的metric置為16。
「普通的水平分割」能避免欺騙信息的發送,而且減小了路由更新報文的大小,節約了網路帶寬;「帶毒化逆轉的水平分割」能夠更快的消除路由信息的環路,但是增加了路由更新的負擔。這兩種措施的選擇可根據實際情況進行選擇。

3.3.2. 觸發更新
上面的「水平分割」能夠消除兩台路由器間的欺騙信息的相互循環,但是當牽涉到三台或者以上的路由器時,效果就有限了。考察下面的網路:

+---+ +----+ +-----+ /-----\
| | | C +-------| D | -----|| E ||
| A +------| | | +---- | |
+-+-+ +----+ +---+-+ \-----/
| -- |
| -- |
| -- |
+----+ |
| | |
| B +-----------------------
| |
+----+
E是目標網路

針對目標網路,各路由器的路由信息分別如下:
A:3 C
B:2 D
C:2 D
D:1 直連
當D與目標網路之間發生故障中斷以後,B和C都能正確的從D得到網路不可達的信息,但是,從上面的路由信息中可以看出,A雖然不會給C發送錯誤信息,但是A可能在未收到網路不可達信息之前就給B發送了路由信息,讓B錯誤的認為可以通過A到達目標網路,繼而又會出現「計數到無窮大」的現象。
觸發更新就是為了針對上述情況進行的一種改善,它的具體實現措施是:路由器一旦察覺到網路變化,就盡快甚至是立即發送更新報文,而不等待更新周期結束。只要觸發更新的速度足夠快,就可以大大的防止「計數到無窮大」的發生,但是這一現象還是有可能發生的。
使用了觸發更新以後,當網路拓撲發生變化的時候,網路中會出現類似於「多米諾骨牌」的更新報文潮流,並最後中止於從未發生變化的路徑到達目標網路的路由器。

3.4. RIP中的4個定時器
RIP中一共使用了4個定時器:update timer, timeout timer, garbage timer, holddown timer。
Update timer用於每30秒發送路由更新報文。
Timeout timer用於路由信息失效前的180秒的計時,每次收到同一條路由信息的更新信息就將該計數器復位。
Garbage timer和holddown timer同時用於將失效的路由信息刪除前的計時:在holddown timer的時間內,失效的路由信息不能被接收到的新信息所更新;在garbage timer計時器超時後,失效的路由信息被刪除。
另外,在觸發更新中,更新信息會需要1到5秒的隨機延時以後才被發出,這里也需要一個計時器。
四、RIP版本2簡介
RIP版本2的報文格式如下:
0 7 15 31
命令字(1位元組) 版本(1位元組) 路由域(2位元組)
0xFFFF(2位元組) 驗證類型(2位元組)
驗證(16位元組)
地址類型標識符(2位元組) 路由標簽(2位元組)
IP地址
子網掩碼
下一跳IP地址
Metric值(1—16)
(最多可以有24個另外的路由,與前20位元組具有相同的格式)

版本2的RIP使用了版本1中「必須為0」的欄位,增加了一些對於路由的有用信息,其主要新添的特性如下:
(1)報文中包含子網掩碼,可以進行子網路由
(2)支持明文/MD5驗證
(3)報文中包含了下一跳IP,為路由的選優提供了更多的信息。

❻ 計算機網路名詞解釋知識點簡答題整理

基帶傳輸:比特流直接向電纜發送,無需調制到不同頻段;

基帶信號:信源發出的沒有經過調制的原始電信號;

URL :統一資源定位符,標識萬維網上的各種文檔,全網范圍唯一;

傳輸時延:將分組的所有比特推向鏈路所需要的時間;

協議:協議是通信設備通信前約定好的必須遵守的規則與約定,包括語法、語義、定時等。

網路協議:對等層中對等實體間制定的規則和約定的集合;

MODEM :數據機;

起始(原始)伺服器:對象最初存放並始終保持其拷貝的伺服器;

計算機網路:是用通信設備和線路將分散在不同地點的有獨立功能的多個計算機系統互相連接起來,並通過網路協議進行數據通信,實現資源共享的計算機集合;

解調:將模擬信號轉換成數字信號;

多路復用:在一條傳輸鏈路上同時建立多條連接,分別傳輸數據;

默認路由器:與主機直接相連的一台路由器;

LAN :區域網,是一個地理范圍小的計算機網路;

DNS :域名系統,完成主機名與 IP 地址的轉換;

ATM :非同步傳輸模式,是建立在電路交換和分組交換基礎上的一種面向連接的快速分組交換技術;

Torrent :洪流,參與一個特定文件分發的所有對等方的集合;

Cookie :為了辨別用戶、用於 session 跟蹤等而儲存在用戶本地終端的數據;

SAP :服務訪問點;

n PDU : PDU 為協議數據單元,指對等層之間的數據傳輸單位;第 n 層的協議數據單元;

PPP :點對點傳輸協議;

Web caching :網頁緩存技術;

Web 緩存:代替起始伺服器來滿足 HTTP 請求的網路實體。

Proxy server :代理伺服器;

Go-back-n :回退 n 流水線協議;允許發送方連續發送分組,無需等待確認,若出錯,從出錯的分組開始重發;接收方接收數據分組,若正確,發 ACK ,若出錯,丟棄出錯分組及其後面的分組,不發任何應答;

Packet switching :分組交換技術;

CDMA :碼分多路復用技術;各站點使用不同的編碼,然後可以混合發送,接收方可正確提取所需信息;

TDM :時分多路復用,將鏈路的傳輸時間劃分為若干時隙,每個連接輪流使用不同時隙進行傳輸;

FDM :頻分多路復用,將鏈路傳輸頻段分成多個小的頻段,分別用於不同連接信息的傳送;

OSI :開放系統互連模型,是計算機廣域網體系結構的國際標准,把網路分為 7 層;

CRC :循環冗餘檢測法,事先雙方約定好生成多項式,發送節點在發送數據後附上冗餘碼,使得整個數據可以整除生成多項式,接收節點收到後,若能整除,則認為數據正確,否則,認為數據錯誤;

RIP :路由信息協議;

Socket (套接字):同一台主機內應用層和運輸層的介面;

轉發表:交換設備內,從入埠到出埠建立起來的對應表,主要用來轉發數據幀或 IP 分組;

路由表:路由設備內,從源地址到目的地址建立起來的最佳路徑表,主要用來轉發 IP 分組;

存儲轉發:分組先接收存儲後,再轉發出去;

虛電路網路:能支持實現虛電路通信的網路;

數據報網路:能支持實現數據報通信的網路;

虛電路:源和目的主機之間建立的一條邏輯連接,創建這條邏輯連接時,將指派一個虛電路標識符 VC.ID ,相關設備為它運行中的連接維護狀態信息;

毒性逆轉技術: DV 演算法中,解決計數到無窮的技術,即告知從相鄰路由器獲得最短路徑信息的相鄰路由器到目的網路的距離為無窮大;

加權公平排隊 WFQ :排隊策略為根據權值大小不同,將超出隊列的數據包丟棄;

服務原語:服務的實現形式,在相鄰層通過服務原語建立交互關系,完服務與被服務的過程;

透明傳輸:在無需用戶干涉的情況下,可以傳輸任何數據的技術;

自治系統 AS :由一組通常在相同管理者控制下的路由器組成,在相同的 AS 中,路由器可全部選用同樣的選路演算法,且擁有相互之間的信息;

分組丟失:分組在傳輸過程中因為種種原因未能到達接收方的現象;

隧道技術:在鏈路層或網路層通過對等協議建立起來的邏輯通信信道;

移動接入:也稱無線接入,是指那些常常是移動的端系統與網路的連接;

面向連接服務:客戶機程序和伺服器程序發送實際數據的分組前,要彼此發送控制分組建立連接;

無連接服務:客戶機程序和伺服器程序發送實際數據的分組前,無需彼此發送控制分組建立連接;

MAC 地址:網卡或網路設備埠的物理地址;

擁塞控制:當網路發生擁塞時,用響應的演算法使網路恢復到正常工作的狀態;

流量控制:控制發送方發送數據的速率,使收發雙方協調一致;

Ad Hoc 網路:自主網路,無基站;

往返時延:發送方發送數據分組到收到接收方應答所需要的時間;

電路交換:通信節點之間採用面向連接方式,使用專用電路進行傳輸;

ADSL :非同步數字用戶專線,採用不對稱的上行與下行傳輸速率,常用於用戶寬頻接入。

多播:組播,一對多通信;

路由器的組成包括:輸入埠、輸出埠、交換結構、選路處理器;

網路應用程序體系結構:客戶機 / 伺服器結構、對等共享、混合;

集線器是物理層設備,交換機是數據鏈路層設備,網卡是數據鏈路層設備,路由器是網路層設備;

雙絞線連接設備的兩種方法:直連線和交叉線,同種設備相連和計算機與路由器相連都使用交叉線;不同設備相連用直連線;

MAC 地址 6 位元組, IPv4 地址 4 位元組, IPv6 地址 16 位元組;

有多種方法對載波波形進行調制,調頻,調幅,調相;

IEEE802.3 乙太網採用的多路訪問協議是 CSMA/CD ;

自治系統 AS 內部的選路協議是 RIP 、 OSPF ;自治系統間的選路協議是 BGP ;

多路訪問協議:分三大類:信道劃分協議、隨機訪問協議、輪流協議;

信道劃分協議包括:頻分 FDM 、時分 TDM 、碼分 CDMA ;

隨機訪問協議包括: ALOHA 、 CSMA 、 CSMA/CD(802.3) 、 CSMA/CA(802.11) ;

輪流協議包括:輪詢協議、令牌傳遞協議

ISO 和 OSI 分別是什麼單詞的縮寫,中文意思是什麼?用自己的理解寫出 OSI 分成哪七層?每層要解決的問題和主要功能是什麼?

答:ISO:international standard organization 國際標准化組織;OSI:open system interconnection reference model 開放系統互連模型;

OSI分為 應用層、表示層、會話層、傳輸層、網路層、數據鏈路層、物理層;

層名稱解決的問題主要功能

應用層實現特定應用選擇特定協議;針對特定應用規定協議、時序、表示等,進行封裝。在端系統中用軟體來實現,如HTTP;

表示層壓縮、加密等表示問題;規定數據的格式化表示,數據格式的轉換等;

會話層會話關系建立,會話時序控制等問題;規定通信的時序;數據交換的定界、同步、建立檢查點等;

傳輸層源埠到目的埠的傳輸問題;所有傳輸遺留問題:復用、流量、可靠;

網路層路由、擁塞控制等網路問題;IP定址,擁塞控制;

數據鏈路層相鄰節點無差錯傳輸問題;實現檢錯與糾錯,多路訪問,定址;

物理層物理上可達;定義機械特性,電氣特性,功能特性等;

網際網路協議棧分層模型及每層的功能。

分層的優點:使復雜系統簡化,易於維護和更新;

分層的缺點:有些功能可能在不同層重復出現;

​​



假設一個用戶 ( 郵箱為: [email protected]) 使用 outlook 軟體發送郵件到另一個用戶 ( 郵箱為: [email protected]) ,且接收用戶使用 IMAP 協議收取郵件,請給出此郵件的三個傳輸階段,並給出每個階段可能使用的應用層協議。

用戶 [email protected] 使用outlook軟體發送郵件到 163 郵件伺服器

163郵件伺服器將郵件發送給用戶 [email protected] 的yahoo郵件伺服器

用戶 [email protected] 使用IMAP協議從yahoo郵件伺服器上拉取郵件

第1、2階段可以使用SMTP協議或者擴展的SMTP協議:MIME協議,第3階段可以使用IMAP、POP3、HTTP協議

三次握手的目的是什麼?為什麼要三次(二次為什麼不行)?

為了實現可靠數據傳輸,TCP協議的通信雙方,都必須維護一個序列號,以標識發送出去的數據包中,哪些是已經被對方收到的。三次握手的過程即是通信雙方相互告知序列號起始值,並確認對方已經收到了序列號起始值的必經步驟。

如果只是兩次握手,至多隻有連接發起方的起始序列號能被確認,另一方選擇的序列號則得不到確認。

選擇性重傳 (SR) 協議中發送方窗口和接收方窗口何時移動?分別如何移動?

發送方:當收到ACK確認分組後,若該分組的序號等於發送基序號時窗口發生移動;向前移動到未確認的最小序號的分組處;

接收方:當收到分組的序號等於接收基序號時窗口移動;窗口按交付的分組數量向前移動;

簡述可靠傳輸協議 rdt1.0, rdt2.0, rdt2.1, rdt2.2 和 rdt3.0 在功能上的區別。

rdt1.0:經可靠信道上的可靠數據傳輸,數據傳送不出錯不丟失,不需要反饋。

rdt2.0(停等協議):比特差錯信道上的可靠數據傳輸,認為信道傳輸的數據可能有比特差錯,但不會丟包。接收方能進行差錯檢驗,若數據出錯,發送方接收到NAK之後進行重傳。

rdt2.1:在rdt2.0的基礎上增加了處理重復分組的功能,收到重復分組後,再次發送ACK;

rdt2.2:實現無NAK的可靠數據傳輸,接收方回發帶確認號的ACK0/1,

收到出錯分組時,不發NAK,發送接收到的上一個分組的ACK;

rdt3.0:實現了超時重發功能,由發送方檢測丟包和恢復;

電路交換和虛電路交換的區別?哪些網路使用電路交換、報文交換、虛電路交換和數據報交換?請各舉一個例子。

電路交換時整個物理線路由通訊雙方獨占;

虛電路交換是在電路交換的基礎上增加了分組機制,在一條物理線路上虛擬出多條通訊線路。

電路交換:電話通信網

報文交換:公用電報網

虛電路交換:ATM

數據報交換:Internet

電路交換:面向連接,線路由通信雙方獨占;

虛電路交換:面向連接,分組交換,各分組走統一路徑,非獨占鏈路;

數據報交換:無連接,分組交換,各分組走不同路徑;

交換機逆向擴散式路徑學習法的基本原理:

交換表初始為空;

當收到一個幀的目的地址不在交換表中時,將該幀發送到所有其他介面(除接收介面),並在表中記錄下發送節點的信息,包括源MAC地址、發送到的介面,當前時間;

如果每個節點都發送了一幀,每個節點的地址都會記錄在表中;

收到一個目的地址在表中的幀,將該幀發送到對應的介面;

表自動更新:一段時間後,沒有收到以表中某個地址為源地址的幀,從表中刪除該地址;

非持久 HTTP 連接和持久 HTTP 連接的不同:

非持久HTTP連接:每個TCP連接只傳輸一個web對象,只傳送一個請求/響應對,HTTP1.0使用;

持久HTTP連接:每個TCP連接可以傳送多個web對象,傳送多個請求/響應對,HTTP1.1使用;

Web 緩存的作用是什麼?簡述其工作過程:

作用:代理原始伺服器滿足HTTP請求的網路實體;

工作過程:

瀏覽器:與web緩存建立一個TCP連接,向緩存發送一個該對象的HTTP請求;

Web緩存:檢查本地是否有該對象的拷貝;

若有,就用HTTP響應報文向瀏覽器轉發該對象;

若沒有,緩存與原始伺服器建立TCP連接,向原始伺服器發送一個該對象的HTTP請求,原始伺服器收到請求後,用HTTP響應報文向web緩存發送該對象,web緩存收到響應,在本地存儲一份,並通過HTTP響應報文向瀏覽器發送該對象;

簡要說明無線網路為什麼要用 CSMA/CA 而不用 CSMA/CD ?

無線網路用無線信號實施傳輸,現在的技術還無法檢測沖突,因此無法使用帶沖突檢測的載波偵聽多路訪問協議CSMA/CD,而使用沖突避免的載波偵聽多路訪問協議CSMA/CA;

簡述各種交換結構優缺點,並解釋線頭 HOL 阻塞現象。

內存交換結構:以內存為交換中心;

       優點:實現簡單,成本低;

       缺點:不能並行,速度慢;

匯流排交換結構:以共享匯流排為交換中心;

       優點:實現相對簡單,成本低;

       缺點:不能並行,速度慢,不過比memory快;

縱橫制:以交叉陣列為交換中心;

       優點:能並行,速度快,比memory和匯流排都快;

       缺點:實現復雜,成本高;

線頭HOL阻塞:輸入隊列中後面的分組被位於線頭的一個分組阻塞(即使輸出埠是空閑的),等待交換結構發送;

CSMA/CD 協議的中文全稱,簡述其工作原理。

帶沖突檢測的載波偵聽多路訪問協議;

在共享信道網路中,發送節點發送數據之前,先偵聽鏈路是否空閑,若空閑,立即發送,否則隨機推遲一段時間再偵聽,在傳輸過程中,邊傳輸邊偵聽,若發生沖突,以最快速度結束發送,並隨機推遲一段時間再偵聽;

奇偶校驗、二維奇偶校驗、 CRC 校驗三者比較:

奇偶校驗能檢測出奇數個差錯;

二維奇偶校驗能夠檢測出兩個比特的錯誤,能夠糾正一個比特的差錯;

CRC校驗能檢測小於等於r位的差錯和任何奇數個差錯;

GBN 方法和 SR 方法的差異:

GBN:一個定時器,超時,重發所有已發送未確認接收的分組,發送窗口不超過2的k次方-1,接收窗口大小為1,採用累計確認,接收方返回最後一個正確接受的分組的ACK;

SR:多個定時器,超時,只重發超時定時器對應的分組,發送窗口和接收窗口大小都不超過2的k-1次方,非累計確認,接收方收到當前窗口或前一窗口內正確分組時返回對應的ACK;

❼ 運輸層知識要點——謝希仁《計算機網路》

為了在計算機網路中有條不紊地交換數據,就必須遵守一些事先約定好的規則。這些規則明確規定了所 交換數據的格式 以及有關的 同步 問題。

同步的含義:在一定條件下應當發生什麼事件,因而含有時序的意思。

網路協議:為進行網路中的數據交換而建立的規則、標准或約定。

網路協議由以下三個要素組成:

   1)語法:即數據與控制信息的結構或格式

   2)語義:即需要發出何種控制信息,完成何種動作以及做出何種反應

   3)同步:即事件實現順序的詳細說明

一、運輸層協議的概述

   1.1 進程之間的通信

   1.2 運輸層的兩個主要協議

   1.3 運輸層的埠

二、用戶數據報協議UDP

   2.1 UDP概述

   2.2 UDP的首部格式

三、傳輸控制協議TCP概述

   3.1 TCP的最主要的特點

   3.2 TCP的連接

四、可靠傳輸的工作原理

   4.1 停止等待協議

   4.2 連續ARQ協議

五、TCP報文段的首部格式

六、TCP可靠傳輸的實現

   6.1 以位元組為單位的滑動窗口

   6.2 超時重傳時間的選擇

   6.3 選擇確認SACK

七、TCP的流量控制

   7.1 利用滑動窗口實現流量控制

   7.2 必須考慮傳輸效率

八、TCP的擁塞控制

   8.1 擁塞控制的一般原理

   8.2 幾種擁塞控制方法

   8.3 隨機早期檢測RED

九、TCP的運輸連接管理

   9.1 TCP的連接建立

   9.2 TCP的連接釋放

   9.3 TCP的有限狀態機

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

1.1 進程之間的通信

1.只有主機的協議棧才有運輸層,而網路核心部分中的路由器在轉發分組時都只用到了下三層的功能

2.兩個主機進行通信就是兩個主機中的應用進程互相通信。從運輸層的角度看,通信的真正端點並不是主機而是主機中的進程。(IP協議能把分組送到目的主機)

網路層時為主機之間提供邏輯通信,而運輸層為應用進程之間提供端到端的邏輯通信。

3.運輸層一個重要功能——復用、分用。 (應用進程復用、分用運輸層)

1.2 運輸層的兩個主要協議

1.UDP—User Datagram Protocol 用戶數據報協議(無連接):DNS/RIP/DHCP/SNMP/NFS

TCP—Transmission Control Protocol 傳輸控制協議(面向連接):SMTP/TELNET/HTTP/ FTP

1.3 運輸層的埠

問題:為了使運行不同操作系統的計算機的應用進程能夠互相通信,就必須使用統一的方法(而這種方法必須與特定操作系統無關)對TCP/IP體系的應用進程進行標識。

為什麼不用進程號來區分?(第一,不同操作系統的進程標識符不同;第二,用功能來識別,而不是進程,例如郵件服務功能,而不管具體是哪個進程)

解決方案:在運輸層使用協議埠號,即埠。軟體埠是應用層的各種協議進程與運輸實體進行層間交互的一種地址。(埠號只具有本地意義,只是為了標識本計算機應用層中各個進程在和運輸層交互時的層間介面。)

埠分為兩大類:

1)伺服器使用的埠號:熟知埠號或系統埠號(0~1023);登記埠號(1024~49151)

2)客戶端使用的埠號:49152~65535

2.1 UDP概述

1.UDP只在IP的數據報服務至上增加了很少一點功能,就是復用、分用以及差錯檢測功能

2.特點

   1)無連接

   2)盡最大努力交付

   3)面向報文 (不合並、不拆分、保留這些報文的邊界)

   4)UDP沒有擁塞控制

   5)UDP支持一對一、一對多、多對一和多對多的交互通信

   6)UDP的首部開銷小,只有8位元組

應用進程本身可以在不影響應用的實時性的前提下,增加一些提高可靠性的措施,如採用前向糾錯或重傳已丟失的報文。

2.2 UDP的首部格式

1.traceroute 讓發送的UDP用戶數據報故意使用一個非法的UDP埠號,接收方丟棄報文,並由ICMP(網路控制報文協議)發送「埠不可達」差錯報文給發送方。

2.計算檢驗和。IP數據報的校驗和只檢驗IP數據報的首部,但UDP的校驗和是把首部和數據部分一起都檢驗。(12位元組的首部+真正的首部+數據來進行校驗和的計算)

   Q1.為什麼計算校驗和要加12位元組的偽首部

   Q2.計算校驗和的原理是什麼?

3.1 TCP的最主要的特點

1.面向連接的運輸層協議(建立連接、傳輸數據、釋放連接)

2.點對點,每一條TCP連接只能有兩個端點

3.可靠交付(無差錯、不丟失、不重復、並且按序到達)

4.全雙工通信。TCP連接的兩端都設有發送緩存和接收緩存。

5.面向位元組流。(流指的是流入到進程或從進程流出的位元組序列;面向位元組流:TCP把應用程序交下來的數據看成是一連串的無結構位元組流。 接收方的應用程序必須有能力識別接收到的位元組流,把它還原成有意義的應用層數據。 因此TCP可以根據窗口值和當前網路狀況調整發送的報文長度。劃分短一點,或者積累到足夠多再發送出去。)

3.2 TCP的連接

1.TCP把連接作為最基本的抽象。

2.每一條TCP連接有兩個端點。TCP連接的端點叫作套接字。

   套接字soket = (IP地址:埠號)

每一條TCP連接唯一地被通信兩端的兩個端點(即兩個套接字)所確定。

   TCP連接 ::= {socket1, socket2}

理想的傳輸條件有以下兩個特點:

   1)傳輸信道不產生差錯

   2)不管發送方以多快的速度發送數據,接收方總是來得及處理收到的數據

實際的網路並不具備,因此:

   1)出現差錯時,讓發送方重傳

   2)接收方來不及處理時,及時告訴發送方適當降低發送數據的速度

4.1 停止等待協議

1.「停止等待」就是沒發送完一個分組就停止發送,等待對方的確認,在收到確認後再發送下一個分組。

2.超時重傳。在每發完一個分組就設置一個超時計時器,如果在超時計時器之前收到對方的確認,就撤銷已設置的超時計時器。如果未收到,就認為剛才的分組丟失,並重傳。

3.三種情況:A發送的分組出錯、丟失;B發送的確認丟失;B發送的確認遲到

確認丟失:B丟棄重復的分組,向A重傳確認

確認遲到:A丟棄重復的確認,B丟棄重復分組,並向A重傳確認

4.常稱為自動重傳請求ARQ,重傳時自動進行的(超時即重傳)

5.缺點:信道利用率太低

   U=Td/(Td+RTT+Ta)

為了提高傳輸效率,發送方不使用停止等待協議,而是採用流水線傳輸。流水線傳輸就是發送發可連續發送多個分組,不必等每發完一個分組就停頓下來等待對方的確認。(連續ARQ協議和滑動窗口協議)

4.2 連續ARQ協議

1.位於發送窗口內的分組都可連續發送出去,而不需要等待對方的確認。

2.累積確認:接收方不必對收到的分組逐個發送確認,而是在收到幾個分組後,對按序到達的最後一個分組發送確認。

3.缺點:Go-back-N (發送前5個分組,第3個分組丟失,後面三個要重傳)

1.源埠和目的埠

2.序號。 每個位元組都按順序編號。

3.確認號。 期望收到對方下一個報文段的第一個數據位元組的序號。

若確認號=N,則表明:到序號N-1為止的所有數據都已正確收到。

4.數據偏移。 指出TCP報文段的數據起始處距離TCP報文段的起始處有多遠(也即TCP報文段首部長度)。由於首部中還有長度不確定的選項欄位,因此數據偏移欄位是必要的。

5.窗口。窗口欄位明確指出了現在允許對方發送的數據量。窗口值是經常在動態變化著。

6.1 以位元組為單位的滑動窗口

1.發送緩存用來暫存:

   1)發送應用程序傳送給發送方TCP准備發送的數據;

   2)TCP已發送但未收到確認德爾數據

2.接收緩存用來存放:

   1)按序到達的、但尚未被接收應收程序讀取的數據;

   2)未按序到達的數據

3.注意三點:

   1)A的發送窗口是根據B的接收窗口設置的,但是在同一時刻,由於網路傳輸的滯後,A的發送窗口並不總是B的接收窗口一樣大

   2)TCP通常對不按序到達的數據是先臨時存放在接收窗口中,等到位元組流中所缺少的位元組收到後,再按序交付上層的應用進程

   3)TCP接收方有累計確認功能(不能過分推遲發送確認,否則會導致發送方不必要的重傳)

6.2 超時重傳時間的選擇

1.超時重傳時間設置太短,會引起很多不必要的重傳;如果設置太長,使網路的空閑時間增大,降低傳輸效率。

2.新的RTTs = (1-a)x(舊的RTTs) + ax(新的RTT樣本),其中RTT樣本的時間為:記錄一個報文段發出的時間,以及收到相應的確認時間,時間差就是報文段的往返時間RTT。

3.RTO = RTTs + 4 x RTTd,其中RTO為超時重傳時間,RTTd是RTT的偏差的加權平均值。

新的RTTd = (1-b) x (舊的RTTd)+ b x |RTTs - 新的RTT樣本|

4.一個問題:發送一個報文段,設定的重傳時間到了,還沒有收到確認。於是重傳報文段。經過一段時間,收到了確認報文段。現在的問題是:如何判定此確認報文段是對先發送的報文段的確認,還是對後來重傳的報文段的確認?

1)解決方法1,在計算加權平均值RTTs時,只要報文段重傳了,就不採用其往返時間樣本。

引入的問題:報文段的時延突然增大的情況

2)解決方法2,報文段每重傳一次,就把超時重傳時間RTO增大一些(一般是2倍)。當不在發生報文段的重傳時,再根據加權平均計算。

6.3 選擇確認SACK

SACK文檔並沒有指明發送發應當怎樣響應SACK。因此大多數的實現還是重傳所有未被確認的數據塊。

7.1 利用滑動窗口實現流量控制

1.流量控制:就是讓發送方的發送速率不要太快,要讓接收方來得及接收。

2.利用滑動窗口機制可很方便地在TCP連接上實現對發送方的流量控制。發送方的發送窗口不能超過接收方給出的接收窗口的數值。

3.死鎖情況:B向A發送了零窗口的報文段後不久,B又有了一些緩存空間,因此B向A發送rwnd = 400.然而該報文段在傳送過程中丟失。A一直等待B發送的非零窗口的通知,B也一直等待A發送的數據。( 窗口通知不超時重傳?為什麼? )

解決方法:TCP為每個連接設有一個持續計時器。只要一方收到對方的零窗口通知,就啟動計時器。計時器到期後,發送一個零窗口探測報文段,而對方就在確認這個探測報文段時給出了現在的窗口值。若仍為零,收到報文段的一方重新設置持續計時器。

7.2 必須考慮傳輸效率

1.應用程序把數據傳送到TCP的發送緩存後,剩下的發送任務就由TCP來控制了。

2.三種不同的機制來控制TCP報文段的發送時機:

   1)TCP維持一個變數,它等於最大報文段長度MSS,只要緩存中的存放的數據達到MSS,就組裝成一個TCP報文段發送出去

   2)由發送方的應用進程指明要求發送報文段,即TCP支持推送操作

   3)發送方設置一個定時器

3.問題一、若用戶只發送一個位元組,則非常浪費帶寬。

解決方法:若發送應用程序把要發送的數據逐個位元組地送到TCP的發送緩存,則發送方就把第一個數據位元組先發送出去,把後面到達的數據位元組都緩存起來。當發送方收到對第一個數據字元的確認後,再把發送緩存中的所有數據組裝成一個報文段發送出去。(採用收到確認就發送+並開始緩存的方式;同時當到達的數據已達到發送窗口大小的一半或已達到報文段的最大長度時,就立即發送一個報文段。)

4.問題二、糊塗窗口綜合症。接收緩存已滿,應用程序一次只讀取一個位元組,然後向發送方發送確認。

解決方法:讓接收方等待一段時間,使得接收緩存已有足夠空間容納一個最長的報文段,或者等到接收緩存已有一半空閑的空間。則接收方就發出確認報文。

8.1 擁塞控制的一般原理

1.擁塞的定義:對資源的需求 > 可用資源。 在計算機網路中的鏈路帶寬、交換結點中的緩存和處理機等,都是網路中的資源。

2.擁塞解決不能靠解決某一個部分的問題。因為這會將瓶頸轉移到其他地方。問題的實質往往是整個系統的各個部分不匹配。只有所有部分都平衡了,問題才會得到解決。

3.擁塞控制與流量控制的比較。

   1)擁塞控制:防止過多的數據注入到網路中,這樣可以使網路中的路由器或鏈路不致過載。

   擁塞控制有個前提:網路能夠承受現有的網路負荷

   擁塞控制是一個全局性過程。(發送擁塞時,不知道在某處、什麼原因造成的)

   2)流量控制:點對點通信量的控制,是個端到端的問題

   流量控制:抑制發送端發送數據的速率,以便使接收端來得及接收。

4.尋找擁塞控制的方案無非就是使不等式 「對資源的需求 > 可用資源 」不再成立的條件。但是必須考慮該措施帶來的其他影響。

5.計算機網路是個復雜的系統。從控制理論的角度來看擁塞控制,可以分為開環控制和閉環控制兩種方法。

   1)開環控制:設計網路時事先將有關發生擁塞的因素考慮周到,力求網路在工作時不產生擁塞。但一旦系統運行起來,就不再中途改正。

   2)閉環控制:基於反饋環路。

   步驟一、監測網路系統以便檢測到擁塞在何時、何處發生;

   步驟二、把擁塞發生的信息傳送到可採取行動的地方

   步驟三、調整網路系統的運行以解決出現的問題

8.2 幾種擁塞控制方法(只考慮網路擁塞程度,即假設接收方總是有足夠大的緩存空間)

1.慢開始和擁塞避免

1)發送方維持一個擁塞窗口。

   擁塞窗口的大小取決於網路的擁塞程度,並且動態地在變化。

   控制擁塞窗口的原則是:只要網路沒有出現擁塞,擁塞窗口增大;如果網路出現擁塞,則減小。

2)慢開始的思路:由小到大逐漸增大擁塞窗口數值。每收到一個對新的報文段的確認,把擁塞窗口增加至多一個MSS的數值。(沒經過一個傳輸輪次,擁塞窗口cwnd就加倍)

輪次:把擁塞窗口所允許發送的報文段都連續發送出去,並收到了對已發送的最後一位元組的確認。

慢開始的「慢」並不是指cwnd的增長速率慢,而是指TCP開始發送報文段時先設置cwnd=1(一個MSS數值)。

3)慢開始門限ssthresh

   為防止擁塞窗口增長過大,引入一個慢開始門限ssthresh。

   當cwnd < ssthresh時,使用上述的慢開始演算法

   當cwnd > ssthresh時,停止使用慢開始演算法而改用擁塞避免演算法

4)擁塞避免演算法

思路:讓擁塞窗口cwnd緩慢增大,即沒經過一個往返時間RTT就把發送方的擁塞窗口cwnd增加1,而不是加倍。

5)慢開始門限的設置

只要發送方判斷網路出現擁塞(沒有按時收到確認),就把慢開始門限ssthresh設置為出現擁塞時發送方窗口值的一半,然後把擁塞窗口cwnd重置為1,執行慢開始演算法。

6)乘法減小和加法增大

乘法減小:網路出現擁塞時,把慢開始門限ssthresh減半(當前的ssthresh的一半),並執行慢開始演算法。

加法增大:執行擁塞避免方法

2.快重傳和快恢復

1)快重傳(盡快重傳未被確認的報文段)

首先,要求接收方每收到一個失序的報文段後就立即發出重復確認。(如接收方收到了M1和M2後都分別發出了確認,但接收方沒有收到M3但接著收到了M4。此時接收方立即發送對M2的重復確認。)

其次,發送方只要一連收到三個重復確認,就應當立即重傳對方尚未收到的報文段M3.

2)快恢復

要點一、當發送方連續收到三個重復確認,就執行「乘法減小」演算法,把慢開始門限ssthresh減半。

要點二、由於發送方認為網路很可能沒有發生擁塞(因為收到了連續的重復確認),把cwnd設置為慢開始門限ssthresh減半後的值,然後開始執行擁塞避免演算法

慢開始演算法只在TCP連接建立時和網路出現超時才使用。

3.發送方的窗口

發送方窗口的上限值 = Min [rwnd, cwnd]

8.3 隨機早期檢測RED(IP層影響TCP層的擁塞控制)

1.網路層的分組丟棄策略

網路層的策略對TCP擁塞控制影響最大的就是路由器的分組丟棄策略。

如果路由器隊列已滿,則後續到達的分組將都被丟棄。這就叫做尾部丟棄策略。

2.全局同步

由於TCP復用IP,若發生路由器中的尾部丟棄,就可能會同時影響到很多條TCP連接,結果就使許多TCP連接在同一時間突然都進入到慢開始狀態。全局同步使得全網的通信量突然下降了很多,網路恢復正常後,其通信量又突然增大很多。

3.隨機早期檢測RED

使路由器的隊列維持兩個參數,即隊列長度最小門限THmin和最大門限THmax。當每一個分組到達時,RED就先計算平均隊列長度Lav。RED演算法是:

1)若平均隊列長度小於最小門限THmin,則把新到達的分組放入隊列進行排隊

2)若平均隊列長度超過最大門限THmax,則把新到達的分組丟棄

3)若平均隊列長度在最小門限THmin和最大門限THmax之間,則按照某一概率p將新到達的分組丟棄。

隨機體現在3),在檢測到網路擁塞的早期徵兆時(即路由器的平均隊列長度超過一定的門限值時),就先以概率p隨機丟棄個別的分組,讓擁塞控制只在個別的TCP連接上進行,因而避免發生全局性的擁塞控制。

4.平均隊列長度Lav和分組丟棄概率p

Lav = (1-d) x (舊的Lav) +d x (當前的隊列長度樣本)

p = ptemp / (1- count x ptemp)

ptemp = pmax x (Lav - THmin) / (THmax - THmin)

TCP時面向連接的協議。

運輸連接就有三個階段:連接建立、數據傳送和連接釋放

運輸連接的管理:使運輸連接的建立和釋放都能正常地進行。

在TCP連接建立過程中要解決以下三個問題:

   1)要使每一方能夠確知對方的存在

   2)要允許雙方協商一些參數(如最大窗口值、是否使用窗口擴大選項和時間戳等等)

   3)能夠對運輸實體資源(如緩存大小、連接表中的項目等)進行分配

9.1 TCP的連接建立

1.TCP規定,SYN=1報文段不能攜帶數據,但消耗一個序號

2.TCP規定,ACK=1報文段可以攜帶數據,如果不攜帶數據則不消耗序號

3.為什麼A還要發送一次確認?為了防止已失效的連接請求報文突然又傳送到B,因而產生錯誤。

「已失效的連接請求報文段」

A發出第一個連接請求報文段,在網路中滯留超時,又發出了第二個連接請求。但B收到第一個延遲的失效的連接請求報文段後,就誤認為是A又發出了一次新的連接請求。於是就向A發出確認報文段,同意建立連接。假定不採用三次握手,那麼只要B發出確認,新的連接就建立。此時A不會理睬B的確認,也不會發數據,但B一直等A發送數據,B的許多資源就浪費了。

採用三次握手,A不會向B發送確認,因此B就知道A並沒有要求建立確認。

9.2 TCP的連接釋放

1.TCP規定,FIN報文段基石不攜帶數據,也消耗一個序號

2.第二次握手後,TCP通知高層應用程序,因而從A到B這個方向的連接就釋放,TCP連接處於半關閉狀態

3.為什麼A在TIME-WAIT狀態必須等待2MSL的時間

  1)為了保證A發送的最後一個ACK報文段能夠到達B。因為ACK可能丟失,此時B可能會超時重傳,然後A重傳確認,並重新啟動2MSL計時器

  2)防止「已失效的連接請求報文段」出現在本連接中。可以使本連接持續時間內所產生的所有報文段都從網路中消失。

9.3 TCP的有限狀態機