爱收集资源网

Linux上的ipaddr和iproute2的区别

网络整理 2023-09-28 20:59

#2:a:3:d:8:4:b:3:7:c:4:f:5:d:8:8:a:8:f:1:a:a:6:4:b:9:6:d:e:1:d:2#

你晓得如何查看 IP 地址吗?

当笔试看到这个问题的时侯,面试者往往会认为走错了屋子。我笔试的是技术岗位啊,怎么问那么简单的问题?

的确,即便没有专业学过计算机的人,只要鼓捣过笔记本,重装过系统,大多也会晓得这个问题的答案:在 Windows 上是 ipconfig,在 Linux 上是 ifconfig。

那你晓得在 Linux 上还有哪些其他命令可以查看 IP 地址吗?答案是 ip addr。如果回答不上来这个问题,那你可能没怎样用过 Linux。

那你晓得 ifconfig 和 ip addr 的区别吗?

这是一个有关 net-tools 和 iproute2 的“历史”故事。想象一下,你登入步入一个被剪裁过的特别小的 Linux 系统中,发现既没有 ifconfig 命令,也没有 ipaddr 命令,你是不是觉得这个系统非但无法用?这个时侯,你可以自行安装 net-tools 和 iproute2这两个工具。当然,大多数时侯这两个命令是系统自带的。

安装好后,我们来运行一下 ip addr。不出意外,应该会输出下边的内容。

root@test:~#ipaddr

1:lo:mtu65536qdiscnoqueuestateUNKNOWNgroupdefault

link/loopback00:00:00:00:00:00brd00:00:00:00:00:00

inet127.0.0.1/8scopehostlo

valid_lftforeverpreferred_lftforever

inet6::1/128scopehost

valid_lftforeverpreferred_lftforever

2:eth0:mtu1500qdiscpfifo_faststateUPgroupdefaultqlen1000

link/etherfa:16:3e:c7:79:75brdff:ff:ff:ff:ff:ff

inet10.100.122.2/24brd10.100.122.255scopeglobaleth0

valid_lftforeverpreferred_lftforever

inet6fe80::f816:3eff:fec7:7975/64scopelink

valid_lftforeverpreferred_lftforever

这个命令显示了这台机器上所有的网卡。大部分的网卡就会有一个 IP 地址,当然,这不是必须的。在前面的分享中,我们会碰到没有 IP 地址的情况。IP 地址是一个网卡在网路世界的通信地址,相当于我们现实世界的门牌号码。既然是门牌号码,不能你们都一样,不然都会起冲突。比方说,假如你们都叫六单元 1001 号,那快件就找不到地方了。所以,有时候俺们的笔记本弹出网路地址冲突,出现上不去网的情况,多半是 IP 地址冲突了。

如上输出的结果,10.100.122.2 就是一个 IP 地址。这个地址被「点分隔为四个部份」,每个部份「8 个 bit」,所以 IP 地址总共是「32 位」。这样形成的 IP 地址的数目很快就不够用了。因为当时设计 IP 地址的时侯,哪晓得明天会有这么多的计算机啊!因为不够用,于是就有了 IPv6,也就是里面输出结果上面 inet6 fe80::f816:3eff:fec7:7975/64。这个有 128 位,现在看来是够了,但是未来的事情谁知道呢?

本来 32 位的 IP 地址就不够,还被分成了 5 类。现在想想,当时分配地址的时侯,真是太奢华了。

#e:2:3:5:1:6:f:7:2:2:7:5:4:a:3:3:5:4:d:e:a:3:4:a:0:7:1:4:9:6:7:5#

在网路地址中,至少在当时设计的时侯,对于 A、B、 C 类主要分两部份,前面一部分是网路号,后面一部分是主机号。这挺好理解,大家都是六单元 1001 号,我是新村 A 的六单元 1001 号,而你是新村B 的六单元 1001 号。

下面这个表格,详细地展示了 A、B、C 三类地址所能包含的主机的数目。在后文中,我也会多次利用这个表格来讲解。

#a:b:d:2:d:7:b:0:4:6:9:8:3:c:c:8:1:5:3:b:a:7:a:9:8:5:e:3:1:d:f:4#

这上面有个难堪的事情,就是 C 类地址能包含的最大主机数目实在太少了,「只有 254 个」。当时设计的时侯估计没想到,现在恐怕一个网咖都不够用吧。而 B 类地址能包含的最大主机数目又太多了。6 万多台机器置于一个网路下边,一般的企业基本达不到这个规模,闲着的地址就是浪费。

无类型域间选路(CIDR)

于是有了一个折中的形式叫作「无类型域间选路」,简称「CIDR」。这种方法打破了原先设计的几类地址的做法,将 32 位的 IP 地址一分为二,「前面是网路号,后面是主机号」。从那里分呢?你若果注意观察的话可以看见,10.100.122.2/24,这个 IP 地址中有一个斜杠,斜杠旁边有个数字 24。这种地址表示方式,就是 CIDR。后面 24 的意思是,32 位中,前 24 位是网路号,后 8 位是主机号。

