1. 程式人生 > >TCP/IP詳解學習筆記(5)-IP選路,動態選路,和一些細節

TCP/IP詳解學習筆記(5)-IP選路,動態選路,和一些細節

1.靜態IP選路

1.1.一個簡單的路由表

選路是IP層最重要的一個功能之一。前面的部分已經簡單的講過路由器是通過何種規則來根據IP資料包的IP地址來選擇路由。這裡就不重複了。首先來看看一個簡單的系統路由表。

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.11.0    *               255.255.255.0   U     0      0        0 eth0
169.254.0.0     *               255.255.0.0     U     0      0        0 eth0
default         192.168.11.1    0.0.0.0         UG    0      0        0 eth0

對於一個給定的路由器,可以打印出五種不同的flag。

  1. U表明該路由可用。
  2. G表明該路由是到一個閘道器。如果沒有這個標誌,說明和Destination是直連的,而相應的Gateway應該直接給出Destination的地址。
  3. H表明該路由是到一個主機,如果沒有該標誌,說明Destination是一個網路,換句話說Destination就應該寫成一個網路號和子網號的組合,而不包括主機號(主機號碼處為0),例如 192.168.11.0
  4. D表明該路由是為重定向報文建立的
  5. M該路由已經被重定向報文修改

U沒啥可說的,G說明這是一個閘道器,如果你要發資料給Destination,IP頭應該寫Destination的IP地址,而資料鏈路層的MAC地址就應該是GateWay的Mac地址了;反之,如果沒有G標誌,那麼資料鏈路層和IP層的地址應該是對應的。H說明了Destination的性質,如果是H的,則說明該地址是一個完整的地址,既有網路號又有主機號,那麼再匹配的時候就既要匹配網路號,又要匹配主機號;反之,Destination就代表一個網路,在匹配的時候只要匹配一下網路號就可以了。

這樣,IP選路的方式就可以更加具體化了。如下

  1. 首先用IP地址來匹配那些帶H標誌的DestinationIP地址。
  2. 如果1失敗就匹配那些網路地址。
  3. 如果2失敗就傳送到Default閘道器

順便提一下那個GenMask(還記得子網掩碼麼),它指定了目的地址的子網號,例如第一條的子網就是11。

1.2.其他有關路由表的知識

一般,我們在配置好一個網路介面的時候,一個路由就被直接建立好了。當然我們也可以手動新增路由。用route add命令就可以了。

而當一個IP包在某一個路由器的時候發現沒有路由可走,那麼該路由器就會給源主機發送“主機不可達”或者“網路不可達”的ICMP包來報錯。

注意,一般的作業系統預設是沒有路由功能的,這需要自己配置。這些歷史原因就不細說了,

1.3.ICMP的IP重定向報文和路由發現報文

當IP包在某一個地方轉向的時候,都回給傳送IP報的源主機一個ICMP重定向報文,而源主機就可以利用這個資訊來更新自己的路由表,這樣,隨著網路通訊的逐漸增多,路由表也就越來越完備,資料轉發的速度也會越來越快。我們需要注意的是:

  1. 重定向報文只能由路由器發出。
  2. 重定向報文為主機所用,而不是為路由器所用。

在主機引導的時候,一般會發送在網內廣播一個路由請求的ICMP報文,而多個路由器則會迴應一個路由通告報文。而且,路由其本身不定期的在網路內釋出路由通告報文,這樣,根據這些報文,每一個主機都會有機會建立自己的路由表而實現網路通訊。路由器在一份通告報文中可以通告多個地址,並且給出每一個地址的優先等級,這個優先等級是該IP作為預設路由的等級,至於怎麼算的就不深究了。

路由器一般會在450-600秒的時間間隔內釋出一次通告,而一個給定的通告報文的壽命是30分鐘。而主機在引導的時候會每三秒傳送一次請求報文,一旦接受到一個有效的通告報文,就停止傳送請求報文。

在TCP/IP詳解編寫的時候,只有Solaris2.x支援這兩種報文,大多數系統還不支援這兩種報文。(後面還會講到一些有用的路由報文)

動態選路協議

前面的選路方法叫做靜態選路,簡要地說就是在配置介面的時候,以預設的方式生成路由表項。並通過route來增加表項,或者通過ICMP報文來更新表項(通常在預設方式出錯的情況下)。 而如果上訴三種方法都不能滿足,那麼我們就使用動態選路。

動態選路協議是用於動態選路的重要組成部分,但是他們只是使用在路由器之間,相鄰路由器之間互相通訊。系統(路有選擇程式)選擇比較合適的路有放到核心路由表中,然後系統就可以根據這個核心路有表找到最合適的網路。也就是說,動態選路是在系統核心網路外部進行的,它只是用一些選路的策略影響路由表,而不會影響到最後通過路由表選擇路由的那一部分。選路協議有一大類常用的叫做內部閘道器協議(IGP),而在IGP中,RIP就是其中最重要的協議。一種新的IGP協議叫做開放最短路經優先(OSPF)協議,其意在取代RIP。另一種最早用在網路骨幹網上的IGP協議--HELLO,現在已經不用了。

