This is my study note of DHCP.

DHCP简介

1
DHCP,动态主机配置协议,是一个应用层协议。DHCP前身是BOOTP,在Linux的网卡配置中也能看到显示的是BOOTP,DHCP引进一个bootp没有的概念:租约。bootp分配的地址是永久的,而dhcp分配的地址是可以有期限的。

DCHP的作用及特点

  • 自动分配IP、子网掩码、网关、DNS
  • 客户端使用端口为68,服务端使用端口67
  • DHCP一般不为服务器分配IP,因为它们需要使用固定IP
  • DHCP服务器和客户端需要在同一个局域网内

三种分配方式

  • 自动分配
    1
    自动分配是当DHCP客户端第一次成功地从DHCP服务器端分配到一个IP地址之后,就永远使用这个地址。
  • 动态分配
    1
    动态分配是当DHCP客户端第一次从DHCP服务器分配到IP地址后,并非永久地使用该地址,每次使用完后,DHCP客户端就得释放这个IP地址,以给其他客户端使用。
  • 手动分配
    1
    手动分配是由DHCP服务器管理员专门为客户端指定IP地址。

DHCP协议中的报文

1
2
3
4
5
6
7
8
DHCP DISCOVER :客户端开始DHCP过程发送的包,是DHCP协议的开始
DHCP OFFER :服务器接收到DHCP DISCOVER之后做出的响应,它包括了给予客户端的IP(yiaddr)、客户端的MAC地址、租约过期时间、服务器的识别符以及其他信息
DHCP REQUEST :客户端对于服务器发出的DHCP OFFER所做出的响应。在续约租期的时候同样会使用。
DHCP ACK :服务器在接收到客户端发来的DHCP REQUEST之后发出的成功确认的报文。在建立连接的时候,客户端在接收到这个报文之后才会确认分配给它的IP和其他信息可以被允许使用。
DHCP NAK :DHCP ACK的相反的报文,表示服务器拒绝了客户端的请求。
DHCP RELEASE :一般出现在客户端关机、下线等状况。这个报文将会使DHCP服务器释放发出此报文的客户端的IP地址
DHCP INFORM :客户端发出的向服务器请求一些信息的报文
DHCP DECLINE :当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止使用该IP地址。

DHCP工作流程

探索阶段

1
当DHCP客户端第一次登入网络时,通过广播的方式发送discover报文发现DHCP服务器,即发送255.255.255.255广播信息,每一台安装了TCP/IP协议的主机接收到这个广播信息,只有DHCP服务器会响应。

提供阶段

1
DHCP服务器对discover进行响应,从未分配的IP地址中分出一个给DHCP客户机,向客户机发送一个包含IP地址和其他设置的DHCP offer信息,返回信息也是广播的方式。

选择阶段

1
DHCP客户端接收到第一个offer信息后,以广播的方式回答一个DHCP reques请求信息,该信息包含向它所选定的DHCP服务器请求IP地址的内容。

确认阶段

1
当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后,便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,确认租约,并指定租约时长。

续租

1
DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限到达租约的50%时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。
  • 续租时只有两步请求 request和ack