在本篇文章中,將通過例子來說明ip路由選擇過程。
如圖所示,主機a與主機b分別在兩個不同子網上,中間通過同乙個路由器連線。如果主機a請求與主機b進行通訊,主機a尋找主機b的位置的過程就可以理解為ip路由選擇的過程。
現在主機a的使用者通過ping命令確認與主機b的連通性。ping命令看似簡單,但是其中ip路由選擇的過程還是需要很多步驟。具體步驟如下:
當在主機a上輸入ping 10.142.148.10後,主機a的網際網路控制報文協議(icmp)建立乙個回應請求資料報,其資料域中只包含有字母。
icmp協議會將剛剛建立的回應請求資料報(有效負荷)轉交給網際網路協議(ip協議)。ip協議會對這個資料報進行封裝,建立乙個資料報。在ip協議建立的資料報中,包括主機a的ip位址,目的主機b的ip位址以及值為01h的協議字段。當資料報達到主機b時,主機b通過判斷協議欄位01h,將這個有效負荷交給icmp協議處理。
ip協議建立資料報後,會判斷目的主機b的ip位址是處於本地網路中還是處於遠端網路。根據ip位址規則,主機a、b屬於不同網路。此時ip協議所建立的資料報會被傳送到預設的閘道器。(在每個終端裝置中,網路配置中需要包含自身的ip位址,以及預設到的閘道器位址。在不同網路之間的主機互相通訊,依靠的就是閘道器裝置)
如圖中所示,預設的閘道器就是圖中的路由器。此時我們需要確認路由器的mac位址。假設路由器對應連線到主機a的路由器網路介面的ip位址為10.142.149.1,那麼主機a(10.142.149.6)的預設閘道器配置為10.142.149.1,。現在要將ip資料報傳送到對應的路由器網路介面10.142.149.1上,就必須知道這個介面的實體地址,也就是mac位址。只有知道mac位址,ip資料報才能夠從網路層傳遞到底層的資料鏈路層並根據鏈路層的規則生成幀。之後主機a才能把鏈路層中的包傳送到ip位址為10.142.149.1的路由器介面上。在本地區域網中,主機只可以通過硬體位址進行相互通訊。所以當主機a要把資料報傳送給對應的路由器介面時,必須提前知道這個路由器對應的mac位址。這時就需要用到arp協議,arp協議的具體講解後面會單獨寫一篇筆記進行分析。主機a會先檢查本地的arp快取,檢視乙個預設閘道器的ip位址是否有對應路由器介面的mac位址。如果arp快取表中有對應的記錄,表示ip位址已被成功解析。此時,ip層會將資料報傳遞到資料鏈路層並生成幀。其中目的主機b的mac位址也將和資料報一起傳遞到資料鏈路層。通常情況下,在主機a中,可以通過arp命令來檢視主機當前的ip位址與mac位址對應表。
生成資料幀。當ip資料報和目的主機b的mac位址傳遞給資料鏈路層後,區域網驅動器將用以提供**訪問服務,以通過乙太網進行資料傳輸。通過一些控制資訊封裝ip資料報,形成資料幀。資料幀中包含有目的主機b和源端主機a的mac位址,以及乙太網型別字段。乙太網型別字段主要用來描述交付這個資料報到資料鏈路層的網路層協議。資料幀結尾是一種被稱作為幀校驗序列的字段,它裝載迴圈冗餘校驗計算值的區域。總結一下,以這個例子來說,主機a的資料鏈路層中生成的資料幀包括目的位址mac位址(指的是對應路由器介面的mac位址)、主機a自身的mac位址、乙太網型別字段、資料報、幀校驗序列。注意:這個傳輸過程中,目的位址不是主機b的mac位址,而是與主機a對應的路由器介面的mac位址。最後資料幀到物理層以位(bit)的形式傳輸。
路由器介面接收這些位(bit)並且重新合併成資料幀。接收完畢後,會進行crc過程並核對儲存在幀校驗序列欄位中的內容。如果值互相不匹配,則資料幀將會被丟棄。如果兩個值相同,則路由器介面將會接收主機a傳輸過來的資料幀,並核查資料幀中的目的放的mac位址,是否與自身mac位址匹配。路由器還會檢視資料幀的乙太網型別字段,以了解在網路層採用的協議型別,然後路由器就會抽出資料幀中的資料報,丟棄其餘內容。抽取後的資料報傳送給乙太網型別欄位中列出的上層協議。在本例中為ip協議。
ip協議接收這個資料報後,檢查目的ip位址。在本例中,由於資料報中的目的位址與接收路由器所配置的任何位址都不相匹配,所以路由器會在自己的路由表中檢視目的ip網路的位址。本例中,由於路由器同時還連線著10.142.148.10,所以在這個路由器中的路由表中,有相關的記錄。若沒有相關記錄,則這個資料報會直接被丟棄。資料報被丟棄後,會向主機a傳送乙個「目標位址不可達」的錯誤資訊。
如果路由器在它的路由表中找到了對應的網路位址記錄,則資料報就會被**到路由器的輸出介面。在本例中,就是路由器用來與主機b連線的介面。路由器會將這個資料報交換到對應介面的緩衝區內。
接下來就是路由器介面緩衝區中資料報處理情況。這個介面緩衝區需要知道目的主機b位址的mac位址。因為現在資料報中包含了目的主機b的ip位址,所以路由器會根據這個ip位址檢查本地arp快取表,如果主機b的mac位址已經被解析並快取在路由器的arp緩衝中,則這個資料報和主機b的mac位址會被傳遞到資料鏈路層以便重新生成資料幀。在路由器以前跟主機b通訊過的情況下,主機b的ip與mac位址的對映記錄會在路由器中快取四個小時。超過四小時未再通訊的話,ip與mac位址的對映記錄將會被刪除。如果在路由器arp的緩衝表中沒有這個對映記錄,則路由器介面被在其連線的子網內部傳送乙個arp請求。arp請求是以廣播方式傳送的,子網內部所有的主機都會受到這個請求,發現這個請求的主體是10.142.148.10的mac位址。這時各個主機會檢查自己的ip位址,發現不匹配,就會拋棄這個arp請求包。而主機b檢查自己的ip位址,發現匹配成功,這時主機b就會進行響應,將自己的mac位址告訴路由器。因此路由器就能夠得知目的主機b的ip位址和mac位址,就會把資料報和目的主機b的mac位址傳遞到底層的資料鏈路層中。當然這時,路由器也會把主機b的ip位址和mac位址快取到自己的arp緩衝表中,以備下次使用。
路由器隨後會生成資料幀,傳送到物理層,以位的方式傳送到物理**上,在網路介質上進行傳輸。
主機b接收到資料幀後進行crc校驗過程。校驗結果與幀校驗序列中欄位內容相同的話,則資料幀中目的方的mac位址會被讀取,主機b會比對這個mac位址與自己的mac位址是否相同。如果相同,則會抽取其中的資料報,並根據乙太網字段型別中指定的協議,把資料報傳遞給相應的協議處理。在本例中,資料報中是乙個回應請求,所以主機b會把這個資料報最終交給icmp協議處理。icmp協議會應答這個請求,同時把這個資料報丟棄並迅速生成乙個新的有效負荷作為回應應答。然後主機b會利用同樣的過程把資料報以及目的mac位址傳遞到下一層,讓其生成資料幀,通過物理介質傳遞到對應的路由器介面上。
路由器會重複上面對應的步驟,把資料報轉交到另乙個介面上進行傳遞,隨後主機a就接收到乙個回應應答資訊,表示主機a到主機b的網路是通的。
以上就基本闡述了ip路由選擇的全部過程。在本篇筆記中,列舉的是乙個路由器節點的例子。像多路由器的**的情況也是同乙個道理,到達每個路由器時都會先搜尋路由表,以確定下一步資料傳輸到**或者是丟棄。大致步驟都是相同的,對於ip資料報,其在網路中的流向基本上是乙個套路:
主機a的傳輸層將資料交給網路層,網路層新增ip首部,如雙方ip位址,ttl等資訊,封裝稱為ip資料報,然後通過arp協議獲取目的mac位址後,將資料報交給資料鏈路層。
資料鏈路層根據ip、mac位址,將資料幀封裝為物理幀,通過物理**傳輸。
主機b接收物理幀,判斷mac位址。如果與自己mac位址匹配,就把資料幀交給網路層處理。
網路層判斷ip位址是否匹配,如果是發給自己的,則再移交上層協議處理;如果不是,則在路由表中查詢此ip位址的下一跳位址,並將資料通過記憶體從接受資料網絡卡的ip程式copy到傳送資料網絡卡的ip位址。在傳送介面中, 通過arp請求獲取下一跳的mac位址,ip程式將資料報和目的mac位址交給資料鏈路層,然後封裝為資料幀,通過物理**傳輸資料幀。
TCP IP詳解 卷1 IP路由選擇
如果目的主機與源主機是點對點,同乙個共享網路上 乙太網或令牌環網 那麼ip資料將會直接傳送到目的主機上。否則就發到預設路由上,由路由器來 ip從tcp udp,icmp,igmp或1個網路介面獲取資料報並進行傳送。ip層在記憶體中有一張路由表,當接收到資料報時會先搜尋路由表。看下資料報的首部目的ip...
IP路由選擇
從概念上說,ip路由選擇是簡單的,特別對於主機來說。如果目的主機與源主機直接相連 如點對點鏈路 或都在乙個共享網路上 乙太網或令牌環網 那麼ip資料報就直接送到目的主機上。否則,主機把資料報發往一預設的路由器上,由路由器來 該資料報。大多數的主機都是採用這種簡單機制。更一般的情況,即ip層既可以配置...
IP路由選擇
我們先上圖,然後再根據圖來說明ip路由的過程。從sbdi到192.48.96.9的過程 1 主機bsdi有乙份i p資料報要傳到192.48.96.9,經過的前三個路由器 sun netb gateway 再一次進入到internet。2 當資料報從bsdi被傳到sun主機上以後,當sun收到資料報...