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、蓝牙等),你需要把上一层的数据到接口这里再封装成不同的格式(具体来讲就是在上层数据的前面再添加一些说明数据,这称为链路层数据帧的头部,还有些还需要在上层数据内容结束后再添加一些说明数据,同理,被称为链路层数据帧的尾部),这样在通过这些不同介质上的不同设备发送和接受的过程中,才能进行合适的处理。甚至于对相同的实体线路,都有不同的封装格式。
因为这个格式是制定出来让大家去遵守的规范,所以在上面的图中以太网封装的后面有个括号,里面写着RPC 894,意思就是,在RPC 894这份协议中写明了通过以太网传送的数据应该以这个格式去封装。
常见的链路层数据帧封装格式还有PPP(Point-to-Point Protocol)封装格式等(在学习计算机网络的时候你会学到好几种封装格式)
关于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的解释