网络层问题
問題4-1:“IP網關”和“IP路由器”是否為同義語?
答:當初發明TCP/IP的研究人員使用IP Gateway作為網際互連的設備。我國的網絡工作者曾使用過多種譯名,如網間連接器、網閘、信關、聯網機等,但最后由全國自然科學名詞審定委員會(這個委員會現在改名為“全國科學技術名詞審定委員會”)在[MINGCI94]中公布的Gateway標準譯名為“網關“。
但是在美國在20世紀90年代初期一家廠商認為,將IP Gateway改名為IP Router似乎更加有利于設備的銷售。后來其他廠家也跟著改變產品的名稱。在[MINGCI94]中Router的標準譯名是“路由器”?,F在,大家就都基本上不再使用網關這一名詞了。
我們可以認為“IP網關”和“IP路由器”是同義語。
問題4-2:在文獻中有時會見到對等連網(peer-to-peer networking),這是什么意思?
答:這表示在因特網中,任何兩個計算機都可以進行平等地通信。這里可能一個計算機是很小的PC機,而另一個計算機是很大的巨型機。因特網對通信雙方計算機的大小是不關心的?!皩Φ取币灿小皩ΨQ”的意思。在早期的計算機網絡是以計算機為中心,而遠地的終端圍繞中心的計算機進行通信。這些遠地的終端和在中心的計算機并不是對等的,因為智能都集中在中心的計算機,復雜的計算都要在中心的計算機進行。但現在情況已經有了根本的變化。因此產生了對等連網這樣的名詞。
問題4-3:在一個互聯網中,能否使用一個很大的交換機(switch)來代替互聯網中很多的路由器?
答:不行。交換機和路由器的功能是很不一樣的。
交換機可在一個單個的網絡中和若干個計算機相連,并且可以將一個計算機發送過來的幀轉發給另一個計算機。從這一點上看,交換機具有集線器的轉發幀的功能。
但交換機比集線器的功能強很多。集線器在同一時間只允許一個計算機和其他計算機進行通信,但交換機允許多個計算機同時進行通信。
路由器連接兩個或好幾個網絡。路由器可在網絡之間轉發分組(即IP數據報)。特別是,這些互連的網絡可以是異構的。
因此,如果是許多相同類型的網絡互連在一起,那么用一個很大的交換機(如果能夠找得到)代替原來的一些路由器是可以的。但若這些互連的網絡是異構的網絡,那么就必須使用路由器來進行互連。
問題4-4:為什么IP地址又稱為“虛擬地址”?
答:這是因為IP地址是靠軟件來維持的而不是硬件地址。我們好像構成了一個很大的互連網絡,但這個網絡是虛擬的網絡系統,因為它的通信系統是抽象的。雖然許多硬件和軟件的組合看起來好像構成了一個很大的網絡,但這樣的大網絡實際上并不存在。
這種虛擬網絡的地址也是虛擬的,因此IP地址又稱為“虛擬地址”。
問題4-5:有的文獻上使用“虛擬分組”(virtual packet)這一名詞。虛擬分組是什么意思?
答:虛擬分組就是IP數據報。
因為因特網是由大量異構的物理網絡互連而成的。這些物理網絡的幀格式是各式各樣的,它們的地址也可能是互不兼容的。路由器無法將一種格式的幀轉發到另一種網絡,因為另一種網絡無法識別與自己格式不同的幀的地址。路由器也不可能對不同的地址格式進行轉換。
為了解決這一問題,IP協議定義了IP數據報的格式。所有連接在因特網中的路由器都能識別IP數據報的IP地址,因此能夠對IP數據報進行轉發(在進行轉發時當然要調用ARP協議以便獲得相應的硬件地址)。我們知道,IP數據報是作為物理網絡的幀的數據部分。各個物理網絡在轉發幀時是根據幀的首部中的硬件地址而不看幀的數據部分。因此所有的物理網絡都看不見幀里面的IP數據報。這樣就使得IP數據報得到“虛擬分組”這樣的名稱。
問題4-6:如下圖所示。五個網絡用四個路由器(每一個路由器有兩個端口)互連起來。能否改變這種連接方法,使用一個具有五個端口的路由器將這五個網絡互連起來?
答:一般說來是不采用這樣的連接方法。
這里有兩個原因:
(1)路由器中的CPU和存儲器是用來對通過該路由器的每一個IP數據報進行處理的。假若一個路由器和許多個網絡相連接,那么這個路由器的處理器很可能沒有足夠的能力來處理通過它的所有的IP數據報。
(2)冗余度可以提高因特網的可靠性。路由器和網絡都有可能出現故障。如果將所有的路由選擇功能集中在一個路由器上,則一旦該路由器出故障,整個互連網就無法工作。
因此,在規劃互連網時,互連網的具體拓撲結構取決于物理網絡的帶寬、期望的通信量、對可靠性的需求、以及路由器硬件的價格。
問題4-7:有的書(如[COME06])將IP地址分為前綴和后綴兩大部分,它們和網絡號字段及主機號字段有什么關系?
答:前綴(prefix)就是網絡號字段net-id,而后綴(suffix)就是主機號字段host-id。下面的圖是以C類地址為例來說明前綴和后綴是什么。
如果網絡劃分了子網,那么前綴還應包括子網號字段。
問題4-8:IP地址中的前綴和后綴最大的不同是什么?
答:(1) 前綴是由因特網管理機構進行分配的,而后綴是由分配到前綴的單位自行分配的。
(2) IP數據報的尋址是根據前綴來找目的網絡,找到目的網絡后再根據后綴找到目的主機。
問題4-9:IP數據報中的數據部分的長度是可變的(即IP數據報不是定長的)。這樣做有什么好處?
答:這樣做的好處是可以滿足這種應用的需要。有時在鍵盤鍵入的一個字符就可以構成一個很短的IP數據報。但有的應用程序需要將很長的文件構成一個大的IP數據報(最長為64 K字節,包括首部在內)。當然,大多數IP數據報的數據部分的長度都遠大于首部長度。這樣做的好處是可以提高傳輸效率(首部開銷所占的比重就較小)。
問題4-10:在IP地址中,為什么使用最前面的一個或幾個比特來表示地址的類別?
答:知道了IP地址的類別,就可以很快地將IP地址的前綴和后綴區分開來,這在路由器尋找下一跳地址時是必須做的一件事。
但是怎樣才能盡快地讓計算機完成這一動作呢?如果將IP地址大致按照一定的地址數目劃分為幾部分作為各類地址,那么計算機執行這樣的操作將會花費較多的時間。我們知道,計算機進行比特操作(如左移、右移、布爾運算等)要比進行整數運算要快得多。因此,IP地址的類別劃分就用地址中最前面的一位或幾位來標志地址的類別。
問題4-11:全1的IP地址是否是向整個因特網進行廣播的一種地址?
答:不是。
設想一下,如果是向整個因特網進行廣播的地址,那么一定會在因特網上產生極大的通信量,這樣會嚴重地影響因特網的正常工作,甚至還會使因特網癱瘓。
因此,在IP地址中的全1地址表示僅在本網絡上(就是你這個主機所連接的局域網)進行廣播。這種廣播叫做受限的廣播(limited broadcast)。
如果net-id是具體的網絡號,而host-id是全1,就叫做定向廣播(directed broadcast),因為這是對某一個具體的網絡(即net-id指明的網絡)上的所有主機進行廣播的一種地址。
問題4-12:IP協議有分片的功能,但廣域網中的分組則不必分片。這是為什么?
答:IP數據報可能要經過許多個網絡,而源主機事先并不知道數據報后面要經過的這些網絡所能通過的分組的最大長度是多少。等到IP數據報轉發到某個網絡時可能才發現數據報太長了,因此在這時就必須進行分片。
但廣域網能夠通過的分組的最大長度是該廣域網中所有主機都事先知道的。源主機不可能發送網絡不支持的過長分組。因此廣域網就沒有必要將已經發送出的分組再進行分片。
問題4-13:路由表中只給出到目的網絡的下一跳路由器的IP地址,然后在下一個路由器的路由表中再給出再下一跳的路由器的IP地址,最后才能到達目的網絡進行直接交付。采用這樣的方法有什么好處?
答:這樣做的最大好處就是使得路由選擇成為動態的,十分靈活。當IP數據報傳送到半途時,若網絡的情況發生了變化(如網絡拓撲變化或出現了擁塞),那么中途的路由器就可以改變其下一跳路由,從而實現了動態路由選擇。
問題4-14:鏈路層廣播和IP廣播有何區別?
答:鏈路層廣播是用數據鏈路層協議(第二層)在一個以太網上實現的對該局域網上的所有主機的MAC幀進行廣播。
IP廣播則是用IP協議通過因特網實現的對一個網絡(即目的網絡)上的所有主機的IP數據報廣播。
問題4-15:“盡最大努力交付”(best effort delivery)都有哪些含義?
答:(1) 不保證源主機發送出來的IP數據報一定無差錯地交付到目的主機。
(2) 不保證源主機發送出來的IP數據報都在某一規定的時間內交付到目的主機。
(3) 不保證源主機發送出來的IP數據報一定按發送時的順序交付到目的主機。
(4) 不保證源主機發送出來的IP數據報不會重復交付到目的主機。
(5) 不故意丟棄IP數據報。丟棄IP數據報的情況是:路由器檢測出首部檢驗和有錯誤;或由于網絡中通信量過大,路由器或目的主機中的緩存已無空閑空間。
但是要注意,IP數據報的首部中有一個“首部檢驗和”。當它檢驗出IP數據報的首部出現了差錯時,就將該數據報丟棄。因此,凡交付給目的主機的IP數據報都是IP數據報的首部沒有出現差錯的或沒有檢測出來有差錯。這就是說,傳輸過程中出現差錯的IP數據報都被丟棄了。例如,源主機一連發送了10000個IP數據報,結果有9999個IP數據報都出現了差錯,因而都被丟棄了。這樣,只有一個不出錯的IP數據報最后交付給了目的主機。這也完全符合“盡最大努力交付”的原則。甚至當所發送的一萬個IP數據報都被丟棄了,我們也不能說這不是“盡最大努力交付”,只要路由器不是故意地丟棄IP數據報就行。
現在因特網上絕大多數的通信量都是屬于“盡最大努力交付”的。如果數據必須可靠地交付給目的地,那么使用IP協議的高層軟件必須負責解決這一問題。
問題4-16:假定在一個局域網中計算機A發送ARP請求分組,希望找出計算機B的硬件地址。這時局域網上的所有計算機都能收到這個廣播發送的ARP請求分組。試問這時由哪一個計算機使用ARP響應分組將計算機B的硬件地址告訴計算機A?
答:這要區分兩種情況。
如果計算機B和計算機A都連接在同一個局域網上,那么就是計算機B發送ARP響應分組。
如果計算機B和計算機A不是連接在同一個局域網上,那么就必須由一個連接在本局域網上的路由器來轉發ARP請求分組。這時,該路由器向計算機A發送ARP回答分組,給出自己的硬件地址。
問題4-17:一個主機要向另一個主機發送IP數據報。是否使用ARP就可以得到該目的主機的硬件地址,然后直接用這個硬件地址將IP數據報發送給目的主機?
答:有時是這樣,但也有時不是這樣。
ARP只能對連接在同一個網絡上的主機或路由器進行地址解析。我們看下圖的例子。
由于A和B連接在同一個網絡上,因此主機A使用ARP協議就可得到B的硬件地址,然后用B的硬件地址,將IP數據報組裝成幀,發送給B。
但當目的主機是F時,情況就不同了。A無法得到F的硬件地址。A只能先將IP數據報發送給本網絡上的一個路由器(在本例中就是路由器R1)。因此A發送IP數據報給F時,在地址解析方面要經過以下三個步驟:
(1)A先通過ARP解析出路由器R1的硬件地址,將IP數據報發送到R1。
(2)R1再通過ARP解析出R2的硬件地址,將IP數據報轉發到R2。
(3)R2再通過ARP解析出F的硬件地址,將IP數據報交付給F。
因此,A發送IP數據報給F要經過三次ARP地址解析。A只知道F的IP地址,但并不知道F的硬件地址。
問題4-18:在因特網中最常見的分組長度大約是多少個字節?
答:使用以太網是和因特網相連的最常用的局域網,而以太網的數據字段最多只允許裝入1500字節。因此在因特網上傳送的分組長度一般都不會超過1500字節。
由于現在因特網上最常用的應用程序是電子郵件和萬維網。這兩個應用程序都使用TCP進行傳輸,因此經常要用到TCP的確認報文段。這種TCP確認報文段沒有數據,只有20字節的首部,再加上IP數據報的20字節首部,使得IP數據報(即分組)的長度只有40字節。
根據美國MCI主干網上傳送的分組的統計數據,大約有40%的分組為40字節長(即它們攜帶的數據都是TCP的確認報文段)。大約有15%的分組為576字節左右的長度(即IP數據報的默認長度)。大約有10%的分組為1500字節長。超過1500字節的分組數是很少的。
問題4-19:當路由器利用IP數據報首部中的“首部檢驗和”字段檢測出在傳輸過程中出現了差錯時,就簡單地將其丟棄。為什么不發送一個ICMP報文給源主機呢?
答:IP協議并不要求源主機重傳有差錯的IP數據報。保證無差錯傳輸是由TCP協議完成的。另一方面,首部檢驗和只能檢驗出IP數據報的首部出現了差錯,但不知道首部中的源地址字段有沒有出錯。如果源地址出現了差錯,那么將這種IP數據報傳送到錯誤的地址也是沒有任何意義的。
問題4-20:IP數據報必須考慮最大傳送單元MTU (Maximum Transfer Unit)。這是指哪一層的最大傳送單元?包括不包括首部或尾部等開銷在內?
答:這是指IP層下面的數據鏈路層的最大傳送單元,也就是下面的MAC幀的數據字段,不包括MAC幀的首部和尾部的各字段。因為IP數據報是裝入到MAC幀中的數據字段,因此數據鏈路層的MTU數值就是IP數據報所容許的最大長度(是總長度,即首部加上數據字段)。
問題4-21:為什么生存時間TTL原來用秒作為單位而現在TTL卻表示數據報在網絡中所能通過的路由器數的最大值?
答:最初TTL是用秒作為單位,表示一個數據報在網絡中的最長生存時間。TTL可用來防止數據報無限期地在網絡中兜圈子(這樣會浪費網絡的資源)。例如,把數據報的TTL初始值設置為70秒,就表示在該數據報進入網絡后只要經過了70秒就要把它丟棄,哪怕它就快要到達目的站了。
但后來發現這樣做很不方便(各個沒有時鐘同步關系的路由器都要計算通過它的數據報在網絡中的逗留時間)。于是就改用另一種方法,就是讓TTL表示數據報在網絡中所能夠通過的路由器數的最大值。例如,把數據報的TTL初始值設置為60,就表示:若該數據報在經過60個路由器后還沒有到達目的站,則最后到達的那個路由器就立即把這個數據報丟棄,使它不再占用網絡的資源?,F在路由器在轉發數據報時,應把數據報首部中的TTL值減1。若TTL值減為零,就把它丟棄。因此,現在的TTL表示數據報在網絡傳送過程中的最大跳數。
總結
- 上一篇: 试分析下列程序段:请选择(L1、L2、L
- 下一篇: 梯形图 c语言代码生成,PLC梯形图中内