IP 數據報的格式 算法
一個 IP 數據報由首部和數據兩部分組成。安全
首部的前一部分是固定長度共 20 字節是全部 IP 數據報必須具備的。網絡
在首部的固定部分的後面是一些可選字段其長度是可變的。 分佈式
IP 數據報首部的固定部分中的各字段 ide
版本——佔 4 位指 IP 協議的版本目前的 IP 協議版本號爲 4 (即 IPv4)測試
首部長度——佔 4 位可表示的最大數值是 15 個單位(一個單位爲 4 字節)所以 IP 的首部長度的最大值是 60 字節。spa
區分服務——佔 8 位用來得到更好的服務在舊標準中叫作服務類型但實際上一直未被使用過。1998年這個字段更名爲區分服務。只有在使用區分服務DiffServ時這個字段才起做用。在通常的狀況下都不使用這個字段 3d
總長度——佔 16 位指首部和數據之和的長度單位爲字節所以數據報的最大長度爲 65535 字節。總長度必須不超過最大傳送單元 MTU。 orm
標識(identification)——佔 16 位它是一個計數器用來產生數據報的標識。 blog
標誌(flag)——佔 3 位目前只有前兩位有意義。標誌字段的最低位是 MF (More Fragment)。MF = 1 表示後面「還有分片」。MF = 0 表示最後一個分片。標誌字段中間的一位是 DF (Don't Fragment) 。只有當 DF = 0 時才容許分片。
片偏移(13 位)指出較長的分組在分片後某片在原分組中的相對位置。片偏移以 8 個字節爲偏移單位。
生存時間(8 位)記爲 TTL (Time To Live)數據報在網絡中可經過的路由器數的最大值。
協議(8 位)字段指出此數據報攜帶的數據使用何種協議以便目的主機的 IP 層將數據部分上交給哪一個處理過程
首部檢驗和(16 位)字段只檢驗數據報的首部不檢驗數據部分。這裏不採用 CRC 檢驗碼而採用簡單的計算方法。
源地址和目的地址都各佔 4 字節
IP 數據報分片
IP 層轉發分組的流程
有四個 A 類網絡經過三個路由器鏈接在一塊兒。每個網絡上均可能有成千上萬個主機。
能夠想像若按目的主機號來製做路由表則所得出的路由表就會過於龐大。
但若按主機所在的網絡地址來製做路由表那麼每個路由器中的路由表就只包含 4 個項目。這樣就可以使路由表大大簡化。
查找路由表
根據目的網絡地址就能肯定下一跳路由器這樣作的結果是
IP 數據報最終必定能夠找到目的主機所在目的網絡上的路由器可能要經過屢次的間接交付。
只有到達最後一個路由器時才試圖向目的主機進行直接交付。
特定主機路由
這種路由是爲特定的目的主機指明一個路由。
採用特定主機路由可以使網絡管理人員能更方便地控制網絡和測試網絡同時也可在須要考慮某種安全問題時採用這種特定主機路由。
默認路由(default route)
路由器還可採用默認路由以減小路由表所佔用的空間和搜索路由表所用的時間。
這種轉發方式在一個網絡只有不多的對外鏈接時是頗有用的。
默認路由在主機發送 IP 數據報時每每更能顯示出它的好處。
若是一個主機鏈接在一個小網絡上而這個網絡只用一個路由器和因特網鏈接那麼在這種狀況下使用默認路由是很是合適的。
注意
IP 數據報的首部中沒有地方能夠用來指明「下一跳路由器的 IP 地址」。
當路由器收到待轉發的數據報不是將下一跳路由器的 IP 地址填入 IP 數據報而是送交下層的網絡接口軟件。
網絡接口軟件使用 ARP 負責將下一跳路由器的 IP 地址轉換成硬件地址並將此硬件地址放在鏈路層的 MAC 幀的首部而後根據這個硬件地址找到下一跳路由器。
分組轉發算法
(1) 從數據報的首部提取目的主機的 IP 地址 D, 得出目的網絡地址爲 N。
(2) 若網絡 N 與此路由器直接相連則把數據報直接交付目的主機 D不然是間接交付執行(3)。
(3) 若路由表中有目的地址爲 D 的特定主機路由則把數據報傳送給路由表中所指明的下一跳路由器不然執行(4)。
(4) 若路由表中有到達網絡 N 的路由則把數據報傳送給路由表指明的下一跳路由器不然執行(5)。
(5) 若路由表中有一個默認路由則把數據報傳送給路由表中所指明的默認路由器不然執行(6)。
(6) 報告轉發分組出錯。
路由選擇協議
因特網有兩大類路由選擇協議
內部網關協議 IGP (Interior Gateway Protocol) 即在一個自治系統內部使用的路由選擇協議。目前這類路由選擇協議使用得最多如 RIP 和 OSPF 協議。
外部網關協議EGP (External Gateway Protocol) 若源站和目的站處在不一樣的自治系統中當數據報傳到一個自治系統的邊界時就須要使用一種協議將路由選擇信息傳遞到另外一個自治系統中。這樣的協議就是外部網關協議 EGP。在外部網關協議中目前使用最多的是 BGP-4。
下面主要介紹內部網關協議 RIP (Routing Information Protocol)
工做原理
路由信息協議 RIP 是內部網關協議 IGP中最早獲得普遍使用的協議。
RIP 是一種分佈式的基於距離向量的路由選擇協議。
RIP 協議要求網絡中的每個路由器都要維護從它本身到其餘每個目的網絡的距離記錄。
「距離」的定義
從一路由器到直接鏈接的網絡的距離定義爲 1。
從一個路由器到非直接鏈接的網絡的距離定義爲所通過的路由器數加 1。
RIP 協議中的「距離」也稱爲「跳數」(hop count)由於每通過一個路由器跳數就加 1。
這裏的「距離」實際上指的是「最短距離」
RIP 認爲一個好的路由就是它經過的路由器的數目少即「距離短」。
RIP 容許一條路徑最多隻能包含 15 個路由器。
「距離」的最大值爲16 時即至關於不可達。可見 RIP 只適用於小型互聯網。
RIP 不能在兩個網絡之間同時使用多條路由。RIP 選擇一個具備最少路由器的路由即最短路由哪怕還存在另外一條高速(低時延)但路由器較多的路由。
RIP 協議的三個要點
僅和相鄰路由器交換信息。
交換的信息是當前本路由器所知道的所有信息即本身的路由表。
按固定的時間間隔交換路由信息例如每隔 30 秒。
路由表的創建
路由器在剛剛開始工做時只知道到直接鏈接的網絡的距離此距離定義爲1。
之後每個路由器也只和數目很是有限的相鄰路由器交換並更新路由信息。
通過若干次更新後全部的路由器最終都會知道到達本自治系統中任何一個網絡的最短距離和下一跳路由器的地址。
RIP 協議的收斂(convergence)過程較快即在自治系統中全部的結點都獲得正確的路由選擇信息的過程。
距離向量算法
示例
本文出自 「11408774」 博客,請務必保留此出處http://11418774.blog.51cto.com/11408774/1834234