1. 程式人生 > >網路二三層轉發

網路二三層轉發

二層轉發具體過程 轉載至https://blog.csdn.net/hjq129520/article/details/60956536

根據路由表項的掩碼和目的IP相與,判斷主機A和主機B處於同一網段,採用二層轉發。

1.      主機A向全網段的其他主機發送ARP廣播報文,其SMAC為主機A 的MAC地址,SIP為主機A的IP地址192.168.1.1,DMAC為全零的廣播地址,DIP為主機B的IP地址192.168.1.2。

2.      當全網段的主機都收到該ARP廣播時,只有主機B發現ARP請求報文中的目的IP地址與自己的IP相同,則給予主機A 傳送ARP應答報文,SMAC為主機B 的MAC地址,SIP為主機B的IP地址192.168.1.2,DMAC為主機A的MAC地址,DIP為主機A的IP地址192.168.1.1。在此過程中,主機B將主機A的MAC地址和主機A的IP地址寫入自己的ARP表項中,以便之後的二三層轉發。

3.      主機A收到主機B的ARP應答報文之後,將主機B的MAC地址和對應的IP地址寫入自己的ARP表項中,以便後續的二三層轉發,同時,將IP資料包封裝傳送給主機B。

三層轉發具體過程

根據路由表項的掩碼和目的IP相與,判斷主機A和主機B處於不同網段,採用三層轉發。

當PC A向PC B發起ICMP請求時:

PCA向閘道器(有閘道器時,對閘道器傳送ARP請求,無閘道器時,需要設定靜態路由,route add IP mask nextHop要到達IP,下一跳要選擇的是 nextHop;閘道器的0.0.0.0/0代表能夠到達任何一個IP)192.168.1.2/24傳送ARP請求(廣播,傳送的ARP請求只有廣播的形式),以獲得交換機的MAC地址,閘道器發現PC A請求的IP地址為自己的三層介面IP,因此閘道器給予PC A傳送ARP應答,並更新自己的ARP表項,告知PC A交換機的MAC地址,主機A也更新自己的ARP表項,PC A將ICMP報文傳送給閘道器192.168.1.2,ICMP的目的MAC為交換機13埠的MAC、源MAC為MAC A、源IP為192.168.1.1、目的IP為192.168.2.1。

1. 交換機根據收到的ICMP報文的目的IP查詢硬體三層表項,即FIB(內容包括IP、MAC、出口VLAN、出埠),因為之前未建立任何表項,查詢失敗,於是將報文送到交換機CPU進行處理。

2.  CPU根據報文的目的IP去查詢軟體路由表,發現匹配了一個直連網段(PC B 對應的網段),於是繼續查詢其軟體ARP表,仍然查詢失敗。然後,交換機會在目的網段對應的VLAN 2的所有埠傳送請求地址192.168.2.1對應的MAC的ARP請求(請求PC B的MAC地址)。

【根據目的IP與硬體的FIB作最長匹配,如果匹配的是32位的主機路由,則直接轉發,如果匹配的是介面網段路由,則送CPU處理,CPU觸發下一跳的ARP請求,在收到ARP應答之後根據ARP建立新的主機路由,後續即可匹配此主機路由,所謂“一次路由,多次交換”】fib表是根據路由表生成的,fib表下發到硬體,轉發更快,資料轉發過程中先查fib表,查不到再去查路由表    display fib

1.  主機B發現被請求的是自己的IP地址時,則向交換機發送ARP應答報文,SMAC為主機B的MAC,SIP為主機B的IP192.168.2.1,DMAC為交換機的MAC,DIP為192.168.2.2,並將交換機的MAC和對應閘道器的IP寫入自己的ARP表項,交換機收到該ARP應答報文時,將主機B的MAC和其IP地址寫入自己的ARP表項,以便後續的報文轉發,交換機將收到的主機A的ICMP報文傳送給主機B,報文的目的MAC修改為PC B的MAC,源MAC修改為自己的交換機14埠的MAC地址,源IP為主機A的IP192.168.1.1,目的IP為主機B的IP192.168.2.1。

2. 在交換機晶片的三層表項中根據剛得到的三層轉發資訊新增表項(內容包括IP、MAC、出口VLAN、出埠),這樣後續的PC A發往PC B的報文就可以通過該硬體三層表項直接轉發了。

3.  PC B收到交換機轉發過來的ICMP請求報文以後,迴應ICMP應答給PCA。ICMP應答報文的轉發過程與前面類似,只是由於交換機在之前已經得到PC A的IP和MAC對應關係了,也同時在交換晶片中添加了相關三層表項,因此這個報文直接由交換晶片硬體轉發給PC A。

4.  這樣,後續的往返報文都經過查MAC表==>查三層轉發表的過程由交換晶片直接進行硬體轉發了。

注:交換機每個埠都有自己的MAC地址,display interface g1/0/?可以檢視具體的交換機埠的資訊,包含該埠的MAC可以檢視到。交換機可以清楚的知道自己的每個埠的MAC地址,因此在交換機內部無需傳送ARP請求檢視自己埠的MAC地址。

 

【PC上設定靜態路由:routeadd   IP mask  nextHop】

【交換機上設定靜態路由:iproute-static   IP  mask  nextHop】

TCP/IP7層工作模式:

A向B傳送一個QQ資訊 “你好” A主機在應用層上將這條資訊準備好(你從鍵盤上打字),然後表示層將這2個字的具體資訊準備好(大小,粗細,顏色等),會話層就與B建立會話連線(喂,你在嗎,我要發東西給你),傳輸層就讓AB兩臺主機建立邏輯上的連線(QQ是UDP無連線的,MSN是TCP有連線的),傳輸層將資料分段 並在所有資料段之前打上埠號4000(QQ的埠號)的標籤,網路層進行路由定址,就是找到去往B的路,然後在資料段前面加上目的IP變成資料包送到資料鏈路層,資料鏈路層在資料包前面加上下一個路由的MAC地址(每經過一個路由變一次,直到B的MAC地址),然後將資料包轉換為幀,最後到物理層,物理層將資料幀變成010101的位元流,傳送出去,以上就是封裝的過程,然後經過N個路由,最後送到主機B物理層上,開始解封裝,將01010位元流轉化為資料鏈路層可以識別的資料幀,並拆下最前面一段MAC地址,拿出來一看,哦,這是給我的資料包,然後將資料幀轉化為資料包送給網路層繼續拆,拆下IP地址,也符合,再轉化為資料段送給傳輸層,傳輸層也拆開埠資訊,然後將資料段重組成資料發給4000埠(否則計算機不知道到底應該將資料交給誰處理,埠就是電腦知道這到底是誰的資料,總不能發給音樂或者視訊什麼的吧),再到會話層完成終止這次會話,到表示層和應用層就在主機B上將“你好“兩個字顯示出來,整個過程就基本完成了。