當前位置:首頁 » 網路連接 » 計算機網路簡明教程筆記
擴展閱讀

計算機網路簡明教程筆記

發布時間: 2022-12-07 07:46:03

㈠ 計算機知識

OSI/RM(Open System Interconnection/Reference Model)——開放系統互連參考模型,1983年ISO頒布的網路體系結構標准。從低到高分七層:物理層、數據鏈路層、網路層、傳輸層、會話層、表示層、應用層。各層之間相對獨立,第N層向N+1層提供服務。
OSI/RM的主要缺點:
OSI模型的層次數量與內容不是最佳的,會話層和表示層這兩層幾乎是空的,而數據鏈路層和網路層包含內容太多,有很多的子層插入,每個子層都有不同的功能。OSI模型以及相應的服務定義和協議極其復雜,它們很難實現,有些功能,如縞址、流控制和差錯控制,都會在每一層上重復出現,降低了系統的效率。
分層原則
ISO將整個通信功能劃分為7個層次,分層原則如下:
網路中各結點都有相同的層次
不同結點的同等層具有相同的功能
同一結點內相鄰層之間通過介面通信
每一層使用下層提供的服務,並向其上層提供服務
不同結點的同等層按照協議實現對等層之間的通信
1.物理層: 數據單位——比特,傳輸方式一般為串列
功能:①提供物理鏈路所需的機械(設備)、電氣(信號)、功能和規程(單工、半雙工、全雙工)
②為數據鏈路層提供服務,從數據鏈路層接收數據,並按規定形式的信號和格式將數據發送。
③向數據鏈路層提供數據(把比特流還原為數據鏈路層可以理解的格式)和電路標識、故障狀態
及服務質量參數等等
2.數據鏈路層:為網路層提供服務,從源開放系統的網路層向目的開放系統的網路層傳輸數據,屏蔽了
物理層的特徵。數據單位:幀
數據鏈路層完成從物理層到網路層的過度、准備工作
功能:①傳輸管理:為網路層提供低出錯率、高可靠性的數據鏈路
▲②流量控制:協調主機和通信設備之間的數據傳輸率
此處流量控制相鄰節點之間的數據鏈路層的流量控制
控制對象:數據幀
3.網路層: 處理與定址和傳輸有關的管理問題(這里所說的傳輸有關問題是指提供傳輸基礎、准備工作)
同一LAN內可以省略該層。 數據單位:分組
功能:①路由選擇與中斷
②控制分組傳送系統的操作
▲③控制流量,以防網路過於擁擠
此處流量控制是源節點到目的節點之間整個通信子網的流量,對進入分組交換網的通信量進行控制。
控制對象:數據分組
④建立和撤銷網路連接————點對點的連接
⑤對傳輸層屏蔽低層的傳輸細節
⑥對數據分段合段,對數據驚醒差錯檢測和恢復,向傳輸層報告未恢復的錯誤
⑦根據傳輸層的要求來選擇服務,實現單鏈上的多網路連接復用
4.傳輸層:數據核對和初步整理。數據單位:報文
功能:①建立、維護和撤銷傳輸連接————端對端的連接
▲②控制流量,差錯控制(使高層受到的數據幾乎完整無差錯)
此處的流量控制是源主機到目的主機之間傳輸實體端到端的流量控制。
控制對象:傳輸協議數據單元(TPDU)
③選擇合適的網路層服務以實現其功能
④提供數據的編號、排序、拼接以及重同步功能
5.會話層: 數據傳輸的「中間商」角色,負責數據傳輸的「售後服務」
功能:①提供兩進程之間建立、維護和結束會話連接的功能
②管理會話(三種數據流的控制,即一路交互、兩路交互和兩路同時會話)
③同步,在數據中插入同步點
傳輸層和會話層一般結合使用
6.表示層:隱藏不同硬體間的差異,使不同計算機互聯數據的最終處理,供用戶使用
功能:①代表應用層協商數據表示
②完成對傳輸數據的轉化,如格式化、加/解密、壓縮/解壓
7.應用層:提供OSI用戶服務,如事務處理、文件傳輸、數據檢索、網路管理、加密
會話層、表示層、應用層合稱高層,數據單位:報文

㈡ 大學的計算機網路課程該怎麼學習,記筆記 自從上了大學,我們好多課程都變成了在網上看視頻學習,尤

