- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DNS实验报告
北京邮电大学
计算机网络课程设计
实验报告
课程设计题目:DNS中继服务器实验报告
班级:2009211315班
小组人员:李根 曾若峰 宫志明
系统概述
运行环境:windows XP
编译: Microsoft visual C++ 6.0
使用方法:
使用ipconfig/all,记下当前DNS服务器,例如为
使用下页的配置界面,将DNS设置为(本地主机)
运行你的dnsrelay程序(在你的程序中把外部dns服务器设为前面记下的)
正常使用ping,ftp,IE等,名字解析工作正常
系统的功能设计
设计一个DNS服务器程序,读入“域名-IP地址”对照表,当客户端查询域名对应的IP地址时,用域名检索该对照表,三种检索结果:
检索结果为ip地址,则向客户端返回“域名不存在”的报错消息(不良网站拦截功能)
检索结果为普通IP地址,则向客户返回这个地址(服务器功能)
表中未检到该域名,则向因特网DNS服务器发出查询,并将结果返给客户端(中继功能)
考虑多个计算机上的客户端会同时查询,需要进行消息ID的转换
模块划分
DNS服务器主模块包含三个子模块,分别如下:
命令行参数处理模块:该模块用来处理通过命令行提示符来启动这个DNS服务器时所输入的命令行参数,管理员通过设置不同的参数可以使DNS服务器显示不同程度的提示和调试信息。所以这模块主要是依照输入的参数设置标志数据,以控制最后的各种信息的输出。
本地解析模块:本模块是在本DNS服务器本地保存的曾经解析过的或者需要屏蔽额域名和其对应IP信息文件中查找从应用程序来的请求解析的域名,在这个文件中查到需要的域名后取出对应的IP地址,并构造DNS应答数据包返回给发送此DNS域名解析请求的应用程序。
外部DNS服务器解析模块:当本地解析失败时,本DNS服务器会调用外部DNS服务器解析模块。此模块将应用程序发送的DNS请求报文转发给外部DNS服务器,然后接收外部服务器返回的应答信息,并根据这个信息给予应用程序相应的DNS应答。
三个模块与主模块的关系图如下,主模块调用这三个并列的模块,而本地解析模块调用文件查找子模块:
软件流程图
主要数据结构
int GetTable(char *tablePath) //函数:获取域名解析表
void GetUrl(char *recvbuf, int recvnum) //函数:获取DNS请求中的域名
int IsFind(char* url, int num) //函数:判断是否在表中找到DNS请求中的域名
unsigned short RegisterNewID (unsigned short oID, SOCKADDR_IN temp, BOOL ifdone)
//函数:将请求ID转换为新的ID,并将信息写入ID转换表中
void DisplayInfo(unsigned short newID, int find)
//函数:打印 时间 newID 功能 域名 IP
测试用例以及运行结果
测试本地解析功能
请求一个本地DNS对照表中已有的某一记录,如:
在本地DNS对照表中找到记录,将相应的IP地址返回给用户:
程序上:
测试中继功能:
请求一个本地DNS对照表中没有的记录,如。本地DNS没有找到相应记录,向外部web服务器转发请求,并接收相应的应答报文并转发给用户:
‘
程序上:
测试ipv6功能:
程序:
测试拦截功能:
请求一个不良网站,如:
被拦截。
程序上:
调试中遇到并解决的问题
使用socket连接的时候,刚开始只用了一个socket作为所有发送和接收的接口。在实际调试的过程中发现一个不能满足软件需求的实现,所以用一个socket负责发送数据报,另一个socket负责接收数据报。
回应报文中域名是使用偏移指针的方式实现的,这是由于在域名段写入需要请求的域名时会与问题报文中的域名字段重复从而造成不必要的浪费,用偏移指针的方式既可以防止重复,也可以节省空间。
使用sendto函数时,一开始使用的是sizeof(sendbuf)来确定发送的数据报大小,但是实际操作中发现发送消息时只需要发送有用的部分,如果使用原来的方法会造成发送数据的冗余,需要精确确定发送数据的有效位数。
在编程过程中,对于指针的掌握不当造成了多次错误,例如在对于不同的标志位要转换成不同长度的指针进行赋值。
对于请求包的域名还原问题,需要注意数组下标与实际位数的区别。
本机会自动在其尾部追加“”来形成新的域名,导致在本地解析工作中无法
您可能关注的文档
- C++语言程序设计试题.doc
- C060连接线施工组织设计.doc
- C04地块大型综合超市项目桩基工程1.doc
- C12004融资融券业务培训系列课程之一答案整理.docx
- C12007-融资融券业务培训系列课程之四(100分).docx
- C12007融资融券业务培训系列课程之四(100分).doc
- C14072优先股试点的制度设计答案课后测验90分.doc
- C1驾照模拟考试6.doc
- C1驾驶员模拟题及答案(四).doc
- C2C电子商务中由于买方透露隐私导致人身权益受侵犯问题的创新性解决方案.doc
- 2023-2024学年广东省深圳市龙岗区高二(上)期末物理试卷(含答案).pdf
- 2023-2024学年贵州省贵阳市普通中学高一(下)期末物理试卷(含答案).pdf
- 21.《大自然的声音》课件(共45张PPT).pptx
- 2023年江西省吉安市吉安县小升初数学试卷(含答案).pdf
- 2024-2025学年广东省清远市九校联考高一(上)期中物理试卷(含答案).pdf
- 广东省珠海市六校联考2024-2025学年高二上学期11月期中考试语文试题.pdf
- 2024-2025学年语文六年级上册第4单元-单元素养测试(含答案).pdf
- 2024-2025学年重庆八中高三(上)月考物理试卷(10月份)(含答案).pdf
- 安徽省安庆市潜山市北片学校联考2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 贵州省部分校2024-2025学年九年级上学期期中联考数学试题(含答案).pdf
文档评论(0)