当面试听到这个问题的时候,面试者常常会觉得走错了房间。我面试的是技术岗位啊,怎么问这么简单的问题?
的确,即便没有专业学过计算机的人,只要倒腾过电脑,重装过系统,大多也会知道这个问题的答案:在 Windows 上是ipconfig,在 Linux 上是ifconfig。
那你知道 ifconfig 和 ip addr 的区别吗?
这是一个有关 net-tools 和 iproute2 的“历史”故事。想象一下,你登录进入一个被裁剪过的非常小的 Linux 系统中,发现既没有 ifconfig 命令,也没有 ipaddr 命令,你是不是感觉这个系统压根儿没法用?这个时候,你可以自行安装net-tools和iproute2这两个工具。当然,大多数时候这两个命令是系统自带的。
安装好后,我们来运行一下 ip addr。不出意外,应该会输出下面的内容。
root@test:~#ipaddr1:lo:<LOOPBACK,UP,LOWER_UP>mtu65536qdiscnoqueuestateUNKNOWNgroupdefaultlink/loopback00:00:00:00:00:00brd00:00:00:00:00:00inet127.0.0.1/8scopehostlovalid_lftforeverpreferred_lftforeverinet6::1/128scopehostvalid_lftforeverpreferred_lftforever2:eth0:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscpfifo_faststateUPgroupdefaultqlen1000link/etherfa:16:3e:c7:79:75brdff:ff:ff:ff:ff:ffinet10.100.122.2/24brd10.100.122.255scopeglobaleth0valid_lftforeverpreferred_lftforeverinet6fe80::f816:3eff:fec7:7975/64scopelinkvalid_lftforeverpreferred_lftforever
无类型域间选路(CIDR)
举例:一个容易“犯错”的 CIDR
你要是上来就写 16.158.165.1,那就「大错特错」了。
/22不是 8 的整数倍,不好办,只能先变成二进制来看。16.158 的部分不会动,它占了前 16 位。中间的 165,变为二进制为10100101。除了前面的 16 位,还剩 6 位。所以,这 8 位中前 6 位是网络号,16.158.<101001>,而<01>.91是机器号。
讲了这么多,才讲了上面的输出结果中很小的一部分,是不是觉得原来并没有真的理解 ip addr 呢?我们接着来分析。
例如,你去杭州市网商路 599 号 B 楼 6 层找刘超,你在路上问路,可能被问的人不知道 B 楼是哪个,但是可以给你指网商路怎么去。但是如果你问一个人,你知道这个身份证号的人在哪里吗?可想而知,没有人知道。
网络设备的状态标识
「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 头里面的一个字段,代表了当前的包是高优先级的,还是低优先级的。
队列是个好东西,后面我们讲云计算中的网络的时候,会有很多用户共享一个网络出口的情况,这个时候如何排队,每个队列有多粗,队列处理速度应该怎么提升,我都会详细为你讲解。
小结
怎么样,看起来很简单的一个命令,里面学问很大吧?通过这一节,希望你能记住以下的知识点,后面都能用得上:
最后,给你留两个思考题。
1.SylixOS,这款嵌入式RTOS值得学习!
2.芯片短缺或将结束?数据来说话。。。
3.代码调着调着就失联了,你碰到过吗?
4.图文并茂详解STM32时钟配置
5.电力物联网与嵌入式系统,关系几何?
6.RT-Thread携手北航出版社共办人工智能师资培训