本文主要講解了linux 二層協議架構組織,使用的核心的版本是2.6.32.27
為了方便理解,本文採用整體流程圖加偽**的方式從核心高層面上梳理了linux 二層協議架構組織,希望可以對大家有所幫助。閱讀本文章假設大家對c語言有了一定的了解
linux中1層2層標準化及在linux系統中的實現位置如下所示
1層和2a層(mac)層體現了不同網路介質的區別,在linux的裝置驅動中實現;2b層(llc)則對上提供了統一的介面,在linux的核心中實現該部分
linux在網路架構中的活動形式如下
1-4層是在核心中進行的,交付應用程式處理的資料報文是在使用者空間進行的,具體的情參考我的前兩篇部落格
linux核心二層資料報接收流程
linux核心資料報的傳送傳輸
對於llc層的協議控制資訊及擴充套件資訊如下
所有的協議報文,都通過鏈路層的協議指示標明三層需要哪個協議例項處理,通過eth_type_trans() 就可以知道了,我們分析一下源**
/*某一mac協議型別的全部網路裝置都是使用相同的---xx_type_trans,
* 如 tr_type_trans() --- 令牌環王
* fddi_type_trans() --- fddi網路
*/__be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev)
else if (1 /*dev->flags&iff_promisc */ )
; /*如果長度大於1536(最大幀長度),那麼他是802.3相容乙太網卡,協議欄位在eth->h_proto中標識*/
if (ntohs(eth->h_proto) >= 1536)
return eth->h_proto;
rawp = skb->data;
if (*(unsigned short *)rawp == 0xffff)
return htons(eth_p_802_3);
/* * real 802.2 llc,
* 802.2的協議頭返回後,被當做三層報文處理,
* 協議處理被雜湊在ptype_base中,協議處理函式為p8022_rcv()
* 對應的三層協議可以通過 register_8022_client() 將自己的處理函式註冊到p8022_rcv()中
* 如果 register_8022_client(0xaa, snap_rcv)就將snap的三層處理函式註冊進去了
*/return htons(eth_p_802_2);
}
二層架構與三層架構記述
二層架構的缺點 如果功能不需要經常變化或修改,則是乙個比較好而且快的實現方式.但是在使用者介面,都是通過sqldatasource控制項來連線資料來源的,並將sql語句直接寫入到各個頁面的html 中 因此帶來的問題是 sql語句與html 的混合程式設計,不利於各類開發人員的分工合作,如頁面設計人...
網路交換網路實驗 二層架構
一 實驗拓撲 二 實驗過程 1 介面部分 1.建立vlan 2.介面劃入vlan 3.trunk幹道 分流預設基於源目ip 4.配置幹道 2 生成樹 1.配置 2.調根埠 sw1 stp instance 1 root primary sw1 stp instance 2 root secondar...
trill大二層 TRILL大二層網路解決方案
資料中心的高速匯流排 trill 大二層網路解決方案 zdnet 出處 部落格 2012 07 12 06 12 在雲計算時代下,資料中心內部一般採用分布式架構處理海量資料儲存 挖掘 查詢 搜尋等相 關業務,伺服器和伺服器之間需要進行大量的協同工作,在伺服器之間產生了大量的東西向流量。其次,資料中心...