写在前面
ip addr命令是我们日常工作中经常使用到一个命令,但是也无非就是看下我本机的IP地址是啥,其实该命令还会返回许多其他的信息,本文就一起来详细的看下吧!
1:正文
随便在一台Linux服务器执行ip addr
都会得到类似如下的结果:
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:99:e2:98 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.106/24 brd 192.168.10.255 scope global noprefixroute dynamic ens33
valid_lft 21246sec preferred_lft 21246sec
inet6 fe80::5ce3:d4c8:5a7d:326e/64 scope link noprefixroute
valid_lft forever preferred_lft forever
这里的信息很多,我们分别来看下都是什么意思。
1.1:容易让人迷糊的CIDR
像1: lo 2: ens33
代表的是网卡信息,我们在抓包时就是基于网卡来进行的。
看这行信息inet 192.168.10.106/24 brd 192.168.10.255 scope global noprefixroute dynamic ens33
,简单讲这一行显式的就是IP地址信息,广播地址信息等,但要讲清楚还是要从IP地址的划分开始说起,最初,IP地址被划分为5类,即ABCDE,如下图:
其中前n位代表的是属于哪一类IP地址,剩下的位分为两部分,第一部分是代表网络号,也就是代表属于哪个局域网,第二部分是主机号,即划分网络中的主机的,所以网络号也就决定了一个网络中可以有多少台主机,具体如下表:
看到这个表格,有个问题不知道你注意到没有,那就是对于A类,B类地址主机数太多了,根本就没有那么多大的公司或者是组织需要这么多的主机,而对于C类地址主机数又太少了,一个中型公司都不够用的。那么为了解决这个旱的旱死,涝的涝死
的问题就提出了CIDR
,即无类型域间路由,全称Classless Inter-Domain Routing,其格式是ip地址/网络位长度
,比如上述结果中的192.168.10.106/24
就是,这样我们就可以灵活调整网络位的长度来动态划分满足对应主机数量的子网了。因为CIDR又引入了其他的一些概念,比如广播地址和子网掩码,其中如果是主机位全为1就是广播地址,对于192.168.10.106/24
的广播地址就是192.168.10.255
,如果是网络为全部变为1,主机位全部变为0就是子网掩码。广播地址的作用呢就是发送消息到局域网中的所以主机,而子网掩码的作用就是计算一个IP地址对应的网络号是什么,比如192.168.10.106/24
IP地址就是192.168.10.106
,和子网掩码做AND运算,即192.168.10.106 AND 255.255.255.0
,结果就是192.168.10.0,所以192.168.10.106/24
对应的网络地址就是192.168.10.0。这里需要注意,网络位长度并不是一定是8的整数倍,只是这样更好换算而已,比如可以参考这篇文章 。
inet 192.168.10.106/24 brd 192.168.10.255 scope global noprefixroute dynamic ens33
中的scope global代表网卡是可以是对外的,scope host就是只能用于本机通信,经过内核处理后直接返回,不会在任何网络中出现。比如回环网卡1: lo
就是这样子。
1.2:MAC
link/ether 00:0c:29:99:e2:98 brd ff:ff:ff:ff:ff:ff
就是mac地址的信息,mac地址用于局域网内的通信。如果是跨局域网就必须使用到IP地址了,比如从192.168.0.2/24 到 192.168.1.2/24,这是因为IP地址本身具有很强大的定位功能,而mac是比较弱的。但是在一个局域网环境内通过MAC来通信又是最简单的。
1.3:ip v6
inet6 fe80::5ce3:d4c8:5a7d:326e/64 scope link noprefixroute
是IPv6的信息,ipv6是为了解决IPv4地址不够用而提出的一种新的IP地址表示方式。
1.4:其他信息
<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
,含义如下:
BROADCAST:支持广播
MULTICAST:支持多播
UP:网卡是启动的
LOWER_UP:表示 L1 是启动的,也即网线插着呢。
mtu 1500:MTU是1500
qdisc pfifo_fast:qdisc代表数据包的发送方式,pfifo是简单的先进先出,pfifo_fast 是分为3个波段,
即3个不同优先级的队列,band 0 的优先级最高,band 2 的最低。如果 band 0 里面有数据包,
系统就不会处理 band 1 里面的数据包,band 1 和 band 2 之间也是一样。
数据包是按照服务类型(Type of Service,TOS)被分配到三个波段(band)里面的。TOS 是 IP 头里面的一个字段,
代表了当前的包是高优先级的,还是低优先级的。