如果今后不能陪在你身邊,祝你早安午安晚安 —— 《楚門的世界》
I guess it comes down to a simple choice:get busy living or get busy dying. ——《肖申克的救贖》
前前言
下午考完,發現已經涼了。悲傷它環繞着我。這重點他畫了個寂寞。計網老師來騙,來偷襲自己的親學生,這好嗎?這不好。
總結一下,就是下面寫的,這次基本沒考,等我回頭再總結一份補考復習筆記。
前言
本文主要用於計算機網絡期末復習,內容並不全面,主要根據重點考察內容進行總結。我們學校使用的教材為《計算機網絡教程(第5版|微課版)》,作者為謝希仁。
因為本人打算考研,之前找了一些相關的考研視頻,里面有計算機網絡的部分,我也做了一些參考。視頻地址:
https://www.bilibili.com/video/BV19E411D78Q
下圖為基本的考點分布,感謝舍友郭某某的無私奉獻。

上圖要素過多,復習不完的看下面第一次更新的版本:
一、概述(第一章)
1.1 TCP/IP四層協議
1.2 五層協議
1.2.1 五層協議中各層所表示的功能(習題1-17)
應用層:應用層的主要任務是如何通過應用進程間的交互來完成特定的網絡應用。
運輸層:運輸層的任務就是負責向兩台主機中進程之間的通信提供通用的數據傳輸服務。
(補充:傳輸控制協議(TCP)提供面向連接的,可靠的數據傳輸服務,其數據傳輸的單位是報文段
用戶數據報協議(UDP)提供無連接的,盡最大努力的數據傳輸服務,其數據傳輸的單位是用戶數據報。)
網絡層:網絡層負責為分組交換網上的不同主機提供通信服務。在發送數據時,網絡層吧運輸層產生的報文段或者用戶數據報封裝成分組或包進行轉發。
數據鏈路層:數據鏈路層的任務就是在相鄰節點之間的鏈路上傳送以幀為單位的數據。
(補充:我們把數據鏈路層傳送的數據單元稱為幀)
物理層:物理層是原理體系結構的最底層,完成計算機網絡羅忠最基本的任務,即在傳輸媒體上傳送比特流,將數據鏈路層幀中的每個比特從一個節點通過傳輸媒體傳送到下一個節點。
(補充:物理層傳輸的數據的單位是比特)
1.2.2 沙漏計時形狀的TCP/IP協議簇(習題1-19)

這種像沙漏一樣表示的協議簇表明:
TCP/IP協議可以為各式各樣的應用提供服務(Everything Over IP),同時TCP/IP協議也允許IP協議在各式各樣的網絡構成的互聯網上運行(IP Over Everything)。
說明:其實從圖中也可以看出網際層的重要性,運輸層無論使用TCP還是UDP,在網際層都需要包裝成IP數據報,IP協議在其中確實擔任了重要的作用。
1.3 性能指標
1.3.1 速率
速率就是數據的傳送速率,它也稱為數據率或比特率。比特(bit)是計算機中數據量的單位,意思是一個“二進制數字”(一個比特就是二進制中的0或1)。
補充:
當數據量較大時可以使用kbit/s來表示,或者用Mbit/s、Gbit/s表示,有時為了簡便表示也可以直接寫為100M這種形式(我們常說的百兆寬帶就是這樣的表示)。需要注意的是這里的進制轉換都是按1000算的。例如1kbit/s = 1000bit,1Mbit/s = 1000kbit/s。
注意:
計算機中的數據量往往用字節作為度量的單位。一個字節(byte,也可以表示為B)表示為8bit。而1K = 2^10B,
1M = 2^20B
1.3.2 帶寬
帶寬是我們在日常生活中常常提到的一個性能指標。在本書中給出了帶寬的兩個定義。
(1)帶寬本來是指某個信號具有的頻帶寬度。信號的帶寬是指該信號所包含的各種筆筒頻率成分所占據的頻率范圍。
(2)在計算機網絡中,帶寬用來表示網絡的通信線路所能傳送數據的能力,因此網絡帶寬表示在單位時間內從網絡中的某一點到零一點所能通過的“最高頻率”。基本單位為bit/s。如下圖的速度就是指的網絡帶寬。

