更多文章欢迎关注个人微信公众号:极客熊猫
何为DHCP?
DHCP是Dynamic Host Configuration Protocol的首字母缩写,即动态主机配置协议。
任何连接到的互联网的主机或路由器都需要IP地址、子网掩码、默认网关、DNS服务器等配置信息,当一个网络中的主机或路由器数量很多时,采用人工来配置这些信息显然是低效且易错的。DHCP就是解决这个问题的。
DHCP的主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、子网掩码、默认网关、DNS服务器地址等信息,并能够提升IP地址的使用率。
DHCP采用客户端/服务器模型。客户端主机的IP地址等配置信息的动态分配任务由其自身发起,当DHCP服务器接收到来自客户端主机申请地址的信息时,才会向客户端主机发送相关的地址配置等信息,以实现客户端主机地址信息的动态配置。
DHCP位于五层网络模型中的应用层,其传输层采用UDP协议。客户端端口号为68,服务器端口号为67。
DHCP服务器可提供三种地址分配:自动分配、动态分配、手动分配。三者区别在于地址分配是否基于客户端的身份以及该地址是否可撤销或变更。我们只关注动态分配。
动态分配:客户端从服务器的地址池中获得一个可撤销的IP地址。
地址池和租用期
动态分配中,DHCP客户端请求分配一个IP地址时,DHCP服务器从其地址池中选择一个地址作为响应。
地址池:专门为DHCP用途而分配的一个连续的IP地址范围。
租用期:分配给客户端的IP地址只在一段特定时间内有效,这段时间称为租用期。
租用期是可以延长的,即客户端可以续约。
DHCP消息格式
- Op:标识消息是请求消息(1)还是应答消息(2);
- HW类型:硬件类型,基于ARP使用的值,对于以太网,该值为1;
- HW长度:存放硬件(MAC)地址的长度,对于以太网MAC地址,该值为6;
- 跳步数:保存消息传输过程中的中继次数。消息发送方将该值设置为0,并在每次中继时递增;
- 事务ID:由客户机选择的随机数,服务器将它复制到响应中,用于将请求和应答匹配起来;
- 秒数:由客户机设置,它是第一次尝试申请或重新申请地址经过的秒数;
- 标志:该字段16位中,目前只用了1位,称为广播标志。客户机可以在请求中设置该位,表示它们不能或不愿处理单播IP数据报,但可处理广播数据报(例如,客户机还没有IP地址的情况)。通过设置该位通知服务器和中继代理,广播地址可用于响应中。
- ciaddr:如果客户机已有IP地址的话,客户机在发送请求时将自己的IP地址放在此处;
- yiaddr:由服务器填写,服务器把想要分配给客户机的IP地址放在此处;
- siaddr:一般是DHCP服务器的IP地址;
- giaddr:如果需要跨子网进行DHCP地址分配(DHCP服务器与客户机不在同一子网),则在此处填写经过的路由器的IP地址;
- chaddr: