部分内容来源:
动态主机配置协议(Dynamic Host Configuration Protocol, DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:
1、给内部网络或网络服务供应商自动分配IP地址给用户
2、给内部网络管理员作为对所有电脑作中央管理的手段
技术蛋老师:
一般来说,固定的设备需要静态IP地址,这种静态IP不适合大部分家庭和公共场所的使用,一般情况下,设置了自动获取IP地址的方式,DHCP服务器都会给我们分配IP地址,子网掩码,网关地址和DNS。大部分人能见到的DHCP服务器正是路由器或光猫。但是获取的IP地址是私有地址,只能在局域网内使用,最终在因特网传输需要转为公有地址。
1、新设备不知道哪个是DHCP服务器,所以需要进行DHCPdiscover,寻找DHCP服务器的存在。DHCP是处于应用层的,所以DHCPdiscover实际上是应用层报文(会提供一个transactionID来表明是哪一个客户,会提供bootp flags来表明广播不);在传输层使用UDP协议,客户端使用68端口,服务器端使用67端口;在网络层使用IP协议,对于没有源IP地址的可以使用0.0.0.0,不知道目的IP地址的可以写255.255.255.255(会广播,但是路由器不会广播出去);在数据链路层需要MAC地址,新设备有自己的MAC地址,目的MAC地址的话使用全1;
2、DHCP服务器会提供DHCPoffer,有IP地址、子网掩码、网关、DNS;其中有一个租期:如果客户接收这一地址,则它可在一个预定义的期限内使用该地址,在到期前一般进行续租,还会有续租时间;在传输层也是使用UDP协议,但是源端口是67,目的端口是68;在网络层源IP地址是路由器的IP地址,目的地址是给客户分配的IP地址,数据链路层同理;
3、但是如果有两个DHCP服务器都提供了IP,需要选择一个,所以会发送DHCPRequest;但是此时新设备还没有完全允许使用这个IP地址,所以IP地址还是写的0.0.0.0,目的IP地址还是广播地址(因为需要告诉所有的DHCP服务器客户选择了哪一个IP地址);数据链路层的MAC目的地址也是全1;
4、如果DHCP服务器收到了DHCPRequest,就回一个DHCPACK,来确认新设备可以用这个IP地址了;
更多抓包信息暂时不去了解。