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

登录以开始

如何用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
成功
更新完成

nochg
成功
尽管更新完成,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
成功
更新完成

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

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

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

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

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

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

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

 

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

 

 

  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芯片设计开发、无线模块研究,嵌入式等电子产品。欢迎同道中人前来与我一同探讨研究!
点击跳转