網路資料包轉發過程
這篇文章講述了上網時資料包轉發的全過程,下面是電腦和網路裝置連線簡略圖:
以PC1 ping PC3為例講述資料包轉發過程:
1、當PC1 ping PC3時,發現它們的IP不在同一網段,PC1就將資料包傳送至閘道器(1.1.1.1/24),這時需要知道閘道器的MAC地址,
PC1於是查詢自身ARP快取表,如果沒有則會發出ARP廣播包,包中的地址分別為:
源 IP : 1.1.1.2/24 源 MAC : a.a.a(PC1)
目的 IP : 1.1.1.1/24 目的 MAC : f.f.f
2、交換機SW1從e0/1介面收到資料包,解封后讀取資料包的MAC地址,將其寫入SW1的MAC地址表,發現該資料包是廣播包,加
上幀頭後向來源介面外的所有介面傳送資料包,PC2介面收到該資料包發現其目的IP地址(1.1.1.1/24)與自身不符,丟棄該資料
包並不做迴應。經過交換機後的源IP、源MAC、目的IP、目的MAC都不改變。
3、路由器R1接收到資料包,發現其MAC地址為廣播地址,接收該包,再解封,發現請求的目的IP地址為自己的IP(1.1.1.1/24),
需要向源地址進行ARP回覆。讀取的資料包來源於1.1.1.1/24,源MAC地址為a.a.a。於是向PC1傳送資料包,該包中地址為:
源 IP : 1.1.1.1/24 源 MAC : b.b.b(R1、e0/0)
目的 IP : 1.1.1.2/24 目的 MAC : a.a.a(PC1)
4、交換機SW1收到來自R1的資料包,檢視源MAC地址為b.b.b,將改地址連同來源的介面號儲存到MAC地址表。檢視目的MAC地址
a.a.a,檢視MAC地址表,找到與a.a.a的匹配項,向指定介面轉發該包,經該介面封裝後向PC1進行單播。PC1收到資料包,解
封后讀到源IP為1.1.1.1/24,源MAC地址為b.b.b,PC1得到閘道器的MAC地址,並儲存到ARP快取表。
5、PC1向PC3發出資料包,包中地址為:
源 IP : 1.1.1.2/24 源 MAC : a.a.a(PC1)
目的 IP : 2.2.2.2/24 目的 MAC : b.b.b(R1、e0/0)
該包進入SW1,根據目的MAC地址查詢MAC地址表後由上介面轉出向R1傳送,到達介面s0/1,查到資料包MAC地址為自己MAC
地址,將包解封到IP層,查詢路由表:在路由表中查到最優匹配項,查詢到下一跳介面IP地址,併發送出去;如果沒有最優匹配
項,則按照預設路由傳送,沒有預設路由則丟棄資料包,併發送回應包,目的地址不可達。
查詢路由表後得到轉發介面為R1s0/1口,下一跳介面的IP地址為3.3.3.2/24,查詢ARP表中IP地址為3.3.3.2的介面的MAC地址,
得到其MAC地址d.d.d;如果表中無匹配項,則通過s0/1口傳送ARP廣播,請求3.3.3.2的MAC地址。封裝好包後,從介面s0/1轉發
資料包,發出去的包MAC地址改變為:
源 IP : 1.1.1.2/24 源 MAC : c.c.c(R1、s0/1)
目的 IP : 2.2.2.2/24 目的 MAC : d.d.d(R2、s0/0)
6、路由器R2介面s0/0接收到資料包,檢驗MAC地址後接收並解封至IP層,查詢路由表,發現轉發介面為E0/0,且目的IP地址與介面
E0/0在同一網段內,查詢ARP表中目的IP(2.2.2.2)的MAC地址,得到PC3的MAC地址e.e.e;如果沒有查到,則通過E0/0介面
傳送ARP廣播包查詢IP地址為2.2.2.2的MAC地址。
7、E0/0介面將封裝好的資料包傳送出去,報地址為:
源 IP : 1.1.1.2/24 源 MAC : g.g.g(R2、E0/0)
目的 IP : 2.2.2.2/24 目的 MAC : e.e.e(PC3)
經過SW2的上介面進入,根據其目的MAC地址查詢MAC地址表,如果找到匹配表項,則根據指定介面轉發出去;如果沒有找
到,則向除進介面外的所有介面轉發出去。
8、PC3接收到SW2發來的資料包,解封檢驗MAC地址為自己MAC地址e.e.e,接收資料包,包地址表為:
源 IP : 1.1.1.2/24 源 MAC : g.g.g(R2、E0/0)
目的 IP : 2.2.2.2/24 目的 MAC : e.e.e(PC3)
然後向源地址傳送ICMP應答資料包,過程相似。