網絡中數據傳輸過程的分析


 我們每天都在使用互聯網,我們電腦上的數據是怎么樣通過互聯網傳輸到到另外的一台電腦上的呢?把自己的理解寫一下,可能有很多細節還沒有能的很清楚!希望在以后可以使之更加的完善!有不對的地方還請指正.
     我們知道現在的互聯網中使用的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地址都是在交換機和路由器上配置的。

 

轉自:http://blog.csdn.net/zqk_2009/article/details/6336516


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM