实验目标
深入理解 DNS(Domain Name System)协议的有关知识,结合历次实验课的编程实践,
完成一个基于 Linux 命令行终端的 DNS 客户端和服务器,实现中文域名解析。
实验要求一:基本功能
1. 实现中文域名的解析,例如:主页.北邮.教育.中国(与 www.bupt.edu.cn 对应);
数据库记录示例:
主页.北邮.教育.中国,86400,IN,A,192.168.1.25
北邮.教育.中国,86400,IN ,MX,邮件服务器.北邮.教育.中国
邮件服务器.北邮.教育.中国,86400,IN ,A,192.168.1.37
2. 至少支持 4 个顶级域,至少实现三级域名的解析。程序需要实现的实体有:client、
至少 6 个 DNS server。
4 个顶级域名:中国、组织、商业、美国
二-三级域名:自定义(例如:教育.中国,北邮.教育.中国)
DNS server 的部署架构可参考下图的示例:
3. 支持的 Resource Record 类型:A、MX、CNAME;对于 MX 类型的查询,要求在
Additional Section 中携带对应 IP 地址;
4. 支持的解析方法:迭代解析;
5. 支持 cache,打印查询的 trace 记录(查询路径、服务器响应时间);
6. 传输层协议:
client 与 local DNS server 之间:TCP;
DNS server 之间:UDP;
7. 应用层协议:DNS
要求通信过程中使用的所有 DNS 报文必须能够用 wireshark 正确解析;
8. server 的数据维护方式可采用文件;
2
9. 书写完整的设计文档,参考 Sample-Project-Report.pdf;
10. 程序中应包含详细的代码注释,使用良好的编程风格;
11. 程序运行稳定,支持错误处理,如:命令无效、参数缺失、同名处理、空白字符;
12. 每两人一组,分工完成,将设计文档和源代码文件经打包、压缩后按以下规则命名:
dns_2010211501_10211234&10215678_李宁&张安.tar.gz
实验要求二:扩展功能
1. 支持 PTR 类型的 Resource Record;
2. 支持递归解析;
3. 支持一个 DNS 消息中携带多个 Query Question;
实验环境
1. C 语言以及相关函数库;
2. gcc 编译器、gdb 调试工具、Wireshark 抓包分析工具;
3. Linux 操作系统、Linux 下的 nslookup 命令及其 help。
实验方法
1. 利用 Wireshark 抓包工具,分析 DNS 协议的工作原理;
2. 分析需求,提出解决方案,划分功能模块;
3. 实现基于 UDP 和 TCP 的 socket 程序框架,实现中文域名解析服务器;
版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。