2級c語言比較好過,把書看懂,把題目弄清楚,再做幾套模擬題,就夠了

㈢ 哪位大神有計算機網路的視頻課程

最近在B站上發現一個很不錯的視頻,樓主可以看看
計算機網路簡明教程及模擬實驗(陸續更新中)_嗶哩嗶哩 (゜-゜)つロ 乾杯~-bilibili https://www.bilibili.com/video/av34135819/

㈣ 想仔細詳細的學習計算機網路 求教程啊

我也學習的計算機 涉及網路的課程有很多 先看計算機網路應用 了解什麼是計算機網路
然後我們學的一些軟體的使用和編程

㈤ 關於計算機基礎知識

您好,
填空題答案如下:
ABADD

----------------全心全意為人民服務!----------------

如果我的答案對您有幫助,那麼我倍感欣慰,您的支持就是我前進的動力!
如果我的答案不夠清楚、詳細,那麼我會繼續努力!

㈥ 計算機網路自學筆記: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置位報文段。

㈦ 計算機網路筆記——數據鏈路層(停等協議、GBN、SR)

流量控制:防止發送端發送和接收端接收速度不匹配造成傳輸錯誤

傳輸層和數據鏈路層均有流量控制,但是控制手法不一樣

傳輸層:端到端,接收端向發送端發送一個窗口公告。告訴發送端目前我能接收多少
數據鏈路層:點到點,接收端接收不下的就不回復確認(ack),讓發送端自己重傳

涉及協議較多分批寫

優點 :最簡單的控制協議
缺點 :但是性能較弱,信道利用率低

控制方法
發送方:發送一個幀
接收方:接收到幀後返回改幀的ack
發送方:接收到ack後發送下一個幀

差錯控制

注意

滑動窗口協議是基於停止等待協議的優化版本
停止等待協議性能是因為需要等待ack之後才能發送下一個幀,在傳送的很長時間內信道一直在等待狀態
滑動窗口則利用緩沖思想,允許連續發送(未收到ack之前)多個幀,以加強信道利用

窗口 :其實就是緩沖幀的一個容器,將處理好的幀發送到緩沖到窗口,可以發送時就可以直接發送,藉此優化性能。一個幀對應一個窗口。

GBN是滑動窗口中的一種,其中 發送窗口 > 1 , 接收窗口=1 因發送錯誤後需要退回到最後正確連續幀位置開始重發,故而得名。

控制方法
發送端:在將發送窗口內的數據連續發送
接收端:收到一個之後向接收端發送累計確認的ack
發送端:收到ack後窗口後移發送後面的數據

累計確認 :累計確認允許接收端一段時間內發送一次ack而不是每一個幀都需要發送ack。該確認方式確認代表其前面的幀都以正確接收到
eg:發送端發送了編號 0,1,2,3,4,5 的幀,等待一段時間後(超過3的超時計時器)累計收到的ack對應 0,2 幀,則證明已經成功 0,1,2 均已經成功接收, 3 傳輸錯誤。並且哪怕 4,5 兩個幀接收成功後也不會返回 4,5 的ack會一直等待從 3 開始重傳

差錯控制

發送幀丟失、ack丟失、ack遲到 等處理方法基本和停等協議相同,不同的是採用累計確認恢復的方式,當前面的幀出錯之後後面幀無論是否發送成功都要重傳

優點:信道利用率高(利用窗口有增加發送端佔用,並且減少ack回復次數)
缺點:累計確認使得該方法只接收正確順序的幀,而不接受亂序的幀,錯誤重傳浪費嚴重

發送窗口大小問題
窗口理論上是越多性能越好,但是窗口不能無限大,n比特編碼最大隻能2^(n-1)個窗口,否則會造成幀無法區分(本質就是留了一個比特區分兩組幀)

SR協議可以說是GBN的plus版本,在GBN的基礎上改回每一個幀都要確認的機制,解決了累計確認只接收順序幀的弊端只需要重發錯誤幀。
其中 發送窗口 > 1 , 接收窗口 > 1 , 接收窗口 > 發送窗口 (建議接 收窗口 = 發送窗口 接收窗口少了溢出多了浪費).

控制方法
發送端:將窗口內的數據連續發送
接收端:收到一個幀就將該幀緩存到窗口中並回復一個ack
接收端:接收到順序幀後將數據提交給上層並接收窗口後移(若接收到的幀不是連續的順序幀時接收窗口不移動)
發送端:接收到順序幀的ack後發送窗口後移(同理發送窗口接收到的ack不連續也不移動)