伴随着 CIDR 存在的,一个是「广播地址」,10.100.122.255。如果发送这个地址,所有 10.100.122 网络上面的机器都可以收到。另一个是子网掩码,255.255.255.0。将子网掩码和 IP 地址进行 AND 计算。前面三个 255,转成二进制都是 1。1 和任何数值取 AND,都是原先数值,因而前三个数不变,为 10.100.122。后面一个 0,转换成二进制是 0,0 和任何数值取AND,都是 0,因而最后一个数变为 0,合起来就是 10.100.122.0。这就是「网络号」。将子网掩码和 IP地址「按位估算 AND」,就可得到网路号。

公有 IP 地址和私有 IP 地址

在日常的工作中,几乎不用界定 A 类、B 类或则 C 类,所以时间长了,很多人就忘掉了这个分类,而只记得 CIDR。但是有一点还是要注意的,就是公有 IP 地址和私有 IP 地址。

#c:d:9:7:0:d:5:3:f:9:0:3:1:a:8:3:b:9:2:e:6:c:a:6:6:a:c:3:a:0:8:1#

我们继续看里面的表格。表格最右列是私有 IP 地址段。平时我们看见的数据中心里,办公室、家里或中学的 IP 地址,一般都是私有 IP 地址段。因为这种地址容许组织内部的 IT 人员自己管理、自己分配,而且可以重复。因此,你中学的某个私有 IP 地址段和我中学的可以是一样的。这如同每位新村有自己的楼编号和门牌号,你们新村可以叫 6 栋,我们新村也叫 6 栋,没有任何问题。但是一旦出了新村,就须要使用公有 IP 地址。就像人民路 888 号,是国家统一分配的,不能两个新村 都叫人民路 888 号。

「公有 IP 地址有个组织统一分配」,你须要去买。如果你搭建一个网站,给你中学的人使用,让大家中学的IT 人员给你一个 IP 地址就行。但是如果你要做一个类似网易 163 这样的网站,就须要有公有 IP 地址,这样全世界的人能够访问。

表格中的 192.168.0.x 是最常用的私有 IP 地址。你家里有 Wi-Fi,对应都会有一个 IP 地址。一般你家里地上网设备不会超过 256 个,所以 /24 基本就够了。有时候我们也能看到 /16 的 CIDR,这两种是最常见的,也是最容易理解的。

不需要将十进制转换为二进制 32 位,就能显著看出 192.168.0 是网路号,后面是主机号。而整个网路上面的第一个地址 192.168.0.1,往往就是你这个私有网路的出口地址。例如,你家里的笔记本联接 Wi-Fi,Wi-Fi 路由器的地址就是 192.168.0.1,而 192.168.0.255 就是广播地址。一旦发送这个地址,整个192.168.0 网络上面的所有机器都能收到。但是也不总都是这样的情况。因此,其他情况常常都会很难理解,还容易出错。

举例:一个容易“犯错”的 CIDR

我们来看 16.158.165.91/22 这个 CIDR。求一下这个网路的第一个地址、子网掩码和广播地址。

你要是上来就写 16.158.165.1,那就「大错特错」了。

/22 不是 8 的整数倍,不好办,只能先弄成二进制来看。16.158 的部份不会动,它占了前 16 位。中间的 165,变为二进制为 10100101 。除了上面的 16 位,还剩 6 位。所以,这 8 位中前 6 位是网路号,16.158.,而.91 是机器号。

第一个地址是 16.158..1,即 16.158.164.1。子网掩码是 255.255..0,即 255.255.252.0。广播地址为 16.158..255,即 16.158.167.255。

这五类地址中,还有一类「D 类是组播地址」。使用这一类地址,属于某个组的机器都能收到。这有点类似在公司上面你们都加入了一个电邮组。发送短信,加入这个组的都能收到。组播地址在前面述说 VXLAN合同的时侯会提及。

讲了这么多,才讲了前面的输出结果中很小的一部分,是不是认为原先并没有真的理解 ip addr 呢?我们接着来剖析。

在 IP 地址的旁边有个「scope」,对于 eth0 这张网卡来讲,是 global,说明这张网卡是可以对外的,可以接收来自各个地方的包。对于 lo 来讲,是 host,说明这张网卡仅仅可以供本机互相通讯。

lo 全称是「loopback」,又称环回接口,往往会被分配到 127.0.0.1 这个地址。这个地址用于本机通讯,经过内核处理后直接返回,不会在任何网路中出现。

MAC 地址

在 IP 地址的上一行是 link/ether「fa:16:3e:c7:79:75」brd ff:ff:ff:ff:ff:ff,这个被称为「MAC 地址」,是一个网卡的「物理地址」,用「十六进制」,6 个 byte 表示。

