> # ♻️ 资源
> **大小:** 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=
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
详情介绍:https://www.yuque.com/sxbn/ks/100010438 设计一个DNS服务器程序,读入“域名-IP地址”对照表(一个文件),当客户端查询域名对应的IP地址时,用域名检索该对照表,得到三种检索结果。
资源推荐
资源详情
资源评论
收起资源包目录
100010438-基于C语言实现DNS服务器程序.zip (14个子文件)
computernetwork_dns
functions.c 5KB
definition.h 1KB
1802-熊宇-1822-马锐文.doc 3.84MB
functions.h 511B
LICENSE 1KB
computer_network
dnsrelay.txt 31KB
课程设计报告封面.doc 36KB
参考资料.7z 543KB
分组名单.xlsx 492KB
计算机网络课程设计-2020.pptx 492KB
dnsrelay.exe 56KB
computer_network.zip 1.47MB
main.c 9KB
README.md 20KB
共 14 条
- 1
神仙别闹
- 粉丝: 4121
- 资源: 7483
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页