ifconfig是干嘛的
由
pi@raspberrypi:~ $ man ifconfig
知其名字,ifconfig取自configure a network interface,即配置网络接口。
在描述中知,如果没有额外的参数,它会显示当前活动接口的状态。
试一下,得到...
ifconfig默认输出内容解释
为方便注释,我将输出结果复制到下方的代码段中
pi@raspberrypi:~ $ ifconfig
# 输出结果显示我的树莓派目前有三个活动的接口:eth0、lo、wlan0
# eth0表示编号为0的以太接口,也就是第0号以太网卡,也就是树莓派那个插网线的口对应的网卡
eth0 Link encap:Ethernet HWaddr b8:27:eb:6c:af:70
# Link encap:Ethernet 链路封装格式为以太网封装格式
# HWaddr b8:27:eb:6c:af:70 硬件地址为b8:27:eb:6c:af:70
UP BROADCAST MULTICAST MTU:1500 Metric:1
# UP 网卡处于开启(活动)状态
# BROADCAST 网卡支持广播
# MULTICAST 网卡支持多(组)播
# MTU:1500 MaximumTrasmission Unit,最大传输单元为1500字节
# Metric:1 路由度量值为1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
# 接收、发送包情况统计
collisions:0 txqueuelen:1000
# collisions:0 冲突情况为0
# txqueuelen:1000 传输缓冲区长度
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
# 接收、发送字节情况情况统计
# lo loopback,环回接口,
# 用来允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信
lo Link encap:Local Loopback
# 封装方式这里注明本地环回,当这个接口(网卡)接到IP层的IP数据报时,
# 不进行封装(当然也不会发出),而直接将其返回对应的接收程序
inet addr:127.0.0.1 Mask:255.0.0.0
# inet addr:127.0.0.1 IP地址为:172.0.0.1
# Mask:255.0.0.0 子网掩码为:255.0.0.0
inet6 addr: ::1/128 Scope:Host
# inet6 addr: ::1/128 IPv6地址为0:0:0:0:0:0:0:1,
# 其后的/128是子网掩码的另一种表示方法,表示子网掩码的前128位都是1
# Scope:Host表示目的地址范围为主机
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:306 errors:0 dropped:0 overruns:0 frame:0
TX packets:306 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:25688 (25.0 KiB) TX bytes:25688 (25.0 KiB)
# 同上一接口注释
wlan0 Link encap:Ethernet HWaddr b8:27:eb:39:fa:25
inet addr:192.168.253.5 Bcast:192.168.253.255 Mask:255.255.255.0
# Bcast:192.168.253.255 广播地址为192.168.253.255
inet6 addr: fe80::e568:5216:fdbd:a73d/64 Scope:Link
# Scope:Link表示目的地址范围为局域网
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
# RUNNING 这里比eth0多了一个RUNNING,表示接口已连接
RX packets:465728 errors:0 dropped:38 overruns:0 frame:0
TX packets:206399 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:111588378 (106.4 MiB) TX bytes:55152876 (52.5 MiB)
pi@raspberrypi:~ $
关于Link encap
即该接口封装IP包的方式,如前面展示的Link encap:Ethernet,我自己有两种理解:
一种是你的IP层处理程序将IP报文传给这个接口的处理程序后,这个接口的处理程序会将其封装为如Ethernet格式的以太网帧。
另一种,物理接口上,即网卡层面上,告知你的系统要将数据封装成Ethernet帧的格式后,才能将它给这个物理接口,让这个物理接口转为光电形式后发出,才能被接收方的物理接口识别并接受。
这里就涉及到链路层的数据帧封装方式,即针对不同的线路(有线、无线,有线中的双绞线、网线、光纤,无线中的WiFi、蓝牙等),你需要把上一层的数据到接口这里再封装成不同的格式(具体来讲就是在上层数据的前面再添加一些说明数据,这称为链路层数据帧的头部,还有些还需要在上层数据内容结束后再添加一些说明数据,同理,被称为链路层数据帧的尾部),这样在通过这些不同介质上的不同设备发送和接受的过程中,才能进行合适的处理。甚至于对相同的实体线路,都有不同的封装格式。
比如这个主机ifconfig显示的就有一个封装格式为PPP的接口 图片来源:[how to get ip address of a PPP(Point-to-Point Protocol) network interface?](http://serverfault.com/questions/623070/how-to-get-ip-address-of-a-ppppoint-to-point-protocol-network-interface)截图 有兴趣的可以去看看,网页中还给出了这个接口通常的物理接口样子 其实就是我们一般连显示器的串口了关于Scope
Scope | 描述 |
---|---|
global | 该IP是公共IP,在互联网任一处使用有效 |
site | 仅在IP是IPv6时有效 |
link | 该IP是局域网IP,局域网内有效 |
host | 该IP是本地环回,仅在本主机内使用 |
Scope的值通常取决于IP而不是通过命令设置。
关于那些大写单词
标示 | 描述 |
---|---|
UP | 该接口处于开启状态(连接这个网卡计算机会有反应) |
BROADCAST | 该接口支持发送广播 |
RUNNING | 该接口处于连接状态(可以传数据啦) |
MULTICAST | 该接口支持发送多(组)播 |
ALLMULTI | 该接口接收所有多(组)播包 |
PROMISC | 该接口为混杂模式,即该接口接收所有经过它的数据流 |
... | ... |
拓展阅读
-
第五章、Linux常用網路指令
这是Linux入门经典:鸟哥的Linux私房菜 中的内容,上面网站是鸟哥的个人网站。
参考
网络基础知识书籍相关参考
-
TCP/IP详解 卷1:协议
本书,据作者前言,时间为1993年10月,表其内容至今已有近25年的时间了,我手头的中文版本是2005年11月第1版第19次印刷。内容里作者用的还是全公网IP地址,因为定义私有地址的RFC 1918要在96年2月才发布,更别提后来的IPv6了,但无损其作为网络经典书籍。好在其已获得更新,中文新版:TCP/IP详解 卷1:协议(原书第2版)
ifconfig显示内容解释相关参考
-
[ifconfig] What ist 'link encap'?
关于Link encap的解释 -
IPv6
关于IPv6地址::1的写法参考 -
ip address scope parameter
关于显示结果中Scope内容的一些说明,以及其援引的网址:C.2. ip address 中Table C.2. IP Scope under ip address关于Scope的一些说明 -
What is the interface scope (global vs. link) used for?
这是路由表中的Scope参数的一些说明,与ifconfig显示的Scope类似 -
C.1. ifconfig
其中的Table C.1. Interface Flags解释了显示结果中的UP BROADCAST MULTICAST等字眼的意思 -
What does RUNNING in ifconfig output mean?
关于RUNNING的解释
网友评论