
Linux下
查看网卡驱动和版本信息查看网卡生产厂商和信号查看基本信息:lspci查看详细信息:lspci -vvv # 3个小写的v查看网卡信息:lspci | grep Ethernet查看网卡驱动查看网卡驱动信息:lspci -vvv # 找到网卡设备的详细信息,包括网卡驱动# lsmod列出加载的所有驱动,包括网卡驱动 查看网卡驱动版本 查看模块信息:modifo<module name> # 其中包含version信息 或 # ethtool-i <device name>RHEL 6.3中的网卡驱动版本:# modinfo igbfilename: /lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/igb/igb.koversion: 3.2.10-klicense:GPLdescription:Intel(R) Gigabit Ethernet Network Driver# modinfo e1000efilename: /lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/e1000e/e1000e.koversion: 1.9.5-klicense:GPLdescription:Intel(R) PRO/1000 Network Driverauthor:Intel Corporation,<linux.nics@intel.com># modinfo e1000filename: /lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/e1000/e1000.koversion: 8.0.35-NAPIlicense:GPLdescription:Intel(R) PRO/1000 Network Driver# modinfo ixgbefilename: /lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/ixgbe/ixgbe.koversion: 3.6.7-klicense:GPLdescription:Intel(R) 10 Gigabit PCI Express NetworkDriver# modinfo r8169filename: /lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/r8169.koversion: 2.3LK-NAPIlicense:GPLdescription:RealTek RTL-8169 Gigabit Ethernet driver查看
网络接口队列数 查看网卡接口的中断信息:#cat /proc/interrupts | grep eth0 或 # ethtool-S eth0查看网卡驱动源码的版本号 解压Intel网卡驱动源码,打开解压缩目录下的*.spec文件查看驱动的版本。 例如:解压e1000-8.0.35.tar.gz网卡驱动后,查看e1000.spec文件。Name:e1000Summary:Intel(R) Gigabit Ethernet ConnectionVersion: 8.0.35Release:1Source:%{name}-%{version}.tar.gzVendor:Intel CorporationLicense:GPLExclusiveOS:linuxGroup:System Environment/Kernel 在驱动源码src目录中查找:#grep DRV_VERSION * # forLinux#findstr DRV_VERSION * # for Windows在e1000_main.c中也能找到定义驱动版本的一行:#define DRV_VERSION"8.0.35" DRV_NAPI DRV_DEBUG DRV_HW_PERF在e1000e中src目录下netdev.c文件:#define DRV_VERSION"3.0.4.1" DRV_EXTRAVERSIONigb_main.c:#define MAJ 5#define MIN 2#define BUILD 9.4#define DRV_VERSION__stringify(MAJ) "." __stringify(MIN) "."\ixgbe_main.c:#define DRV_VERSION__stringify(3.22.3) DRIVERIOVDRV_HW_PERF FP GA \(1)网络接口的命名
这里并不存在一定的命名规范,但网络接口名字的定义一般都是要有意义的。例如:
eth0: ethernet的简写,一般用于以太网接口。
wifi0:wifi是无线局域网,因此wifi0一般指无线网络接口。
ath0: Atheros的简写,一般指Atheros芯片所包含的无线网络接口。
lo: local的简写,一般指本地环回接口。
(2)网络接口如何工作
网络接口是用来发送和接受数据包的基本设备。
系统中的所有网络接口组成一个链状结构,应用层程序使用时按名称调用。
每个网络接口在linux系统中对应于一个struct net_device结构体,包含name,mac,mask,mtu…信息。
每个硬件网卡(一个MAC)对应一个网络接口,其工作完全由相应的驱动程序控制。
(3)虚拟网络接口
虚拟网络接口的应用范围非常广泛。最着名的当属“lo”了,基本上每个linux系统都有这个接口。
虚拟网络接口并不真实地从外界接收和发送数据包,而是在系统内部接收和发送数据包,因此虚拟网络接口不需要驱动程序。
虚拟网络接口和真实存在的网络接口在使用上是一致的。
(4)网络接口的创建
硬件网卡的网络接口由驱动程序创建。而虚拟的网络接口由系统创建或通过应用层程序创建。
驱动中创建网络接口的函数是:register_netdev(struct net_device *)或者register_netdevice(struct net_device *)。
这两个函数的区别是:register_netdev(…)会自动生成以”eth”作为打头名称的接口,而register_netdevice(…)需要提前指定接口名称.事实上,register_netdev(…)也是通过调用register_netdevice(…)实现的。
2、LINUX中的lo(回环接口)
1) 什么是LO接口?
在LINUX系统中,除了网络接口eth0,还可以有别的接口,比如lo(本地环路接口)。
2) LO接口的作用是什么?
假如包是由一个本地进程为另一个本地进程产生的, 它们将通过外出链的’lo’接口,然后返回进入链的’lo’接口.具体参考包过滤器的相关内容。
PART2 实验:
本地一个进程发起连接,到一个本地的daemon监听的内网IP地址(eth1: 10.1.1.1)的端口(8085),此时在eth1上是抓不到包的,在 lo 上抓到,说明使用的是本地回环接口lo,而网络层的IP地址则是内网IP地址.
原
评论列表(0条)