OpenEdv-开源电子网

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

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

[复制链接]

62

主题

275

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1154
金钱
1154
注册时间
2012-3-4
在线时间
80 小时
发表于 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,不同的硬件发送方式不用,原理是一样的

[mw_shl_code=c,true]/********************************************************************/
/* 本程序仅供学习参考,未经作者允许,不得用于任何商业用途                                  */
/* 技术论坛:www.fuhome.net/bbs/                                                                */
/* 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数据包

}[/mw_shl_code]

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

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

使用道具 举报

11

主题

216

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

DNS报文学习.pdf

434.72 KB, 下载次数: 378

回复 支持 反对

使用道具 举报

62

主题

275

帖子

4

精华

金牌会员

Rank: 6Rank: 6

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

回复 支持 反对

使用道具 举报

22

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

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

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

回复 支持 反对

使用道具 举报

28

主题

218

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

使用道具 举报

0

主题

295

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
335
金钱
335
注册时间
2019-3-26
在线时间
9 小时
发表于 2019-4-24 09:48:08 | 显示全部楼层
楼主好厉害啊
回复 支持 反对

使用道具 举报

0

主题

29

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2012-2-24
在线时间
226 小时
发表于 2021-5-13 08:17:41 来自手机 | 显示全部楼层
谢谢楼主分享!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 11:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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