PPPoE的封裝結構(經典:解釋了PPPoE中虛擬網卡的作用)

來源:互聯網
上載者:User

起因:

昨天跟幾個研究生調接入網實驗室的裝置,
完了後抓了下PPPoE的包,
發現封裝很奇特,類似如下:



172.16.1.118和172.16.1.116是兩台機器PPPoE撥號後伺服器分給的地址。

從理論上來講,ping一下,抓到的幀的封裝應該是這樣的:
icmp
ip
ppp
pppoe
mac

感覺這個事情和原理不符合。

又因為之前無意抓過一次,看到了ppp的層。
那次得到的兩個地址是不同子網的,
於是得到了一個結論,
說在同一子網的資料包不經過ppp封裝。(錯)

原理探討:

ppp撥號前應該有一個地址IP,
撥號有一個地址IP(PPP)。

如果是使用前者通訊,
則應該是IP之後直接走到MAC層。
同一內網使用者就是這樣乾的,
所以PPPoE對內網使用者缺乏有力的控制。

如果是使用後者通訊,
那麼不管兩台機器的物理位置如何,
都得和伺服器建立虛串連,
從伺服器那裡繞一圈回來通訊。

在上面的例子中,
用的是PPPoE伺服器給的兩個地址來ping。
所以應該是具有PPP封裝的才對。

上午和老師討論過,
認為現象上確實存在問題,
於是下午重新抓了下包。

抓包的操作問題:

這裡非常感謝cong哥犀利的眼光,
一來就發現了是選擇網卡的問題。
原來選擇物理網卡可以抓出這樣的包:



注意Wireshark這個是低層次放在上面。
這樣出來的結果就是和理論完全符合的了。

--

所以可見昨天的現象純屬巧合了。
當抓不同子網的時候,恰好選到了物理網卡。
當抓同一子網的時候,選到了ppp的虛擬網卡。
這就出現了前面那個彆扭的錯誤結論。

深層次的問題:

在撥號之後,會出現一個ppp的虛擬網卡。
這應該算是系統實現上的巧妙之處吧。

預設路由指向ppp網卡出去的網關,
那麼當使用者在內網互動的時候,
可以直接走MAC,
除此之外,都從ppp這邊交出去。

而實際實現中,並不是像我們想象的,
各個實體從上倒下依次堆疊。
依次堆疊出來的效果將是,
IP實體需要知道某個包應該由哪個下層去交付,
才能夠決定給MAC還是ppp。
這樣會涉及到改變IP實體的實現,不是很科學。

系統的解決辦法是出現一個新的網卡,
從IP的角度來看,他還是交給了一個MAC實體。
就像第一幅抓包出來的圖一樣,
這裡一樣看得到一對MAC地址。

該網卡是ppp虛擬出來的網卡,
它很清楚應該怎樣封裝ppp和pppoe,
然後填上自己的mac和伺服器的mac。
所以都準備好後,
這時才交給物理網卡處理。

這樣就很好地解釋為什麼兩個網卡上抓出來的不一樣了。

這種並列的結構應該是一種巧妙的實現,
相比堆疊的結構,不會導致上層的改變。


cap檔案下載。
兩種網卡下抓的包,
附帶PPPoE串連和斷開過程。

引用:http://hi.baidu.com/hplonline/blog/item/0832b63e8f9c6cf6838b13fb.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.