OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 622|回复: 6

单片机编程实现用网址域名获取服务器IP,超简单,一句话

[复制链接]

  离线 

50

主题

234

帖子

3

精华

高级会员

Rank: 4

积分
992
金钱
992
注册时间
2012-3-4
在线时间
49 小时
发表于 2017-5-1 12:26:36 | 显示全部楼层 |阅读模式
正点原子公众号
为了适合需要,现在设备IP可能变化,以dev.fuhome.net域名所指向的IP为准。(其他域名以后仅作浏览网页使用,原IP暂时有效,有兴趣的可以根据本文内容做到再也不需要固定服务器IP了,很简单的哦,不信你看)
  
  DNS,通俗讲就是将域名,转换成服务器的IP地址,单片机也能轻松实现哦,很简单

原理:任何可以发送UDP数据包的设备,采用任何本地端口,向DNS服务器的53端口发送UDP DNS请求包即可收到返回

      DNS服务器的IP很多比如谷歌8.8.8.8,中国的114.114.114.114,成白上千,我们的手机,电脑,路由器会有一个DNS服务器IP设置向,默认是自动获取,那意味着变化。不过也可以用已知很出名的DNS服务器IP。
本文我做了一个很取巧的方式,把路由器的网关IP作为DNS服务器IP,因为路由器会主动帮我们发到真正的DNS上面,收到信息也会转发给我们:
      下面是我请求的www.fuhome.net的例子(换行是为了让相应字节分开好讲解,收到的数据包是连续的)

1、DNS请求
12 34 01 00 00 01 00 00 00 00 00 00
03 77 77 77 06 66 75 68 6f 6d 65 03 6e 65 74 (就是这个意思:3  www 6 fuhome 3 net)
00 00 01 00 01


2、DNS接收
12 34 81 80 00 01 00 01 00 00 00 00
03 77 77 77 06 66 75 68 6f 6d 65 03 6e 65 74 (就是这个意思:3  www 6 fuhome 3 net)
00 00 01 00 01
c0 0c 00 01 00 01 00 00 01 2c 00 (C0 0C是一个标志,有用信息开始)
04 73 1c 5d c9 (04长度 后面四个就是服务器IP,自己用调试工具发送试试,看看是不是很神奇,有的网站可能还有别的内容,最后一行一般是04 开头的IP)


114.114.114.114作为DNS服务器


路由器网关IP:192.168.1.1作为DNS服务器,注意每个人路由器也许设置不一样,那要具体看你路由器的IP了


fu_dns.c,不同的硬件发送方式不用,原理是一样的

[C] 纯文本查看 复制代码
/********************************************************************/
/* 本程序仅供学习参考,未经作者允许,不得用于任何商业用途                                  */
/* 技术论坛:[url=http://www.fuhome.net/bbs/]www.fuhome.net/bbs/[/url]                                                                */
/* DNS相关                                                                                                       */
/* 本程序用于硬件设备接入fuhome.net 平台进行远程控制(手机APP/微信/WEB        */ 
/* 版本:v2.0 2017年3月17日                                                                                        */
/* 龙剑奋斗                                                                                                                */
/* 定期更新,敬请关注——开放,交流,深入,进步                                                        */
/* Copyright fuhome.net 未来之家 实验室,让科技融入生活                                        */
/********************************************************************/

U8 DNS_Data[32]={0x12 ,0x34,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x03,0x77,0x77,0x77,0x06,0x66,0x75,0x68,0x6f,0x6d,0x65,0x03,0x6e,0x65,0x74,0x00,
0x00,0x01,0x00,0x01};
//获取 DNS: dev.fuhome.net

U8 DNS_OK=0;
U16        DNS_Time=0;
U8 DNS_Server[4]={0,0,0,0};

/*******************************************/
/* 功能:1、发送查询包                             */
/* 输入:无                                                               */
/* 输出:无                                                                           */
/* 备注:                                  */
/*******************************************/

void DNS_Send_Request(void)
{

        memcpy(Tx_Buffer,DNS_Data,32);//将数据复制到缓冲区
        Write_SOCK_Data_Buffer(0, Tx_Buffer, 32);//端口0发送UDP数据包

}


回复

使用道具 举报

  离线 

0

主题

3

帖子

0

精华

新手上路

Rank: 1

积分
24
金钱
24
注册时间
2017-3-14
在线时间
1 小时
发表于 2017-5-5 10:56:26 | 显示全部楼层
回复 支持 反对

使用道具 举报

  离线 

10

主题

195

帖子

0

精华

高级会员

Rank: 4

积分
783
金钱
783
注册时间
2015-2-27
在线时间
348 小时
发表于 2017-5-10 12:00:56 | 显示全部楼层
我才把报文拆解完,写了个学习笔记,楼主就发这个

DNS报文学习.pdf

434.72 KB, 下载次数: 86

回复 支持 反对

使用道具 举报

  离线 

50

主题

234

帖子

3

精华

高级会员

Rank: 4

积分
992
金钱
992
注册时间
2012-3-4
在线时间
49 小时
 楼主| 发表于 2017-6-8 18:59:48 | 显示全部楼层
enan 发表于 2017-5-10 12:00
我才把报文拆解完,写了个学习笔记,楼主就发这个

回复 支持 反对

使用道具 举报

  离线 

20

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2014-5-25
在线时间
34 小时
发表于 2017-7-31 19:20:56 来自手机 | 显示全部楼层
我正在写tcp/ip协议栈,遇到了好多问题了,
回复 支持 反对

使用道具 举报

  离线 

0

主题

2

帖子

0

精华

新手上路

Rank: 1

积分
36
金钱
36
注册时间
2014-3-30
在线时间
3 小时
发表于 2017-8-30 00:38:08 | 显示全部楼层

TT截图未命名.jpg
不设为路由网关也行的,我的网关是 192.168.199.1
而目标主机我乱设好像也行呀

回复 支持 反对

使用道具 举报

  离线 

28

主题

216

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
487
金钱
487
注册时间
2013-11-19
在线时间
90 小时
发表于 2017-9-29 17:32:08 | 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-11-22 07:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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