差錯控制

發送幀丟失、ack丟失、ack遲到 三類處理方式仍然和停等協議相同,不同的是SR向上層提交的是多個連續幀,停等只提交一個幀(不連續的幀要等接收或重傳完成後才會提交)

發送窗口大小問題
同GBN一樣,發送窗口和接收窗口都不能無限多,且不說緩存容量問題,當兩組幀同時發送時會造成無法區分,大小上限仍然是2^(n-1)個窗口(本質就是留了一個比特寫組號)

窗口大小這里留一張截圖,方便理解
假設窗口大小都為3(圖中編號到了3是借4窗口的圖,正常應編號到2,但是不妨礙理解)
左邊是錯誤重發,第一組的0幀ack丟失了
右邊是正常收發

三種協議對比:
停等協議:單線程的傻子,簡單不易出錯,但是效率極其低下
GBN:假的多線程(接收端太坑啦),接收端是情種,只等待自己哪一個幀,丟棄了後來的幀
SR:多線程,接收端有收藏癖,等待集齊一套召喚神龍(提交給上層這只神龍……)

㈧ 計算機網路該怎麼學

好的教學方式一定是講的讓別人能聽懂,對於初學者,我認為好的方法應該是這樣的:
1、從實際案例出發(比如我們在瀏覽器輸入一個網址到展示出內容中間發生了什麼事情)
2、計算機網路出現的背景是什麼?遇到了什麼問題?是為了解決什麼問題?
不能一下子就陷入細節,一開始應該快速入門,了解其概貌。
3、入門後,然後再進階學習,建議從自頂向下的方式來學習。
4、一定要多實戰,通過抓包工具查看實際的數據包長啥樣,通過動手實現一個聊天工具等。

㈨ 計算機網路基礎怎麼學

計算機網路基礎學法:

1、看書:對於計算機比較基礎的模塊,我都是比較推薦找一本經典的書籍來好好學習下,不可以只看面經就去面試了。

2、做筆記:計算機網路的知識點還是比較多的,需要看書的時候做好筆記,方便復習。而且做筆記的時候可以就這個知識點去網路下,看看有沒有自己遺漏的點,再給補充進來。

學習計算機網路時我們一般採用折中的辦法,也就是中和 OSI 和 TCP/IP 的優點,採用一種只有五層協議的體系結構,這樣既簡潔又能將概念闡述清楚。

應用層(application-layer)的任務是通過應用進程間的交互來完成特定網路應用。應用層協議定義的是應用進程(進程:主機中正在運行的程序)間的通信和交互的規則。

對於不同的網路應用需要不同的應用層協議。在互聯網中應用層協議很多,如域名系統 DNS,支持萬維網應用的 HTTP 協議,支持電子郵件的 SMTP 協議等等。我們把應用層交互的數據單元稱為報文。

運輸層(transport layer)的主要任務就是負責向兩台主機進程之間的通信提供通用的數據傳輸服務。應用進程利用該服務傳送應用層報文。「通用的」是指並不針對某一個特定的網路應用,而是多種應用可以使用同一個運輸層服務。

㈩ 計算機網路第四章(網路層)

4.1、網路層概述

簡介

網路層的主要任務是 實現網路互連 ,進而 實現數據包在各網路之間的傳輸

這些異構型網路N1~N7如果只是需要各自內部通信,他們只要實現各自的物理層和數據鏈路層即可

但是如果要將這些異構型網路互連起來,形成一個更大的互聯網,就需要實現網路層設備路由器

有時為了簡單起見,可以不用畫出這些網路,圖中N1~N7,而將他們看做是一條鏈路即可

要實現網路層任務,需要解決一下主要問題:

網路層向運輸層提供怎樣的服務(「可靠傳輸」還是「不可靠傳輸」)

在數據鏈路層那課講過的可靠傳輸,詳情可以看那邊的筆記:網路層對以下的 分組丟失 、 分組失序 、 分組重復 的傳輸錯誤採取措施,使得接收方能正確接受發送方發送的數據,就是 可靠傳輸 ,反之,如果什麼措施也不採取,則是 不可靠傳輸

網路層定址問題

路由選擇問題

路由器收到數據後,是依據什麼來決定將數據包從自己的哪個介面轉發出去?

