日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

二层封装与路由器转发数据过程(路由器转发数据包的封装过程)

發布時間:2023/12/24 综合教程 45 生活家
生活随笔 收集整理的這篇文章主要介紹了 二层封装与路由器转发数据过程(路由器转发数据包的封装过程) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


二層封裝

為什么需要了解二層封裝呢? 因為在一個路由器轉發數據包的時候,除了知道目的地怎么去(有路由),還需要二層的正確封裝,否則就算有路由的話,也無法進行通信。

這是卷一提到過的,雖然沒有像協議卷一說得那么細,但是,它也說明了,必須獲取數據鏈路層的信息才能正常進行封裝,而這個二層的信息通常就是目的mac地址,而提供這個IP對應MAC的機制,就通過ARP來完成,并且通過緩存保存下來。而網絡層,則是通過靜態或者動態路由協議獲取相關的信息,保存在路由表中,也叫路由選擇信息庫 RIB。

這個拓撲主要介紹ARP和代理ARP在以太網類型中起一個什么作用。IP地址信息如圖上所示

證明一

第一個證明,二層如果沒有獲取到封裝的信息,則數據包都不會發送出去。
根據這個圖就配置了IP地址,右邊路由有一跳缺省路由,這時候隨便測試一個不存在的地址,查看數據包發送的情況。
在R2上telnet 12.1.1.3,一個不存在的地址 。

沒有響應是正常的,但是這個沒響應,到低是因為找不到二層的封裝,還是應用層沒有響應呢。 三層信息路由是沒有問題的,因為是直連網段,,那么以太網通信,必須知道對方的MAC地址,而默認情況下,是不知道的,那么就需要一個機制來進行查詢,就是ARP了。

發送了三個ARP查詢,而網絡中沒有人進行響應,所以,二層無法得到封裝(沒有獲取12.1.1.3的MAC地址)則通信失敗。

這時候,我們做一個靜態ARP綁定,然后在進行telnet,MAC地址可以隨意定義。

其中1.1.1就是表示MAC 0001.0001.0001 可以省略寫的。

發現了什么? 因為MAC地址有了封裝(就是手工綁定的),它直接發送TCP連接給12.1.1.3了,發送了4個SYN的包,因為對方沒有響應SYN+ACK,所以這個TCP會話沒有繼續進行下去。

結論: 無論在一個相同網段,還是不同網段的情況下,如果二層的介質是以太網,那么就必須獲取對方的MAC地址信息,相同網段則是目的地址的MAC地址,不同網段則是路由表中的下一跳 ,一種特殊情況下,就是啟用了代理arp的話,那么也是目的地址,但是MAC則是下一跳。 這也是在當前IPV4的網絡中,ARP是一個非常不安全的協議,因為很容易就實現攻擊了,只要網關的MAC被攻擊者以錯誤的MAC告訴當前網絡的設備,那么整個網絡就通信不正常了。

證明二

第二個證明:路由器在路由模式和主機模式下,數據包是怎么通信的。

還是這個拓撲,在右邊路由器上關閉路由功能,no ip routing,那么能與 1.1.1.1通信么?

答案是:可以的。

通了是通了,那么它是怎么通的呢

在show arp后,發現除了有12.1.1.1的MAC地址信息(之前ping過了),還有1.1.1.1對應的MAC信息,另外一個重要的信息就是12.1.1.1和1.1.1.1的MAC地址信息都是關于12.1.1.1的,這是為什么? 這就是所謂的代理ARP和主機模式工作的工程。

主機模式工作:

1、無網關情況下:當沒有網關的情況下,它會對當前網絡進行ARP查詢,詢問訪問的目的地址的MAC地址信息,如果這個時候,網關知道怎么去這個目的地址,并且開啟了代理ARP的功能,那么就會回應這個ARP響應,那么回應的內容就是這個目的地址的MAC地址是自己,這對于PC或者主機路由器來說是不知道的,它就認為這個MAC是對應目的主機,每次發送去往這個目的地址的時候,二層就封裝這個目的MAC,然后發送出去。

