每年一定要经历的大作业....肝了两天写出来. 先看看18年的作业要求吧, 每年都不一样
实现中文域名的解析,例如:主页.北邮.教育.中国(与 www.bupt.edu.cn 对应);
至少支持 4 个顶级域,至少实现三级域名的解析。程序需要实现的实体有:client、 至少 6 个 DNS server。
支持的 Resource Record 类型:A、MX、CNAME;对于 MX 类型的查询,要求在 Additional Section 中携带对应 IP 地址;
支持的解析方法:迭代解析;
支持 cache,打印查询的 trace 记录(查询路径、服务器响应时间);
传输层协议:
client 与 local DNS server 之间:TCP; DNS server 之间:UDP;应用层协议:DNS
要求通信过程中使用的所有 DNS 报文必须能够用 wireshark 正确解析;
server的数据维护方式可采用文件;
书写完整的设计文档,参考 Sample-Project-Report.pdf;
程序中应包含详细的代码注释,使用良好的编程风格;
程序运行稳定,支持错误处理,如:命令无效、参数缺失、同名处理、空白字符; 12. 每两人一组,分工完成,将设计文档和源代码文件经打包、压缩后按以下规则命名:
dns_2010211501_10211234&10215678_李宁&张安.tar.gz
其实不算复杂, 主要是字节流处理的问题, 网络传输会有大端序小端序的问题, 还有就是tcp的粘包问题要注意
最后检查的时候是老师带着手底下的研究生助教一起来检查, 检查时运行代码,并且要把注释全删掉接受提问. 每个人需要单独接受提问. 需要注意的是, 试验指导书上只是轻描淡写地说了用wireshark抓包分析, 实际检测的时候真的会用wireshark抓包来看每个数据包的内容! 笔者原先写的时候, 数据格式虽然遵守了规范,但是表示 Resource Record 类型的数据位是自己瞎写的, 抓包出来的数据包解析自然会有问题. 好在现场老师允许你当场改代码...有惊无险吧
啊,不想写了, 之后再补...