如今,任何支援動態選路的路由器都必須同時支援OSPF和RIP,還可以選擇性的支援其他的IGP協議。

2.1.Unix選路程式

Unix系統上面通常都有路由守護程式--routed。還有一個叫做gate。gate所支援的協議要比routed多,routed只是支援RIPv1版本。而gate則支援RIPv1、v2,BGPv1 等等。

2.1.RIP:選路資訊協議

它的定義可以在RFC1058內找到,這種協議使用UDP作為載體(也就是UDP的上層協議)。我們最關心的就是RIP其中的一個段,叫做度量的段,這是一個以hop作為計數器(就是以走過多少路由為計數器)的段(IP協議裡面也有一個TTL不是麼)。這個度量段將最終影響到路由表的建立。參考圖:

一般說來routed要承擔如下的工作:

  1. 給每一個已知的路由器傳送rip請求報文,要求其他路由器給出完整的路由表。這種報文的命令欄位為1,地址欄位為0,度量地段為16(相當於無窮大)。
  2. 接受請求,如果接收到剛才的那個請求,就把自己的完整的路由表交給請求者。如果沒有,就處理IP請求表項,把表項中自己有的部分添上跳數,沒有的部分添上16。然後發給請求者。
  3. 接受迴應。更新自己的路由表。使用hop數小的規則。
  4. 定期更新路由表,一般是30s(真頻繁)給相鄰的路有啟發一次自己的路由表。這種形式可以使廣播形式的。

這個協議看起來會工作的很好,但是,這裡面其實有很多隱藏的憂患,比如說RIP沒有子網的概念,比如說環路的危險。而且hop數的上限也限制了網路的大小。

因此,出現了很多RIPv1的替代品,比如說RIPv2,比如說OSPF。他們都是通過某種策略來影響路由表,所以就不說了。

相關推薦

TCP/IP學習筆記(5)-IP動態一些細節

1.靜態IP選路 1.1.一個簡單的路由表 選路是IP層最重要的一個功能之一。前面的部分已經簡單的講過路由器是通過何種規則來根據IP資料包的IP地址來選擇路由。這裡就不重複了。首先來看看一個簡單的系統路由表。 Destination     Gateway        

TCP/IP學習筆記5)-- ICMP:internet 控制報文協議

1.概述      ICMP是(Internet Control Message Protocol)Internet控制報文協議。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制訊息。控制訊息是指網路通不通、主機是否可達、路由是否可用等網路本身的訊息。這些控制訊息雖然並不傳輸使用者資料

TCP/IP學習筆記(3)IP協議ARP協議和RARP協議

out 處理機 傳輸 包含 發送 res 這也 進行 默認 把這三個協議放到一起學習是因為這三個協議處於同一層,ARP協議用來找到目標主機的Ethernet網卡Mac地址,IP則承載要發送的消息。數據鏈路層可以從ARP得到數據的傳送信息,而從IP得到要傳輸的數據信息。   

TCP/IP學習筆記(8)-DNS域名系統

dns 支持 設置 類型 hosts name 安裝 報文 定義 前面已經提到了訪問一臺機器要靠IP地址和MAC地址,其中,MAC地址可以通過ARP協議得到,所以這對用戶是透明的,但是IP地址就不行,無論如何用戶都需要用一個指定的IP來訪問一臺計算機,而IP地址又非常不好記

TCP/IP學習筆記(1)-基本概念【轉】

網絡號 最大的 net 容易 學習 ip地址 其他 title 編寫 轉自:http://blog.csdn.net/goodboy1881/article/details/665041 為什麽會有TCP/IP協議 在世界上各地,各種各樣的電腦運行著各自不同的操作系統為大家

基礎才是王道——TCP/IP學習筆記 這位仁兄寫得太好了

TCP/IP詳解學習筆記   這位仁兄寫得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP詳解學習筆記(13)-TCP堅持定時器,TCP保活定時器 TCP/IP詳解學習筆記(12)-TCP的超時

TCP/IP學習筆記(13)-- TCP連線的建立與終止

1.TCP連線的建立            設主機B執行一個伺服器程序,它先發出一個被動開啟命令,告訴它的TCP要準備接收客戶程序的連續請求,然後服務程序就處於聽的狀態。不斷檢測是否有客戶程序發起連續請求,如有,作出響應。設客戶程序執行在主機A中,他先向自己的TCP發出主動開啟的命令,表明要向某個IP地址

TCP/IP學習筆記——資料鏈層(2)

