《計算機網絡自頂向下方法》學習筆記——3、網絡層

     

目錄

1、IP

2、因特網控制報文協議(ICMP)

3、路由選擇算法


        英特網的網絡層有三個主要組件。第一個是IP協議,第二個是路由選擇部分,它決定數據報從源到目的地所流經的路徑。最後一個是報告數據報中差錯和對某些網絡層信息請求進行響應的設施,即英特網控制報文協議(ICMP)。

1、IP

(1)Ipv4數據報格式:

 

版本:

       這個4位字段定義了IP協議的版本,目前主流的版本是4。

 

首部長度:

       這個4位字段定義了數據報首部的長度,以4字節的字爲單位。當首部沒有選項時,首部長度位20字節;當這個字段值位最大值F時,首部長度最大爲60字節。

 

服務類型:

       使不同類型的IP數據報能相互區別開來,如低延時,高吞吐量等等。

 

總長度:

       這個16位字段定義了數據報總長度,其以字節爲單位。故IPv4數據報總長度上限值位65536字節。

 

標識(identification):

       這個16位字段標誌了從源主機發出的一個數據報,這樣就確定了數據報的唯一性。這樣使得數據報被分片(數據報比鏈路層幀大的時候就會執行分片)後,在到達終點時終點能根據標識號將同一個數據報的分片重新組裝成一個數據報。

 

標誌(flag):

       最後一個片爲0,其餘爲1。這可以讓目的主機確信它已收到了最後一個片

 

分片偏移:

       這個13位字段表示的是分片在整個數據報中的相對位置。這是數據在原始數據報中的偏移量,以8字節位單位。

       注:分片本身還可能進行分片,這種情況下,分片偏移值永遠是相對於原始數據報的。

 

生存時間:

       這個8位字段用來控制數據報所經過的最大跳數(路由器),每經過一個路由器,這個字段數值都減1,減1後變位0時,路由器就丟棄這個數據報。

 

協議:

       這個8位字段定義了使用IPv4服務的高層協議,如TCP,UDP,ICMP,IGMP,OSPF等的數據都將被封裝到IP數據報中。這個字段指明數據報必須交付給哪個最終目的協議。

 

檢驗和:

       檢驗IP數據報首部。

 

(2)DHCP

       因特網的地址分配策略被稱爲無類別域間路由選擇(Classless Interdomain Routing,CIDR)。如一個子網地址爲223.1.1.0/24,其中/24記法稱爲子網掩碼。子網最主要的作用即是隔離。

       那麼如何獲得一個IP呢?通常使用的是動態主機配置協議(Dynamic Host Configuration,DHCP),它允許主機自動獲取一個IP地址。大致的方法就是當主機加入時,DHCP服務器從其當前可用的地址池中分配一個任意的地址給它;當一臺主機離開時,其地址被收回這個池中。具體步驟如下:

  • DHCP服務器發現。新主機廣播發送一個DHCP發送報文。
  • DHCP服務提供。DHCP服務器廣播發送一個DHCP提供報文,包含發現報文的事務ID,向客戶推薦的IP地址,網絡掩碼以及IP地址租用期。
  • DHCP請求。新主機向選中的服務器提供用一個DHCP請求報文響應。
  • DHCP ACK。服務器用DHCP ACK報文響應。

 

(3)網絡地址轉換NAT(Network Address Translation)

       NAT路由器對外界的行爲就如同一個具有單一IP地址的單一設備,所有離開家庭路由器和進入家庭的報文都有一個IP地址。那麼,如果從廣域網到NAT路由器的所有數據報都有相同的目的IP地址,那麼該路由器如何知道它應該將某個分組轉發給哪個內部主機呢?使用一張NAT轉換表,即將LAN端IP和端口號映射爲一個WAN端的一個端口號。

       但是NAT存在一個問題,就是NAT轉換表只能記錄從內網向外網發送數據報的IP和端口號,這就導致只能由內向外請求連接,而無法從外部向內請求連接,故妨礙了P2P程序。目前許多P2P程序利用連接反轉來實現NAT穿越,就是有一個服務器A,對等方B,C,D,其中A和B,C,D都連接,而B,C進行P2P連接,這時D可以通過A建立與B的一條TCP連接。

       目前還有一種UPnP協議越來越多地用於NAT穿越,使用UPnP,在主機上運行的應用程序能夠爲某些請求的公共端口號請求一個NAT映射,該映射位於其(專用IP地址:專用端口號)和(公共IP地址:公共端口號)之間。

 

2、因特網控制報文協議(ICMP)

       ICMP被主機和路由器用來彼此溝通網絡層的信息。ICMP報文有一個類型字段和一個編碼字段。衆所周知的ping程序就是發送一個ICMP類型8編碼0的報文到指定主機。

 

3、路由選擇算法

(1)鏈路狀態(Link State,LS)路由選擇算法

       使用的Dijkstra算法,步驟如下:

  • 當前結點到相鄰結點的費用 + 到當前節點的費用
  • 比較最小路徑表中到這些結點的費用與新算出來的費用,若更小,更新之
  • 找表中費用最小的且不在結點子集中的結點,加入結點子集,並更新爲當前結點。
  • 找完了則結束,沒找完就循環①。

       在所有迭代中需要搜尋的結點總數爲n(n + 1)/2,複雜度爲O(N^2)。

 

(2)距離向量(Distance-Vector,DV)算法

       每個結點x維護下列路由選擇信息:

  1. 對於每個鄰居v,從x到直接相連鄰居v的費用c(x,v)
  2. 結點x的距離向量,包含x到N中所有目的地y的費用估計值
  3. 它的每個鄰居的距離向量

       在該算法中,每個結點不時地向它的每個鄰居發送它的距離向量副本。當結點x從它的任何一個鄰居v接收到一個新距離向量,它保存v的距離向量,然後使用Bellman-Ford方程更新它自己的距離向量:

       D_x(y)=min_v{c(x,v) + D_v(y)} 對N中的每個結點v。其中D_x(y)指x到y的費用。

       這種算法存在一個問題,即當某個鏈路的費用變得很大時,表單會循環更新很多很多次。解決辦法就是增加毒性逆轉:如果z通過y路由選擇到目的地x,則z將通告y,它(z)到x的距離時無窮大的。

 

(3)因特網中的路由選擇

       整個網絡的路由太多,路由選擇算法很難收斂,故引入了自治系統(Autonomous System,AS)和自治系統內部路由選擇協議。

  • 自治系統內部的路由選擇:RIP(路由選擇信息協議,Routing Information Protocol)

       RIP是一種距離向量算法,使用跳數作爲其費用測度,即每條鏈路費用爲1,一條路徑的最大費用限制爲15,鄰居每30s交換一次信息,180s沒有交換即認爲該鄰居不可達。

 

  • 自治系統內部的路由選擇:OSPF(開放最短路優先,Open Shortest Path First)

       OSPF核心就是一個使用洪泛鏈路狀態信息的鏈路狀態協議和一個Dijkstra最低費用路徑算法。

 

  • 自治系統間的路由選擇:BGP(邊界網關協議,Broder Gateway Protocol)

       主要工作:

  1. 從相鄰AS處獲得子網可達性信息
  2. 向本AS內部的所有路由器傳播這些可達性信息
  3. 基於可達性信息和AS策略,決定到達子網的好路由

 

(4)廣播和多播路由

       網絡層提供以下兩種服務:

       廣播路由選擇:從一個源結點到網絡中的所有其他結點交付分組。

       多播路由選擇:從單個源結點向其他網絡結點的一個子集發送分組的副本。

 

參考文章:《計算機網絡自頂向下方法》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章