> # ♻️ 资源
> **大小:** 6.16MB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100010438**](https://www.yuque.com/sxbn/ks/100010438)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/87388351**](https://download.csdn.net/download/s1t16/87388351)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> ![qrcode_for_gh_d52056803b9a_344.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/2469055/1692147256036-49ec7e0c-5434-4963-b805-47e7295c9cbc.jpeg#averageHue=%23a3a3a3&clientId=u8fb96484-770e-4&from=paste&height=140&id=u237e511a&originHeight=344&originWidth=344&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8270&status=done&style=none&taskId=ud96bf5f7-fe85-4848-b9c2-82251181297&title=&width=140.1999969482422)
# DNS服务器程序
目的:设计一个DNS服务器程序,读入“域名-IP地址”对照表(一个文件),当客户端查询域名对应的IP地址时,用域名检索该对照表,得到三种检索结果。
基本内容:设计一个DNS服务器程序,读入“域名-IP地址”对照表(一个文件),当客户端查询域名对应的IP地址时,用域名检索该对照表,得到三种检索结果。
实验方法:C语言编程。
## 系统的功能设计
读入“IP地址-域名”对照表,当客户端查询域名对应的IP地址时,用域名检索该对照表。
**不良网站拦截功能**:
检索结果为ip地址0.0.0.0,则向客户端返回“域名不存在”的报错消息
**服务器功能**:
检索结果为普通IP地址,则向客户返回这个地址
**中继功能**:
表中未检到该域名,则向因特网DNS服务器发出查询,并将结果返给客户端
需要进行消息ID的转换,以满足多个计算机上的客户端会同时查询。
主要的数据结构:
```c
//DNS报文首部 12字节
typedef struct DNSHeader
{
unsigned short ID; //标志
unsigned short Flags; //标识
unsigned short QuestionNum; //问题数
unsigned short AnswerNum; //资源记录数
unsigned short AuthorNum; //授权资源记录数
unsigned short AdditionNum; //额外资源记录数
} DNSHDR, * pDNSHDR;
//DNS域名解析表结构
typedef struct translate
{
char * IP; //IP地址
char * domain; //域名
} Translate;
//ID转换表结构
typedef struct IDChange
{
unsigned short oldID; //原有ID
BOOL done; //标记是否完成解析
SOCKADDR_IN client; //请求者套接字地址
} IDTransform;
```
## 模块划分(函数划分)
```c
//加载本地txt文件
int InitialDNSTable(char* path)
//获取DNS请求中的域名
void GetUrl(char* recvbuf, int recvnum)
//判断能不能在本中找到DNS请求中的域名,找到返回下标
int IsFind(char* url, int num)
//将请求ID转换为新的ID,并将信息写入ID转换表中
unsigned short ReplaceNewID(unsigned short OldID, SOCKADDR_IN temp, BOOL ifdone)
//打印 时间 newID 功能 域名 IP
void PrintInfo(unsigned short newID, int find)
//socket通信模块,内置于主函数
int main()
```
## 软件流程图
![8f6485aaf3aafc8902e0a49b5481ee7d.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711502338477-3339e6fc-09bb-4f5f-aae3-a25048b39641.png#averageHue=%23f3f3f3&clientId=u952237a3-af99-4&from=paste&height=1502&id=uf4ed9739&originHeight=1877&originWidth=1222&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=181188&status=done&style=none&taskId=ud2952553-b3c5-47ea-9d09-ee06a7cb46f&title=&width=977.6)
## 测试用例以及运行结果
首先将本地连接中的DNS服务器地址改为本地的127.0.0.1
![dda2febf218cf9e81ae032b00b763052.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711502652246-c10d4089-c5f6-47bf-80fb-48b30cf22842.png#averageHue=%23f6f5f5&clientId=u952237a3-af99-4&from=paste&height=581&id=u76bf6e96&originHeight=726&originWidth=580&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=92879&status=done&style=none&taskId=u9a5a2c2b-a073-4120-951f-6a673a61ddb&title=&width=464)
此时无法正常使用网页。
![64f44d1c281764287603795ee4374fb9.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711502666626-171ec8a9-cdc3-430c-ba0e-4f62b7c2905e.png#averageHue=%23fefefe&clientId=u952237a3-af99-4&from=paste&height=675&id=u42647371&originHeight=844&originWidth=1148&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=47045&status=done&style=none&taskId=u2874a26b-4f67-4d7e-97e6-cacb5ffa868&title=&width=918.4)
开启设计好的DNS服务器
![f5da3816a7c2de0060abbf4c6fdf39bb.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711502680532-5bac94fb-0d3a-4837-8edc-24336a6c927a.png#averageHue=%23585655&clientId=u952237a3-af99-4&from=paste&height=94&id=u1eb10708&originHeight=118&originWidth=691&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=11549&status=done&style=none&taskId=u3b252c4a-783d-4807-a813-6c6c9bed592&title=&width=552.8)
即可正常浏览网页。
![87811f88812a12a11c423f8672c992f4.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711502694761-e2d3b42b-b03d-4aac-9f62-68380d9a70bc.png#averageHue=%23faf9f9&clientId=u952237a3-af99-4&from=paste&height=769&id=u00693269&originHeight=961&originWidth=1274&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=107160&status=done&style=none&taskId=uac8e2cfc-f2e1-4e9a-8175-c34b958c3f9&title=&width=1019.2)
而且能正常PING通网址:
![63377081113c37a8e26a1df734dffae4.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711502708673-5dba34b9-59bc-413e-ab79-b6f00edd36d2.png#averageHue=%23232221&clientId=u952237a3-af99-4&from=paste&height=361&id=u72b5fd2f&originHeight=451&originWidth=1010&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=60966&status=done&style=none&taskId=u8c46073a-4b38-441f-bedf-ed9ece8204f&title=&width=808)
此时服务器端显示信息:
![5c191c53f1a8df5f53890f60305d97cb.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711502721159-b2d84132-4cca-4535-b6bc-b75eb3cf9d0b.png#averageHue=%23181512&clientId=u952237a3-af99-4&from=paste&height=35&id=u0cda23b0&originHeight=44&originWidth=455&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=3992&status=done&style=none&taskId=uadf8e041-fc00-4bbb-80a6-05c8ff13a40&title=&width=364)
此外还能正常使用nslookup命令查ip地址:
**本地解析表存在的记录且并不屏蔽**:
![37cc9513ce6a03e3584c5c141253ab15.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711502738288-98623e06-5fc8-4632-b522-b71972af09c1.png#averageHue=%23100f0e&clientId=u952237a3-af99-4&from=paste&height=154&id=u14adaf50&originHeight=193&originWidth=453&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=11255&status=done&style=none&taskId=ud4fa53b8-5931-41da-9fe9-55d612f6035&title=&width=362.4)
服务器信息:
![2905153e180a0bf517528ae21c761fea.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711502759640-124e9a18-3a73-4658-8431-118e0b48748a.png#averageHue=%231a1613&clientId=u952237a3-af99-4&from=paste&height=38&id=u1458ca0e&originHeight=47&originWidth=595&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=7555&status=done&style=none&taskId=u2f7f5f89-935a-4203-adcf-64ade73fb7e&title=&width=476)
**本地解析表存在记录但返回**IP为0.0.0.0,即屏蔽:
![e3febb14102f08ed3f3a20e50cdc7f79.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711502771706-64fc1f8e-265b-405b-819b-869405fd9b22.png#averageHue=%230f0e0d&clientId=u952237a3-af99-4&from=paste&height=134&id=u922d8292&originHeight=168&originWidth=977&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=17101&status=done&style=none&taskId=u5cbab78e-bbe4-4574-8c3b-46b7b3bd9ec&title=&width=781.6)
服务器信息:
![206f1c219ae7a270b79b7703ede6a2e7.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711502785456-a0dd6e25-0d3f-4656-9c89-086b877bc173.png#averageHue=%23181512&clientId=u952237a3-af99-4&from=paste&height=71&id=u31548b42&originHeight=
神仙别闹
- 粉丝: 3707
- 资源: 7461
最新资源
- wiwf-web-manage
- PUBG MOBILE CHINA.html
- C++ primer 习题上半部分
- C#ASP.NET项目进度管理(甘特图表)源码 任务考核管理系统源码数据库 Access源码类型 WebForm
- 个人练习-练习版内网通?
- 支持向量机 - SVM支持向量机
- 可以识别视频语音自动生成字幕SRT文件的开源 Windows-GUI 软件工具.zip
- 基于SpringBoot框架和SaaS模式,立志为中小企业提供开源好用的ERP软件,目前专注进销存+财务+生产功能
- C#ASP.NET口腔门诊会员病历管理系统源码 门诊会员管理系统源码数据库 SQL2008源码类型 WebForm
- 微信Java开发工具包,支持包括微信支付、开放平台、公众号、企业微信、视频号、小程序等微信功能模块的后端开发
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页