简单的 IP 地址配置原来也有这么多门道
你知道的越多,不知道的就越多,业余的像一棵小草!
你来,我们一起精进!你不来,我和你的竞争对手一起精进!
编辑:业余草
来源:juejin.cn/post/7097515553497022472
推荐:https://www.xttblog.com/?p=5357
自律才能自由
上篇文章中《拒绝神化零拷贝!文末有送书福利!》评论区点赞前5名的中奖用户,请尽快私信我收件人信息,我给大家快递图书!
简单的 IP 地址配置原来也有这么多门道
一、从一个错误配置的例子入手
我们平时给计算机A配置IP时,如果附近的20台计算机IP是192.168.0.20-192.168.0.40。如果你给计算机A的IP设置为18.188.8.88
,然后你再去测试计算机A与附近其他计算机的连通性,ping它们,你可能会发现,都ping不通啊。
「为什么呢?」
源IP地址和目的IP地址不是都明确了吗?源IP地址是18.188.8.88
,目的IP地址是192.168.0.20-192.168.0.40中的一个。
因为之前我们说过:
❝「要始终牢记一个原则:计算机网络中的任何一个数据包,像房子一样,必须打牢地基,一层一层建上去,不可能有高层没有低层。」
❞
网络层的下面还有数据链路层,需要知道计算机A的MAC地址以及目的主机的MAC地址。如果计算机A与附件这些计算机是同一个网段,那好办,不是有「地址解析协议」(ARP)吗?将包含目标IP地址的ARP请求广播到局域网络上的所有主机,就能获得目标IP地址对应主机的MAC地址。但是它们不是一个网段的,这种情况下,如果操作系统配置了网关地址,那么操作系统就会将数据包传给网关,否则,数据包就根本发不出去...
二、DHCP 动态主机配置协议
配置IP这么多道理,那么不会配置的计算机小白是不是就上不了网了啊?
其实,有一种自动配置IP地址的协议,叫做「动态主机配置协议(Dynamic Host Configuration Protocol)」 ,也就是我们熟知的DHCP。
除了IP地址,DHCP还可自动配置IP地址的子网掩码、该网络中可使用的DNS服务器的P地址、作为与外部网络的出入口的默认网关IP地址、 地址的租约期限(到期日期)等。还可配置如时间同步服务器 (NTP 服务器) 的地址。
如上图,当一台计算机连接到网络时,它会向同一网络上的所有设备发送数据包,这称之为「DHCP发现」。如果存在DHCP服务器,DHCP 服务器使用单播来发送自己的回应报文,并为其分配IP地址等之前提到的信息。至于为什么申请IP地址的计算机还没有完成IP地址的配置,却能够接受单播报文,这给回答解说得比较好:《DHCP offer 报文到底是单播还是广播》https://www.zhihu.com/question/280872108/answer/438845996
但是,如果网络中存在多个DHCP服务器,那么计算机一般会选择最先到达的那个单播报文。
计算机确定好要选择的DHCP Offer单播报文之后,会告诉所有DHCP服务器你选择哪一台DHCP服务器分配的地址,让你没有选择的DHCP服务器收回分配给你的地址。
当DHCP服务器收到计算机的DHCP request 之后,会单播一个DHCP ACK 消息包。至此,IP地址分配完成。
《DHCP消息格式 - NE40E V800R010C10SPC500 特性描述》https://support.huawei.com/enterprise/zh/doc/EDOC1100055151/25cd2dfc
上图是DHCP报文的格式,笔者在此不详细说明了,上面华为的中文文档介绍得很详细。
至于IP地址到达租约期限或者你不用了,DHCP就会将IP地址收回并放入可分配的IP地址池子。
续租很简单,租期达到50%的时候,计算机以单播的方式往DHCP 服务器发送一个DHCP Request,告诉它,我地址快要到期了,需要续租。DHCP服务器会发送一个DHCP ACK告诉你续租成功。如果收到的是DHCP NAK报文,那么就得重新申请了新的IP地址了。如果租期达到87.5%时,仍未收到DHCP服务器的应答,那么就会广播DHCP Request。DHCP服务器会发送一个DHCP ACK告诉你续租成功。如果收到的是DHCP NAK报文,那么就得重新申请了新的IP地址了。
如果很不幸,租期时间到了,还是没有收到服务器的DHCP ACK报文或者DHCP NAK报文,那么客户端只能停用该IP地址,重新申请。