天天看點

資料包的傳輸過程

網絡中資料傳輸過程的分析

我們每天都在使用網際網路,我們電腦上的資料是怎麼樣通過網際網路傳輸到到另外的一台電腦上的呢?把自己的了解寫一下,可能有很多細節還沒有能的很清楚!希望在以後可以使之更加的完善!有不對的地方還請指正.

     我們知道現在的網際網路中使用的TCP/IP協定是基于,OSI(開放系統互聯)的七層參考模型的,(雖然不是完全符合)從上到下分别為 應用層 表示層 會話層 傳輸層 網絡層 資料鍊路層和實體層。其中資料鍊路層又可是分為兩個子層分别為邏輯鍊路控制層(Logic Link Control,LLC )和媒體通路控制層((Media Access Control,MAC )也就是平常說的MAC層。LLC對兩個節點中的鍊路進行初始化,防止連接配接中斷,保持可靠的通信。MAC層用來檢驗包含在每個桢中的位址資訊。在下面會分析到。還要明白一點路由器是在網路層的,而網卡在資料鍊路層。

   我們知道,ARP(Address Resolution Protocol,位址轉換協定)被當作底層協定,用于IP位址到實體位址的轉換。在以太網中,所有對IP的通路最終都轉化為對網卡MAC位址的通路。如果主機A的ARP清單中,到主機B的IP位址與MAC位址對應不正确,由A發往B資料包就會發向錯誤的MAC位址,當然無法順利到達B,結 果是A與B根本不能進行通信。

   首先我們分析一下在同一個網段的情況。假設有兩台電腦分别命名為A和B,A需要相B發送資料的話,A主機首先把目标裝置B的IP位址與自己的子網路遮罩進行“與”操作,以判斷目标裝置與自己是否位于同一網段内。如果目标裝置在同一網段内,并且A沒有獲得與目标裝置B的IP位址相對應的MAC位址資訊,則源裝置(A)以第二層廣播的形式(目标MAC位址為全1)發送ARP請求封包,在ARP請求封包中包含了源裝置(A)與目标裝置(B)的IP位址。同一網段中的所有其他裝置都可以收到并分析這個ARP請求封包,如果某裝置發現封包中的目标IP位址與自己的IP位址相同,則它向源裝置發回ARP響應封包,通過該封包使源裝置獲得目标裝置的MAC位址資訊。為了減少廣播量,網絡裝置通過ARP表在緩存中儲存IP與MAC位址的映射資訊。在一次 ARP的請求與響應過程中,通信雙方都把對方的MAC位址與IP位址的對應關系儲存在各自的ARP表中,以在後續的通信中使用。ARP表使用老化機制,删除在一段時間内沒有使用過的IP與MAC位址的映射關系。一個最基本的網絡拓撲結構:

資料包的傳輸過程

   如果中間要經過交換機的話,根據交換機的原理,它是直接将資料發送到相應端口,那麼就必須保有一個資料庫,包含所有端口所連網卡的MAC位址。它通過分析Ethernet包的標頭資訊(其中包含不原MAC位址,目标MAC位址,資訊的長度等資訊),取得目标B的MAC位址後,查找交換機中存儲的位址對照表,(MAC位址對應的端口),确認具有此MAC位址的網卡連接配接在哪個端口上,然後将資料包發送到這個對應的端口,也就相應的發送到目标主機B上。這樣一來,即使某台主機盜用了這個IP位址,但由于他沒有這個MAC位址,是以也不會收到資料包。

   現在我們讨論兩台不在同一個網段中的主機,假設網絡中要從主機PC-A發送資料包PAC到PC-C主機中,如下圖所示:

            路由器A ===================路由器B

                 |           INTERNET                             |        

                |                                                       |

             交換機A                                            交換機B

             |    |                                                    |    |

             |    |                                                    |    |

         PC-A    PC-B                                      PC-C   PC-D

    PC-A并不需要擷取遠端主機(PC-C)的MAC位址,而是把IP分組發向預設網關,由網關IP分組的完成轉發過程。如果源主機(PC-A)沒有預設網關MAC位址的緩存記錄,則它會通過ARP協定擷取網關的MAC位址,是以在A的ARP表中隻觀察到網關的MAC位址記錄,而觀察不到遠端主機的 MAC位址。在以太網(Ethernet)中,一個網絡裝置要和另一個網絡裝置進行直接通信,除了知道目标裝置的網絡層邏輯位址(如IP位址)外,還要知道目标裝置的第二層實體位址(MAC位址)。ARP協定的基本功能就是通過目标裝置的IP位址,查詢目标裝置的MAC位址,以保證通信的順利進行。

    資料包在網絡中的發送是一個及其複雜的過程,上圖隻是一種很簡單的情況,中間沒有過多的中間節點,其實作實中隻會比這個更複雜,但是大緻的原理是一緻的。

(1)PC-A要發送資料包到PC-C的話,如果PC-A沒有PC-C的IP位址,則PC-A首先要發出一個dns的請求,路由器A或者dns解析伺服器會給PC-A回應PC-C的ip位址,這樣PC-A關于資料包第三層的IP位址資訊就全了:源IP位址:PC-A,目的ip位址:PC-C。

(2)接下來PC-A要知道如何到達PC-C,然後,PC-A會發送一個arp的位址解析請求,發送這個位址解析請求,不是為了獲得目标主機PC-C的MAC位址,而是把請求發送到了路由器A中,然後路由器A中的MAC位址會發送給源主機PC-A,這樣PC-A的資料包的第二層資訊也全了,源MAC位址:PC-A的MAC位址,目的MAC位址:路由器A的MAC位址,

(3)然後資料會到達交換機A,交換機A看到資料包的第二層目的MAC位址,是去往路由器A的,就把資料包發送到路由器A,路由器A收到資料包,首先檢視資料包的第三層ip目的位址,如果在自己的路由表中有去往PC-C的路由,說明這是一個可路由的資料包。

(4)然後路由器進行IP重組和分組的過程。首先更換此資料包的第二層標頭資訊,路由器PC-A到達PC—C要經過一個廣域網,在這裡會封裝很多廣域網相關的協定。其作用也是為了找下一階段的資訊。同時對第二層和第三層的資料包重校驗。把資料經過Internet發送出去。最後經過很多的節點發送到目标主機PC_C中。

   現在我們想一個問題,PC-A和PC-C的MAC位址如果是相同的話,會不會影響正常的通訊呢!答案是不會影響的,因為這兩個主機所處的區域網路被廣域網分隔開了,通過對發包過程的分析可以看出來,不會有任何的問題。而如果在同一個區域網路中的話,那麼就會産生通訊的混亂。當資料發送到交換機是,這是的端口資訊會有兩個相同的MAC位址,而這時資料會發送到兩個主機上,這樣資訊就會混亂。是以這也是保證MAC位址唯一性的一個理由。

   知識補充:

(1)網關的含義:是說這樣一種裝置:如果主機要發包,就往這個裝置發送。也就是說此裝置要有路由功能或有去往外部網路的路徑。

在實際網絡裡,網關一般由路由器或server充當。

(2)ARP(Address Resolution Protocol)是位址解析協定,ARP是一種将IP位址轉化成實體位址的協定。從IP位址到實體位址的映射有兩種方式:表格方式和非表格方式。ARP 具體說來就是将網絡層(IP層,也就是相當于OSI的第三層)位址解析為資料連接配接層(MAC層,也就是相當于OSI的第二層)的MAC位址。ARP協定是通過IP位址來獲得MAC位址的。

(3)網絡中需要唯一的MAC位址的理由:(a)IP位址的配置設定是根據網絡的拓樸結構,而不是根據誰制造了網絡設定。若将高效的路由選擇方案建立在裝置制造商的基礎上而不是網絡所處的拓樸位置基礎上,這種方案是不可行的。(b)當存在一個附加層的位址尋址時,裝置更易于移動和維修。例如,如果一個以太網卡壞了,可以被更換,而無須取得一個新的IP位址。如果一個IP主機從一個網絡移到另一個網絡,可以給它一個新的IP位址,而無須換一個新的網卡。(c)無論是區域網路,還是廣域網中的計算機之間的通信,最終都表現為将資料包從某種形式的鍊路上的初始節點出發,從一個節點傳遞到另一個節點,最終傳送到目的節點。資料包在這些節點之間的移動都是由ARP,負責将IP位址映射到MAC位址上來完成的。

(4)辨別網絡中的一台計算機,一般至少有三種方法,最常用的是域名位址、IP位址和MAC位址,分别對應應用層、網絡層、實體層。網絡管理一般就是在網絡層針對IP位址進行管理,但由于一台計算機的IP位址可以由使用者自行設定,管理起來相對困難,MAC位址一般不可更改,是以把IP位址同MAC位址組合到一起管理就成為常見的管理方式。

交換機和路由器的主要差別:

(1)、二者的工作層次不同

最初的的交換機是工作在OSI/RM開放體系結構的資料鍊路層,也就是第二層,而路由器一開始就設計工作在OSI模型的網絡層。由于交換機工作在 OSI的第二層(資料鍊路層),是以它的工作原理比較簡單,而路由器工作在OSI的第三層(網絡層),可以得到更多的協定資訊,路由器可以做出更加智能的轉發決策。

(2)、二者的據轉發所依據的對象不同

交換機是利用實體位址或者說MAC位址來确定轉發資料的目的位址。而路由器則是利用不同網絡的ID号(即IP位址)來确定資料轉發的位址。IP位址是在軟體中實作的,描述的是裝置所在的網絡,有時這些第三層的位址也稱為協定位址或者網絡位址。MAC位址通常是硬體自帶的,由網卡生産商來配置設定的,而且已經 固化到了網卡中去,一般來說是不可更改的。而IP位址則通常由網絡管理者或系統自動配置設定。

(3)、傳統的交換機隻能分割沖突域,不能分割廣播域;而路由器可以分割廣播域

由交換機連接配接的網段仍屬于同一個廣播域,廣播資料包會在交換機連接配接的所有網段上傳播,在某些情況下會導緻通信擁擠和安全漏洞。連接配接到路由器上的網段會被配置設定成不同的廣播域,廣播資料不會穿過路由器。雖然第三層以上交換機具有VLAN功能,也可以分割廣播域,但是各子廣播域之間是不能通信交流的,它們之間的交流仍然需要路由器。

(4)路由器提供了防火牆的服務,而交換機則沒有

路由器僅僅轉發特定位址的資料包,不傳送不支援路由協定的資料包傳送和未知目标網絡資料包的傳送,進而可以防止廣播風暴。

MAC位址的安全問題:

    我們為了防止IP位址被盜用,就通過簡單的交換機端口綁定(端口的MAC表使用靜态表項),可以在每個交換機端口隻連接配接一台主機的情況下防止修改MAC位址的盜用,如果是三層裝置還可以提供:交換機端口/IP/MAC 三者的綁定,防止修改MAC的IP盜用。一般綁定MAC位址都是在交換機和路由器上配置的。

繼續閱讀