l Linux網絡子系統網絡
l 系統調用接口層:爲應用程序提供訪問網絡子系統的統一方法。數據結構
l 協議無關層:提供通用的方法來使用傳輸層協議。架構
l 協議棧的實現:實現具體的網絡協議設計
l 設備無關層:協議與設備驅動以前通訊的通用接口指針
l 設備驅動程序接口
在Linux內核中,每一個網卡都由一個net_device結構來描述,其中的一些重要成員有:it
l char name[IFNAMSIZ],設備名,如:eth%dio
l unsigned long base_addr,I/O 基地址程序設計
l const struct net_device_ops *netdev_ops;ioc
相似於字符設備驅動中的file_operations結構,net_device_ops結構記錄了網卡所支持的操做。
static const struct net_device_ops dm9000_netdev_ops =
{
.ndo_open = dm9000_open,
.ndo_open = dm9000_open,
.ndo_stop = dm9000_stop,
.ndo_start_xmit = dm9000_start_xmit,
.ndo_do_ioctl = dm9000_ioctl,
.ndo_validate_addr = eth_validate_addr,
.ndo_set_mac_address = eth_mac_addr,
};
相似於字符設備驅動中的file_operations結構,net_device_ops結構記錄了網卡所支持的操做。
static const struct net_device_ops dm9000_netdev_ops =
{
.ndo_open = dm9000_open,
.ndo_open = dm9000_open,
.ndo_stop = dm9000_stop,
.ndo_start_xmit = dm9000_start_xmit,
.ndo_do_ioctl = dm9000_ioctl,
.ndo_validate_addr = eth_validate_addr,
.ndo_set_mac_address = eth_mac_addr,
};
Linux內核中的每一個網絡數據包都由一個套接字緩衝區結構struct sk_buff 描述,即一個sk_buff結構就是一個網絡包,指向sk_buff的指針一般被稱作skb。