DHCP协议?
![](https://qtp-1324720525.cos.ap-shanghai.myqcloud.com/blog/image-20250116113353161.png)
每一个网络设备,都有一个此网络中的独一无二的IP地址,也用来作为网络通信中的唯一标识,那:
每个设备的ip地址是如何得到的呢?
又是如何保证不冲突的呢?
那就引出了下面的,DHCP(动态主机配置协议)
相关信息
静态 IP是手动分配给设备的固定 IP 地址,不会自动更改,适合需要长期稳定连接的设备,如服务器、打印机等,但是需要手动输入 IP 地址、子网掩码、网关和 DNS 服务器。
比如,对于拥有一千台服务器的集群,网络管理员需要根据设备编号,对每台设备设置固定的IP。
还有,你要静态设置的话,你要提前知道你家里的局域网的网段是哪个,比如我家的路由器地址是,,那么你的设备就要在
192.168.1.2
~192.168.1.254
之间。
网关和DNS默认设置为路由器的IP。
DHCP 是一种自动化的 IP 地址分配协议,设备(如电脑、手机、路由器等)在连接到网络时,它会向 DHCP 服务器发送一个请求,DHCP 服务器会从可用的 IP 地址池中选择一个未被使用的地址,分配给设备。这个 IP 地址通常有一个租期,租期到期后设备可能会获得不同的 IP 地址。
优点:
- 自动化分配 IP 地址,节省手动配置的时间和精力。
- 可以动态管理网络中的设备,不需要手动干预。
- 避免了 IP 地址冲突,DHCP 服务器会确保每个设备得到唯一的 IP 地址。
缺点:
- 因为 IP 地址是临时分配的,设备的 IP 地址可能会发生变化,适用于不需要固定 IP 的设备。
- 一些应用需要固定 IP 地址来进行通信(如服务器、打印机等)。
巴拉巴拉:
当你的电脑通过网线连接到路由器,当电脑开机进入操作系统后,此时其还没有IP地址,操作系统会使用udp协议通过68端口向67端口广播一包DHCP discover数据包,用来寻找DHCP服务器。
由于这是一个广播数据包,所以网络中的所有设备都会收到这一条数据。但是只有DHCP服务器才会做出响应,在家庭网络中路由器就是DHCP服务器的角色。
他收到的DHCP discover数据包后,知道网络中有设备需要分配IP地址。所以他需要在自己的IP地址池中拿到一个空闲IP,比如192.168.1.10,并决定把这个IP地址分配给路由器。
路由器会把此IP封装成一包DHCP offer包,回复给我的PC。PC收到后要决定用不用这个IP地址。
为什么会有这一步?是因为假设网络中有多个DHCP服务器,他们有可能会同时收到discover包,各自分配IP地址后回复DHCP offer包。此时PC会收到多个他要决定用哪一个IP地址,一般情况下都是用收到的第一个IP地址。
![](https://qtp-1324720525.cos.ap-shanghai.myqcloud.com/blog/image-20250116121017109.png)
决定好后,PC会向网络中广播自己的决定,通知路由器接受了其分配的IP地址。这一包称为DHCP request包。
警告
其实上图并不准确,如果电脑用网线连接,电脑广播的时候,会先向LAN口发送,然后由交换机(路由器)中的MAC地址映射表负责转发,
转发的对象也不只是其他DHCP服务器,普通设备也会被发送,但是由于MAC地址的不同,普通设备就会被pass掉。
![](https://qtp-1324720525.cos.ap-shanghai.myqcloud.com/blog/image-20250116120935207.png)
路由器收到request包后会回复给PC DHCP ack包,表示已经接受了PC的选择,可以使用此IP地址,此时pc拥有了自己的IP地址。
以上四步就是DHCP获取IP地址的完整流程。不过前两部并不是必须的,当PC重启后,PC无需重新获取IP地址。只需要再次确认就可以了。
![重启后,PC无需重新获取IP地址](https://qtp-1324720525.cos.ap-shanghai.myqcloud.com/blog/image-20250116121218769.png)
就是从第三步开始发送DHCP request的包,直接请求使用此IP。DHCP服务器需要检查此IP是否可用,若可以使用则直接回复ack包确认可以继续使用此IP地址,若不可用比如此IP已被其他设备占用,则回复DHCP nack包拒绝申请,此时PC需要从DHCP discover开始再来一次完整的申请流程。
家庭网络中的包括通过网线连接路由器的电脑,以及通过WiFi连接的手机,电视,游戏机等。都是通过以上的步骤获取IP地址的,获取IP地址后,他们就可以在网络中互相通信了。