电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

如何用W7100A实现DDNS客户端(一)

这篇文章主要介绍如何用W7100A实现DDNS(动态域名系统)的过程。今天为大家分享第一部分即DDNS规格和DDNS演示,之后继续为大家分享后面的部分即代码演示~希望对大家有帮助~

1. DDNS(动态域名系统)

DDNS是一个可以在DNS记录中更新服务器IP地址的协议。由于ADSL/DSL的特性,IP地址必然也会因ISP(互联网服务提供商)而改变。为了保持DNS记录的随时更新,DDNS协议用来监测IP地址中的任何变化。当监测到有变化时,DDNS将会向DNS服务器发送请求来更新新的IP地址。

目前,DDNS协议与最普及的如DynDNS.com和No-IP.com等DDNS主机兼容。

考虑到安全原因,DDNS主机不允许DDNS客户端直接更新存在于DNS服务器中的DNS记录。但是,用户可以使用API(应用程序界面)来更新记录。它们的API由于使用http协议,所以简单易用。下面是程序的基本流程。

1.1 DDNS规格

程序首先执行一个DNS查询来决定DDNS服务器的IP地址。在与服务器建立连接之后,会发送一个请求。这个请求信息使用原始http格式。

下面显示了用于No-IP.com和DynDNS.com的原始http获取信息。

客户端必须填写红色高亮的事项。

注意两个版本具有相同的语义。

下面的表描述了各个参数的细节。

参数
描述
示例

Hostname
网站的主页名
?hostname=mytest.acb.com

Myip
需要更新的IP地址
?myip=1.2.3.4

Authorization
用户名和密码字符串以Base64编码。字符串的格式如:
用户名:密码
用户名和密码字符串: test:test
基64编码字符串: dGVzdDp0ZXN0

User-Agent
设备的名称和版本
No – IP.com格式:
Wiznet W7100/1.0 test@wiznet.co.kr
DynDNS.com格式:
Wiznet – W7100 – 1.0

在发送请求后,服务器将会回复下面的这些信息。

DynDNS.com 响应信息

回复信息
信息类型
描述

good <IP_ADDRESS>
成功
更新完成

nochg <IP_ADDRESS>
成功
尽管更新完成,IP地址没有变化。请保证更新是用新的IP地址完成的,否则服务器将会阻止请求以及客户端的更新。

Badauth
错误
错误的用户名和密码

!donator
错误
专用的选项要求类似offline URL的服务费

Notfqdn
错误
专用的主机名的格式不合格 (注意: 主机名名应该是hostname..org或者hostname.com)

Nohost
错误
不存在该主机名账户

Numhost
错误
请求立即更新多于20个主机

Abuse
错误
主机名由于滥用而被禁用

Badagent
错误
代理发送错误的Http请求格式

good 127.0.0.1
错误
除非客户端想要更新127.0.0.1,否则该信息表明在http请求规格中发生错误。

Dnserr
错误
Dns错误: 请联系DynDns Support

911
错误
服务维护正在处理。请联系DynDns Support

No-IP.com请求信息

回复信息
信息类型
描述

good <IP_ADDRESS>
成功
更新完成

nochg <IP_ADDRESS>
成功
IP地址未改变,更新没有执行。

Nohost
成功
不存在该主机名账户

Badauth
成功
错误的用户名和密码

Badagent
成功
代理发送不正确的Http请求格式

!donator
成功
专用选项要求类似Offline URL的服务费

Abuse
成功
主机名由于滥用而被禁用

911
成功
服务维护正在处理。请联系DynDns Support

确保响应信息为“good <IP_ADDRESS>”。 否则,客户端应该停止执行更新并且首先解决该问题。如果这些错误被忽视,客户端很有可能被服务器禁止。

  1. DDNS演示

在这一章节,将会演示DDNS协议。

在测试前,请根据下面的图建立网络环境。

网络配置和DDNS账户配置一起,位于以**“User Settings”**为名的文件下,下图中加亮的方框为main.c。

第一步**)连接好开发板并上电**

通过串口打印输出网络设置。确保这些设置和网络相匹配。用户可以使用WizISP或者W7100A Debugger来下载DDNS示例代码。请参阅“W7100A WizISP程序用户指南”和“W7100ADebugger指南”。

Network Settings
IP: 192.168.0.2
Gateway: 192.168.0.1
Subnet: 255.255.255.0
MAC: 0.8.dc.11.22.33
DNS: 0.0.0.0
*****DDNS Account Settings
Hostname: test.dnsalias.net
Username & Password: test:test
User Agent: WIZnet - W7100 - Version 1.0


第二步**) 按照这样的格式:xxx.xxx.xxx.xxx输入ISP’s DNS服务器IP地址。**

Enter the ISP's DNS server IP address in this format (255.255.255.255)
_

第三步**) 按照这样的格式:xxx.xxx.xxx.xxx输入在DNS记录中要更新的新的IP地址。**

Enter the server's new IP address in this format (255.255.255.255)
_

第四步) 在输入新的IP地址后,DDNS协议处理请求。下面列出了三种不同的响应:

情况****1: 在更新IP地址之后,服务器响应“good”表明更新成功。下面是一个成功更新的例子。

情况2: 由于新的IP地址和之前更新的IP地址相同,跳过更新。下面是一个跳过更新的例子。

No Change in IP address detected. Skip update
Exit DDNS Update

情况3: 更新失败。当更新失败时,服务器为用户提供一个错误的代码用DDDS主机来诊断。

Connected to 204.13.248.112 to update DYNDNS record
Sent Request Message
Received 162 Bytes of Data from Server
The Server Respond is : badauth
Failed to update with the new IP. Please check this website ( http://www.dyndns.com/developers/specs/return.html )for more details about the error message
Exit DDNS Update

以上总结了执行DDNS协议的步骤。

如果您有什么疑问,请直接留言或登录WIZnet官方网站:http://www.wiznettechnology.cn/ 或者来电:86-10-84539974(转166),QQ:2377211388, 邮箱:wiznetbj@wiznettechnology.com  联系人:Jerry ,谢谢!

博主
wiznetbj@wiznettechnology.com
WIZnet
我是一个电子设计爱好者,喜欢单片机、硬件TCP/IP芯片设计开发、无线模块研究,嵌入式等电子产品。欢迎同道中人前来与我一同探讨研究!
点击跳转