刚插上网线,电脑怎么知道自己的IP?( 三 )


当然不需要 。
我们会发现每次断开wifi再打开wifi时,机子会经历一个从没网到有网的过程 。
这时候去抓个包,会发现 。

刚插上网线,电脑怎么知道自己的IP?

文章插图
其实只发生了DHCP的第三和第四阶段 。这是因为机子记录了曾经使用过 192.168.31.170这个IP,重新联网后,会优先再次请求这个IP,这样就省下了第一第二阶段的广播了 。
另外需要注意的是,抓包图里DHCP 之所以出现两次,是因为第一次发出后太久没得到回应,因此重发 。
DHCP分配下来的IP一定不会重复吗?
一般来说DHCP服务器会在它维护的IP池里找到一个没人用的IP分配给机子,
这个IP如果重复分配了,那本地网段内就会出现两个同样的IP,这个IP下面却对应两个不同的mac地址 。但其他机器上的ARP缓存中却只会记录其中一条mac地址到IP的映射关系 。
于是,数据在传递的过程中就会出错 。
因此本地网段内IP必须唯一 。
那么DHCP分配下来的IP有没有可能跟别的IP是重复的?
都这么问了,那肯定是可能的 。
有两个常见的情况会出现IP重复 。
不过吧,上面的解决方案,都需要有权限去修改DHCP服务器 。
得到DHCP ACK之后立马就能使用这个IP了吗?
这就好像在问,拿到offer之后你是第一时间就去上班吗?
不 。
你会先告诉你的同事同学朋友,甚至会发朋友圈 。
你的机子也一样 。
在得到DHCP ACK之后,机子不会立刻就用这个IP 。
而是会先发三条ARP消息 。
刚插上网线,电脑怎么知道自己的IP?

文章插图
大家知道ARP消息的目的是通过IP地址去获得mac地址 。所以普通的ARP消息里,是填了IP地址,不填mac地址的 。
但这三条ARP协议,比较特殊,它们叫无偿ARP( ARP),特点是它会把IP和mac地址都填好了,而且填的还是自己的IP和mac地址 。
目的有两个 。
在三次无偿ARP消息之后,确认没有冲突了,才会开始使用这个IP地址进行通信 。
总结
最后给大家留个问题吧 。我们上面的IP都是从DHCP服务器上申请的,在服务器返回DHCP Offer的时候,可以看到上面写了DHCP服务器的IP 。比如192.168.31.1,这明显是个局域网内的IP,但这能说明,你的DHCP服务器一定在这个局域网里吗?
刚插上网线,电脑怎么知道自己的IP?

文章插图
参考资料
《图解TCPIP》