數(shù)據(jù)包在兩臺電腦之間傳輸大體分為以下兩種情況
1、 通過二層設(shè)備交換機直連的兩臺主機之間數(shù)據(jù)傳輸
(?HUB 就免談了祸憋,它屬于一層設(shè)備蝠筑,既看不懂二層 MAC 地址唉工,也看不懂三層 IP 地址,不存在尋址的問題乏盐,直接廣播就是)
首先我們必須了解一個概念佳窑,封裝與解封裝
封裝
所謂封裝是指在發(fā)送方發(fā)生的自上而下的過程 —— 在每一層為應用數(shù)據(jù)添加上特定的頭部 / 尾部信息( PDU , Protocol Data Unit 父能,協(xié)議數(shù)據(jù)單元)
Application (應用程序) →segment (數(shù)據(jù)段) →packet (數(shù)據(jù)包) →frame (數(shù)據(jù)幀) →bit (比特神凑,二進制位)
解封裝
所謂解封裝是指在接收方發(fā)生的自下而上的過程 —— 逐層的去掉頭部以及尾部信息
由于今天我們只討論數(shù)據(jù)傳輸過程,所以只牽涉到數(shù)據(jù)的四層以下封裝何吝。
假設(shè)現(xiàn)在 A 要向 B 發(fā)送數(shù)據(jù)溉委,那么 A 首先要對發(fā)送的數(shù)據(jù)進行封裝,在每一層會加上相應的數(shù)據(jù)頭岔霸,傳輸層主要是加上源和目標端口號薛躬,網(wǎng)絡層則加源和目標 IP 地址,數(shù)據(jù)鏈路層則加上源和目標 MAC 地址
1) 好的呆细,由于 A 現(xiàn)在只知道 B 的 IP 地址型宝,并不知道 B 的 MAC 地址八匠,而二層設(shè)備交換機并不會按 IP 地址來轉(zhuǎn)發(fā)數(shù)據(jù),所以這時 A 會發(fā)一個 ARP 廣播(ARP請求分組)趴酣,內(nèi)容是:我的ip地址為:XXXX梨树,MAC 地址為 :XXXX,詢問 IP 地址為 192.168.0.2 的 MAC 地址是多少岖寞?在本局域網(wǎng)運行的所有主機上運行的ARP進程都會收到此ARP請求分組抡四,但只有B會響應并向A發(fā)送一個ARP響應分組。
2) 交換機收到該幀后仗谆,發(fā)現(xiàn)是廣播幀指巡,于是轉(zhuǎn)發(fā)到其它所有端口,并且會將該幀的源 MAC 地址(即 A 的 MAC 地址)添加到自己的 MAC 地址表中去
3)?B 當然會收到該幀隶垮,于是和自己的 IP 進行對比藻雪,發(fā)現(xiàn)匹配后,再以A為目標M AC 地址響應A的ARP請求幀
4)?交換機收到B的回復幀后狸吞,將該幀的目標MAC地址與自己的MAC地址表進行對照勉耀,發(fā)現(xiàn)該幀對應的的端口是 F0/1 ,于是將幀轉(zhuǎn)發(fā)到 F0/1 端口(如果數(shù)據(jù)幀的目標 MAC 地址在表中不存在蹋偏,則會轉(zhuǎn)發(fā)到除源端口外的其它所有端口)便斥,同時將該幀的源 MAC 地址(即 B 的 MAC 地址)加到自己的 MAC 地址表中
5) A 收到 B 的回復幀后,得知 192.168.0.2 的 MAC 地址是 2c 26.1ae3.2222 威始,于是該信息保存到本地的 ARP 高速緩存中枢纠,同時以 B 的 MAC 地址為目標地址將要傳的數(shù)據(jù)封裝成幀,發(fā)送出去
6)?交換機再次收到 A 的數(shù)據(jù)幀黎棠,發(fā)現(xiàn)目的 MAC 地址是 2c 26.1ae3.2222 京郑,并且該地址對應的端口是 F0/2 ,于是將該數(shù)據(jù)轉(zhuǎn)發(fā)到 F0/2 端口
7)?B 成功收到 A 發(fā)來的數(shù)據(jù)
2葫掉、 跨三層設(shè)備路由器的兩臺主機之間數(shù)據(jù)傳輸
好的些举,現(xiàn)在我們來看一下 pcA 是如何發(fā)送數(shù)據(jù)給 pcB 的
??? 交換機的工作原理前面我們已經(jīng)介紹過了,它維護了一張 MAC 地址表俭厚,用來反映各端口和 MAC 地址的對應關(guān)系户魏,以便做好數(shù)據(jù)轉(zhuǎn)發(fā)工作。下面我們來看一下路由器的工作原理挪挤,在路由器中也要維護一張表格叼丑,叫做路由條目表,用來反映如何到達某個 IP 地址網(wǎng)段扛门,同時在路由器中也有 ARP 高速緩存鸠信,反映了該路由器各直接網(wǎng)段的 IP 地址和 MAC 地址的對應關(guān)系
1) 由于 B 的 IP 地址并沒有和 A 在一個網(wǎng)段,所以當 A 向 B 發(fā)送數(shù)據(jù)時论寨, A 并不會直接把數(shù)據(jù)給 B 星立,而是交給自己的網(wǎng)關(guān)爽茴,也就是 192.168.0.254 ,所以 A 首先會 ARP 廣播請求 192.168.0.254 的 MAC 地址
2) A 得到網(wǎng)關(guān)的 MAC 地址后绰垂,以它為數(shù)據(jù)幀的目標 MAC 地址進行封裝數(shù)據(jù)室奏,并發(fā)送出去
3) routerA 收到該幀后,檢查該幀的目標 IP 劲装,并到自己的路由表查找如何到達該網(wǎng)段(目的IP與各網(wǎng)絡的掩碼相與:直接較付->特定主機路由->間接交付->默認路由)胧沫,找到下一跳地址是 routerB 的 s0 端口,于是將數(shù)據(jù)重新封裝占业,將源地址改為 s0 端口 MAC 地址绒怨,目標 MAC 地址改為 routerB 的 s0 端口 MAC 址址,并發(fā)送給 routerB
4) 中間路由器傳遞過程同理
5) 最后一個路由(此例為 routerC )收到該幀谦疾,發(fā)現(xiàn)目標 IP 就在自己的直連網(wǎng)段窖逗,于是查看 ARP 緩存,如果找到該 IP 的 MAC 地址餐蔬,則以該 MAC 地址封裝數(shù)據(jù)發(fā)送出去,如果在 ARP 緩存沒找到佑附,則發(fā)出 ARP 廣播樊诺,請求該 IP 的 MAC 地址,得到對應的 MAC 地址后音同,再發(fā)送給主機 B
在以上數(shù)據(jù)傳遞過程中词爬,我們發(fā)現(xiàn),數(shù)據(jù)幀的源 IP 和目標 IP 始終是不變的权均,而經(jīng)過每個路由進行重新封裝數(shù)據(jù)時 MAC 地址則在不斷的變化顿膨,總是以自己的地址作為源 MAC 地址,下一跳的地址作為目標 MAC 地址
好的叽赊,關(guān)于數(shù)據(jù)包尋址過程今天就介紹到這里恋沃,希望對各位的學習能有所幫助!
附:IGMP:因特網(wǎng)組管理協(xié)議(UDP)必指;內(nèi)部網(wǎng)關(guān)協(xié)議:RIP(路由信息協(xié)議:基于距離向量的路由選擇協(xié)議)囊咏,OSPF(開發(fā)最短路徑優(yōu)先協(xié)議);ICMP:因特網(wǎng)控制報文協(xié)議塔橡;CIDR無分類編址梅割;ARP:地址解析協(xié)議;RARP:逆地址解析協(xié)議葛家;CSMA/CD:載波監(jiān)聽多點接入/碰撞檢測)户辞;DHCP動態(tài)主機配置協(xié)議(UDP端口67,68)癞谒;FTP文件傳輸(TCP:21)底燎;DNS域名系統(tǒng)(UDP:53)刃榨;TELET(TCP:23);SMTP(TCP:25).