龙华营销型网站建设公司,使用他人注册商标做网站,做企业网站用二级域名好吗,wordpress 国内目录
ifconfig
Ifconfig输出各字段简述
txqueuelen
RX和TX的errors指哪些错误
dropped与overruns的区别
常用ifconfig配置命令
显示网卡信息
启动关闭指定网卡
配置和删除ip地址
修改MAC地址
启用和关闭ARP协议
设置最大传输单元
设置网卡的promiscuous模式
设置…目录
ifconfig
Ifconfig输出各字段简述
txqueuelen
RX和TX的errors指哪些错误
dropped与overruns的区别
常用ifconfig配置命令
显示网卡信息
启动关闭指定网卡
配置和删除ip地址
修改MAC地址
启用和关闭ARP协议
设置最大传输单元
设置网卡的promiscuous模式
设置网卡的多播模式
配置和删除IPv6地址
配置txqqueuelen
ethtool
netstat ifconfig
关于此工具找到一篇雄文note/ifconfig.md at master · vikyd/note · GitHub
Ifconfig输出各字段简述
以下图的Ubuntu系统为例 字段eth0
含义网卡名网卡驱动里定义的名称这个没什么好说的。 字段flags
示例flags4163UP,BROADCAST,RUNNING,MULTICAST
含义表示当前网卡的状态此列表并非可操作的命令
详细
UP表示网卡已启动interface is up无 UP 则表示网卡未启动ifconfig -a 显示未启动网卡
BROADCAST网卡的广播地址有效broadcast address valid. Volatile
RUNNING网卡已连接到路由器等设备interface RFC2863 OPER_UP. Volatile
与UP的区别UP 表示网卡本身启动了RUNNING 表示是否连接到了路由器等设备。
MULTICAST可以发送组播包或说多播Supports multicast
关于4613的这个数字怎么来的请查看雄文原文这里不多提了。 字段mtu
示例mtu 1500
全称Linux 文档中称为Maximum Transfer Unit维基百科中称为Maximum Transmission Unit
含义最大传输单元指链路层第 2 层的 frame 的 payload负载的最大大小Linux 中 MTU 对发送和接收都起作用。
单位Byte
详细为什么mtu通常是1500请查看原文。 字段inet
示例inet 10.10.10.11 netmask 255.255.240.0 broadcast 10.10.10.255 中的 10.10.10.11
全称Internet
含义TCP/IP 的 IPv4 地址IPv6 的字段为inet6
理解互联网基于TCP/IP 协议族protocol family所以通常inet指IP地址
类型除了inet还可能会有inet6、ax25、ddp、ipx、netrom 等类型 字段netmask
示例netmask 255.255.240.0
全称IP network mask
中文子网掩码 字段broadcast
示例broadcast 10.10.10.255
全称IP broadcast address
中文广播地址 字段inet6
示例inet6 fe80::215:5dff:fef6:a8e7
全称类似前面 inet
含义TCP/IP 的 IPv6 地址 字段prefixlen
示例prefixlen 64
全称prefix length
含义表示此地址的前64位是网络前缀作用类似于IPv4的子网掩码 字段scopeid
示例scopeid 0x20link
全称scope id
含义0x20link 表示 IPv6 的 Link-Local类型地址 字段ether
示例ether 42:01:0a:aa:00:03
全称Ethernet
中文以太网
含义表示网卡的 MAC 地址
理解对应第 2 层链路层的Ethernet协议 字段txqueuelen
示例txqueuelen 1000
全称transmit queue length
理解发送数据时qdiscQueuing Disciplines队列的大小
单位sk_buffsocket buffer
详细txqueuelen 是一个比较长的话题见后面txqueuelen小节 字段RX 与 TX
示例
RX packets 69426519 bytes 20960261647 (19.5 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 73886979 bytes 15013465511 (13.9 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
这两个大字段数据主要 来源于 /proc/net/dev查看cat /proc/net/dev
参考Linux输出 /proc/net/dev的源码 字段RX
示例
RX packets 69426519 bytes 20960261647 (19.5 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
全称Received
含义网卡接收数据的统计
字段
packets 69426519成功接收到的数据包数量
单位sk_buff与第 2 层链路层的frame的数量相等
注意这不是第3层网络层的单位packet
bytes 20960261647 (19.5 GiB)数据 各层header的字节数量
换算CentOS 貌似常按 1024 换算成 GiBUbuntu 貌似常按 1000 换算成 GB参考 man 7 units
errors出错的包数量
单位sk_buff
注意此数值不等于后面 dropped、overruns、frame字段的总和原因见后面 RX的errors指哪些错误小节
droppedLinux 内核对应的sk_buff满了导致的丢包
单位sk_buff
可能原因之一Linux系统内存不足导致从网卡拷贝数据到系统内存时丢包
overrunsLinux 内核对应的Ring Buffer满了导致的丢包
单位sk_buff
可能原因之一CPU 很忙无法及时处理网卡申请的中断
对应 Linux Kernel 的 rx_fifo_errors
注意详细见后面dropped与overruns的区别小节
frame指第2层链路层的frame的bit数不能被8整除不符合帧的定义的错误
单位sk_buff
可能原因之一网卡、交换机等硬件故障导致
详细见后面RX和TX小节 字段TX
示例
TX packets 73886979 bytes 15013465511 (13.9 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
全称Transmitted
含义网卡发送数据的统计
字段
与 RX 同名的字段略过
errors与前面 RX 的 errors 包含的错误类型有些不一样
carrier硬件调制信号modulation of signal导致的出错包数量
collisions冲突的包数量
txqueuelen
txqueuelen是发送数据时qdisc的允许队列大小txqueuelen 的单位是 sk_buffsocket buffer发送数据时应用层的数据经过内核协议栈的层层封装后先到达qdisc之后才到达Ring Buffer就是下图中的Driver queueRing Buffer是一个简单的FIFO先进先出队列但太简单所以出现了qdisc 提供灵活的流量控制功能。 RX和TX的errors指哪些错误
RX错误类型包括
rx_frame_errors对应ifconfig 的frame表示非对齐的帧这种错误一般出现在物理层
rx_crc_errors不对应ifconfig 的任何字段表示帧校验错误这种错误一般出现在物理层
rx_length_errors不对应ifconfig的任何字段
rx_fifo_errors对应ifconfig的overruns
这些错误类型可能因不同网卡而不同
错误类型 不一定 包括
rx_dropped对应ifconfig的dropped TX错误类型包括
tx_window_errors不对应 ifconfig 的任何字段
tx_aborted_errors不对应 ifconfig 的任何字段
tx_carrier_errors对应 ifconfig 的 carrier
tx_fifo_errors对应 ifconfig 的 overruns
这些错误类型可能因不同网卡而不同
错误类型不包括
tx_dropped对应 ifconfig 的 dropped
dropped与overruns的区别
dropped与overruns是指两种不同的丢包情况。
要了解两者的区别需首先了解Linux内核中的 网络数据流转机制。
以接收数据为例
1网卡驱动在内存中分配一片缓冲区用来接收数据包叫做sk_buff
2将上述缓冲区的地址和大小即接收描述符加入到rx ring buffer。描述符中的缓冲区地址是 DMA 使用的物理地址
3驱动通知网卡有一个新的描述符
4网卡从rx ring buffer中取出描述符从而获知缓冲区的地址和大小
5网卡收到新的数据包;
6网卡将新数据包通过 DMA 直接写到sk_buff中
注意上述流程有几个可能容易模糊的概念
网卡驱动这是跑在 Linux 中的程序而非跑在网卡硬件中
sk_buff存在于 Linux 内存中可以在不同的网络协议层之间传递在 Linux 源码中的定义见 skbuff.hsk_buff 是真正存放网络数据的位置。
rx ring buffer是一个 FIFO先进先出队列队列的内容并不是真正的网络数据而是一些指向 sk_buff 的描述符。
再次看下这个图可能会更清晰 了解上述流程后可以开始说两者的区别了
droppedsk_buff 满了新的数据写不进 sk_buff 导致的丢包
可能原因之一Linux系统分配的内存不足导致从网卡拷贝数据到系统内存时丢包。
overrunsring buffer 队列满了队列暂无可用的描述符导致的丢包。在 ifconfig 源码实际就是 rx_fifo_errorsrecvr fifo overrun
可能原因之一CPU 很忙无法及时处理网卡申请的中断
总之大概可理解为一个是指针满了overruns一个是内存满了dropped
ring buffer满了不代表buffer满了可能是因为每个指针指向的buffer数据都很小当有一段相对小帧数据过来需要的消耗的指针数量大于ring buffer的当前容量sk_buff 满了也不代表 ring buffer满了可能是因为每个指针指向的buffer数据较大大到当前的socket buffer装不下此数据。
常用ifconfig配置命令
显示网卡信息
(1) 显示激活的网卡信息
ifconfig
(2) 显示所有的网卡信息
ifconfig -a
(3) 显示简要的网卡信息
ifconfig -s
启动关闭指定网卡
(1) 关闭网卡
ifconfig eth0 down
(2) 启动网卡
ifconfig eth0 up
配置和删除ip地址
(1) 配置ip
// 配置ip地址
ifconfig eth0 192.168.1.100
// 配置ip地址和子网掩码
ifconfig eth0 192.168.1.100 netmask 255.255.255.0
// 配置ip地址、子网掩码和广播地址
ifconfig eth0 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
(2) 单网卡添加多个IP地址
ifconfig eth0:0 192.168.1.100 netmask 255.255.255.0 up
ifconfig eth0:1 192.168.2.100 netmask 255.255.255.0 up
(3) 删除IP地址
ifconfig eth0 del 192.168.1.100
修改MAC地址
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
启用和关闭ARP协议
(1) 启用arp
ifconfig eth0 arp
(2) 禁用arp
ifconfig eth0 -arp
设置最大传输单元
ifconfig eth0 mtu 1500
设置网卡的promiscuous模式
(1) 启用
ifconfig eth0 promisc 指网卡能够接收所有经过它的数据流而不论其目的地址是否是它。
(2) 禁用
ifconfig eth0 -promisc
设置网卡的多播模式
(1) 启用
ifconfig eth0 allmulti
(2) 禁用
ifconfig eth0 -allmulti
配置和删除IPv6地址
(1) 添加
ifconfig eth0 add 3ffe:3240:800:1005::2/64
(2) 删除
ifconfig eth0 del 3ffe:3240:800:1005::2/64
配置txqqueuelen
ifconfig eth0 txqqueuelen 1500
ethtool
ethtool查询或控制网络驱动程序和硬件设置。利用ethtool可以根据需要更改以太网卡的参数包括自动协商、速度、双工和局域网唤醒等参数。
命令格式ethtool [options] [devname]
Option说明
-a, --show-pause 查看网卡中接收模块RX、发送模块TX 和 Autonegotiate模块的pause帧流控状态启动on或停用off。
-A, --pause devname [autoneg on|off] [rx on|off] [tx on|off] 修改网卡中接收模块RX、发送模块TX和Autonegotiate 模块的pause帧流控状态启动on或停用off。
-c, --show-coalesce 查询指定网络设备的合并信息。
-C, --coalesce 更改指定网络设备的合并设置。
-g, --show-ring 显示指定以太网卡的rx/tx环参数信息。就是上篇文章提到的ring buffer。
-G, --set-ring 更改指定以太网卡的rx/tx环设置。
-i, --driver 显示网卡驱动的信息如驱动的名称、版本等。
-d, --register-dump devname [raw on|off] [hex on|off] [file name] 显示register dump信息部分网卡驱动不支持该选项。
-e, --eeprom-dump devname [raw on|off] [offset N] [length N] 显示EEPROM dump信息部分网卡驱动不支持该选项。
-E, --change-eeprom 修改网卡 EEPROM byte。
-k, --show-features, --show-offload devname 显示网卡 Offload 参数的状态on或off包括 rx-checksumming、tx-checksumming等。就是网卡来做一些事情给CPU减负。
-K, --features, --offload devname feature on|off ... 修改网卡 Offload 参数的状态。
-p, --identify devname [N] 用于区别不同 ethX 对应网卡的物理位置常用的方法是使网卡 port 上的 led 不断的闪N 指示了网卡闪的持续时间以秒为单位。
-P, --show-permaddr 向指定的网络设备查询永久硬件地址。
-r, --negotiate devname 如果auto-negotiation 模块状态为on则restarts auto-negotiation。
-S, --statistics 显示 NIC- and driver-specific 的统计参数如网卡接收/发送的字节数、接收/发送的广播包个数等。
-t, --test 让网卡执行自我检测有两种模式offline or online。
-s, --change 修改网卡的部分配置包括网卡速度、单工/全双工模式、MAC地址等。
-h, --help 显示帮助信息。
--version 显示版本信息。
参考文章(24条消息) Linux 命令194—— ethtool 命令_ethtool命令详解_恋喵大鲤鱼的博客-CSDN博客
netstat
该命令经常用于查看网络连接状态
下面是它的一些参数
-a:显示所有选项
-t:仅显示tcp相关选项
-u:仅显示udp相关选项
-n:不显示别名
-l:仅列出处于监听状态下的服务
-p:显示建立相关链接的程序名
-r:显示路由信息、路由表
-e:显示扩展信息如uid
-s:按各个协议进行统计
-c每隔一段事件执行netstat