計算機網絡-轉發分組,划分子網和構建超網


IP層轉發分組的流程

  1. image

  2. 上圖是一個路由器怎么進行分組轉發的例子:有四個A類網絡通過三個路由器連接在一起,每一個網絡上都可能會有成千上萬台主機。若路由表指出每一台主機該進行怎樣的轉發。則要維護的路由表是非常的龐大。如果路由表指定到某一個網絡如何轉發,則路由表中只有4行,每一行對應一個網絡。以路由器2的路由表為例:由於R2同時連接在網絡2和網絡3上,因此只要目標主機在網絡2或者網絡3上,都可以通過接口0或者1或者路由器R2直接交付(當然還有使用ARP協議找到這些主機相應的MAC地址)。若目標主機在網絡1中,則下一跳路由器為R1,其IP地址為20.0.0.7。路由器R2和R1由於同時連接在網絡2上,因此從路由器2把轉發分組給R1是很容易的。我們應當注意到:每一個路由器至少都要擁有兩個不同的IP地址。總之,在路由表中,對每一條路由最主要的是以下兩條信息:(目的網絡,下一跳地址)我們根據目的網絡地址來確定下一跳路由器,這樣可以得到以下結論:

    • IP數據包最終一定可以找到目的主機所在目的網絡上的路由器(可能會經過多次間接交付)。
    • 只有到達最后一個路由器時,才試圖向目的主機進行間接交付。
  3. 雖然互聯網上所有的分組轉發都是經過基於目的主機所在的網絡,但是在大多數情況下都允許這樣的實例:對特定的主機指明一個路由,這種路路由叫特定路由。采用特定路由可以使網絡人員方便管理控制網絡和測試網絡

  4. 路由器還可以采用默認路由以減少路由表所占用的空間和搜索路由表所使用的時間。

  5. 當路由器接收到一個待轉發的數據報,在從路由表中得出下一跳路由器的IP地址后,不是把這個地址寫入IP數據報,而是送交數據鏈路層的網絡接口軟件,網絡接口軟件復雜把下一跳的路由器IP地址轉化為硬件地址(必須使用ARP),將硬件地址寫入MAC幀的首部,然后根據這個硬件地址找到下一跳路由器。

  6. 根據以上幾點,我們提出分組轉發算法:

    1. 從數據報的首部提取目的主機IP地址D,得出目的網絡N。
    2. 若N就是與此路由器直接相連的某個網絡地址,則進行直接交付,不需要再經過其他的路由器。直接把數據報交付給目的主機(這里包括把目的主機D轉化為MAC地址,把數據報封裝成MAC幀,再發送該幀);否則就是間接交付,執行3。
    3. 若路由表有目的主機的特定主機路由,則把數據報傳給路由表中所指明的下一跳路由器。否則進行4。
    4. 若路由表中有到達網絡N的路由,則把數據報傳給路由表中所指明的下一跳路由地址;否則,執行5。
    5. 若路由表中有一個默認路由,則把數據報傳遞給路由表中所指明的默認路由。否則,執行6。
    6. 報告轉發分組出錯。

