当我们在 Linux 命令行中输入 ip addr 时,你真的能完全读懂输出内容吗?
root@test:~# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff inet 10.100.122.2/24 brd 10.100.122.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::f816:3eff:fec7:7975/64 scope link valid_lft forever preferred_lft forever
上面是我在我的虚拟机的命令行中输入 ip addr 得到的输出内容,命令的输出显示了本机上的所有网卡。这篇笔记就围绕着这一段输出内容展开。
IP地址
IP地址是网卡在网络世界中的通讯地址。在命令的输出中,10.100.122.2 就是一个IP地址。IP地址总共32位,由三个点平均分成四段,每一段是8 bit。然而,由于当时在设计IP地址的时候没想到计算机发展的如此之快,导致32位的IP地址很快就不够使用了。因此就有了现在的IPv6地址,也就是输出结果中的 fe80::f816:3eff:fec7:7975/64。IPv6由十六进制表示,总共128位,平均分成八段,每段16 bit就目前来看是已经够用了。
scope
在IP地址后面有一串 scope global eth0 和 scope host lo,对于 eth0 这张网卡来说,是global,说明该网卡是可以对外的,可以接收来自各个地方上的包。而对于 lo(全称 loopback) 来说,是 host,只能供本机相互通信。
MAC地址
在IP地址上一行有一串 link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff,这个被称为MAC地址,也就是网卡的物理地址,使用十六进制表示,总共6字节。它相当于网卡的身份证号,号称是全球唯一的,从网卡出厂的那一刻开始,它就被打上了唯一的烙印。
那既然都是唯一标识了,为什么不能直接使用MAC地址在网络上进行通信呢?这里可以参考之前的学习笔记:有了MAC地址,我们为什么还需要IP地址?。总结来说就是,MAC可以看作身份证,唯一但缺乏定位功能;IP地址可以看作现居住地址,可以通过IP进行定位从而进行通信。
网络设备的状态标识
这一块,<BROADCAST,MULTICAST,UP,LOWER_UP>,被称为 net_device flag(网络设备的状态标识)。
UP,表示该网卡处于启动状态。
BROADCAST,表示该网卡有广播地址,可以发送广播包。
MULTICAST,表示该网卡可以发送多播包。
LOWER_UP,表示L1是启动的,也就是网线正插着呢。
mtu 1500,最大传输单元MTU为1500字节,也就是以太网的默认值。
qdisc pfifo_fast,qdisc的全称为 queuing discipline(排队规则)。计算机如果需要通过网络接口发送数据包,它都需要按照这个接口的排队规则进行排序。最简单的排序规则就是 pfifo,也就是我们常说的先入先出的队列形式。而这里的 pfifo_fast 在 pfifo 的基础上,分为了三个波段(数据包按照 Type of Service(服务类型)分入band),其中 band0 的优先级最高,band2 的优先级最低。
这里再详细说明一下 UP 和 LOWER_UP 的区别:
UP 是三层的状态,接口已经逻辑上起来了。LOWER_UP是指链接物理状态,也起来了。诸如,插上网线,但是把接口ifdown以后,它就是DOWN(逻辑),LOWER_UP(物理)。
原文链接:https://blog.csdn.net/weixin_41960890/article/details/104934585