有关DHCP服务器 offer ack 包单播广播问题

     通常情况下,都会说DHCP Server 这端的offer包和ack包是广播出去的,但是这个在具体情况下是怎么样的呢,通过rfc2131可以知道,这个其实是和client和server端都有关系的,其中有这样一段描述:

    Ifthe 'giaddr' field in a DHCP message from a client is non-zero,the server sendsany return messages to the 'DHCP server' port on the BOOTP relay agent whoseaddress appears in 'giaddr'. If the 'giaddr' field is zero and the 'ciaddr'field is nonzero, then the server unicasts DHCPOFFER and DHCPACK messages tothe address in 'ciaddr'.If 'giaddr' is zero and 'ciaddr' is zero, and thebroadcast bit is set, then the server broadcasts DHCPOFFER and DHCPACK messagesto 0xffffffff. If the broadcast bit is not set and 'giaddr' is zero and'ciaddr' is zero, then the server unicasts DHCPOFFER and DHCPACK messages to theclient's hardware address and 'yiaddr' address. In all cases, when 'giaddr' is zero, the server broadcasts any DHCPNAKmessages to 0xffffffff.

    首先说明一下这个giaddr域,rfc中给的描述是Relay agent IP address, used in booting via a relay agent.也就是中继的地址,一般在有中继的情况下都是单播的,目的地址就是该中继的地址。

    那么在没有中继的情况下,首先看ciaddr域是否为零,如果不为零,就是单播,目的地址就是该ciaddr域中的地址;如果ciaddr域为零,再看其server端是否设置了broadcast bit位,如果设置了,就全F地址广播,如果没有设置,就是单播,目的地址是该client的硬件地址(L2)和yiaddr域中的地址(L3)。

    也就是说首先看client端是否支持单播,如果用Win XP下的DHCP客户端,发现其是支持单播的(也就是其ciaddr域不为零),而我用我们项目开发中的一台交换机作为DHCP Client,其初始化ciaddr域是为零的,由于两者的server端都是Win XP下,所以其broadcast bit是一致的,而且都有设置,因此发现这种情况下是广播的。

    我在某论坛上看到过一个帖子,记录了这样一个实验结果:

    用unix做dhcp服务器,用win客户端获取得到的结果:(第2层信息)

    dhcp discover(目的mac是广播)

    dhcp offer(目的mac是单播,指向客户端mac)

    dhcp request(目的mac是广播)

    dhcp ACK(目的mac是单播,指向客户端mac)

 

    如果用win做dhcp服务器,客户端也是win:(第2层信息)

    dhcp discover(目的mac是广播)

    dhcp offer(目的mac是广播)

    dhcp request(目的mac是广播)

    dhcp ACK(目的mac是广播)


     由于客户端都是Win,那产生这种差异的唯一可能就是server端的系统环境不同导致其broadcast bit位的设置不同,根据以上rfc描述分析,在unix下应该是没有设置broadcast bit位,而Win下设置了broadcast bit位。


转自:http://blog.csdn.net/leo000111/archive/2011/01/10/6127857.aspx

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值