27 DCHP协议

怎甘沉沦 提交于 2019-12-06 16:25:31

27 DCHP协议

DHCP,动态主机配置协议,前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,常用的2个端口:67(DHCP server),68(DHCP client)。DHCP通常被用于局域网环境,主要作用是集中的管理、分配IP地址,使client动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。简单来说,DHCP就是一个不需要账号密码登录的、自动给内网机器分配IP地址等信息的协议。

主机如何获得IP地址
  • 静态配置
  • 动态主机配置协议-DHCP

动态主机配置协议-DHCP

DHCP: Dynamic Host Configuration Protocol

 从服务器动态获取: • IP 地址 • 子网掩码 • 默认网关地址 • DNS 服务器名称与IP 地址 “即插即用” 允许地址重用 支持在用地址续租 支持移动用户加入网络

DHCP属于应用层协议,它在传输层使用UDP协议,目的端口是67。

DHCP协议中的报文

DHCP报文共有一下几种:

  • 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 报文格式

DHCP服务的8种报文的格式是相同的,不同类型的报文只是报文中的某些字段取值不同。DHCP报文格式基于BOOTP的报文格式。下面是各字段的说明。

img

img

  • Xid :随机生成的一段字符串,两个数据包拥有相同的xid说明他们属于同一次会话
  • Ciaddr :客户端会在发送请求时将自己的ip地址放在此处
  • Yiaddr :服务器会将想要分配给客户端的ip地址放在此处
  • Siaddr :一般来说是服务器的ip地址.但是注意!根据openwrt源码给出的注释,当报文的源地址、siaddr、option­>server_id字段不一致(有经过跨子网转发)时,通常认为option­>srever_id字段为真正的服务器ip,siaddr有可能是多次路由跳转中的某一个路由的ip (下图中wireshark抓包中也有标明siaddr为nextserver ip address)
  • Chaddr :客户端的mac地址
  • Giaddr :如果需要跨子网进行DHCP地址发放,则在此处填入经过的路由器的ip地址
  • Sname :服务器主域名
  • Options :可以自由添加的部分,用于存放客户端向服务器请求信息和服务器的应答信息

DHCP过程

 主机广播 “DHCP discover”(发现报文) DHCP服务器利用 “DHCP offer” (提供报文) 进行响应 主机请求IP地址: “DHCP request” (请求报文) DHCP服务器分配IP地址: “DHCP ack” (确认报文)

1570937434103

DHCP协议在应用层实现

 请求报文封装到UDP数据报中 IP广播 链路层广播(e.g. 以太网广播)

DHCP服务器构造ACK报文

包括分配给客户的IP地址、子网掩码、默认网关、DNS服务器地址

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!