network interface card 网络接口卡

NIC: network interface card  网络接口卡


ATS:asynchrounous transfer mode 异步传输总线

套接字:源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。
它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

NIC驱动程序不通过/dev或/sys来与用户空间通信,应用程序是通过网络接口与NIC驱动程序互操作的,网络接口对底层的协议进行抽象。

驱动程序数据结构,3类操作

1. 形成网络协议的数据结构,套接字缓冲区,定义在Include/linux/sk_buff.h文件中的结构体SK_buff ,是内核TCP/IP使用的关键字体

2.定义NIC驱动程序和协议间结构的数据结构, include/linux/netdevice.h文件中的结构体net_device是构成该接口的核心体。

3.与IO总线相关的结构体,PCI及派生总线如NIC使用的总线。

sk_buff为linux网络层提供了高效的缓冲区处理和流量控制机制。用5个域将自身与数据包缓冲区联系起来。

套接字缓冲区

head   指向数据包开始

data    指向数据包载荷的开始

tail    指向数据包载荷的尾部

end   指向数据包的结束

len   数据包含的结束。


skb->head

skb->data

skb->tail

skb->end

网络设备接口

alloc_netdev() 分配一个net_device结构体

register_netdev(netdev)向网络层注册net_device

驱动程序从eeprom读取NIC的MAC(media access control ,媒体介入控制)地址。若需要,配置WOL  (wake on lan)网络唤醒MAC 48位比特全球唯一地址。

若NIC 需要卡上固件(on-card)  驱动程序用request_firmware()下载。


net_device接口需要传统的方法。如open(),close(),ioctl()如果用ifconfig等工具激活它,内核打开一个接口

bash>ifconfig eth0 up

request_irq() 注册NIC中断处理程序

发送路径

hard_start_xmit()的函数,协议层在发送时调用它来向下传递数据包:

netdev->hard_start_xmit=&mycard_xmit_frame

流量控制

netif_start_queue()

netif_stop_queue()来告知已经做好准备或还不能接收协议数据

接收路径

netif_rx(skb)

ISA网络驱动程序


Isa探测犯方法通过查找一个签名sinature(芯片ID)来探测出控制器的IO基址

cs89x0_probe1()探测,然后读出芯片当前配置。访问EEPROM并获得控制器的MAC地址。

通过netif*()和skb_*()接口例程来建立cs89x0.c

ATM; asychronous transfer mode 异步传输模式

QOS:quality of  service

数据结构

sk_buff   include/linux/skbuff.h      


net_device    include/linux/netdevice.h            NIC驱动程序和TCP/IP协议接口


内核编程

alloc_netdev() net/core/dev.c   分配net_device

alloc_etherdev()                net/ethernet/eth.c alloc_netdev()封装

register_netdev() net/core/dev.c         注册net_device

unregister_netdev() net/core/dev.c 注销net_device

netif_queue_stopped()  include/linux/netdevice.h  检查流控状态

netif_device_detach() net/core/dev.c       分离设备

netif_device_attach() net/core/dev.c 附着设备

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值