1. 程式人生 > >資料包從源主機到達目的主機的過程-----------跨路由的資料傳輸(主要)

資料包從源主機到達目的主機的過程-----------跨路由的資料傳輸(主要)


    最近把跨路由的資料傳輸過程搞的差不多了,所以特意寫下這篇文章,僅為以後回憶之用。~        為了便於理解,先從同一廣播域內兩臺主機通訊開始敘述吧。只要能理解這些,那也就差不多可以理解跨路由傳輸過程了(兩者不同之處在於源和目標MAC地址的轉換)。
     情景一:同一廣播域內,兩臺主機通訊過程。       我們知道兩主機要通訊傳送資料時,就要把應用資料封裝成IP包(因為我們的網路大多都是TCP/IP的乙太網了),然後再交給下一層資料鏈路層繼續封裝成幀;之後根據MAC地址才能把資料從一臺主機,準確無誤的傳送到另一臺主機。     如圖:當NO要和N1通訊時,假如N0知道N1的IP但卻不知道它的MAC地址,那NO就會發送一個ARP的廣播請求(裡面源IP是NO 目標IP是N1  源MAC是N0  目標MAC是12個F)給同一廣播域中的所有成員,當交換機SW0從自己的1介面上收到這個廣播包,然後它會讀取這個幀的源MAC地址和目標MAC地址,由於交換機SW0剛啟動加電時,它的MAC表為空的。所以它會把NO的MAC地址與之相對應的介面1放到一張表裡,這張表就是MAC地址表。然後他再從別的介面廣播這個資料幀,當別的主機收到這個廣播時,檢視目標IP不是自己的,就會丟棄此包。如果N1接收到這個資料幀,它檢查目標IP和這個的IP是一樣的,就會迴應這個ARP請求,把自己的IP和MAC封裝成源IP和源MAC,N0的IP和N0的MAC地址為目標IP與目標MAC,並記錄NO的MAC與IP,放進自己的ARP快取表中。此時,這個應答包經過交換機SWO時,它又會檢查源MAC 、 目標MAC,把N1的MAC和自己介面2放進MAC地址表中,再檢視自己的MAC地址表,發現存在目標MAC與自己的1介面對應(由於剛開始有記錄過N0的MAC),那它就會直接把這個應答包從介面1送出去了。主機N0收到這個包後發現目標MAC是自己,就會處理這個包。並把N1的MAC與IP放進自己的ARP快取表中。這時主機N0就知道N1的MAC地址了,以後要傳送資料,就直接把N1的IP與MAC封裝進幀中進行點對點的傳送了。
      情景二:跨路由的資料傳輸過程。       當NO要和N2通訊時,此時NO會檢查N2的IP地址跟自己是否處在同一網段,圖上得知,兩主機肯定不會是同一網段的。因為N2和自己處在不同網段,所以,N0會把資料包發給它的閘道器,也就是R0上的F0/0介面了。源IP和源MAC地址是N0自己的,目標IP是N2的,目標MAC是R0上介面F0/0的(如果N0不知道F0/0的MAC,就會跟情景一相似,發個ARP廣播來得到F0/0的MAC地址)。