1.3.3 吞吐量
吞吐量也被稱為吞吐率,表示在單位時間內通過某個網絡(或信道、接口)的數據量。吞吐量更經常的用於對現實世界中的網絡的一種測量,以便知道實際上到底有多少數據量能夠通過網絡。吞吐量受網絡帶寬或網絡的額定速率的限制。例如,對於一個100Mbit/s的以太網,其典型的吞吐量可能也只有70Mbit/s。
1.3.4 時延
時延是指數據從網絡(或鏈路)的一端傳送到另一端所需要的時間。時延有時也稱為延遲或遲延。
小插曲:
在平時,有很多同學和我反映說使用校園網的時候玩游戲延遲很差,這里的延遲就是指時延,像王者榮耀這類游戲你的操作需要通過遠程服務器進行反饋,如果延遲過大就會很卡頓。對於這個問題可以通過插網線進行解決(當然,如果使用的是單寬那估計插網線也不好使,因為帶寬就那么大)
參考: https://www.zhihu.com/question/31181413?from=profile_question_card
1.3.4.1 發送時延(傳輸時延)
發送時延是主機或路由器發送數據幀所需要的時間,也就是從發送數據的第一個比特算起,到該幀的最后一個比特發送完畢所需的時間。發送時延也稱為傳輸時延。
發送時延 = 數據幀長度(bit) / 發送速率(bit/s)
注:數據幀長度也可替換為分組長度。由於在分組交換中計算機在發送數據時總是以信道最高數據率發送數據,因此公式中的發送速率也可以替換為信道帶寬。
1.3.4.2 傳播時延
傳播時延時電磁波在信道中需要傳播一定的距離而花費的時間。公式如下:
傳播時延 = 信道長度(m) / 電磁波在信道上的傳播速率(m/s)(電磁波在信道上的傳播速率接近光速)
1.3.4.3 處理時延
主機或路由器在收到分組時要花費一定的時間進行處理。
1.3.4.4 排隊時延
分組在經過網絡傳輸時,會經過許多路由器。分組在進入路由器之前要先在輸入隊列中排隊等待處理。在路由器確定了轉發接口后,還要在輸出隊列中排隊等待轉發。這就產生了排隊時延。
1.3.4.5 注意
在實際發送數據過程中,具體哪個時延占主導地位需要具體分析,並不是說減少某個時延就能極大的提高網絡體驗。例如對於高速網絡鏈路,我們提高的僅僅是數據的發送速率而不是比特在鏈路上的傳播速率。承載信息的電磁波在通信線路上的傳播速率於數據的發送速率並無關系。提高數據的發送速率只是減小了數據的發送時延。
1.3.5 丟包率
具體見本書P19頁和P20頁。
簡單來說,丟包率反映了網絡的擁塞情況。當通信量較大時會出現網絡擁塞,導致分組交換機的隊列移除和分組丟失。但是對於我們來說,我們不會直接感覺到信息被丟失而是會感到“網速”變慢了,這主要是因為軟件會通過重傳機制來保證信息的完整性。
1.3.6 利用率
利用率是指網絡有百分之幾的時間是被利用的,沒有數據通過的網絡利用率為0。網絡利用率越高,數據分組在路由器和交換機處理時就需要排隊等待,因此時延也就越大。
U使網絡利用率,D表示網絡當前延時,D。表示空閑時的時延。當網絡的利用率接近最大值1時,網絡的時延趨於無窮大。
1.3.7 參考
https://www.cnblogs.com/yangmingxianshen/p/7789121.html
1.3.8 習題解答