五 Wireless LANs(Wi-Fi) 如今非常流行的一種接入網際網路的方式就是Wi-Fi了,我們用的ipad、手機、膝上型電腦等等都可以用這種方式接入網際網路,非常方便靈活。一個典型的Wi-Fi網路如下圖所示,一些基本概念大致瞭解。 1. 802.11標準幀格式

TCP/IP學習筆記——IP協議

一 概述 IP協議是TCP/IP協議簇中最核心的協議,所有的TCP、UDP、ICMP以及IGMP資料都以IP資料報格式傳輸。IP協議提供不可靠、無連線的資料傳輸服務。不可靠的意思是它不能保證IP資料報能成功到達目的地。IP僅僅提供最好的傳輸服務。意思就是,我盡我所能傳輸資料

TCP/IP學習筆記——地址解析協議ARP

一 概述 我們知道,IP協議是用來在不同的物理網路之間傳輸資料的。要在不同的網路之間傳輸資料,至少需要將IP協議所用的地址轉換成特定網路所使用的實體地址。一般來說,就是將IPv4地址轉換為mac地址。要想與一個特定的裝置進行資料交換,光知道它的IP地址是不夠的,還需要知道它

TCP/IP學習筆記(10)-TCP連線的建立與中止

TCP是一個面向連線的協議,所以在連線雙方傳送資料之前,都需要首先建立一條連線。這和前面講到的協議完全不同。前面講的所有協議都只是傳送資料而已,大多數都不關心傳送的資料是不是送到,UDP尤其明顯,從程式設計的角度來說,UDP程式設計也要簡單的多----UDP都不用考慮資料分片

TCP/IP學習筆記 這位仁兄寫得太好了.

TCP/IP詳解學習筆記(1)-基本概念 為什麼會有TCP/IP協議 在世界上各地,各種各樣的電腦執行著各自不同的作業系統為大家服務,這些電腦在表達同一種資訊的時候所使用的方法是千差萬別。就好像聖經中上帝打亂了各地人的口音,讓他們無法合作一

TCP/IP學習筆記(2)-資料鏈

資料鏈路層有三個目的: 為IP模組傳送和 接收IP資料報。 為ARP模組傳送ARP請求和接收ARP應答。 為RARP傳送RARP請 求和接收RARP應答 ip大家都聽說過。至於ARP和RARP,ARP叫做地址解析協議,是用IP地址換MAC地址的一種協議,而

TCP/IP學習筆記(1)-基本概念

為什麼會有TCP/IP協議 在世界上各地,各種各樣的電腦執行著各自不同的作業系統為大家服務,這些電腦在表達同一種資訊的時候所使用的方法是千差萬別。就好像聖經中上帝打亂了各地人的口音,讓他們無法合作一樣。計算機使用者意識到,計算機只是單兵作戰並不會發揮太大的作用。只有把它們聯合

TCP/IP學習---ARP & RARP

ARP(地址解析協議) 功能 提供IP地址到硬體地址之間的對映關係。 從物理層面來說,想讓任何一臺裝置接收發送給他的報文,最基本的前提是報文中封裝的目的地址(硬體實體地址,全世界唯一的)必須跟接收報文的介面地址相同,否則一律棄掉(廣播報文的全F地址除外);

TCP/IP學習筆記(5) --IP

靜態IP選路 一個簡單的路由表 選路是IP層最重要的一個功能之一。前面的部分已經簡單的講過路由器是通過何種規則來根據IP資料包的IP地址來選擇路由。這裡就不重複了。首先來看看一個簡單的系統路由表。 命令: route print | more  對於一個給定的路由

TCP/IP筆記——IP

本系列是針對《TCP/IP詳解》的筆記總結,包含各章節的主要內容。有助於幫助你快速瞭解並掌握TCP/IP協議的相關內容。 目錄  1、概述  2、選路原理  3、ICMP重定向差錯  4、ICMP發現報文 1、概述 IP層工作步驟

C++語法學習筆記

Charpter001 C++基本資料型別複習 :     變數     常量     常變數 const     字面值變數     符號常量 #define PI 3.14 符號常量是使用前處理器指令進行定義#define              前處理器:是編譯器把

孫鑫 VC++深入——學習筆記

第1課 Windows程式內部執行機制 1.MFC生成的C++原始檔中都有StdAfx.h,此檔案包含了常用的AFX函式的宣告,其中有afxwin.h,此檔案包含了CRECT,CPoi

第123講:Hadoop叢集管理之Namenode目錄元資料結構學習筆記

第123講:Hadoop叢集管理之Namenode目錄元資料結構詳解學習筆記 hadoop-2.x的叢集管理與hadoop-1.x有很大不同 hdfs-site.xml: dfs.replication dfs.namenode.name.dir  存放namenode元資