依據數據包的目的地址和路由器中的路由表

但在實際當中,路由器是怎樣知道這些路由記錄?

由用戶或網路管理員進行人工配置,這種方法只適用於規模較小且網路拓撲不改變的小型互聯網

另一種是實現各種路由選擇協議,由路由器執行路由選擇協議中所規定的路由選擇演算法,而自動得出路由表中的路有記錄,這種方法更適合規模較大且網路拓撲經常改變的大型互聯網

補充 網路層(網際層) 除了 IP協議 外,還有之前介紹過的 地址解析協議ARP ,還有 網際控制報文協議ICMP , 網際組管理協議IGMP

總結

4.2、網路層提供的兩種服務

在計算機網路領域,網路層應該向運輸層提供怎樣的服務(「 面向連接 」還是「 無連接 」)曾引起了長期的爭論。

爭論焦點的實質就是: 在計算機通信中,可靠交付應當由誰來負責 ?是 網路 還是 端系統 ?

面向連接的虛電路服務

一種觀點:讓網路負責可靠交付

這種觀點認為,應藉助於電信網的成功經驗,讓網路負責可靠交付,計算機網路應模仿電信網路,使用 面向連接 的通信方式。

通信之前先建立 虛電路 (Virtual Circuit),以保證雙方通信所需的一切網路資源。

如果再使用可靠傳輸的網路協議,就可使所發送的分組無差錯按序到達終點,不丟失、不重復。

發送方 發送給 接收方 的所有分組都沿著同一條虛電路傳送

虛電路表示這只是一條邏輯上的連接,分組都沿著這條邏輯連接按照存儲轉發方式傳送,而並不是真正建立了一條物理連接。

請注意,電路交換的電話通信是先建立了一條真正的連接。

因此分組交換的虛連接和電路交換的連接只是類似,但並不完全一樣

無連接的數據報服務

另一種觀點:網路提供數據報服務

互聯網的先驅者提出了一種嶄新的網路設計思路。

網路層向上只提供簡單靈活的、 無連接的 、 盡最大努力交付 的 數據報服務 。

網路在發送分組時不需要先建立連接。每一個分組(即 IP 數據報)獨立發送,與其前後的分組無關(不進行編號)。

網路層不提供服務質量的承諾 。即所傳送的分組可能出錯、丟失、重復和失序(不按序到達終點),當然也不保證分組傳送的時限。

發送方 發送給 接收方 的分組可能沿著不同路徑傳送

盡最大努力交付

如果主機(即端系統)中的進程之間的通信需要是可靠的,那麼就由網路的 主機中的運輸層負責可靠交付(包括差錯處理、流量控制等) 。

採用這種設計思路的好處是 :網路的造價大大降低,運行方式靈活,能夠適應多種應用。

互連網能夠發展到今日的規模,充分證明了當初採用這種設計思路的正確性。

虛電路服務與數據報服務的對比

對比的方面 虛電路服務 數據報服務

思路 可靠通信應當由網路來保證 可靠通信應當由用戶主機來保證

連接的建立 必須有 不需要

終點地址 僅在連接建立階段使用,每個分組使用短的虛電路號 每個分組都有終點的完整地址

分組的轉發 屬於同一條虛電路的分組均按照同一路由進行轉發 每個分組獨立選擇路由進行轉發

當結點出故障時 所有通過出故障的結點的虛電路均不能工作 出故障的結點可能會丟失分組,一些路由可能會發生變化

分組的順序 總是按發送順序到達終點 到達終點時不一定按發送順序

端到端的差錯處理和流量控制 可以由網路負責,也可以由用戶主機負責 由用戶主機負責

4.3、IPv4

概述

分類編制的IPv4地址

簡介

每一類地址都由兩個固定長度的欄位組成,其中一個欄位是 網路號 net-id ,它標志主機(或路由器)所連接到的網路,而另一個欄位則是 主機號 host-id ,它標志該主機(或路由器)。

主機號在它前面的網路號所指明的網路范圍內必須是唯一的。

由此可見, 一個 IP 地址在整個互聯網范圍內是唯一的 。

A類地址

B類地址

C類地址

練習

總結

IP 地址的指派范圍

一般不使用的特殊的 IP 地址

IP 地址的一些重要特點

(1) IP 地址是一種分等級的地址結構 。分兩個等級的好處是:

