如何在W5200中实现DHCP
来源:互联网 发布:网络贷款需要什么条件 编辑:程序博客网 时间:2024/06/06 04:43
W5200是WIZnet公司研发的一款基于全硬件TCP/IP协议栈的网络芯片,将所需的网络协议用脱离主控芯片的硬件逻辑电路实现,能卸载处理器对软件协议栈的烧写负担,整个系统的网络接入也变得高效稳定,DHCP是一个局域网的网络协议,使用UDP协议工作,以下将介绍如何在网络芯片W5200中实现DCHP。
1 简介
DHCP服务器使用DHCP分配信息,这些信息包括IP地址或者分配到客户端的设置。该应用笔记将解释在如何使用W5200实现DHCP客户端。
2 DHCP
DHCP使用传输层协议UDP(用户数据报协议),使用UDP广播与DHCP服务器通信。图1描述了DHCP服务器与客户端的通信。
图. 1 DHCP消息
DHCP客户端在连接的网络上广播“发现设备消息”(‘DISCOVERY message’)。 如果DHCP服务器存在这个计算机网络,DHCP服务器将接收“发现设备消息”(‘DISCOVERY message’)并且发送“提供服务消息”(‘OFFER message’)到DHCP客户端。“提供服务消息”(‘OFFER message’)包括DHCP客户端可以使用的IP,网关(G/W),与DNS服务器IP一样的网络信息,还有一些像租约时间这样的信息。DHCP客户端通过接收“提供服务消息”(‘OFFER message’)能够确认DHCP的报告已收到,然后发送“请求设备消息”以使用服务器建议的信息。 当“请求设备消息”(‘DISCOVERY message’)被接受到之后,DHCP服务器决定这个租赁期限(DHCP客户端的IP地址可以被使用的时间期限)和网络配置是否能用。如果上述信息可用,DHCP服务器将发送ACK消息到DHCP客户端;如果不可用将发送NACK消息。
3 DHCP 客户端
3.1 演示
图2 显示了DHCP客户端的测试结果,该测试将W5200E01-M3与一个网络装置连接。可以检查DISCOVER/OFFER/REQUEST/ACK消息。同样可以检查DHCP服务器分配给DHCP客户端的网络配置。
图 2 DHCP过程(左:成功&右:超时)
如果网络中没有DHCP服务器,DHCP过程将会超时(见图2,右)。默认的情况,W5200将重试3次直到DHCP_DISCOVER (Offer)响应被收到,否则W5200将会使用全0的网络参数。(IP: 0.0.0.0, 子网: 0.0.0.0, 网关: 0.0.0.0)
4 软件
4.1 Socket
4.1.1 打开(OPEN)
由于互联网连接之间不需要DHCP服务器和DHCP客户端,DHCP需要打开UDP。使用下面的Sn_MR_UDP 打开(OPEN)socket(line886)。
4.1.2 发送(SEND)
发送DHCP数据之前用户必须设置其他用户的IP地址和端口。DHCP_SERVER_PORT固定为67.当操作DISCOVER 或REQUEST时, IP地址将使用广播地址(255.255.255.255)来发送数据。从DHCP消息接收到DHCP服务器IP后,使用解析的DHCP服务器IP(DHCP_SIP[])发送数据(line287)。
4.1.3 接收(RECEIVE)
这部分与UDP的接收部分相同。请参考“在W5200中如何实现 UDP”。
4.1.4 DHCP消息格式
下面的结构是由使用DHCP消息的代码组成。(请参考RFC1541文档获得关于DHCP消息格式和每一个字段的更多信息)。以下ciaddr字段用于发送网络信息;选项字段用于发送消息类型和像客户标识符这样的信息。
4.2 DHCP函数
实现DHCP客户端的函数列在以下的dhcp.h和dhcp.c文件中。
图. 3 检查dhcp函数
图.3表示了check_dhcp()流程图。DHCP_OFFER,DHCP_ACK,和DHCP_REQUEST操作取决于dhcp_state的变化(转换)。图.4 表示了parseDHCPMSG()的流程图。parseDHCPMSG()用于解析DCHP消息。图.5表示了check_LeaseIP()和send_DHCP_REQUEST()流程图。
图. 4 parseDHCPMSG()函数流程图
图. 5 send_DHCP_REQUEST()函数流程图
关于此篇博文,若您有任何疑问,欢迎评论留言,我们将及时解答,谢谢关注!~^_^更多信息,欢迎访问我们的官方博客或官网!
- 如何在W5200中实现DHCP
- 如何在W5200中实现HTTP客户端?
- 如何在以太网芯片W5200中实现FTP客户端
- 如何在以太网芯片W5200中实现SNMP?
- linux中如何设置DHCP
- 【科研论文】ZigBee网络在智能电网需求侧的组网与实现--基于W5200
- 怎样解决W5200/W5500在TCP通信过程中意外断开?(Keepalive)
- 如何在Linux配置DHCP服务器
- 如何使用W7100A实现DHCP客户端?
- 在windows 2008中搭建DHCP服务
- 在 Active Directory 中授权 DHCP 服务器
- 在 DHCP 中创建一个 WPAD 条目
- 在Linux中DHCP服务器的配置
- 在virtualbox中如果开启DHCP服务
- 在Ubuntu系统中配置DHCP服务
- 如何在LINUX中实现//
- 如何使用W5200的间接总线接口模式(一)
- 如何使用W5200的间接总线接口模式(二)
- SQL Server 2012中快速插入批量数据的示例及疑惑
- 问题
- 读故事了解"云"
- JavaEE 绝对路径、相对路径获取方式
- poll函数实现多路复用
- 如何在W5200中实现DHCP
- JIRA 5安装
- 提高英语阅读
- cache menu 表的增长
- 3.2.2 编译PC版本的 qtopia2.2.0;3.2.3 编译mini6410版本的 qtopia2.2.0;
- selenium webdriver学习(二十一)------------Selenium Grid深入学习
- Spring中试用SimpleFormController 完成表单验证
- GWT解析XML
- 编译型与解释型、动态语言与静态语言、强类型语言与弱类型语言的区别