主机的IP地址是怎么来的?

主机的IP地址是怎么来的?

devna

当一台新的主机接入局域网时,它是怎么获取IP地址的呢?如果熟悉所处网络的话,可以手动配置主机的IP地址;但大部分时候,这是通过应用层的DHCP协议,即动态分配实现的。

DHCP Discover

一台新的主机加入局域网时,它会向局域网广播一个DHCP发现报文。

应用层的DHCP发现报文被放入UDP报文段,目的端口是67(DHCP服务器默认端口),源端口是68(DHCP客户端默认端口)。

传输层的UDP报文段被放入IP数据报,目的IP地址是255.255.255.255(广播地址),源IP地址是0.0.0.0。

网络层的IP数据报被放入链路层帧,目的MAC地址是FF-FF-FF-FF-FF-FF(广播MAC),源MAC地址为主机的MAC地址。

经过一层层封装,最终链路层帧会向局域网中广播,所有该局域网中的主机(包括交换机和路由器)都会收到该帧。

DHCP Offer

上一步广播到局域网中的帧,如果是其他主机收到该帧,会直接丢弃。如果是交换机收到该帧,会转发该帧到交换机的其他端口上。

如果是DHCP服务器收到该帧,会生成一个DHCP提供报文,向新加入的主机作出响应。DHCP提供报文包括为主机分配的IP地址,DNS服务器,默认网关,子网掩码以及IP地址租期等信息。

应用层的DHCP提供报文被放入UDP报文段,源端口是68,目的端口是67.

传输层的UDP报文段被放入IP数据报,目的IP同样是广播地址255.255.255.255,源IP是DHCP服务器IP。

网络层的IP数据报被放入链路层帧,源MAC是服务器MAC地址,目的地址是新主机的MAC地址。

最终,经过不同层封装的链路层帧被发往新加入的主机。

DHCP Request

如果局域网中存在多台DHCP服务器,那么主机会收到多条DHCP提供报文,这时主机需要从这些服务器中选择一个。

无论是一台还是多台DHCP服务器,主机需要向选中的DHCP服务器发送一个DHCP请求报文,请求报文中携带提供报文的配置参数。

DHCP请求报文同样会经过层层封装,目的IP/MAC为DHCP服务器的对应地址,源IP/MAC为主机的对应地址,发往被选中的DHCP服务器。

DHCP ACK

DHCP服务器用DHCP ACK消息对主机发出来DHCP请求报文进行响应,证实所请求的参数。


经过上述4步,主机最终拿到了自己的IP地址,同时它会记录DNS服务器的IP地址,并在自己的转发表中安装默认网关(子网掩码对应的默认网关)。

另外,上述4步中只有最后两步DHCP Request和DHCP ACK是必须的,此时主机发出的DHCP Request会向局域网进行广播,而DHCP服务器响应的DHCP ACK报文中会包含为主机分配的IP地址,DNS服务器,默认网关,子网掩码等信息。


Report Page