當這個資料包到達R0時,路由器R0會檢視目標IP的是否是自己,由於目標不是自己,所以,會檢視自己的路由表,找出到達N2網段的路由;如果沒有相關條目,就直接丟棄。當檢視路由表後發現到達N2網段的出介面是F0/1。於是,把資料包轉到F0/1介面上,再由介面F0/1傳給R1。這個過程,資料包的源IP是N0 源MAC是F0/1 目標IP是N2 目標MAC是R1的F0/1介面IP 。
      當R1收到這個資料包後,同樣也要檢查包的目標IP是否是自己,它會主動查詢自己的路由表,發現目標IP跟自己F0/0介面處在同一網段,於是就把包傳到F0/0介面上去發給N2 (假如R1上的ARP快取表中沒有N2的MAC,則介面F0/0會發送一個ARP廣播給跟它相連的廣播域中;這個ARP廣播包的源IP是介面F0/0的IP 源MAC也是F0/0的MAC  目標IP是N2 目標MAC為12個F),假如N2的MAC地址已經在R1的ARP快取中了,那就會直接把資料包封裝成:源IP為N0 源MAC為R1的F0/0 目標IP為N2 目標MAC為N2了。        哈哈~!到了這裡,包的跨路由傳輸就會結束了,當包到達N2,做反向操作即可把包發給N0了。    總結:同一廣播域中,包的源、目標IP;源、目標MAC是真實的兩臺主機上的IP與MAC地址。 跨路由中,包的源IP與目標IP始終不會發生變化,源和目標MAC根據所經過的路由介面不同而發生相應變化。


    最近把跨路由的資料傳輸過程搞的差不多了,所以特意寫下這篇文章,僅為以後回憶之用。~        為了便於理解,先從同一廣播域內兩臺主機通訊開始敘述吧。只要能理解這些,那也就差不多可以理解跨路由傳輸過程了(兩者不同之處在於源和目標MAC地址的轉換)。      情景一:同一廣播域內,兩臺主機通訊過程。       我們知道兩主機要通訊傳送資料時,就要把應用資料封裝成IP包(因為我們的網路大多都是TCP/IP的乙太網了),然後再交給下一層資料鏈路層繼續封裝成幀;之後根據MAC地址才能把資料從一臺主機,準確無誤的傳送到另一臺主機。     如圖:當NO要和N1通訊時,假如N0知道N1的IP但卻不知道它的MAC地址,那NO就會發送一個ARP的廣播請求(裡面源IP是NO 目標IP是N1  源MAC是N0  目標MAC是12個F)給同一廣播域中的所有成員,當交換機SW0從自己的1介面上收到這個廣播包,然後它會讀取這個幀的源MAC地址和目標MAC地址,由於交換機SW0剛啟動加電時,它的MAC表為空的。所以它會把NO的MAC地址與之相對應的介面1放到一張表裡,這張表就是MAC地址表。然後他再從別的介面廣播這個資料幀,當別的主機收到這個廣播時,檢視目標IP不是自己的,就會丟棄此包。如果N1接收到這個資料幀,它檢查目標IP和這個的IP是一樣的,就會迴應這個ARP請求,把自己的IP和MAC封裝成源IP和源MAC,N0的IP和N0的MAC地址為目標IP與目標MAC,並記錄NO的MAC與IP,放進自己的ARP快取表中。此時,這個應答包經過交換機SWO時,它又會檢查源MAC 、 目標MAC,把N1的MAC和自己介面2放進MAC地址表中,再檢視自己的MAC地址表,發現存在目標MAC與自己的1介面對應(由於剛開始有記錄過N0的MAC),那它就會直接把這個應答包從介面1送出去了。主機N0收到這個包後發現目標MAC是自己,就會處理這個包。並把N1的MAC與IP放進自己的ARP快取表中。這時主機N0就知道N1的MAC地址了,以後要傳送資料,就直接把N1的IP與MAC封裝進幀中進行點對點的傳送了。       情景二:跨路由的資料傳輸過程。       當NO要和N2通訊時,此時NO會檢查N2的IP地址跟自己是否處在同一網段,圖上得知,兩主機肯定不會是同一網段的。因為N2和自己處在不同網段,所以,N0會把資料包發給它的閘道器,也就是R0上的F0/0介面了。源IP和源MAC地址是N0自己的,目標IP是N2的,目標MAC是R0上介面F0/0的(如果N0不知道F0/0的MAC,就會跟情景一相似,發個ARP廣播來得到F0/0的MAC地址)。當這個資料包到達R0時,路由器R0會檢視目標IP的是否是自己,由於目標不是自己,所以,會檢視自己的路由表,找出到達N2網段的路由;如果沒有相關條目,就直接丟棄。當檢視路由表後發現到達N2網段的出介面是F0/1。於是,把資料包轉到F0/1介面上,再由介面F0/1傳給R1。這個過程,資料包的源IP是N0 源MAC是F0/1 目標IP是N2 目標MAC是R1的F0/1介面IP 。       當R1收到這個資料包後,同樣也要檢查包的目標IP是否是自己,它會主動查詢自己的路由表,發現目標IP跟自己F0/0介面處在同一網段,於是就把包傳到F0/0介面上去發給N2 (假如R1上的ARP快取表中沒有N2的MAC,則介面F0/0會發送一個ARP廣播給跟它相連的廣播域中;這個ARP廣播包的源IP是介面F0/0的IP 源MAC也是F0/0的MAC  目標IP是N2 目標MAC為12個F),假如N2的MAC地址已經在R1的ARP快取中了,那就會直接把資料包封裝成:源IP為N0 源MAC為R1的F0/0 目標IP為N2 目標MAC為N2了。        哈哈~!到了這裡,包的跨路由傳輸就會結束了,當包到達N2,做反向操作即可把包發給N0了。    總結:同一廣播域中,包的源、目標IP;源、目標MAC是真實的兩臺主機上的IP與MAC地址。 跨路由中,包的源IP與目標IP始終不會發生變化,源和目標MAC根據所經過的路由介面不同而發生相應變化。