MAC 地址是一个很容易让人“误解”的地址。因为 MAC 地址堪称全局惟一,不会有两个网卡有相同的 MAC 地址,而且网卡自生产下来,就带着这个地址。很多人听到这儿都会想,既然这样,整个互联网的通讯,全部用 MAC 地址好了,只要晓得了对方的 MAC 地址,就可以把信息传过去。

这样其实是不行的。一个网路包要从一个地方传到另一个地方,除了要有确定的地址,还须要有定位功能。而有门牌号码属性的 IP 地址,才是有远程定位功能的。

例如,你去杭州市网商路 599 号 B 楼 6 层找刘超,你在路上问路,可能被问的人不知道 B 楼是那个,但是可以给你指网商路如何去。但是假如你问一个人,你晓得这个身份证号的人在那里吗?可想而知,没有人知道。

MAC 地址更像是「身份证」,是一个惟一的标示。它的唯一性设计是为了组网的时侯,不同的网卡置于一个网路上面的时侯,可以不用害怕冲突。从硬件角度,保证不同的网卡有不同的标示。

「MAC 地址是有一定定位功能的,只不过范围极其有限」。你可以按照 IP 地址,找到杭州市网商路 599 号B 楼 6 层,但是仍然找不到我,你就可以靠吼了,大声喊身份证 XXXX 的是哪位?我看到了,我都会站上去说,是我啊。但是假如你在北京,到处喊身份证 XXXX 的是哪位,我不在现场,当然不会回答,因为我在北京不在重庆。

所以,「MAC 地址的通讯范围比较小,局限在一个子网上面」。例如,从 192.168.0.2/24 访问 192.168.0.3/24 是可以用 MAC 地址的。一旦跨子网,即从 192.168.0.2/24 到 192.168.1.2/24,MAC地址就不行了,需要 IP 地址起作用了。

网络设备的状态标示

解析完了 MAC 地址,我们再来看< BROADCAST,MULTICAST,UP,LOWER_UP >是干哪些的?这个叫作net_device flags,网络设备的状态标示。

「UP」表示网卡处于「启动」的状态;「BROADCAST」表示这个网卡有「广播地址」,可以发送广播包;MULTICAST表示网卡可以发送多播包;LOWER_UP 表示 L1 是启动的,也即网线插着呢。

「MTU1500」是指哪些意思呢?是哪一层的概念呢?「最大传输单元 MTU 为 1500」,这是以太网的默认值。上一节,我们讲过网路包是层层封装的。「MTU 是二层 MAC 层的概念」。MAC 层有 MAC 的头,以太网规定连 MAC 头带正文合起来,不容许超过 1500 个字节。正文上面有 IP 的头、TCP 的头、HTTP 的头。如果放不下,就须要分片来传输。

qdisc pfifo_fast 是哪些意思呢?qdisc 全称是queueing discipline,中文叫排队规则。内核假如须要通过某个网路插口发送数据包,它都须要根据为这个插口配置的 qdisc(排队规则)把数据包加入队列。

最简单的 qdisc 是 pfifo,它不对步入的数据包做任何的处理,数据包采用先入先出的方法通过队列。pfifo_fast 稍微复杂一些,它的队列包括三个波段(band)。在每位波段上面,使用先进先出规则。三个波段(band)的优先级也不相同。band 0 的优先级最高,band 2 的最低。如果 band 0 里面有数据包,系统就不会处理 band 1 里面的数据包,band 1 和 band 2 之间也是一样。数据包是根据「服务类型」(Type of Service,TOS)被分配多三个波段(band)里面的。TOS 是 IP 头上面的一个数组,代表了当前的包是高优先级的,还是低优先级的。

队列是个好东西,后面我们讲云计算中的网路的时侯,会有好多用户共享一个网路出口的情况,这个时侯怎么排队,每个队列有多粗,队列处理速率应当如何提高,我就会详尽为你讲解。

小结

怎么样,看起来很简单的一个命令,里面学问很大吧?通过这一节,希望你能记住以下的知识点,后面都能用得上:

IP 是地址,有「定位功能」;MAC 是身份证,无定位功能;

CIDR 可以拿来判定是不是本地人;

IP 分「公有」的 IP 和「私有」的 IP。

声明:文章为分享学习,无商业用途,因部份文章来自网路多次转载,如觉侵权,请扫码小编微信号,会在第一时间处理,多谢!

扫码小编加入

#3:6:b:4:4:1:3:8:c:8:b:6:e:c:c:a:8:b:7:f:e:4:f:8:1:4:d:b:6:7:4:a#

智能化工程系统、网络信息技术请关注

#7:7:f:9:8:4:4:b:7:c:8:6:c:5:a:c:c:f:e:0:3:8:0:6:a:b:d:e:e:8:7:7#

电脑本机ip地址怎么查
上一篇:小程序推广:比APP更便捷的营销利器 下一篇:没有了