第一 ,IP 地址管理機構在分配 IP 地址時只分配網路號,而剩下的主機號則由得到該網路號的單位自行分配。這樣就方便了 IP 地址的管理。

第二 ,路由器僅根據目的主機所連接的網路號來轉發分組(而不考慮目的主機號),這樣就可以使路由表中的項目數大幅度減少,從而減小了路由表所佔的存儲空間。

(2) 實際上 IP 地址是標志一個主機(或路由器)和一條鏈路的介面 。

當一個主機同時連接到兩個網路上時,該主機就必須同時具有兩個相應的 IP 地址,其網路號 net-id 必須是不同的。這種主機稱為 多歸屬主機 (multihomed host)。

由於一個路由器至少應當連接到兩個網路(這樣它才能將 IP 數據報從一個網路轉發到另一個網路),因此 一個路由器至少應當有兩個不同的 IP 地址 。

(3) 用轉發器或網橋連接起來的若干個區域網仍為一個網路 ,因此這些區域網都具有同樣的網路號 net-id。

(4) 所有分配到網路號 net-id 的網路,無論是范圍很小的區域網,還是可能覆蓋很大地理范圍的廣域網,都是平等的。

劃分子網的IPv4地址

為什麼要劃分子網

在 ARPANET 的早期,IP 地址的設計確實不夠合理:

IP 地址空間的利用率有時很低。

給每一個物理網路分配一個網路號會使路由表變得太大因而使網路性能變壞。

兩級的 IP 地址不夠靈活。

如果想要將原來的網路劃分成三個獨立的網路

所以是否可以從主機號部分借用一部分作為子網號

但是如果未在圖中標記子網號部分,那麼我們和計算機又如何知道分類地址中主機號有多少比特被用作子網號了呢?

所以就有了劃分子網的工具: 子網掩碼

從 1985 年起在 IP 地址中又增加了一個「 子網號欄位 」,使兩級的 IP 地址變成為 三級的 IP 地址 。

這種做法叫做 劃分子網 (subnetting) 。

劃分子網已成為互聯網的正式標准協議。

如何劃分子網

基本思路

劃分子網純屬一個 單位內部的事情 。單位對外仍然表現為沒有劃分子網的網路。

從主機號 借用 若干個位作為 子網號 subnet-id,而主機號 host-id 也就相應減少了若干個位。

凡是從其他網路發送給本單位某個主機的 IP 數據報,仍然是根據 IP 數據報的 目的網路號 net-id,先找到連接在本單位網路上的路由器。

然後 此路由器 在收到 IP 數據報後,再按 目的網路號 net-id 和 子網號 subnet-id 找到目的子網。

最後就將 IP 數據報直接交付目的主機。

劃分為三個子網後對外仍是一個網路

優點

1.  減少了 IP 地址的浪費        2.  使網路的組織更加靈活        3.  更便於維護和管理

劃分子網純屬一個單位內部的事情,對外部網路透明 ,對外仍然表現為沒有劃分子網的一個網路。

子網掩碼

(IP 地址) AND (子網掩碼) = 網路地址 重要,下面很多相關知識都會用到

舉例

例子1

例子2

默認子網掩碼

總結

子網掩碼是一個網路或一個子網的重要屬性。

路由器在和相鄰路由器交換路由信息時,必須把自己所在網路(或子網)的子網掩碼告訴相鄰路由器。

路由器的路由表中的每一個項目,除了要給出目的網路地址外,還必須同時給出該網路的子網掩碼。

若一個路由器連接在兩個子網上,就擁有兩個網路地址和兩個子網掩碼。

無分類編址的IPv4地址

為什麼使用無分類編址

無分類域間路由選擇 CIDR (Classless Inter-Domain Routing)。

CIDR 最主要的特點

CIDR使用各種長度的「 網路前綴 」(network-prefix)來代替分類地址中的網路號和子網號。

IP 地址從三級編址(使用子網掩碼)又回到了兩級編址 。

如何使用無分類編址

舉例

路由聚合(構造超網)

總結

IPv4地址的應用規劃

給定一個IPv4地址快,如何將其劃分成幾個更小的地址塊,並將這些地址塊分配給互聯網中不同網路,進而可以給各網路中的主機和路由器介面分配IPv4地址

定長的子網掩碼FLSM(Fixed Length Subnet Mask)

劃分子網的IPv4就是定長的子網掩碼

