三 工具虽微小 入门不可少

Linux使用ifconfig、Windows使用ipconfig

所谓见微知著,这两个命令虽然是最简单的 IP 查询工具,可是世间最厉害的就是最简单的用到极致,便勘破一切,大道至简。

闲话少叙,诸位请跟随我走入浩瀚汪洋的网络命令起点,去领略计算机大神们创造的世界。

既然都是有志于我门之人,咱们还是从旁人接触少的 Linux 系统说起。

在 Linux 系统之下,除了刚开始提到的 ifconfig 命令,还有 ip addr 命令也能达到类似效果。这二者的渊源,出自于 net-tools 和 iptoute2 两个软件包,当然这两个软件包的爱恨情仇一时半会儿也说不清楚,以后有机会给大家详解。

当我们登录到 Linux 系统,来敲入 ip addr,输入如下内容:

ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

    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 qlen 1000

    link/ether 8e:5f:34:c9:ec:90 brd ff:ff:ff:ff:ff:ff

    inet 10.6.0.28/24 brd 10.6.0.255 scope global eth0

       valid_lft forever preferred_lft forever

    inet6 fe80::8c5f:34ff:fec9:ec90/64 scope link

我们首要关注的就是 IP 地址(inet 10.6.0.28/24),IP 地址就是我们现实世界中的地址号码,自然这个地址号码是不能重复的,不然别人根本就找不到你。联想到我们平时网络排障的时候遇到的 IP 地址冲突,导致网络故障。

10.6.0.28 就是一个 IP 地址,点分十进制的方式分成了四个段,每个段为 8 bit,所以 IP 地址总共是 4 * 8 = 32 bit,到了如今已经枯竭了,至于应对方法,大神们早就准备好了,我们以后再说。

IP 地址又被分成了A、B、C、D、E五类,A、B、C 日常使用,D、E 为组播和保留使用。

每个 IP 地址有两个标识 ID ,分别为网络 ID 和 主机 ID。

同一个网络 ID ,即我们常说的同一个网段,在里面的主机 ID 是可以直接通信的。

五类的网络 ID 详情如下:

A 类地址:以 0 开头,第一个字节范围:0~127;

B 类地址:以 10 开头,第一个字节范围:128~191;

C 类地址:以 110 开头,第一个字节范围:192~223;

D 类地址:以 1110 开头,第一个字节范围为 224~239;

E 类地址:以 1111 开头,保留地址

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

 

 

 

 

 

 

无类型域间选路(CIDR)

我们看到命令输出的是inet 10.6.0.28/24,有一个“/24”的后缀,既然我们刚刚说到网段,那么怎么计算主机 ID 是否在同一个网段内?就是靠这个称为子网掩码的后缀来计算。

子网掩码是子网特征的表现,也是 32 bit,网络位全是 1 ,主机位全是 0 。我们看到命令输出的子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0,有一个广播地址brd 10.6.0.255,如果发送这个地址,所有在10.6.0网段内的主机都能收到。

有了子网掩码,我们就能很容易的判断若干个 IP 地址是否在同一个子网内?

方法将若干个 IP 地址与子网掩码分别进行 AND 运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。

 

公有 IP 地址和私有 IP 地址

 

 

 

以上表格展示的就是我们一般家里面、办公室或者学校里面的 IP 地址,这样的话这些组织内部的 IT 管理人员能够自主管理、分配甚至可以和其他组织内的地址重复。

公有 IP 地址需要和运营商购买,比如说提供对外服务的网站、APP之类的。

 

咱们继续看命令的输出“scope global eth0”,global 是对外的,可以接收主机以外的包。

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

 

link/ether 8e:5f:34:c9:ec:90 brd ff:ff:ff:ff:ff:ff,这就是 MAC 地址,是十六进制方式表示,共有6 byte。

MAC 地址是同一个网段使用,当然要保证不能冲突,如果要跨网段,还是得依赖 IP 地址。

 

eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

“BROADCAST,MULTICAST,UP,LOWER_UP”是net_device flags,网络设备的状态标识。

“BROADCAST”表示网卡具备广播地址,可以发送广播包。

“MULTICAST”表示可以发送多播包。

“UP”表示网卡处于启用的状态。

“LOWER_UP”表示接着网线,网卡灯状态正常。

 

mtu 1500 qdisc pfifo_fast state UP qlen 1000

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

“qdisc”全称是 queueing discipline,中文叫排队规则。

最简单的qdisc是pfifo,不对进入的数据包做处理,采用先入先出的方式。

而我们使用命令输出的是pfifo_fast,它是使用三个波段(band)。在每个波段里面,使用先进先出规则。优先级是band 0最高,band 2次之,band 3再次之。

如果数据包在 band 0里面,那么 band 1的数据包就不会得到处理,band 1 和 band 2 类似之。

这三个波段(band)是由服务类型(Type of Service,TOS)分配的,由它来决定优先级的顺序。

 

 

posted on 2020-06-02 11:59  sanyuanyanjin  阅读(201)  评论(0编辑  收藏  举报