[原创] DHCP、BOOTP和TFTP在以太网bootloader升级中的分析

academic   2010-11-8 09:29 楼主

    到目前为止,开发板要得到IP地址可以通过两种协议,BOOTP和DHCP,都是基于客户端到服务端的模式,都是用UDP传输。

    先分析一下DHCP协议,开发板使用LwIP协议栈,默认首先采用DHCP协议获取自己的IP地址。

    DHCP client:Lm3s8962开发板

    DHCP server:路由器   这里要注意的是,windows也分为客户端版和服务器版,一般使用的都是客户端版,所以和开发板一样DHCP client ,而没有开启DHCP服务。

    Step1:DHCP client:发送DHCP discover 报,寻找DHCP server。

1.jpg

    和BOOTP一样,采用的都是UDP的68 和 67号端口。

    开始并不知道自己的IP地址,只填充了自己的mac地址,目标MAC地址和目标IP地址都是广播地址,在同一个子网里边的所有主机都会收到该报文。“谁是DHCP服务器,我要一个IP地址”

    step2:DHCP server: DHCP 服务器受到该请求之后,生成了一个IP地址,但不能立即分配给客户端,它先要判断网络内是否有人使用这个IP地址,如果没人使用,就再分配给client。(“我打算把192.168.0.194分配出去,有没有人在使用它?”)

2.jpg

    step3:DHCP server:等到一段时间没人回应,就说明没人使用这个IP地址,分配给刚才请求的client。

3.jpg

    并告之租用期限7天。(广播:“我把192.168.0.194分配给FF:FF:FF:FF:F1:F1了”)

    step4:DHCP client:收到了DHCP server的广播之后,还要广播确认一下是否是把192.168.0.194分配给我。

4.jpg

    step5:DHCP server:把刚才的offer 改为ACK再广播出去,(“对就是分配给你的,放心用吧”)

5.jpg

    step 6:DHCP client在使用之前,还必须广播两次ARP,看是否有人再用,确实没有人回应的话,才敢开始使用刚才分配的IP地址。

6.jpg

    

[ 本帖最后由 academic 于 2010-11-8 16:28 编辑 ]

回复评论 (2)

楼主很强大,非常感谢,正无从下手呢,先学习下。
点赞  2011-8-16 11:49
谢谢
点赞  2012-6-18 17:43
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复