舉例

通過上面步驟分析,就可以從子網1 ~ 8中任選5個分配給左圖中的N1 ~ N5

採用定長的子網掩碼劃分,只能劃分出2^n個子網,其中n是從主機號部分借用的用來作為子網號的比特數量,每個子網所分配的IP地址數量相同

但是也因為每個子網所分配的IP地址數量相同,不夠靈活,容易造成IP地址的浪費

變長的子網掩碼VLSM(Variable Length Subnet Mask)

無分類編址的IPv4就是變長的子網掩碼

舉例

4.4、IP數據報的發送和轉發過程

舉例

源主機如何知道目的主機是否與自己在同一個網路中,是直接交付,還是間接交付?

可以通過 目的地址IP 和 源地址的子網掩碼 進行 邏輯與運算 得到 目的網路地址

如果 目的網路地址 和 源網路地址 相同 ,就是 在同一個網路 中,屬於 直接交付

如果 目的網路地址 和 源網路地址 不相同 ,就 不在同一個網路 中,屬於 間接交付 ,傳輸給主機所在網路的 默認網關 (路由器——下圖會講解),由默認網關幫忙轉發

主機C如何知道路由器R的存在?

用戶為了讓本網路中的主機能和其他網路中的主機進行通信,就必須給其指定本網路的一個路由器的介面,由該路由器幫忙進行轉發,所指定的路由器,也被稱為 默認網關

例如。路由器的介面0的IP地址192.168.0.128做為左邊網路的默認網關

主機A會將該IP數據報傳輸給自己的默認網關,也就是圖中所示的路由器介面0

路由器收到IP數據報後如何轉發?

檢查IP數據報首部是否出錯:

若出錯,則直接丟棄該IP數據報並通告源主機

若沒有出錯,則進行轉發

根據IP數據報的目的地址在路由表中查找匹配的條目:

若找到匹配的條目,則轉發給條目中指示的嚇一跳

若找不到,則丟棄該數據報並通告源主機

假設IP數據報首部沒有出錯,路由器取出IP數據報首部各地址欄位的值

接下來路由器對該IP數據報進行查表轉發

逐條檢查路由條目,將目的地址與路由條目中的地址掩碼進行邏輯與運算得到目的網路地址,然後與路由條目中的目的網路進行比較,如果相同,則這條路由條目就是匹配的路由條目,按照它的下一條指示,圖中所示的也就是介面1轉發該IP數據報

路由器是隔離廣播域的

4.5、靜態路由配置及其可能產生的路由環路問題

概念

多種情況舉例

靜態路由配置

舉例

默認路由

舉例

默認路由可以被所有網路匹配,但路由匹配有優先順序,默認路由是優先順序最低的

特定主機路由

舉例

有時候,我們可以給路由器添加針對某個主機的特定主機路由條目

一般用於網路管理人員對網路的管理和測試

多條路由可選,匹配路由最具體的

靜態路由配置錯誤導致路由環路

舉例

假設將R2的路由表中第三條目錄配置錯了下一跳

這導致R2和R3之間產生了路由環路

聚合了不存在的網路而導致路由環路

舉例

正常情況

錯誤情況

解決方法

黑洞路由的下一跳為null0,這是路由器內部的虛擬介面,IP數據報進入它後就被丟棄

網路故障而導致路由環路

舉例

解決方法

添加故障的網路為黑洞路由

假設。一段時間後故障網路恢復了

R1又自動地得出了其介面0的直連網路的路由條目

針對該網路的黑洞網路會自動失效

如果又故障

則生效該網路的黑洞網路

總結

4.6、路由選擇協議

概述

網際網路所採用的路由選擇協議的主要特點

網際網路採用分層次的路由選擇協議

自治系統 AS :在單一的技術管理下的一組路由器,而這些路由器使用一種 AS 內部的路由選擇協議和共同的度量以確定分組在該 AS 內的路由,同時還使用一種 AS 之間的路由選擇協議用以確定分組在 AS之間的路由。

自治系統之間的路由選擇簡稱為域間路由選擇,自治系統內部的路由選擇簡稱為域內路由選擇

域間路由選擇使用外部網關協議EGP這個類別的路由選擇協議

域內路由選擇使用內部網關協議IGP這個類別的路由選擇協議

網關協議 的名稱可稱為 路由協議

常見的路由選擇協議