DHCP协议


一、DHCP的概述


  DHCP协议,叫做动态主机设置协议,主要用于给主机分配配置的信息,使用的是67/68端口,67端口给服务器用,68端口给客户机用,下面来看一下它的报文格式:

  • op:请求(1)或者应答(2)
  • htype:基于ARP使用的值,常见为1(以太网)
  • hlen:存放MAC地址,通常为6
  • hops:保存信息传输过程中的中继次数
  • xid:客户机随机选择一个随机数,复制到应答中用于响应
  • secs:申请的次数
  • flags:只使用第 0 比特位,是广播应答标识位,用来标识 DHCP 服务器应答报文是采用单播还是广播发送。
  • ciaddr:客户机地址,如果已知为请求者的IP,否则为0
  • yiaddr:“你的”地址,由服务器填写,提供给客户的IP地址
  • siaddr:为 DHCP 客户端分配 IP 地址等信息的其他 DHCP 服务器 IP 地址。仅在 DHCP Offer、DHCP ACK 报文中显示,其他报文中显示为 0。
  • giaddr:转发代理(网关)IP 地址,DHCP 客户端发出请求报文后经过的第一个 DHCP 中继的 IP 地址。如果没有经过 DHCP 中继,则显示为 0。
  • chaddr:DHCP 客户端的 MAC 地址。在每个报文中都会显示对应 DHCP 客户端的 MAC 地址。
  • sname:为客户端分配 IP 地址的服务器名称(DNS 域名格式)。只在 DHCP Offer 和 DHCP ACK 报文中显示发送报文的 DHCP 服务器名称,其他报文显示为 0。
  • file:DHCP 服务器为 DHCP 客户端指定的启动配置文件名称及路径信息。仅在 DHCP Offer 报文中显示,其他报文中显示为空。

 二、DHCP的原理


 

  下面我们来看一下DHCP的原理,如图:

 

  1. 客户机向网络上广播发送DHCP discovery包(src:0.0.0.0,det:255.255.255.255):DHCP服务器大哥你在你哪里,我需要货(地址信息)
  2. 当网络上的DHCP服务器收到这个包之后,就会响应一个DHCP offer包(src:服务器地址,det:255.255.255.255):老弟啊,我在这里,这个货(地址信息)你看看
  3. 客户机接受到每个服务器的offer包之后,然后发送一个DHCP request包(src:0.0.0.0,det:255.255.255.255):非常感谢各位大哥提供的货(地址信息),因为DHCP 服务器2的货最早到,所以我选择他的(除了DHCP 服务器2外的大哥给一个白眼,走了)
  4. DHCP服务器2收到信息之后,回复一个DHCP ACK包(src:服务器地址,det:255.255.255.255):老弟,行家呀,我这货可是最好的(他以为他的货好,其实是因为它最早到客户机)

  客户机收到ACK之后,害怕自己网络中有人抢先把货上架,赶紧先检查一下自己的网络中这个货有没有上架,发现没有之后,自己才把货给摆上去。

  这个例子可能举得不是很好的,但是通过上面的步骤的话,客户机就可以获取到了IP地址(前提是客户机没有IP地址),如果客户机有IP地址,是为了续约,那么就不会有前面2步,从第三步开始。


 三、DHCP的攻击和防御


 

针对DHCP的攻击有

  • 攻击DHCP服务器:通过不断的发送伪装的DHCP请求,从而耗尽DHCP服务器的地址池

  防御:通过管理式交互机,动态绑定端口来防御,傻瓜式交换机没有这个功能

  • 伪装DHCP服务器:伪装一个DHCP服务,为客户机提供伪造的IP地址,那样客户机获取到伪造的IP地址也上不了网

  防御:通过管理式交互机,除了真正的DHCP服务器可以发送DHCP offer包外,其他的端口不允许发送这个包,傻瓜式交互机没有这个功能

 

posted @ 2020-11-22 13:18  菜鸟也有高飞的时候  阅读(876)  评论(0编辑  收藏  举报