Linux 网络设备理解
发布时间
阅读量:
阅读量
网络层次
linux网络设备驱动与字符设备和块设备存在显著差异
Linux内核中的网络子系统设计遵循不依赖于具体硬件设备及不依赖于特定网络协议的思想。例如任何网卡驱动或任何网络协议都会映射到相应的统一驱动程序上。
Unix系统的网络协议栈分为四层:
其中,
第一部分为网络协议接口功能模块,
第二部分为网络设备接口管理模块,
第三部分为设备驱动功能实现模块,
最后一部分为网络介质管理模块

下面只分析下linux是如何实现网络设备的设备无关性及协议无关性。
网络协议接口层主要负责向上传输层提供透明的数据包发送与接收界面。
在发送数据包的过程中, ARP协议或者IP 协议都将利用这一层面中的 dev_queue_xmit() 函数来发送该数据 包。
上传输层接收到数据 包的时候, 通过 netif_rx() 函数进行处理。
其中最为关键的是一个重要的实体 sk_buff。
网络设备接口层:为各种多变的网络设备建立统一而抽象的数据结构 net_device 体,并实现多种硬件在软件层面的统一。这种设计不考虑具体的设备类型。
net_device 体代表内核中的一个网
全部评论 (0)
还没有任何评论哟~
