如有錯誤, 歡迎指出~
- 第一章 計算機網路和因特網 課後複習題
- 第二章 應用層 課後複習題
- 第三章 運輸層 課後複習題
- 第四章 網路層:資料平面 課後複習題
- 第五章 網路層:控制平面 課後複習題
- 第六章 鏈路層和區域網 課後複習題
第四章: 網路層:資料平面
4.1節
R1. 我們回顧在本書中使用的某些術語.
- 前面講過運輸層的分組名字是報文段, 資料鏈路層的分組名字是幀. 網路層的分組名字是什麼? 前面講過路由器和鏈路層交換機都被稱為分組交換機. 路由器與鏈路層交換機間的根本區別是什麼?
- 答: 網路層的分組名字是資料包.
路由器和鏈路層交換機的根本區別是它們服務於不同的網路層協議. 鏈路層交換機基於鏈路層幀中的欄位值做出轉發決定, 服務於第二層鏈路層; 路由器基於網路層資料包中的首部欄位值做出轉發決定, 服務於第三層網路層.
R2. 我們注意到網路層功能可被大體分成資料平面功能和控制平面功能. 資料平面的主要功能是什麼? 控制平面的主要功能呢?
- 資料平面的主要功能是轉發, 也就是說當路由器接受到網路層資料包後, 控制平面負責根據路由轉發表把資料包從輸入鏈路轉發到合適的輸出鏈路.
控制平面的主要功能是填充路由表, 也就是決定一個資料包應該轉發到哪裡.
R3. 我們對網路層執行的轉發功能和路由選擇功能進行區別. 路由選擇和轉發的主要區別是什麼?
- 轉發是指將分組從一個輸入鏈路介面轉移到適當的輸出鏈路介面的路由本地動作. 轉發發生的時間很短, 通常用硬體實現.
- 路由選擇是指確定分組從源到目的地所採取的端到端路徑的網路範圍處理過程. 發生的時間較長, 通常為幾秒, 因此用軟體實現.
R4. 路由器中轉發表的主要作用是什麼?
- 路由表的作用是確定分組下一步應該傳送到哪裡? 路由器會根據分組首部的一個或幾個欄位作為索引, 並在轉發表中根據索引找到對應的輸出鏈路介面.
R5. 我們說過網路層的服務模型"定義傳送主機和接收主機之間的端到端分組的傳送特性".
- 因特網的網路層的服務模型是什麼? 就主機到主機資料包的傳遞而論, 因特網的服務模型能夠保證什麼?
- 答: 因特網的網路層提供了單一的服務, 稱為盡力而為服務. 就主機到主機資料包的傳遞而論, 因特網的服務模型什麼也保證不了, 傳送的分組既不能保證以它們傳送的順序被接收, 也不能保證它們最終交付; 既不能保證端到端時延, 也不能保證有最小的頻寬.
4.2節
R6. 在4.2節中, 我們看到路由器通常由輸入埠, 輸出埠, 交換結構和路由選擇處理器組成.
- 其中哪些是用硬體實現的, 哪些是用軟體實現的? 為什麼? 轉到網路層的資料平面和控制平面的概念, 哪些是用硬體實現的, 哪些是用軟體實現的? 為什麼?
- 答: 輸入埠, 輸出埠, 交換結構是用硬體實現的. 路由選擇處理器是用軟體實現的.
轉到網路層的資料平面和控制平面的概念, 資料平面是用硬體實現的, 控制平面是用軟體實現的. 原因是在資料平面處理兩個資料包之間的時間非常短, 軟體無法在這麼短的時間內完成轉發. 控制平面則不同於資料平面的, 它的主要功能是維護轉發表, 邏輯比資料平面複雜多了, 而且它不需要短時間處理大量時間, 只需要及時更新就行了, 因此用軟體實現.
R7. 討論為什麼在高速路由器的每個輸入埠都儲存轉發表的影子副本.
- 首先一個路由器是有很多個輸入埠的, 轉發行為的第一步是在轉發表中查詢輸出介面. 如果每個輸入埠都併發地呼叫路由選擇器查詢輸出介面必然會產生時延. 所以要在高速路由器的每個輸入埠都儲存轉發表的影子副本, 使轉發決策能在每個輸入埠本地做出, 避免了集中式處理的瓶頸.
R8. 基於目的地轉發意味著什麼? 這與通用轉發有什麼不同.
- (假定你已經閱讀4.4節, 兩種方法中哪種是軟體定義網路所採用的? )
- 答: 軟體定義網路SDN採用的是通用轉發. 基於目的地轉發意味著: 如果是根據目的地的IP地址轉發的話, 路由轉發表中可能需要有40多億項. 當然可以通過匹配IP地址的最長字首對所有IP地址進行分組. 但是這樣的路由器功能太單一, 不具有普遍性.
- 通用轉發延續了基於目的轉發的"匹配+動作"模式, 但不受限於通過源分組的IP地址匹配目的IP地址進行轉發, 而是通過富足首部欄位值集合和計數器集合對動作集合進行匹配. 要知道正因為有了通用轉發這樣對"匹配+動作"模式的高度抽象, 才使得網路層變得豐富多彩.
R9.假設一個到達分組匹配了路由器轉發表中的兩個或更多表項. 採用傳統的基於目的地轉發, 路由器用什麼原則來確定這條規則可以用於確定輸出埠, 使得到達的分組能交換到輸出埠.
- 路由器使用最長字首匹配規則, 即在該表中尋找最長的匹配項, 並向與最長字首匹配相關聯的鏈路介面轉發分組.
R10. 在4.2節中討論了三種交換結構. 列出並簡要討論每一種交換結構. 哪一種(如果有的話)能夠跨越交換結構並行傳送多個分組?
- 經記憶體交換. 分組從輸入埠處被複制到處理器記憶體中. 處理器從其首部中提取目的地址, 在轉發表中找出適當的輸出埠, 並把該分組複製到該輸出埠的快取中.
- 經匯流排交換. 分組從輸入埠經過匯流排傳送到所有輸出埠, 只有與該分組匹配的輸出埠會把分組留下來.
- 經網際網路絡交換. 交換機由2N條匯流排組成網際網路絡, 連線N個輸入口和N個輸出口. 通過控制網路中的交點使分組到達對應的輸出埠. 這種縱橫式網路能夠並行傳送多個分組.
R11. 描述在輸入埠會出現分組丟失的原因. 描述在輸入埠如何消除分組丟失(不使用無限大快取區).
- 分組到達輸入埠後需要經過交換結構傳送到輸出埠. 如果有兩個分組要同時傳送到某個輸出埠, 那麼在交換結構傳輸排在前面的分組時, 排在後面的分組必須等待. 這就形成了輸入埠佇列, 若輸入埠分組到達的速率大於交換結構的處理速率, 佇列就會越來越長, 最後導致分組丟失.
- 由於只要輸入鏈路上的分組到達速率達到其容量的58%, 輸入佇列將無限增大導致大量丟包, 要消除分組丟失需要控制分組的到達速率.
R12. 描述在輸出埠會出現分組丟失的原因. 通過提高交換結構速率, 能夠防止這種丟失嗎?
- 分組從輸入埠經過交換結構到達輸出埠, 輸出埠將分組推出到輸出鏈路上, 假如交換結構(縱橫交換結構)同時將3個分組傳輸到輸出埠上, 而輸出埠一次只能傳送一個分組, 那麼將會有2個分組在輸出埠排隊. 如果不斷有大於1個的分組同時從交換結構傳輸到輸出埠, 輸出埠的排隊將會變長, 當輸出埠快取耗盡後會出現分組丟失.
- 正是因為交換結構傳輸分組到輸出埠的速率快於輸出埠的傳輸速率導致輸出埠出現排隊, 所以提高交換結構速率不能防止這種丟失.
R13. 什麼是HOL阻塞? 它出現在輸入埠還是輸出埠?
- HOL(Head-Of-the-Line)全稱為輸入排隊交換機中的線路前部阻塞.
- 從圖中可以看到輸入埠1, 3的兩個深色分組會經過交換結構到達輸出埠1.
- 假定該交換結構決定先傳輸輸入埠1的分組, 那麼輸入埠3的分組必須等待.
- 同時可以看到輸入埠3神色分組後面的淺色分組的輸出埠並不是1而是2, 考慮這是一個縱橫式交換結構, 輸入埠3的深色分組和淺色分組本來是可以並行傳輸的, 現在由於深色分組被阻塞, 淺色分組也必須排隊等待, 這就是HOL阻塞, 出現在輸入埠.
R14. 在4.2節我們學習了FIFO, 優先權, 迴圈(RR)和加權公平排隊(WFQ)分組排程規則. 這些排隊規則中, 哪個規則確保所有分組是以到達的次序離開的?
- FIFO分組排程規則, 全稱為(First-In-First-Out)先進先出鏈路排程規則.
R15. 舉例說明為什麼網路操作員要讓一類分組的優先權超過另一類分組的.
- 例如現在輸出佇列中同時存在實時語音分組和SMTP郵件分組和檔案傳輸分組等. 網路管理員讓實時語音分組的優先權超過SMTP分組的, 因為網路時延對實時語音通話的影響遠大於SMTP的影響. 語音分組經歷較長時延後語音服務就沒法進行了, 而SMTP傳輸慢點, 郵件伺服器最終還是能獲得該郵件分組, 能容忍較大的時延.
R16. RR和WFQ分組排程之間的基本差異是什麼? 存在RR和WFQ將表現得完全相同的場合嗎? (提示: 考慮WFQ權重)
- RR和WFQ都是通過迴圈排程器在各個分組類中進行迴圈傳輸, 它們的基本差異在於RR對於每個類會公平地只傳送一個分組, 傳送完立即轉移到下一個類, 除非只剩下一個類有分組. 而WFQ則會給每個類分配權重, 相當於變相地給每個類的分組分配優先權, WFQ會按照權重對一個類進行傳輸後再轉移到下一個類, 對於權重高的類迴圈排程器可能會在該類中傳輸好幾個分組再轉移到下一個類, 而不是每個分組傳輸一個.
R17. 假定主機A向主機B傳送封裝在一個IP資料包中的TCP報文段. 當主機B接受到該資料包時, 主機B中的網路層怎樣知道它應當將該報文段(即資料包的有效載荷)交給TCP而不是UDP或某個其他東西呢?
- 主機B中的網路層通過檢視資料包首部欄位中的協議欄位得知應該把資料部分交給哪個特定的運輸層協議. 比如值為6表明交給TCP, 值為17表明交給UDP.
- 協議欄位的作用相當於運輸層報文段首部中的目的埠號, 指示將資料交給哪個套接字. 鏈路層的鏈路層幀同樣也有特殊欄位用於將鏈路層和網路層繫結在一起.
R18. 在IP首部中, 哪個欄位能用來確保一個分組的轉發不超過N臺路由器.
- 壽命欄位(Time-To-Live, TTL), 每當一臺路由器處理該資料包時該值減1, 當減到0時丟棄該資料包.
R19. 前面講過因特網檢驗和被用於運輸層報文段以及網路層資料包.
- 現在考慮一個運輸層報文段封裝在一個IP資料包中.在報文段首部和資料包首部中的檢驗和要遍及IP資料包中的任何共同位元組進行計算嗎?
- 答: 不需要. 首先搞清楚報文段檢驗和與資料包檢驗和之間的差別. - 資料包檢驗和只是對IP資料包的首部計算了檢驗和, 而報文段首部中的檢驗和是對整個報文段(包括承載的應用層資料部分)都進行計算的.
- 其次, TCP/UDP和IP不一定屬於同一個協議棧, TCP能夠執行在別的網路協議上, IP資料包也能攜帶除了TCP/IP以外的其他資料.
R20. 什麼時候一個大資料包分割成多個較小的資料包? 較小的資料包在什麼地方裝配成一個較大的資料包?
- 網路層的資料包需要往下經過鏈路層封裝成鏈路層幀才能放上鍊路開始傳輸. 然而一個鏈路層幀的載荷大小根據鏈路層協議的不同而不同, 資料包的大小不能超過一個鏈路層幀的最大傳送單元(Maximum Transmission Unit, MTU). 所以當鏈路層遇到大於自身MTU的資料包時需要把資料包分割成多個較小的資料包. 這項工作將放到端系統中進行, 因為如果在路由器中進行的話會大大降低路由器的效能.
- 較小的資料包在目的端系統的網路層進行裝配.
R21. 路由器有IP地址嗎? 如果有, 多少個?
- 路由器有IP地址, 這裡的有IP地址並不是說有一個IP地址標誌一臺路由器. 而是說路由器的一個輸入或輸出埠對應著一個IP地址.
- 所以一個路由器擁有的IP地址數是不確定的, 假如一個路由器有一個輸入端和兩個輸出端, 那麼對應地就有三個IP地址, 分別對應三個埠.
R22. IP地址223.1.3.27的32位元二進位制等價形式是什麼?
- 11011111 00000001 00000011 000
R23. 考察使用DHCP的主機, 獲取它的IP地址, 網路掩碼, 預設路由器及其本地DNS伺服器的IP地址. 列出這些值.
- DHCP(Dynamic Host Configuration), 動態主機配置協議.
- DHCP協議用於讓一臺主機在子網中獲得它的IP地址. 過程如下:
- 首先主機向255.255.255.255 IP廣播地址傳送一個DHCP發現報文, 這個發現報文會在整個子網傳播.
- 子網內的DHCP伺服器收到DHCP發現報文後會向廣播地址傳送一個DHCP提供報文, 向需要IP的主機提供IP地址(以下圖為例): 223.1.2.4, 網路掩碼: 223.1.2.0/24, 預設路由器: 223.1.2.5 以及本地DNS伺服器的IP地址.
- 主機可能會收到不只一個DHCP提供報文, 選擇其中一個後向伺服器傳送DHCP請求.
- 被選中的DHCP伺服器響應DHCP ACK報文.
R24. 假設在一個源主機和一個目的主機之間有3臺路由器.
- 不考慮分片, 一個從源主機傳送給目的主機的IP資料包將通過多少個介面? 為了將資料包從源移動到目的地需要檢索多少個轉發表?
- 答: 通過一個路由器需要通過2個介面, 端到端之間一共有3臺路由器, 所以資料包一共要通過6個介面.
- 經過3個路由器, 需要檢索3個轉發表.
R25. 假設某應用每20ms生成一個40位元組的資料塊, 每塊封裝在一個TCP報文段中, TCP報文段再封裝在一個IP資料包中. 每個資料包的開銷有多大? 應用資料所佔的百分比是多少?
- 這題考察的是TCP報文段首部欄位和資料包首部欄位的大小.
- TCP報文段首部是20位元組.
- 資料包報文段首部是20位元組.
- 所以每個資料包的開銷為80位元組, 應用資料所佔的百分比是50%.
R26. 假定你買了一個無線路由器並將其與電纜調變解調器相連.
- 同時假定ISP動態地為你連線的裝置(即你的無線路由器)分配一個IP地址. 還假定你家有5臺PC, 均使用802.11(WIFI)以無線方式與該無線路由器相連. 怎樣為這5臺PC分配IP地址? 該無線路由器使用NAT嗎? 為什麼?
- 答: 這5臺PC的IP地址會通過請求DHCP伺服器獲得.
- 該無線路由器會使用NAT, 原因是: 家庭網路可能會隨時加入許多臺聯網裝置, 而最簡單常用的管理這些裝置IP地址的方法就是NAT.
R27. "路由聚合"一詞意味著什麼? 路由器執行路由聚合為什麼是有用的?
- 路由聚合意味著一個子網只通過接入IP地址的部分字首和外部因特網相連, 外界並不關心子網內還存在著多個組織, 這種使用單個網路字首通告多個網路的能力通常稱為路由聚合.
- 對於路由器而言, 假設一臺組織外的路由器要轉發一個資料包, 該資料包的目的地址在組織內部, 那麼該組織外的路由器轉發到組織內的一臺路由器時, 只需要考慮地址的前x位元即可. 這個做法相當大地減少了在這些路由器中轉發表的長度. (使轉發表不用記錄每個具體目的IP地址, 只需要記錄一個類似223.1.1.0/24一樣的帶字首的地址即可)
R28. "即插即用"或"零配置"協議意味著什麼?
- "即插即用"和"零配置"描述的是DHCP協議.
- 這一協議意味著DHCP協議讓每個需要接入因特網的端裝置都能方便地獲得IP地址. 具體過程可以往上檢視第R23題. 其中廣播地址和子網是DHCP運作不可缺乏的元素.
R29. 什麼是專用網路地址? 具有專用網路地址的資料包會出現在大型公共因特網中嗎? 解釋理由.
- 專用地址這一概念產生在NAT(網路地址轉換)場景中.
- NAT的模型是一臺具有單一IP地址的路由器處於因特網與子網之間, 子網內的端系統重新獲得一個類似IP地址的網路地址. 這個網路地址對於一個端系統來說就是專用網路地址.
- 專用網路地址的資料包不會出現在大型公共因特網中, 因為大型因特網邊緣分佈了無數個NAT, 每個NAT構成的子網中的專用網路地址是可以重複的, 具有專用網路地址的資料包中填寫的IP地址只有在專屬的NAT中可以識別, 所以不可能出現在公網.
- 具有專用網路地址的資料包在進入公共因特網之前被執行NAT的路由器改造過了.
R30. 比較並對照IPv4和IPv6首部欄位. 它們有相同的欄位嗎?
- 有相同的欄位. IPv6在IPv4的基礎上改進了, 捨棄了被證明為低效的功能, 新增具遠見性的流標籤等欄位, 並保留了基本功能.
R31. 有人說當IPv6以隧道形式通過IPv4路由器時, IPv6將IPv4隧道作為鏈路層協議. 你同意這種說法嗎? 為什麼?
- 我不同意這種說法, IPv4的原理是用一個IPv4資料包把IPv6資料包封裝起來, IPv6資料包相當於封裝後資料包的有效載荷. 這個隧道應該屬於網路層協議.
4.4節
R32. 通用轉發和基於目的轉發有何不同.
- 參考R8
R33. 我們在4.1節遇到的基於目的地轉發與在4.4節遇到的OpenFlow流表之間有什麼差異?
- 基於目的地轉發明確地通過目的地匹配, 具體動作是轉發到響應的輸出埠上.
- OpenFlow流表的匹配項可以是分組首部欄位中的一個或幾個, 動作可以是轉發, 攔截, 丟棄等. OpenFlow流表是對匹配轉發更高層次的抽象.
R34. 路由器或交換機的"匹配加動作"意味著什麼?
- 在基於目的地轉發的分組交換機場合中, 要匹配什麼並採取什麼動作? 在SDN的場合中, 舉出3個能夠被匹配的欄位和3個能被採取的動作.
- 答: 參考R33. (補充: 被匹配的欄位可以屬於鏈路層, 網路層, 運輸層, 如目的MAC, VLAN優先權等)
R35. 在IP資料包中舉出能夠在OpenFlow1.0通用轉發中"匹配"的3個首部欄位. 不能在OpenFlow中"匹配"的3個IP資料包首部欄位是什麼?
- 能匹配: IP目的, VLAN優先權, 目的MAC
- 不能匹配: TTL欄位(資料包過時), 資料包長度, 差錯檢驗.