OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10313|回复: 9

DHCP 续租问题

[复制链接]

8

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2016-4-18
在线时间
25 小时
发表于 2016-8-8 15:35:46 | 显示全部楼层 |阅读模式
1金钱
我看到原子哥的LWIP例程里,关于DHCP功能的实现,是单独启动了一个DHCP功能的任务,好像在成功获得动态IP分配后就把这个任务自己的删除了(或挂起了,具体忘了),这样的话长时间运行,DHCP的IP地址租期一到,LWIP是不是就没有和路由器沟通进而续租IP能力了?该如何让拥有动态IP地址的开发板子能一直长期运行下去呢?不要删除或挂起这个任务吗?望眼欲穿盼回复
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2016-4-18
在线时间
25 小时
 楼主| 发表于 2016-8-8 15:35:47 | 显示全部楼层
本帖最后由 大毛桃 于 2016-8-12 21:23 编辑

.......
回复

使用道具 举报

8

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2016-4-18
在线时间
25 小时
 楼主| 发表于 2016-8-9 17:48:49 来自手机 | 显示全部楼层
没人知道吗~T_T~自己顶
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-8-9 23:09:13 | 显示全部楼层
你先测试下,是否长时间运行有问题。
回复

使用道具 举报

8

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2016-4-18
在线时间
25 小时
 楼主| 发表于 2016-8-11 23:05:34 | 显示全部楼层
我把路由器的DHCP的租约时间改为2分钟,然后将作为客户端的开发板连到路由器上,另一台作为服务器的WindowsPC通过wifi连接到同一台路由器上,在PC上打开网络调试助手,设置为TCP服务器,接受开发板的连接请求。开发板上电后得到了动态IP地址,确实是能够连通到PC上运行的TCP服务器的。此后服务器向开发板发数据,开发板返回接收到的数据,这样一直持续了半小时,似乎没问题。但我不知道为何一直能持续,因为一般据说是DHCP租约时间超过50%和87.5%时,客户端要主动联系路由器续租的,而开发板的DHCP任务在得到IP后早已经立即自己删除了。
      没有了那个任务,那么在开发板上,谁以及如何完成以下事务处理的:
当客户机的租约期到50%的时候,会向DHCP服务器发送DHCP REQUEST消息包。
如果客户机接收到该服务器回应的DHCP ACK消息包,客户机就根据包中所提供的新的租期以及其它已经更新的TCP/IP参数,更新自己的配置,IP租用更新完成。
如果没有收到该服务器的回复,则客户机继续使用现有的IP地址,因为当前租期还有50%。
如果在租期过去50%的时候没有更新,则客户机将在租期过去87.5%的时候再次向为其提供IP地址的DHCP联系。
如果还不成功,到租约的100%时候,客户机必须放弃这个IP地址,重新申请。
如果此时无DHCP可用,客户机会使用169.254.0.0/16中随机的一个地址,并且每隔5分钟再进行尝试

论坛精英荟萃,有人知道吗?
回复

使用道具 举报

8

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2016-4-18
在线时间
25 小时
 楼主| 发表于 2016-8-11 23:15:13 | 显示全部楼层
是不是客户端得到IP后即使一直闷头不吭声续租的事情,但路由器发现这个客户端一直处于活动状态,就默许它继续用原来的IP了?那假如所有能分配的地址都租出去了,这个开发板的IP租期也已到期而另一台客户端此时正在申请DHCP分配地址呢?地址就会被抢去吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-8-12 21:04:20 | 显示全部楼层
大毛桃 发表于 2016-8-11 23:15
是不是客户端得到IP后即使一直闷头不吭声续租的事情,但路由器发现这个客户端一直处于活动状态,就默许它继 ...

应该是,不会被抢。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

8

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2016-4-18
在线时间
25 小时
 楼主| 发表于 2016-8-12 21:21:21 | 显示全部楼层
那我就这样定性了:按照DHCP规范,到租约的100%时间时候仍未获得正式续租许可,客户机必须放弃这个IP地址,重新申请。而我们开发板的LWIP却没有办这个事情,只能说是在一种巧合下能持续工作了。这似乎是一种游离于DHCP规范之外的偶然性稳定,不是一种合规的做事方法。这个帖子先就这样结了。如果有人反对,欢迎讨论。我有空再看看LWIP的相关资料,若有新发现,就再来补充。
回复

使用道具 举报

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2019-8-13
在线时间
15 小时
发表于 2021-3-3 16:36:20 | 显示全部楼层
lwip有个函数 dhcp_renew(struct netif *netif)专门用于更新租期的,但是我还没用过
回复

使用道具 举报

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2019-8-13
在线时间
15 小时
发表于 2021-3-3 16:44:49 | 显示全部楼层
dhcp_coarse_tmr()这个函数一直在循环检测,然后 ->dhcp_t1_timeout() ->dhcp_renew(),在dhcp_renew()完成续租,我看代码是这个流程,不对的地方望各位大佬指出
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 13:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表