天天看點

trunk與access的差別首先聲明我沒研究過交換機底層實作,以下結論都是我的個人了解。不保證正确,但是有助于了解trunk和access。以下言論可能你在哪裡都沒有看到過。

首先聲明我沒研究過交換機底層實作,以下結論都是我的個人了解。不保證正确,但是有助于了解trunk和access。以下言論可能你在哪裡都沒有看到過。

先說觀點:我認為trunk與access并沒有本質的差別。

access收到帶vlan的幀和自己所屬vlan比較,相同轉發,不相同丢棄。(1)

trunk 收到帶vlan的幀和自己所屬vlan比較,相同轉發,不相同丢棄。(2)

access收到不帶vlan的幀,打上自己所屬vlan的tag進行轉發。 (3)

trunk 收到不帶vlan的幀,打上自己所屬vlan的tag進行轉發。 (4)

下面對以上四句話進行解釋:

(1)可在模拟器做如下實驗

sw1的1口配置成access劃入vlan 10,連接配接pc1,ip配置為10.0.0.1/24

sw1的2口配置成trunk并允許所有vlan通過,連接配接sw2的1口。

sw2的1口配置成access劃入vlan 10,連接配接sw1的1口。

sw2的2口配置成access劃入vlan 10,連接配接pc2,ip配置為10.0.0.2/24

trunk與access的差別首先聲明我沒研究過交換機底層實作,以下結論都是我的個人了解。不保證正确,但是有助于了解trunk和access。以下言論可能你在哪裡都沒有看到過。

此時pc1 ping pc2,資料進入sw1的1口打上vlan10的tag,由于sw1的2口trunk允許此vlan通過會轉發給sw2的1口(此時不會去掉tag),此時滿足上面的第(1)句(access收到帶vlan的幀和自己所屬vlan比較,相同轉發,不相同丢棄。),會把資料轉發給2口,此時在sw2的2口上抓包可以看到pc1發送的arp請求和pc2的arp應答。但pc1無法ping通pc2原因後面會說明,到此僅為說明access收到帶vlan的幀的處理方法。

(2)這句需要解釋的有兩點

第一,trunk所屬的vlan是一種不規範說法,或者說沒有這種說法,實際上就是本征vlan,或者說trunk的pvid。隻是說成trunk所屬的vlan比較好了解。

第二,後面的說法并不嚴謹,隻是為了和(1)做比較,實際上trunk收到帶vlan的幀和自己的vlan(pvid)不相同,則比較是否是自己允許通過的vlan,是轉發,不是丢棄。

總結:trunk配置成隻允許本征vlan(pvid)通過此時和access并無不同之處。

(3)這句無需解釋就是正常的處理過程

(4)這句還可以參考(1)中的實驗

pc2到pc1的通信過程,pc2發資料給pc1時,sw2的2口收到資料打上vlan10的tag轉給sw2的1口,sw2的1口在發送時去掉tag轉發,此時sw1的2口(trunk)收到不帶vlan的幀,打上自己的pvid,此時自己的vpid是1,而pc1屬于vlan10是以pc1無法ping通pc2,因為資料回不去。此時修改trunk的pvid為10,pc1和pc2即可互相ping通(access和trunk口相連可以實作通信也變相說明兩者無本質差別)。

由上可見,trunk和access并無本質差別,所謂的本征vlan,native vlan,pvid本質上就是trunk所屬的vlan而已。trunk和access在處理資料時也沒有本質上的差別,過程上完全相同。隻是access不允許多個vlan通過,是以處理資料時比trunk少了一步判别。

所屬vlan 允許通過vlan
access 隻能 1個 (即劃入的vlan) 隻能1個即劃入的vlan
trunk 隻能1個(即pvid) 任意個

之是以設計成這樣,我覺得和底層的實作有關,access和trunk在程式處理過程中是一樣的,隻是access少了一步判别而已。

再次說明,以上隻是本人猜測。不對之處還請大家指出,多謝!

繼續閱讀