版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式系统dhcp客户端协议的实现和改进日期:2006-05-21来源: 作者:字体:大+小于巍波刘尚麟蒋朝根摘要:木文详细分析了嵌入式系统dhcp客八端协议的实现原理,给出了详细的协议状态 变迁图,对rabbit2000嵌入式系统dhcp客户端协议进行了改进,引入了新的服务器dh cpoffer响应选择策略,并给出了实现代码。关键词:dhcp协议改进1引言动态主机配置协议(dynamic host configuration protocol, dhcp)是在 tcp/ip 网络上使客户机获得配置信息的协议,它是基于bootp协议,并在bootp协议的基础上添加了 口 动分配可用网络地址等功
2、能。dhcp建立在client-server模型上。其中指定的dhcp serv er分配网络地址并向动态配置的客户机传送配置参数。dhcp的消息格式是建立在boot p消息格式上的,这样可以利用bootp的中继代理功能来避免在每个物理网络都建立一个 dhcp server,同时还允许现有的 bootp client 使用 dhcp server。dhcp客户端协议已广泛移植到嵌入式系统屮,人人提高了嵌入式设备的可管理性,降低 了嵌入式设备手工配置ip地址所造成的管理成木和换件成木。2嵌入式系统动态ip地址分配协议原理嵌入式系统动态地址分配不是一-对一的映射,服务器不需要预先知道客户机的身份。
3、dhcp 服务器可以为任意一个嵌入式设备提供ip地址。嵌入式设备上网后,它使用dhcp协议获 収一个ip地址,然后配置其tcp/ip软件进行数据通讯。网络管理员预先指定了 dhcp服务器ip地址范围。dhcp客八机通过与服务器交换信 息协商地址的使用。服务器为客户机提供地址,客户机确认它己接受此地址,动态地址分配 是临时的。dhcp服务器将一个地址在有限时期内租给一个客户机。服务器在地址分配时 指定租用期。在租用期间,服务器不会将同一个地址租给其他客户机。但在租用期结束吋, 客户机必须更新租期或停止使用地址。嵌入式dhcp客八机取得分配地址和服务器进行信息交换的过程如下:(1)客户机在其子网内
4、广播一个dhcpdiscover报文,此报文中包含关于网络地址和租 用期选项的值,如果客户机和服务器不在一个子网内,则bootp中继代理会把这个报文传 给服务器。(2)每个收到这个报文的服务器广播一个包含可提供的网络地址和英他选项配置信息的d hcpoffer 报文。客户机收到一个或多个服务器的dhcpoffer报文后,根据一定的选择策略从中选出 个,并向选定的服务器发送dhcprequest报文。在这个请求报文中必须包含一个服 务器标识以指明被选中的服务器。如果客户机在定时器超时之前没有收到dhcpoffer报 文,则重发dhcpdiscover报文。 服务器在收到dhcprequest报文
5、后,如果可以满足请求报文中的请求则发冋一个d hcpack报文作为响应,如果不能满足请求则发回dhcpnak报文作为响应。服务器存d hcpoffer中提供给客户机的地址不能捉供给另外一个&户机,但如果服务器没有收到客 户机的dhcprequest报文则可以把在dhcpoffer中捉供给客户机的地址提供给另外 的客户机。客户机在收到包含配置参数的dhcpack报文后,对报文中捉供的配置参数进行检查, 同时进行配置,如果发现报文中有错误则客户机发送一个dhcpdec口ne报文并重新开始 整个过程。如果客户机收到dhcpnak报文则重新开始整个过程。客户机可以通过向服务器发送dhcprel
6、ease报文來释放地址。3嵌入式dhcp客户机状态变迁图当客户机第一次启动时,它进入initialize (初始化)状态。为了开始获取一个ip地址, 客户机先与本地网络上所有dhcp服务器联系,为此,客户机广播一个dhcpdiscover报文, 并转移到select (选择)状态。本地网上所有dhcp服务器接收报文,如果能够捉供服 务则发送一个dhcpoffer报文。因此客户机口j能收到零个或多个响应。处于select状态时,客户机从dhcp服务器收集dhcpoffer响应。每个响应提供 tjijt客户机的配置信息,还有服务器可提供租用给客户机的一个ip地址。&户机选择其 中一个做出响
7、应,并与发送给选定服务器一个dhcprequest报文,并进入request 状态。服务器为确认己接受请求并开始租用,服务器响应发出一个dhcpack报文。客八 机收到确认后转移到bound (己绑定)状态,此时客八机对开始使川此地址。图1 dhcp客户机的状态变迁图4 rabbit2000嵌入式系统dhcp客八端协议的改进rabbit2000是zworld公司的一种高性能8位芯片。它的开发环境dynamic c提供了 p cos-ll操作系统软件包和全套的tcp/ip协议栈。其屮dhcp客户端协议屮对来自dhcp 服务器提供的dhcpoffer响应选择策略的是:只冋应最快反应服务器。在局域网
8、环境中我 们发现,当多个dhcp服务器共存的时候,rabbit2000嵌入式设备的这种选择是随机的, 嵌入式设备常常会分配到错误的ip地址,发生ip地址混乱,无法完成正常的tcp/ip通讯。 为了解决这个问题,我们对dhcp客八端协议冋应服务器dhcpoffer响应选择策略进 行了修改。客八端只冋应特定的dhcp服务器提供的dhcpoffero服务器的识别我们是 利用dhcp服务器15选项-dns域名(本例中采用dhcp服务器15选项(dns域名)内容 为:)。修改后的dhcp客户端协议流程图如下图2所示:i开始初怡化 iiiii| ii/dw3pbisc0ver i wtpdi3c07er
9、|iiidetexitinej|deterainesconfigurationiconfituxationi | /wpoffer | dhcpofyerx j/|i iii收篥应答iili*应普包中巧逢氐气®iilx i| ditprequestv |iiiii挖交養釵iiiii ii|/ wktmk|iiii初妁化过理宪毕 |i|xmiapp,net图2对特定dhcp服务器做出回应的dhcp客户端流程dynamic c dhcp 协议栈文件为 boottp.lib。其屮函数_bootp_nodebug char dhcp_getop ts()用来解析服务器选项参数,函数_boot
10、p_nodebug char dhcp_send_rcv()完成数据包的 收发,对这两个关键的函数做如下修改就可以实现上述功能。关键代码如下(代码的功能请 参考注解):/申明使丿i到的变塑具体丿ij法见后面的程序char _mydomainname64;char saftydhcpserver;_bootp_nodebug char dhcp_getopts(struct bootp * bp3 boot_parms * parms)/解析服务器选项参数mydomainname0= 70' / 保存 dns 域名的变量清 0 case dhcp_vn_host: 如果dhcp服务器使用
11、了 15选项dns域名,解析其内容len = p1;/ look for 7 separating host and domain extensionu = p+2+len;for (t = p+2; t v u; t+)if (*t = t) break;if (t < u)len = tp2;elset = null;if (len > sizeof(parms->hostname)-1)len = sizeof(parms->hostname)-1;memcpy(parms->hostname, p+2, len);parms->host namele
12、 n = 0;if (t && !parms->domain0) len = p1(t p - 1);if (len > 0) if (len > sizeof(parms->domain)-1)len = sizeof(parms->domai n)1;memcpy(parms->domain, t+1, len);parms->domainle n = 0;strcpy(_mydomainname,parms->domain); 将 dns 域名保存到变量/_mydomai nname 便于比较break;_bootp_nod
13、ebug char dhcp_send_rcv(struct bootp * sendbootp, struct bootp * _bootp,char * do_se nd, char non block, boot_parms * parms,iongword * bootptimeout, longword * sendtimeout,word * magictimeout, longword * starttime,word rand)/完成数据包的收发saftydhcpserver=o; 女全标记清 0if (!memcmp(_mydomainname,"",strlen() 如果收到了特定 dhcp 服务 器的15/选项为 的 dhcpoffer 包saftydhcpserver=1;/置安全标记为1,完成选择,程序进入下一步if (isaftydhcpserver) continue; 收到的冋应不是特定dhcp服务器的冋应,放弃,检查
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临沂科技职业学院《精细化学工艺学》2023-2024学年第一学期期末试卷
- 辽河石油职业技术学院《粮油食品加工工艺学》2023-2024学年第一学期期末试卷
- 江西信息应用职业技术学院《食品质量与安全控制》2023-2024学年第一学期期末试卷
- 江苏工程职业技术学院《女性文学鉴赏》2023-2024学年第一学期期末试卷
- 华东政法大学《健康教育》2023-2024学年第一学期期末试卷
- 湖北黄冈应急管理职业技术学院《外国文学专题》2023-2024学年第一学期期末试卷
- 遵义医药高等专科学校《材料焊接性》2023-2024学年第一学期期末试卷
- 珠海格力职业学院《外科学Ⅱ》2023-2024学年第一学期期末试卷
- 重庆青年职业技术学院《高等天然药物化学》2023-2024学年第一学期期末试卷
- 中华女子学院《运动控制系统》2023-2024学年第一学期期末试卷
- 第二章 运营管理战略
- 《三本白皮书》全文内容及应知应会知识点
- 专题14 思想方法专题:线段与角计算中的思想方法压轴题四种模型全攻略(解析版)
- 医院外来器械及植入物管理制度(4篇)
- 港口与港口工程概论
- 《念珠菌感染的治疗》课件
- 门店装修设计手册
- 考研计算机学科专业基础(408)研究生考试试卷与参考答案(2025年)
- 2024护理个人年终总结
- 海南省申论真题2020年(县级及以上)
- 蛇年金蛇贺岁
评论
0/150
提交评论