DHCP协议和dhcpcd源码分析

发布 2019-08-28 10:30:17 阅读 9367

dhcp协议介绍与dhcpcd源码分析。

一、 dhcp协议的几种报文:

1、dhcpdiscover: 此为client开始dhcp过程中的第一个请求报文。

2、dhcpoffer : 此为server 对dhcpdiscover 报文的响应。

3、dhcprequst : 此为client 对dihcpoffer 报文的响应。

4、dhcpdeclient: 当client发现server 分配给它的ip地址无法使用,如 ip地址发生冲突时,将发出此报文让server禁止使用这次分配的ip地址。

5、dhcpack : server对 dhcprequst 报文的响应,client收到此报文后才真正获得了ip地址和相关配置信息。

6、dhcpnak : 此报文是server对client的dhcprequst报文的拒绝响应,client 收到此报文后,一般会重新开始dhcp过程。

7、dhcprelease :此报文是 client主动释放ip地址,当server 收到此报文后就可以收回ip地址分配给其他的client.

二、 dhcp server与client的标准交互过程。

1、client首先发出广播的dhcpdiscover报文,广播的目的是让dhcp server能够收到这个请求报文。在这个报文中,client可以在“选项”字段中加入“request paramter list”选项,表明自己想要获得的各种参数,而且四个ip地址字段都必须为0。

2、由于dhcpdiscover报文是广播,那么所有的dhcp server都能够收到,所有的dhcp server都会响应一个dhcpoffer报文,其中“你的ip地址”字段就是dhcp server能够提供给client使用的ip地址,而且dhcp server会把自己的ip地址放在“选项”字段中以便client区分不同的dhcp server,发出此报文后,在dhcp server上就会存在一个已分配ip地址的记录。

3、client能够收到所有的dhcpoffer报文,但clien只能处理其中的一个,一般的原则是client接收、处理最先收到的那个dhcpoffer报文。client会再发出一个广播的dhcprequest报文,在“选项”字段中会加入选中的dhcp server的ip地址和用户想要的ip地址,之所以广播是因为要通知所有的dhcp server进行相应的处理。

4、dhcp server收到dhcprequest报文,判断“选项”字段中的dhcp server的ip地址是否与自己的地址相同,不相同,则不做任何处理,如果自己发出过dhcpoffer报文,则清除相应ip地址记录;当“选项”字段中的dhcp server的ip地址是与自己的ip地址相同时,dhcp server就会响应一个dhcpack报文,其内容同dhcpoffer类似,并在“选项”字段中增加了ip地址使用租期选项。

5、client收到dhcpack报文后(经过上面的处理后,有且只有一个dhcpack报文),会检查dhcp server分配给自己的ip地址是否能够使用,如在以太网类型的网络中,client会发出免费的arp请求来确定dhcp server分配的ip地址是否已经被别人使用,如果可以使用,则client成功获得ip地址,并根据ip地址使用租期自动启动续延过程。

6、如果client发现dhcp server分配的ip地址已经被别人使用,则client会发出dhcpdecline报文通知dhcp server禁用这个ip地址以免引起ip地址冲突。然后client又开始新的dhcp过程,从第1步开始。

7、当client成功获取ip地址后,会根据ip地址使用租期自动启动续延过程,在使用租期过去50%时刻处,向dhcp server发送单播dhcprequest报文续延租期,如果成功即收到dhcp server的dhcpack报文,则租期相应向前延长,如果失败即没有收到dhcpack报文,则client继续使用这个ip地址。在使用租期过去87.5%时刻处,向dhcp server发送广播dhcprequest报文续延租期,如果成功即收到dhcp server的dhcpack报文,则租期相应向前延长;如果失败即没有收到dhcpack报文,则client继续使用这个ip地址。

在使用租期到期时,client应自动放弃使用这个ip地址,并开始新的dhcp过程,从第1步开始。

8、client在成功获取ip地址后,随时可以通过发送dhcprelease报文释放自己的ip地址,dhcp server收到dhcprelease报文后,会**相应的ip地址重新分配。

当存在dhcp relay时,所有的dhcp报文都会经过dhcp relay进行**,整个dhcp交互过程同上面类型,只是在报文封装时,稍有不同。

由上面的叙述可以看出,dhcp server的行为完全由client来驱动,dhcp server无法控制client的行为。因此dhcp协议的安全性比较差。

三、 dhcpcd的源码分析。

1、什么是dhcpcd:dhcpcd是一个dhcp客户端程序。

2、主函数流程:

do{currstate=(void *(currstate();

while ( currstate );

简单地说:就是一个有限状态机的程序实现。

3、dhcpcd共有7种状态(详见下图1所示):rebooting , init , selecting , requesting , bound , rebinding , renewing

图1:dhcpcd的工作流程。

DHCP协议详解

在常见的小型网络中 例如家庭网络和学生宿舍网 网络管理员都是采用手工分配ip地址的方法,而到了中 大型网络,这种方法就不太适用了。在中 大型网络,特别是大型网络中,往往有超过100台的客户机,手动分配ip地址的方法就不太合适了。因此,我们必须引入一种高效的ip地址分配方法,幸好,dhcp dynam...

网络协议DHCP协议分析课程设计

课程名称网络协议工程 设计题目 dhcp协议分析以及以下各层协议的工作机制。院系信息技术学院 班级 级计算机科学与技术2班 设计者。学号。指导教师洪孙焱。设计时间 2014.1.2 2014.1.6 信息技术学院。姓名院 系 信息技术学院。专业 计算机科学与技术学号 任务起止日期 2014.1.2 ...

DHCP协议 Cisco路由配置实例 命令详解

某单位使用 3620作为ios dhcp server,它和内网相连的fastethernet0端口的ip地址为192.168.1.4,二层机采用两台 2950,三层机采用一台cisco 3550。在整个网络中有二个vlan,为简化描述,假设每个vlan都采用24位网络地址,其中vlan1的ip地址...