网站首页/网络技术列表/内容

电脑为啥使用ipconfig/release释放IP地址后,再使用Ipconfig/renew续约IP地址还是之前的IP地址?

网络技术2024-04-06阅读

我想换一下电脑的IP地址,做测试用,自己的电脑是使用dhcp获取IP地址的,当前获取的IP地址已使用,想自动获取一个其它的IP地址做测试使用,但是无论使用ipconfig/relase释放多少次,最后使用ipconfig/renew获取的IP地址还是之前的IP地址,这是为什么?

电脑为什么使用ipconfig/release释放IP地址后,再使用Ipconfig/renew续约IP地址还是之前的IP地址?

对于这个问,一般人真的不绝对讲不了这么详细,不信你往下看,绝对让你茅塞顿开。

一般人理解,肯定就是租期

对于这个问题,大多数人都会知道,那肯定是你的IP地址租期没到期,虽说你ipconfig/relase释放IP地址,但是你在重新获取的时候,由于IP地址还在这个租期内,你当然获取的还是之前的IP地址。

假如就算你现在把租期更换成了2分钟,你现在ipconfig/relase一下之后,等租期到期后,你等了3分钟,在续租IP地址,但是如果在2分钟过期之后,这个IP地址,才真正的从DHCP地址池释放出来,你实际等了1分钟,但是如果这1分钟内,没有新设备接入到这个网络把你之前获取的IP地址占用,你还是会获取到之前的IP地址的。

ipconfig/release、ipconfig/renew IP地址请求过程

如果你还想知道更具体的原因,那么下面我来让你看一下,从底层抓包分析看一下,为什么你还是获取的之前的IP地址。

我们打开wireshark抓包工具,然后使用ipconfig/relase释放IP地址,然后再使用ipconfig/renew续约IP地址。

然后,我们就抓到了如下图所示数据包:

电脑为什么使用ipconfig/release释放IP地址后,再使用Ipconfig/renew续约IP地址还是之前的IP地址?

我们先看一第一个包DHCP relase,可以看到电脑的IP地址是192.168.0.254,使用的是DHCP请求释放这个IP地址。

电脑为什么使用ipconfig/release释放IP地址后,再使用Ipconfig/renew续约IP地址还是之前的IP地址?

Client IP address:192.168.0.254,电脑当前客户端IP地址是192.168.0.254。

释放完成之后,再使用ipconfig/renew去续约Ip地址。

这里就有四个包,这四个包之前也已经和大家分析过了,有感兴趣的老铁,请参考:详细的电脑请求DHCP的IP地址过程,有了这篇文章,再也不怕别人问什么是DHCP了。

其实现实是这样的,当你ipconfig/release之后,ip地址被释放掉,当你ipconfig/renew时,这时第一个discover请求DHCP发现包时,Client Ip address:0.0.0.0,说明现在电脑没有IP地址了,但是这时DHCP discover选项里有个option 50,这个选项就已经表明,我要请求192.168.0.254,这个IP地址了。

如果是一台新电脑接入到网络,电脑发现的第一个dhcp discover的包时,在discover包中,是没有option 50选项的。

只有已经接入过网络的电脑,请求过IP地址的电脑,才会在重新获取IP地址时,discover包中才会有option 50选项。

其实,这时虽说电脑在discover,第一阶段就申请192.168.0.254这个IP地址,你们说,DHCP会按这个要求给它吗?

其实这要看DHCP有没有把这个IP地址分配出去,如果没有分配出去,就会按discover中的option 50选项,优先将这个IP地址分配给这台电脑。如果已经分配给其它电脑了,在dhcp服务器offer的时候,会提供给你一个其它的IP地址,就算你在discover里面请求的是192.168.0.254,dhcp在offer阶段,也不会提供这个IP地址给,dhcp offer给你一个新的地址192.168.0.253,这时你就会在request时,请求192.168.0.253这个IP地址了。

电脑为什么使用ipconfig/release释放IP地址后,再使用Ipconfig/renew续约IP地址还是之前的IP地址?

这时还在discover阶段的时候,电脑已经知道自己要请求什么IP地址,除非路由器,已将这个IP地址分配给其它设备了,否则还会把这个IP地址分配给你电脑。

这就是为什么使用ipconfig/release释放IP地址后,再使用Ipconfig/renew续约IP地址还是之前的IP地址。

当电脑释放IP地址之后,电脑无论你提供什么地址给,我就在discover第一阶段,请求我之前获取的IP地址。

好的,你请求这个IP地址:192.168.0.254,我就提供这个IP地址给你,在DHCP offer阶段,你的客户端IP地址就是:192.168.0.254了。

电脑为什么使用ipconfig/release释放IP地址后,再使用Ipconfig/renew续约IP地址还是之前的IP地址?

在第三阶段,你的电脑请求IP地址阶段中,dhpc选项中,还是有个option 50,请求的IP地址就是dhcp offer提供的IP地址192.168.0.254。

电脑为什么使用ipconfig/release释放IP地址后,再使用Ipconfig/renew续约IP地址还是之前的IP地址?

在第四阶段,当电脑请求之后,DHCP服务器就确定把这个IP地址分配给这个电脑了。

电脑为什么使用ipconfig/release释放IP地址后,再使用Ipconfig/renew续约IP地址还是之前的IP地址?

新电脑第一次请求IP地址过程

当一台电脑没有从路由器获取过Ip地址时,他的第一个DHCP包就是DHCP discovery,这个dhcp discover中是没有option 50选项的,因为刚接入的电脑不知道该请求什么IP地址。

电脑为什么使用ipconfig/release释放IP地址后,再使用Ipconfig/renew续约IP地址还是之前的IP地址?

当第一个包,找到dhcp后,dhcp服务器发现有客户端再找dhcp服务器,于是dhcp收到这个包后,好的,我知道了,我给你个IP地址,你看这个IP地址可以吗?

第二阶段,于是DHCP服务器向电脑发送了一个offer包,提供一个IP地址给这个电脑。

我给你的IP地址是,your

client

IP address:192.168.12.100

电脑为什么使用ipconfig/release释放IP地址后,再使用Ipconfig/renew续约IP地址还是之前的IP地址?

这时电脑收到了来自dhcp服务器提供的offer数据包,电脑打开一看,哦,你给我提供的IP地址是192.168.12.100,正是我想要的。

这时电脑就向服务器请求,说,我请求要使用这个192.168.12.100 IP地址,把这个IP地址给我吧。

这时在第三阶段电脑向DHCP发送request数据包时,在第三阶段,dhcp中才会有option 50选项,请求的IP地址。

电脑为什么使用ipconfig/release释放IP地址后,再使用Ipconfig/renew续约IP地址还是之前的IP地址?

这时DHCP服务器,就确定,说好的,我就把这个Your

clietn

IP address:192.168.12.100地址给你了。最后一个是ack确定包,这时这个DHCP请求IP地址就结束了。

电脑为什么使用ipconfig/release释放IP地址后,再使用Ipconfig/renew续约IP地址还是之前的IP地址?

 

相关阅读