(1)錯誤,沒有分清鏈路速率的概念。提高鏈路速率是指提高將比特流發送到鏈路上的速率;而傳播時延與信號的傳播速率以及信道長度有關,與發送速率無關。主要就是看上面的公式:傳播時延 = 信道長度(m) / 電磁波在信道上的傳播速率(m/s)(電磁波在信道上的傳播速率接近光速)
(2)對,看上面的公式
(3)錯誤,具體可參照1.2.1。跨越網絡提供主機到主機的數據通信問題的是網絡層。而運輸層則負責為兩台主機中進程之間的通信提供通用的數據傳輸服務。
(4)錯誤。發送時延是主機或路由器發送數據幀所需要的時間,也就是從發送數據的第一個比特算起,到該幀的最后一個比特發送完畢所需的時間。
(5)對
(6)錯誤。錯在不會出現網絡擁塞。分組轉發采用的是存儲轉發技術,也就是說路由器接收到分組后,緩存到路由器的內存中,在查找轉發表后轉發分組。但是路由器緩存空間是有限的,當發出方或者該節點排隊分組過多,路由器緩存占滿后,之后到該路由器的分組則被丟失,出現網絡擁塞。
1.4 實體、協議和服務
1.4.1 實體
實體用來表示任何可發送或接受信息的硬件或者軟件進程。在許多情況下,實體就是一個特定的軟件模塊。
1.4.2 協議
協議是控制兩個對等實體(或多個實體)進行通信的規則的集合。協議的語法方面的規則定義了所交換的信息的格式,而協議的語義方面的規則定義了發送者或接收者所要完成的操作。
1.4.3 區別
在協議的 控制下,兩個對等實體間的通信試地本層能夠向上一層提供服務。要實現本層協議,還需要使用下面一層所提供的服務。
1、下面的協議對上面的實體是透明(指某一個實際存在的事物看起來像不存在一樣)的。例如運輸層使用了很復雜的協議實現了可靠傳輸。但是在應用層只感受到運輸層所提供的這種可靠傳輸 服務,但它看不到運輸層是如何使用復雜的協議來實現可靠傳輸的。
2、協議是“水平的”,即協議是控制對等實體之間通信的規則。但是服務是“垂直的”,即服務是由下層向上層通過層間接口提供的。
二、編碼與調制(第二章)
2.1 基本概念
要利用西島傳輸數據,必須將數據轉換為能在傳輸媒體上傳送的信號。信道可以分成傳送模擬信號的模擬信道和傳送數字信號的數字信道兩大類。通常人們將數字數據轉換成數字信號的過程稱為編碼,而將數字數據轉換為模擬信號的過程稱為調制。
2.2 常用編碼方式
2.2.1 曼徹斯特編碼
位周期中心的上跳變代表0,位周期中心的下跳變代表1
其實也很簡單,曼徹斯特編碼規定從上往下跳變是表示1,而從下往上跳變是表示0

2.2.2 差分曼徹斯特編碼
在每一位的中心處始終都有跳變。為開始邊界有跳變代表0,而位開始邊界沒有跳變代表1。
2.2.3 習題
題干:請畫出數據流10100011的不歸零編碼、曼徹斯特編碼以及差分曼徹斯特編碼(從高電位開始)
題解:


