暑假到了,咸鱼了两天我也不知道我在干嘛,Vue 什么的这几天也没学,倒是看了《自顶向下》差不多百来页的样子,算法什么的也没看,都跳过了,完了之后我也不知道我懂了没懂,所以今天总结一下 DHCP 是怎么样给子网分配一个 IP 地址的。

什么是 DHCP

动态主机设置协议(英语:Dynamic Host Configuration Protocol,缩写:DHCP)是一个用于局域网的网络协议,位于OSI模型的应用层,使用UDP协议工作,主要有两个用途:

  • 用于内部网或网络服务供应商自动分配IP地址给用户
  • 用于内部网管理员作为对所有计算机作中央管理的手段

以上内容出自维基百科。

简单的来说,就是每当一个设备加入子网之后,他还没有 IP 地址,然后 DHCP 服务器就会为他分配一个不同其他设备的 IP 的 IP,就是为了防止冲突的。这个呢,广泛用于路由器和现代交换机。有了它,家用网络也能做成一个大型子网。

分配过程

请求IP租约:当一台设备加入子网,他没有被分配 IP 地址。它会封装一个 UDP 包包含 DHCP 报文段,目标端口是 DHCP 服务器默认的 67 端口,由于不知道服务器的 IP 地址,它会进行 IP 广播,地址是 255.255.255.255,原地址为 0.0.0.0。

提供IP租约:当 DHCP 服务器(一般指路由器)收到 DHCP 报文段,将会提供一个不冲突的 IP 地址,原地址为自身 IP,一般是网关地址,进行 IP 单播,以太网帧上存在目标和源的 MAC 地址。

选择IP租约:当设备获得 IP 地址后,将会进行一次广播,让子网中其他 DHCP 服务器,收回对此设备分配的多余的 IP 地址。(子网存在多种 DHCP 服务器时)

确认IP租约:客户在获得了一个IP地址以后,就可以发送一个ARP请求来避免由于 DHCP 服务器地址池重叠而引发的IP冲突。

谈谈 ARP 寻址

地址解析协议(英语:Address Resolution Protocol,缩写:ARP)是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议。

ARP是通过网络地址来定位MAC地址。ARP 是位于OSI第二层数据链路层的。ARP缓存表主要记录子网之间的设备物理地址(MAC 地址),相对于转发表而言,他是有过期时间的,对一个交换机而言,当一个包想要发送给目标,首先查找 ARP 表中目标的 MAC 地址进行端口转发。当一段时间某个 MAC 地址的源主机一直没有收到过任何请求,时间超过过期时间后,该主机的 MAC 地址及对应的记录将会从 ARP 表中删除,所以不必要担心 ARP 表会过时。另一个他也不会造成环路。它是自学习的。

每台主机或路由器在其内存中具有一个 ARP 表,这张表包含 IP 地址和 MAC 地址的映射关系。当一个主机想要发送一个数据报文,首先要查找目的主机的 MAC 地址。如果 ARP 表中不存在这个对应关系,源主机就会广播发送一个 ARP 分组。(FF-FF-FF-FF-FF-FF)然后更新 ARP 表。