61-ifconfig:最熟悉又陌生的命令行

3、 ifconfig:最熟悉又陌生的命令行

怎么查看 IP 地址?

  • Windows 上是 ipconfig;
  • Linux 上是 ifconfigip addr

假如登录进入一个被裁剪过的非常小的 Linux 系统中,发现既没有 ifconfig 命令,也没有 ip addr 命令,你是不是感觉这个系统压根儿没法用?这个时候,你可以自行安装 net-tools 和 iproute2 这两个工具。当然,大多数时候这两个命令是系统自带的。

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 地址,当然,这不是必须的。在后面的分享中,我们会遇到没有 IP 地址的情况。

IP 地址是一个网卡在网络世界的通讯地址,相当于我们现实世界的门牌号码。

10.100.122.2 就是一个 IP 地址。这个地址被点分隔为四个部分,每个部分 8 个 bit,所以 IP 地址总共是 32 位。

这样产生的 IP 地址的数量很快就不够用了;因为不够用,于是就有了 IPv6,也就是上面输出结果里面 inet6 fe80::f816:3eff:fec7:7975/64。这个有 128 位,暂时够用!

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

img

对于 A、B、 C 类主要分两部分,前面一部分是网络号,后面一部分是主机号。

下面这个表格,详细地展示了 A、B、C 三类地址所能包含的主机的数量

img

上面A、B、C分类的问题:

  • C 类地址能包含的最大主机数量实在太少了,只有 254 个;
  • B 类地址能包含的最大主机数量又太多了。6 万多台机器放在一个网络下面,一般的企业基本达不到这个规模,闲着的地址就是浪费。

3.1、无类型域间选路(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,就可得到网络号10.100.122.0。

3.2、公有 IP 地址和私有 IP 地址

在日常的工作中,几乎不用划分 A 类、B 类或者 C 类,所以时间长了,很多人就忘记了这个分类,而只记得 CIDR

但是有一点还是要注意的,就是公有 IP 地址和私有 IP 地址

img

表格最右列是私有 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 网络里面的所有机器都能收到。

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

问题: 16.158.165.91/22 这个 CIDR。求一下这个网络的第一个地址、子网掩码和广播地址。

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

/22 不是 8 的整数倍,不好办,只能先变成二进制来看。

16.158 的部分不会动,它占了前 16 位。

中间的 165,变为二进制为‭10100101‬

除了前面的 16 位,还剩 6 位。

所以,这 8 位中前 6 位是网络号,16.158.<101001>;而 <01>.91 是机器号。

  • 第一个地址是 16.158.<101001><00>.1,即 16.158.164.1
  • 子网掩码是 255.255.<111111><00>.0,即 255.255.252.0
  • 广播地址为 16.158.<101001><11>.255,即 16.158.167.255

这五类地址中,还有一类 D 类是组播地址。使用这一类地址,属于某个组的机器都能收到。

接着说ip addr:

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

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

3.4、MAC 地址

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

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 地址起作用了。

3.5、网络设备的状态标识

再来看 <BROADCAST,MULTICAST,UP,LOWER_UP> 是干什么的?这个叫做 net_device flags,网络设备的状态标识。

UP 表示网卡处于启动的状态;

BROADCAST 表示这个网卡有广播地址,可以发送广播包;

LOWER_UP 表示 L1 是启动的,也即网线插着呢。

MTU1500 : 最大传输单元 MTU 为 1500,这是以太网的默认值。

网络包是层层封装的。MTU 是二层 MAC 层的概念。MAC 层有 MAC 的头,以太网规定正文部分不允许超过 1500 个字节。正文里面有 IP 的头、TCP 的头、HTTP 的头。如果放不下,就需要分片来传输。(MTU 大小是不包含二层头部和尾部的,MTU 1500表示二层MAC帧大小不超过1518. MAC 头14 字节,尾4字节。可以抓包验证)

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。 后面的章节中我会谈到“出国门”,就与这个有关。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liufeng2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值