上网必须得有IP地址,就像我们出门必须携带身份证一样。但IP地址并非计算机与生俱来的属性。当你购买一台全新的笔记本电脑时,它本身并没有IP。
那么,为什么这台新电脑在有免费WiFi的地方就能直接上网呢?答案就在于DHCP(动态主机配置协议)。新接入网络的主机会主动与局域网内的DHCP服务通信,从而获取属于自己的网络身份。
一、应用层协议
DHCP是“Dynamic Host Configuration Protocol”的缩写,意为“动态主机配置协议”。它是一个工作在应用层协议的网络协议。
二、C/S模式
我们常说的“自动获取IP地址”选项,其本质就是DHCP的客户端。当你勾选此选项后,客户端便会主动寻找并连接当前局域网内的DHCP服务器。

在家庭或小型办公环境中,DHCP服务器的角色通常由无线路由器来扮演。
三、广播通信
对于刚接入网络的主机来说,它根本不知道DHCP服务器在哪里。因此,它会使用广播的形式来发送请求。
- 此时广播的目的IP地址是
255.255.255.255,表示局域网内的所有设备都能接收。
- 源IP地址则是
0.0.0.0,表明发送该广播的主机还没有获得任何IP地址。
四、第一次握手:DHCP Discover
新主机会通过UDP协议,向67号端口广播一个名为 “DHCP Discover” 的报文,即“发现报文”。这可以看作是客户端与服务器的第一次握手,意在询问:“网络里有DHCP服务器吗?我需要一个IP地址。”

五、第二次握手:DHCP Offer
局域网内的DHCP服务器收到“发现报文”后,会从自己管理的IP地址池中,挑选一个未被占用的地址准备分配给新主机。
由于新主机尚无IP,服务器的这次回应同样采用广播方式。这个回应的报文称为 “DHCP Offer”(提供报文),即第二次握手,它告诉客户端:“我这儿有一个IP地址,你可以用。”

六、第三次握手:DHCP Request
新主机收到“提供报文”后,如果决定接受这个IP地址,便会发送第三个广播报文进行确认。这个报文叫做 “DHCP Request”(请求报文),即第三次握手。
你可能会问,既然客户端已经知道了服务器的地址,这次为什么还要广播呢?这是因为一个网络内可能存在多个DHCP服务器(例如,为了冗余备份)。当一个IP地址被使用时,需要通知到所有服务器,以便它们同步地址分配状态,避免冲突。因此,第三次握手依然是广播。

七、第四次握手:DHCP ACK
最后,被选中的那台DHCP服务器会向新主机发送一个 “DHCP ACK” 报文进行最终确认。收到这个确认报文后,新主机便可以正式启用刚刚获取到的IP地址了。这最后一次交互就是第四次握手。

八、结语
由此可见,并非只有传输层的TCP协议才有“握手”过程,应用层的DHCP协议同样拥有自己清晰的四次握手流程,以完成IP地址的自动分配。
此外,DHCP服务器提供的不仅仅是IP地址,通常还包括默认网关地址、子网掩码以及本地DNS服务器的地址,这些信息共同构成了主机接入网络所需的完整配置。这整个过程高效而自动化,让我们的网络连接变得如此简单便捷。如果你想了解更多网络底层原理或交流技术心得,欢迎来云栈社区一起探讨。
|