分享

2010

 天水伊人是幽兰 2015-11-28

        今天看dhcp协议的rfc2131。

        dhcp协议分为两部分,一部分是一个传送主机配置参数的协议,另外一部分是一个对网络地址进行分配的机制。是一个客户端/服务器的模式。

        dhcp server需要支持的三种机制是:自动配置、动态配置和手动配置。

        其他先省略,看看在动态分配的时候的步骤。1.client在local physical subnet上面广播一个dhcpdiscover信息,当server和这个client不再共一个物理子网的情况下,Bootp relay可以把这个信息传送给dhcp sever。2.server用一个dhcpoffer消息回答,并且把一个可用的网络地址放在yiaddr field上面,也可以通过option来传送其他的配置参数。dhcp server不需要保留offered网络地址,建议在offer的时候查看是不是已经被使用了就行。3.当client收到一个或者多个dhcpoffer消息之后,client选择一个配置参数,然后广播一个dhcprequest消息,这个消息必需有server identifier选项用以表明它选择了那个服务器,在requested IP address选项,必需是offer里面的yiaddr field里面的字段,这次广播和dhcpdicover的广播一样。如果超时的话,重新发送dhcpdiscover消息。4.当server收到dhcprequest的广播的时候,server可以知道它有没有被选择,如果被选择了,它发送一个dhcpack消息,然后server使用client identifier or chaddr和配置的网络地址作为一个唯一的标志。dhcpack消息里面的参数必需和dhcpoffer里面的参数一致,如果被选择的server不能满足dhcprequest,这个server应该回应一个dhcpnak消息。5.如果client收到一个dhcpack的时候,开始最终检查然后配置,如果发现有人使用该地址,发送dhcpdecline消息给server,然后过一段时间继续配置,如果收到的是dhcpnak消息,开始重启配置程序,如果dhcpack和dhcpnak都没有收到,则在超时之后继续重传dhcprequest消息,这个重传程序如果失败,client应该告诉用户然后继续开始配置程序。6.client可以通过发送dhcprelease消息来放弃server分配给client的地址。在消息中要写明网络地址和client identifier。

        当client希望重新使用以前分配的网络地址的时候,可以启动另外的程序:1.广播DHCPREQUEST消息,消息包含client的网络地址在requested IP address选项。因为client还没有接受到它的地址,所以不能填写ciaddr字段。2.当dhcp接受到的时候,就不需要检查client的网络地址是不是在使用,如果这个情况,client会使用ICMP Echo消息检查出来。如果当DHCPPREQUEST消息是非法的时候,server应该回应一个dhcpnak消息,如果不能保证消息是准确的,server不需要回应。当giaddr是0x0的时候,client和server在同一个网络上面,server必需广播一个dhcpnak消息,因为client可能没有一个正确的网络地址或者子网掩码,否则server就发dhcpnak消息发送给Bootp relay代理。其余的阶段和上面的一样。

        现在看到这里,晚上争取装好linux。看看周师兄的代码。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多