划分子網

  1. 為什么划分子網?

    1. IP地址空間利用率很低:每一個A類地址可連接的主機數超過1000萬,每一個B類地址可連接的主機數也超過6萬個。

    2. 給每一個物理網絡分配的網絡號會使得路由表變得太大導致網絡性能變差。

    3. 兩級IP地址不夠靈活

    4. 未解決上述問題,從1985年引出子網絡號字段,使得兩級IP地址變為三級IP地址,這種做法叫做划分子網【RFC950】

    5. 划分子網的基本思路:

      1. 一個擁有許多物理網絡的單位,可將所屬的物理網絡划分為若干字子網。划分子網屬於單位內部的事情。本單位以外的網絡看不見這個網絡是由多少個子網組成,因此這個單位對外仍然表現一個網絡。
      2. 划分子網的方法是從網絡的主機號借用若干位當做子網絡號,當然主機號也就減少了同樣的位數,於是二級IP地址就變成了三級IP地址:網絡號,子網絡號,主機號。
      3. 凡是從其他網咯發送給本單位的某一台主機的IP數據報,仍然是根據IP數據報的目的網絡號找到連接在本單位的路由器,但是此路由器在收到IP數據報之后,再按照網絡號和子網絡號找到目的子網,把IP數據報交付給目標主機。
    6. 划分子網的用例

      1.image

      1. 如圖為某單位擁有一個B類IP地址,網絡地址為145.13.0.0(網絡號為145.13),凡是目的網絡為145.13.x.x的數據報都會送到這個網絡上路由器R1上。
      2. 現在把該網絡划分為三個字網,這里假設子網絡號占用8位,因此主機號就只剩下16-8=8位了,所划分的三個字網為145.13.3.0,145.13.7.0,145.3.21.0。路由器在接受到145.13.0.0上的路由器數據后,再根據數據報的目的地址把它轉化到相應的子網。
    7. 子網掩碼的提出

      1. 假定有一個IP數據報(其目的地址為145.13.3.10)已經到達了路由器R1,那么這個路由器如何把它轉發倒子網145.13.3.0呢?

      2. image

      3. 把三級IP地址的子網掩碼和收到的目的地址的IP地址逐位進行與(AND)運算,就可以立即得到網絡地址,剩下的步驟就交給路由器處理分組。

      4. 常見的子網掩碼

        1. image
        2. 例:
          1. 一直IP地址是141.14.72.24,子網掩碼是255.255.192.0,求網絡地址:
          2. 255.255.192.0的二進制:11111111 11111111 11000000 00000000
          3. IP 141.14.72.24二進制: 11111111 11111111 01001000 00000000
          4. 互與為 : 11111111 11111111 11000000 00000000
          5. IP為: 141.14.64.0
      5. 使用子網是時分組轉發

        1. 在划分子網的情況下,分組轉發的算法必須作出改動。在使用子網划分后,路由表應該包含以下內容:

          • 目的網絡地址
          • 子網掩碼
          • 下一跳
        2. 在划分子網的情況下,路由器轉發分組的算法如下:

          1. 從收到的數據包的首部提取目的IP地址D。
          2. 先判斷是否為直接交付。對路由器直相連的網絡逐個進行排查:用各個網絡的子網掩碼和D逐位相與(AND),看結果是否和對用的網絡地址匹配上。若匹配,則把分組進行直接交付,轉發結束,否則就是間接交付,執行(3)。
          3. 若路由表有目的地址為D的特定主機路由,則把數據報傳給路由表中所指明的下一跳路由器;否則進行(4)。
          4. 對路由表中每一行(目的網絡地址,子網掩碼,下一跳地址),用其中的子網掩碼和D進行逐位相與(AND),其結果為N。若N與該行的目的網絡地址匹配,則把數據報傳給該行所指明的下一跳路由器;否則,執行(5)。
          5. 如果有表中有一個默認路由,傳送給路由表中所指明的默認路由;否則執行(6)。
          6. 報告轉發分組錯誤。
        3. 例如:

          1. 如圖有三個字網,兩個路由器,以及路由器R1的部分路由表。現在源主機H1向目的主機H2發送分組。試討論R1收到H1向H2發送的分組后查路由表的過程。

          2. image

          3. 解:

            1. 源主機H1向目標主機H2發送的分組的目的地址為128.30.33.138。
              1. 源主機H1的本子網的子網掩碼255.255.255.128與H2的IP地址128.30.33.128相與得到128.30.33.128,他不等於H1的網絡地址(128.30.33.0)。這說明主機H2與主機H1不在同一個網段上,因此H1不能把數據包直接交付給H2。必須交給子網上的默認路由R1,由R1轉發。
              2. 路由表在接受到這個分組之后,就在其路由表中逐行匹配尋找。
                • 首先看R1路由表的第一行:用這一行的子網掩碼255.255.255.128與H2IP地址進行互與,得到128.30.33.128,然后和這一行的給出的目的地址128.30.33.0進行比較,但是不匹配。
                • 用樣的方法進行第二行,結果發現相與出來的結果和目的網絡地址匹配,則說明這個網絡(子網2)就是收到的分組所要尋找的目的網絡。於是就不用繼續找了。R1把分組從接口1直接交付給主機H2(他們都在一個子網上)。

無分類編址CIDR(構造超網)

  1. 在一個划分子網的網絡中可使用幾個不同的子網掩碼。使用變長子網掩碼VLSM可進一步提高IP地址資源的利用率。在VLSM的基礎上又進一步研究出無分類編制方法。它的全名是無分類域間路由選擇CIDR。
  2. CIDR最主要的特點有兩個:
    1. CIDR消除了傳統的A類地址,B類地址,C類地址和划分子網的概念。因此能更加有效的分配IPV4的地址空間。
    2. CIDR把32位IP地址划分為前后兩部分,前面部分是網絡前綴,后面部分是主機,CIDR還使用斜線記法,就是在IP地址后面加上斜線/,然后寫上網絡前綴所占的位數。例如IP地址為128.14.35.7/20是某CIDR地址快中的一個地址,其中的前20就是網絡前綴二前綴后面的14位是主機位。如圖所示:
    3. image
    4. image
    5. 當然以上地址的主機號全為0和全為1的地址,一般並不使用,這個地址塊共有2^12個地址,我們可以使用地址塊中最小的地址和網絡前綴來指明這個地址快。例如,上述的地址塊可以用來表示128.14.32.0/20。
  3. 為了更方便的進行路由選擇,CIDR使用了32位的地址掩碼。地址掩碼是由一串1和一串0組成,而1的個數就是網絡前綴的個數。雖然CIDR不使用子網了,但是出於某些原因,CIDR使用的地址掩碼也可以繼續稱為子網掩碼,斜線記法中,斜線后面的數字就是1的個數
  4. 由於CIDR地址塊中有很多地址,所以在路由表中就利用CIDR地址塊來查找目的網絡,這種地址的聚合稱之為路由聚合。它使得路由表中的一個項目可以表示傳統分類的的很多個路由,路由聚合也稱作構建超網路由聚合有利於較少路由器之間的路由選擇信息的交換,從而提高了整個互聯網的性能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM