萬盛學電腦網

 萬盛學電腦網 >> 路由器知識 >> 路由器簡介 >> 路由技術詳細知識

路由技術詳細知識

  最簡單的網絡可以想象成單線的總線,各個計算機可以通過向總線發送分組以互相通信。但隨著網絡中的計算機數目增長,這就很不可行了,會產生許多問題:

  1、帶寬資源耗盡。

  2、每台計算機都浪費許多時間處理無關的廣播數據。

  3、網絡變得無法管理,任何錯誤都可能導致整個網絡癱瘓。

  4、每台計算機都可以監聽到其他計算機的通信。

  把網絡分段可以解決這些問題,但同時你必須提供一種機制使不同網段的計算機可以互相通信,這通常涉及到在一些ISO網絡協議層選擇性地在網段間傳送數據,我們來看一下網絡協議層和路由器的位置。

  我們可以看到,路由器位於網絡層。本文假定網絡層協議為IPv4,因為這是最流行的協議,其中涉及的概念與其他網絡層協議是類似的。

  一、路由與橋接

  路由相對於2層的橋接/交換是高層的概念,不涉及網絡的物理細節。在可路由的網絡中,每台主機都有同樣的網絡層地址格式(如IP地址),而無論它是運行在以太網、令牌環、FDDI還是廣域網。網絡層地址通常由兩部分構成:網絡地址和主機地址。

  網橋只能連接數據鏈路層相同(或類似)的網絡,路由器則不同,它可以連接任意兩種網絡,只要主機使用的是相同的網絡層協議。

  二、連接網絡層與數據鏈路層

  網絡層下面是數據鏈路層,為了它們可以互通,需要“粘合”協議。ARP(地址解析協議)用於把網絡層(3層)地址映射到數據鏈路層(2層)地址,RARP(反向地址解析協議)則反之。

  雖然ARP的定義與網絡層協議無關,但它通常用於解析IP地址;最常見的數據鏈路層是以太網。因此下面的ARP和RARP的例子基於IP和以太網,但要注意這些概念對其他協議也是一樣的。

  1、地址解析協議

  網絡層地址是由網絡管理員定義的抽象映射,它不去關心下層是哪種數據鏈路層協議。然而,網絡接口只能根據2層地址來互相通信,2層地址通過ARP從3層地址得到。

  並不是發送每個數據包都需要進行ARP請求,回應被緩存在本地的ARP表中,這樣就減少了網絡中的ARP包。ARP的維護比較容易,是一個比較簡單的協議。

  2、簡介

  如果接口A想給接口B發送數據,並且A只知道B的IP地址,它必須首先查找B的物理地址,它發送一個含有B的IP地址的ARP廣播請求B的物理地址,接口B收到該廣播後,向A回應其物理地址。

  注意,雖然所有接口都收到了信息,但只有B回應該請求,這保證了回應的正確且避免了過期的信息。要注意的是,當A和B不在同一網段時,A只向下一跳的路由器發送ARP請求,而不是直接向B發送。 接收到ARP分組後處理,注意發送者的對被存到接收ARP請求的主機的本地ARP表中,一般A想與B通信時,B可能也需要與A通信。

  3、IP地址沖突

  ARP產生的問題中最常見的是IP地址的沖突,這是由於兩個不同的主機IP地址相同產生的,在任何互聯的網絡中,IP地址必須是唯一的。這時會收到兩個ARP回應,分別指出了不同的硬件地址,這是嚴重的錯誤,沒有簡單的解決辦法。

  為了避免出現這類錯誤,當接口A初試化時,它發送一個含有其IP地址的ARP請求,如果沒有收到回應,A就假定該IP地址沒有被使用。我們假定接口B已經使用了該IP地址,那麼B就發送一個ARP回應,A就可以知道該IP地址已被使用,它就不能再使用該IP地址,而是返回錯誤信息。這樣又產生一個問題,假設主機C含有該IP地址的映射,是映射到B的硬件地址的,它收到接口A的ARP廣播後,更新其ARP表使之指向A的硬件地址。為了解決這個錯誤,B再次發送一個ARP請求廣播,這樣主機C又更新其ARP表再次指向B的硬件地址。這時網絡的狀態又回到先前的狀態,有可能C已經向A發送了應該發送給B的IP分組,這很不幸,但是因為IP提供的是無保證的傳輸,所以不會產生大的問題。

  4、管理ARP緩存表

  ARP緩存表是對的列表,根據IP地址索引。該表可以用命令arp來管理,其語法包括:

  向表中添加靜態表項 -- arp -s

  從表中刪除表項 -- arp -d

  顯示表項 -- arp -a

  ARP表中的動態表項(沒有手動加入的表項)通常過一段時間自動刪除,這段時間的長度由特定的TCP/IP實現決定。

  5、靜態ARP地址的使用

  靜態ARP地址的典型使用是設置獨立的打印服務器,這些設備通常通過telnet來配置,但首先它們需要一個IP地址。沒有明顯的方法來把此信息告訴該設備,好象只能使用其串口來設置。但是,這需要找一個合適的終端和串行電纜,設置波特率、奇偶校驗等,很不方便。

  假設我們想給一個打印服務器設置IP地址P-IP,並且我們知道其硬件地址P-hard,在工作站A上創建一個靜態ARP表項把P-IP映射到P-hard,這樣,雖然打印服務器不知道自己的IP地址,但是所有指向P-IP的數據就將被送到P-hard。我們現在就可以telnet到P-IP並配置其IP地址了,然後再刪除該靜態ARP表項。

  有時會在一個子網裡配置打印服務器,而在另一個子網裡使用它,方法與上面類似。假設其IP地址為P-IP,我們分配一個本網的臨時IP地址T-IP給它,在工作站A上創建臨時ARP表項把T-IP映射到P-hard,然後telnet到T-IP,給打印服務器配以IP地址P-IP。接下來就可以把它放到另一個子網裡使用了,別忘了刪除靜態ARP表項。

  6、代理ARP

  可以通過使用代理ARP來避免在每台主機上配置路由表,在使用子網時這特別有用,但注意,不是所有的主機都能理解子網的。基本的思想是即使對於不在本子網的主機也發送ARP請求,ARP代理服務器(通常是網關)回應以網關的硬件地址。

  代理ARP簡化了主機的管理,但是增加了網絡的通信量(不是很 明顯),並且可能需要較大的ARP緩存,每個不在本網的IP地址都被創建一個表項,都映射到網關的硬件地址。在使用代理ARP的主機看來,世界就象一個大的沒有路由器物理網絡。

  三、IP地址

  在可路由的網絡層協議中,協議地址必須含有兩部分信息:網絡地址和主機地址。存貯這種信息最明顯的方法是用兩個分離的域,這樣我們必須考慮到兩個域的最大長度,有些協議(如IPX)就是這樣的,它在小型和中型的網絡裡可以工作的很好。

  另一種方案是減少主機地址域的長度,如24位網絡地址、8位主機地址,這樣就有了較多的網段,但每個網段內的主機數目很少。這樣一來,對於多於256個主機的網絡,就必須分配多個網段,其問題是很多的網絡給路由器造成了難以忍受的負擔。

  IP把網絡地址和主機地址一起包裝在一個32位的域裡,有時主機地址部分很短,有時很長,這樣可以有效利用地址空間,減少IP地址的長度,並且網絡數目不算多。有兩種將主機地址分離出來的方法:基於類的地址和無類別的地址。

  1、主機和網關

  主機和網關的區別常產生混淆,這是由於主機意義的轉變。在RFC中(1122/3和1009)中定義為:

  主機是連接到一個或多個網絡的設備,它可以向任何一個網絡發送和從其接收數據,但它從不把數據從一個網絡傳向另一個。

  網關是連接到多於一個網絡的設備,它選擇性的把數據從一個網絡轉發到其它網絡。

  換句話說,過去主機和網關的概念被人工地區分開來,那時計算機沒有足夠的能力同時用作主機和網關。主機是用戶工作的計算機,或是文件服務器等。現代的計算機的能力足以同時擔當這兩種角色,因此,現代的主機定義應該如此:

  主機是連接到一個或多個網絡的設備,它可以向任何一個網絡發送和從其接收數據。它也可以作為網關,但這不是其唯一的目的。

  路由器是專用的網關,其硬件經過特殊的設計使其能以極小的延遲轉發大量的數據。然而,網關也可以是有多個網卡的標准的計算機,其操作系統的網絡層有能力轉發數據。由於專用的路由硬件較便宜,計算機用作網關已經很少見了,在只有一個撥號連接的小站點裡,還可能使用計算機作為非專用的網關。

  2、基於類的地址

  最初設計IP時,地址根據第一個字節被分成幾類:

  0: 保留

  1-126: A類(網絡地址:1字節,主機地址:3字節)

  127: 保留

  128-191: B類(網絡地址:2字節,主機地址:2字節)

  192-223: C類(網絡地址:3字節,主機地址:1字節)

  224-255: 保留

  3、子網劃分

  雖然基於類的地址系統對因特網服務提供商來說工作得很好,但它不能在一個網絡內部做任何路由,其目的是使用第二層(橋接/交換)來導引網絡中的數據。在大型的A類網絡中,這就成了個特殊的問題,因為在大型網絡中僅使用橋接/交換使其非常難以管理。在邏輯上其解決辦法是把大網絡分割成若干小的網絡,但在基於類的地址系統中這是不可能的。為了解決這個問題,出現了一個新的域:子網掩碼。子網掩碼指出地址中哪些部分是網絡地址,哪些是主機地址。在子網掩碼中,二進制1表示網絡地址位,二進制0表示主機地址位。傳統的各類地址的子網掩碼為:

  A類:255.0.0.0

  B類:255.255.0.0

  C類:255.255.255.0

  如果想把一個B類網絡的地址用作C類大小的地址,可以使用掩碼255.255.255.0。

  用較長的子網掩碼把一個網絡分成多個網絡就叫做劃分子網。要注意的是,一些舊軟件不支持子網,因為它們不理解子網掩碼。例如UNIX的routed路由守護進程通常

copyright © 萬盛學電腦網 all rights reserved