2.3 奈氏准則和香農公式
2.3.1 碼元
碼元是承載信息的基本信號單位,一個碼元能夠承載的信息量多少,是由碼元信號所能表示的數據有效值狀態個數決定的。單位時間內通過信道傳輸的碼元數稱為碼元傳輸速率(單位為波特)。
2.3.2 奈氏准則
理想低通信道的最高碼元傳輸速率 = 2W Baud
理想帶通信道的最高碼元傳輸速率 = W Baud
奈氏准則的另一種表達方式為:每赫帶寬的理想低通信道的最高碼元傳輸速率是每秒2個碼元,每赫帶寬的帶通信道的最高碼元傳輸速率每秒1個碼元。
則任何通道中,碼元傳輸的速率是有上限的,傳輸速率超過此上限,就會出現嚴重的碼間串擾現象,以致在接收端無法正確識別在發送方所發送的碼元。
2.3.3 香農公式
信道的極限信息傳輸速率C可表示為:
C = Wlog2(1+S/N)bit/s
式中,W為信道的帶寬(以Hz為單位);S為信道內所傳信號的平均功率;N為信道內部的高斯噪聲功率。
香農公式表明:信道的帶寬或者信道中的信噪比越大,則信息的極限傳輸速率就越高。
2.3.4 補充
從上面兩條可以看出,要想提高信息的傳輸速率就必須采用多元制和努力提高信道中的信噪比。
2.4 習題
p62頁
2-6 “比特/秒” 和 “碼元/秒”有什么區別?
答案:
“比特/秒”是指信息傳輸速率,每秒鍾傳送的信息量;“碼元/秒”是碼元傳輸速率,每秒鍾傳送的碼元個數。兩者在二進制時相等。在多進制時,信息傳輸速率要乘以log以2為底的進制數等於碼元傳輸速率
解讀:
一個以m波特傳送信號的線路,其傳送二進制數據的速率不一定是m比特/秒,因為每個符號需要通過幾個比特來表示,所以運送一個符號等於運送了幾個比特。例如,若使用0、1、2、3、4、5、6、7共8個電平級,則需要 [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gTlDeICf-1609332167370)(https://private.codecogs.com/gif.latex?\log(2)8)] ,即3個比特來表示一個信號值,因而這種條件下比特率是波特率的3倍。
由以上的對波特率和比特率的理解,可以得到[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Q1gdnGSc-1609332167372)(https://private.codecogs.com/gif.latex?\log(2)16)]=4,也就是說在這種條件下比特率是波特率的4杯,而此時,波特率為20000碼元每秒,因此比特率為20000*4=80000bit/s
三、CRC循環冗余碼(第三章)
3.1 需要的計算機組成原理知識
-
什么是異或操作
很好理解,例如1異或0結果為1,1異或1結果為0,0異或0結果為0,0異或1結果為1。總結而言就是相同為0,不同為1。
-
二進制除法操作
二進制除法和正常除法很相似。但是兩個結果不是進行減法操作而是進行異或操作。
-
二進制與十進制的轉換問題
3.2 具體思路
這類題目思路基本都是固定的,題目中會給出要發送的數據(二進制)以及生成多項式。
(1)根據生成多項式算階數r
計算方法:r = 生成多項式位數-1
注:上面講到二進制與十進制的轉換,這里的階數r其實就是最高位
(2)加0:在要發送的數據后面加0,總共要加r個0
(3)要發送的數據除以生成多項式得到余數FCS
(4)將FCS加到要發送的數據后面(得到的是最終要發送的數據)
(5)接收端的處理:使用接收到的數據(其實就是上一步中最終發送的數據)除以生成多項式,觀察余數
(6)如果余數為0則不需要丟棄,如果不為0則需要丟棄
3.3 注意
CRC循環冗余碼只能計算某一幀是否出現差錯,但是它沒有辦法具體到某一位是否出現了差錯。
3.4 習題(課本P121)
要發送的數據為101110。采用CRC的生成多項式是P(X) = X^3+1。試求應添加在數據后面的余數。

習題3-5
(1)


四 、集線器、路由器、網橋、交換機(第三章)
4.1 基本概念
本圖來源:https://blog.csdn.net/luoweifeng1989/article/details/6446495,如果侵犯了您的權益,請聯系我刪除。
4.2 簡單理解
4.2.1 集線器
集線器主要作用於OSI網絡模型中的第一層即物理層,主要將多個計算機設備連接起來組建局域網。集線器的功能比較單薄,集線器每個接口簡單的收發比特,收到1就轉發1,收到0就轉發0,不進行碰撞檢測。當它要向某節點發送數據時,不是直接把數據發送到目的節點,而是把數據包發送到與集線器相連的所有節點。大多數的時候它用在星型與樹型網絡拓撲結構中。
4.2.2 交換機
交換機作用於數據鏈路層。
交換機的出現在集線器之后,應該說交換的出現就是為了解決集線器的一些弊端。它和集線器在外形上沒有什么區別,主要用途也是組網。但是交換機擁有更強大的功能。集線器是采用共享工作模式的代表,如果把集線器比作一個郵遞員,那么這個郵遞員是個不認識字的“傻瓜”——要他去送信,他不知道直接根據信件上的地址將信件送給收信人,只會拿着信分發給所有的人,然后讓接收的人根據地址信息來判斷是不是自己的!而交換機則是一個“聰明”的郵遞員——交換機擁有一條高帶寬的背部總線和內部交換矩陣。交換機的所有的端口都掛接在這條背部總線上,當控制電路收到數據包以后,處理端口會查找內存中的地址對照表以確定目的MAC(網卡的硬件地址)的NIC(網卡)掛接在哪個端口上,通過內部交換矩陣迅速將數據包傳送到目的端口。目的MAC若不存在,交換機才廣播到所有的端口,接收端口回應后交換機會“學習”新的地址,並把它添加入內部地址表中。
4.2.3 路由器
路由器是網絡中進行網間連接的關鍵設備。作為不同網絡之間互相連接的樞紐,路由器系統構成了基於 TCP/IP 的國際互連網絡 Internet 的主體脈絡。
路由器之所以在互連網絡中處於關鍵地位,是因為它處於網絡層,一方面能夠跨越不同的物理網絡類型(DDN、FDDI、以太網等等),另一方面在邏輯上將整個互連網絡分割成邏輯上獨立的網絡單位,使網絡具有一定的邏輯結構。路由器的主要工作就是為經過路由器的每個數據幀尋找一條最佳傳輸路徑,並將該數據有效地傳送到目的站點。 路由器的基本功能是,把數據(IP 報文)傳送到正確的網絡,細分則包括:
1、IP 數據報的轉發,包括數據報的尋徑和傳送;
2、子網隔離,抑制廣播風暴;
3、維護路由表,並與其它路由器交換路由信息,這是 IP 報文轉發的基礎;
4、IP 數據報的差錯處理及簡單的擁塞控制;
5、實現對 IP 數據報的過濾和記帳。
路由器構成了 Internet 的骨架。它的處理速度是網絡通信的主要瓶頸之一,它的可靠性則直接影響着網絡互連的質量。因此Internet 研究領域中,路由器技術始終處於核心地位。
4.3 參考
https://www.cnblogs.com/imapla/archive/2013/03/12/2955931.html(該鏈接包含了詳細的解讀)
五、CSMA/CD協議要點
5.1 CSMA/CD協議要點
CSMA/CD協議的要點:發送前先監聽,檢測到信道空閑就發送數據,同時邊發送邊監聽,一旦發現信道上出現了信號碰撞,就立即停止發送。然后按照退避算法等待一段隨機時間后再次發送。每一個站點在自己發送數據之后的一小段時間內,存在着遭遇碰撞的可能性。以太網上各站點都平等地爭用以太網信道。
CSMA/CD協議的四個要點:
1、適配器從網絡層獲得一個分組,加上以太網的首部和尾部,組成以太網幀,放入適配器的緩存中,准備發送。
2、若適配器檢測到信道空閑96比特時間,就發送這個幀。若檢測到信道忙,則繼續檢測並等待信道轉為空閑96比特時間,然后發送這個幀。
3、在發送過程中繼續檢測信道,若一直未檢測到碰撞,就順利吧這個幀成功發送完畢。若檢測到碰撞,則中止數據的發送,並發送認為干擾信號。
4、在中止發送后,適配器就執行指數退避算法,隨機等待r倍512比特時間后,返回到步驟(2)。
5.2 超時重傳時間的選擇
以太網規定幀間最小間隔為96比特時間(9.6us),即所在站點在發送幀之前要等信道空閑96比特時間。這樣做是用於接收方檢測一個幀的結束,同時也使得所有其它站點都能有機會平等競爭信道並發送數據。
六、在數據鏈路層拓展以太網(第三章)
6.1 基本概念
6.1.1 以太網
注:只要是滿足以上兩個標准的都可以稱為以太網,這樣個標准主要的區別就在於幀的格式有輕微的差別。
6.1.2 適配器和MAC地址
總結而言,適配器實際上就是我們常說的網卡,而MAC地址則是電腦的唯一標識,一台電腦通常情況下只能有一個MAC地址。
6.1.3 網橋的工作原理
6.1.4 透明網橋
上述文字在書本P98下方。
6.1.5 生成樹協議
當網絡比較復雜時,很容易因為誤配導致網絡出現環路,更重要的是,有時需要在兩個局域網之間使用多個網橋形成冗余鏈路以增強網絡的可靠性。為了避免幀在網絡中不斷的兜圈子。透明網橋使用了一個生成樹協議,通過互連在一起的網橋間彼此的通信,找出原來網絡拓撲的一個連通子集(生成樹),在這個子集里整個連通的網絡中不存在環路,即在任何兩個站點之間有且只有一條路徑。一旦生成樹確定了,網橋就會關閉不在生成樹鏈路上的那些接口(這些接口不在接收和轉發幀),以確保不存在的幀。
上圖具體解釋見書本P99。
七、常用端口號
常以連線題的方式出現,只需要記住即可。
八、子網划分
這個題目屬於比較簡單的類型,個人感覺考試應該會出這種題目。
九、路由表的更新以及下一跳計算
十、零壓縮算法
十一、基於TCP的Socket編程流程
- 服務器端流程簡介:
(1)創建套接字(socket)
(2)將套接字綁定到一個本地地址和端口上(bind)
(3)將套接字設定為監聽模式,准備接受客戶端請求(listen)
(4)阻塞等待客戶端請求到來。當請求到來后,接受連接請求,返回一個新的對應於此客戶端連接的套接字sockClient(accept)
(5)用返回的套接字sockClient和客戶端進行通信(send/recv);
(6)返回,等待另一個客戶端請求(accept)
(7)關閉套接字(close) - 客戶端流程簡介:
(1) 創建套接字(socket)
(2) 向服務器發出連接請求(connect)
(3) 和服務器進行通信(send/recv)
(4) 關閉套接字(close)
十二、TCP四次揮手