2、有網關的情況下:當有網關的情況下,它只會詢問網關的MAC是多少,如果網關響應了后,那么PC或主機路由器,就會把這個數據包發送出去,它不管網關是否知道怎么去往這個目的地址不。

可以進行證明:1、在沒有網關的情況下,把R1的代理ARP給關閉了,默認是打開的,并且把ARP 緩存清掉 shutdown接口,clear arp

不通,因為R1的接口已經關閉了代理ARP了,所以不不會去響應這個ARP的Request。

2、設置網關為R1的接口,并且發送一個去往2.2.2.2的telnet的會話,看TCP會話是否會發出去,如果出去了,就證明之前說的是對的,不管網關是否知道目的地可達,PC或主機路由器都會發送。

這時候開始telnet 2.2.2.2

telnet2.2.2.2 ,提示目的不可達,或者網關和主機是downde

首選,路由器發送ARP的Request選為12.1.1.1(GW)的MAC地址是多少。R1響應這個ARP的請求。緊接著一個TCP會話發送出去,R1直接回復一個ICMP的差錯報文,主機不可達。

路由模式下的路由器:

路由模式的數據包轉發,不跟主機模式一樣,主機模式是只要設置了網關或者沒設置都會發送arp請求,但是,路由模式的話,先查看路由表,如果路由表中沒有該路由,則不做任何動作。

可以看出,因為路由表沒有去往2.2.2.2的路由信息,所以不采取任何動作,連ARP都沒有發送。

證明三

第三個證明:兩個不同網段的主機,能否進行通信?
在設置有GW的情況下,肯定是不可能的,但是,在某種情況下,它卻成為可能,那就是兩個主機都不設置IP,并且有代理ARP功能。

說明:R1和R2都是關閉了路由功能的路由器,并且接口開啟了代理ARP功能。IP地址與圖

從R1開始ping 2.2.2.2,并且抓取R1的數據包進行分析。

沒看錯,R1與R2可以通信了,仔細看抓包的內容,首先R1發送一個arp的查詢,{how has 2.2.2.2? tell 1.1.1.1}一個詢問2.2.2.2的MAC Request包就發送出去了,因為R2與R1是直連(鏈路),所以,R2收到了這個ARP 的Request,而且R2是開啟了代理ARP功能的,也就是說只要R2知道2.2.2.2怎么去,就會響應這個ARP的請求(這里明顯就是自己),所以第二個訴舉報就是arp的reply{2.2.2.2 is at c0:01:05:04:00:00},那么這時候R1就有R2的mac地址映射了,所以就發送了數據包出去,也就是icmp的echo,這時候R2收到,需要回應這個數據包,但是,它并不知道對方的MAC是什么,緊接著也發送了一個ARP的請求過去,詢問1.1.1.1的MAC,然后,R1回復這個ARP請求。后續,通信就正常了。
注意:如果是正常的ARP詢問,那么只要一方放送ARP請求,另外一份響應的時候,還會把請求方的ARP的信息緩存起來。并且在主機模式下的路由器是不能關閉代理ARP的,就算接口下關閉了,也一樣會響應請求。

其實,不只有代理ARP能實現這個需求,比如在PC的情況下,因為PC沒有代理ARP機制,所以,可以直接把1.1.1.1的網關設置為2.2.2.2,2.2.2.2的網關為1.1.1.1,它一樣能通信,因為它會發送ARP信息來請求網關。

注意:并不是所有的操作系統都是能執行的,有些是禁止的,之所有說明這個案例,主要是說明ARP在MAC和IP對應時候的作用,已經二層封裝。

如果大家有任何疑問或者文中有錯誤跟疏忽的地方,歡迎大家留言指出,博主看到后會第一時間修改,謝謝大家的支持,更多技術文章盡在網絡之路Blog,版權歸網絡之路Blog所有,原創不易,侵權必究,覺得有幫助的,關注轉發一波謝謝。

上一篇回顧

下一篇學習

TCPIP卷一(2):二層封裝之–PPP與FR

總結

以上是生活随笔為你收集整理的二层封装与路由器转发数据过程(路由器转发数据包的封装过程)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。