网络程序设计_DNS协议模拟实现

上传人:yh****1 文档编号:126207688 上传时间:2020-03-23 格式:DOC 页数:19 大小:199KB
返回 下载 相关 举报
网络程序设计_DNS协议模拟实现_第1页
第1页 / 共19页
网络程序设计_DNS协议模拟实现_第2页
第2页 / 共19页
网络程序设计_DNS协议模拟实现_第3页
第3页 / 共19页
网络程序设计_DNS协议模拟实现_第4页
第4页 / 共19页
网络程序设计_DNS协议模拟实现_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《网络程序设计_DNS协议模拟实现》由会员分享,可在线阅读,更多相关《网络程序设计_DNS协议模拟实现(19页珍藏版)》请在金锄头文库上搜索。

1、 资料 网络程序设计 课 程 设 计 报 告 书 题题 目 目 DNSDNS 协议模拟实现协议模拟实现 学号 学号 0212301002123010 姓姓 名 名 石星宇石星宇 指导教师 指导教师 崔艳鹏崔艳鹏 资料 资料 目录目录 一 一 DNSDNS 概述概述 1 1 1 1 简介 简介 1 1 2 2 发展 发展 1 1 3 3 DNSDNS 域名结构域名结构 1 1 4 4 DNSDNS 解析器解析器 1 1 二 二 DNSDNS 协议抓包分析协议抓包分析 1 1 1 1 DNSDNS 解析过程解析过程 1 1 2 2 DNSDNS 协议报文结构协议报文结构 1 1 3 3 DNSDN

2、S 查询报文中每个查询问题的格式查询报文中每个查询问题的格式 1 1 4 4 DNSDNS 响应报文中的资源记录格式响应报文中的资源记录格式 1 1 5 5 据包据包 DNSDNS 查询 查询 DNSDNS queryquery 1 1 6 6 数据包数据包 DNSDNS 响应 响应 DNSDNS ResponseResponse 1 1 三 三 DNSDNS 协议模拟实现协议模拟实现 1 1 1 1 内容 内容 1 1 2 2 数据结构说明 数据结构说明 1 1 3 3 算法流程图 算法流程图 1 1 4 4 程序 程序 1 1 5 5 运行截图 运行截图 1 1 资料 一 一 DNSDNS

3、 概述概述 1 1 简介 简介 DNSDNS 是计算机域名系统或域名解析服务器 Domain Name System 或 Domain Name Service 的缩写 它是由解析器以及域名服务器组成的 域 名服务器是指保存有该网络中所有主机的域名和对应 IP 地址 并具有将域名转 换为 IP 地址 并具有将域名转换为 IP 地址功能的服务器的服务器 其中域名 必须对应一个 IP 地址 而 IP 地址不一定有域名 将域名映射为 IP 地址的过程 就称为 域名解析 在 Internet 上域名与 IP 地址之间是一对一 或者多对一 的 域名和 IP 地址之间的转换过程称为域名解析 域名解析需要由

4、专门的域名 解析服务器来完成 DNS 就是进行域名解析的服务器 DNS 命名用于 Internet 等 TCP IP 网络中 通过用户友好的名称查找计算机和服务 域名的最终指向是 IP DNS 是因特网的一项核心服务 作为可以将域名和 IP 地址相互映射的一个 分布式数据库 能够使人更方便的访问互联网 而不用去记住能够被机器直接 读取的 IP 数串 2 2 发展 发展 DNSDNS 最早于 1983 年由保罗 莫卡派乔斯 Paul Mockapetris 发明 原 始的技术规范在 882 号因特网标准草案 RFC 882 中发布 1987 年发布的第 1034 和 1035 号草案修正了 DN

5、S 技术规范 并废除了之前的第 882 和 883 号 草案 在此之后对因特网标准草案的修改基本上没有涉及到 DNS 技术规范部分 的改动 资料 3 3 DNSDNS 域名结构域名结构 通常 Internet 主机域名的一般结构为 主机名 三级域名 二级域名 顶级域 名 Internet 的顶级域名由 Internet 网络协会域名注册查询负责网络地址分 配的委员会进行登记和管理 它还为 Internet 的每一台主机分配唯一的 IP 地 址 全世界现有三个大的网络信息中心 位于美国的 Inter NIC 负责美国及 其他地区 位于荷兰的 RIPE NIC 负责欧洲地区 位于日本的 APNIC

6、 负 责亚太地区 4 4 DNSDNS 解析器解析器 解析器 或另一台 DNS 服务器递归代表的情况下 域名解析器 协商使用 递归服务 使用查询头位 解析通常需要遍历多个名称服务器 找到所需要的信息 然而 一些解析 器的功能更简单地只用一个名称服务器进行通信 这些简单的解析器依赖于一 个递归名称服务器 称为 存根解析器 为他们寻找信息的执行工作 二 二 DNSDNS 协议抓包分析协议抓包分析 1 1 DNSDNS 解析过程解析过程 1 11 1 当客户机提出查询请求时 首先在本地计算机的缓存中查找 如果在 本地无法查询信息 则将查询请求发给 DNS 服务器 1 21 2 首先客户机将域名查询请

7、求发送到本地 DNS 服务器 当本地 DNS 服务 器接到查询后 首先在该服务器管理的区域的记录中查找 如果找到该记录 资料 则进行此记录进行解析 如果没有区域信息可以满足查询要求 服务器在本地 缓存中查找 1 31 3 如果本地服务器不能在本地找到客户机查询的信息 将客户机请求发 送到根域名 DNS 服务器 1 41 4 根域名服务器负责解析客户机请求的根域名部分 它将包含下一级域 名信息的 DNS 服务器地址地址返回给客户机的 DNS 服务器地址 1 51 5 客户机的 DNS 服务器利用根域名服务器解析的地址访问下一级 DNS 服 务器 得到再下一级域名的 DNS 服务器地址 1 61

8、6 按照上述递归方法逐级接近查询目标 最后在有目标域名的 DNS 服务 器上找到相应 IP 地址信息 1 71 7 客户机的本地 DNS 服务器将递归查询结构返回客户机 1 81 8 客户机利用从本地 DNS 服务器查询得到的 IP 访问目标主机 就完成了 一个解析过程 1 91 9 同时客户机本地 DNS 服务器更新其缓存表 客户机也更新期缓存表 方便以后查询 资料 2 2 DNSDNS 协议报文结构协议报文结构 该报文是由 12 字节的首部和 4 个长度可变的字节组成 标识字段标识字段 占用两个字节 由客户程序设置 并由服务器返回结果 标志字段 标志字段 该字段占两个字节长 被细分成 8

9、个字段 QR 1 Opcode 4 AA 1 TC 1 RD 1 RA 1 Zero 3 Rcode 4 QRQR 1bits 字段 0 表示查询报文 1 表示响应报文 OpcodeOpcode 4bits 字段 通常值为 0 标准查询 其他值为 1 反向查询 和 2 服务器状态请求 AAAA 1bits 标志表示授权回答 authoritive answer 该名字服务器是授 权于该领域的 TCTC 1bits 字段 表示可截 truncated 使用 UDP 时 它表示当应答的 总长度超过 512 字节时 只返回前 512 个字节 RDRD 1bits 字段 表示期望递归 该比特能在一个查

10、询中设置 并在一个 响应中返回 这个标志告诉名字服务器必须处理这个查询 也称为一个递归查 资料 询 如果该位为 0 且被请求的名字服务器没有一个授权回答 它就返回一个 能解答该查询的其他名字服务器列表 这称为迭代查询 期望递归 RARA 1bits 字段 表示可用递归 如果名字服务器支持递归查询 则在响 应中将该 bit 置为 1 可用递归 zerozero 必须为 0 rcodercode 是一个 4bit 的返回码字段 通常值为 0 没有差错 和 3 名字 差错 名字差错只有从一个授权名字服务器上返回 它表示在查询中指定的域 名不存在 随后的 4 个 bit 字段说明最后 4 个变长字段中

11、包含的条目数 对于查询报 文 问题数通常是 1 其他三项为 0 类似的 对于应答报文 回答数至少是 1 剩余两项可以使 0 或非 0 3 3 DNSDNS 查询报文中每个查询问题的格式查询报文中每个查询问题的格式 0 16 31 查询名 查询类型查询类 查询名 查询名 要查找的名字 查询类 查询类 通常值为 1 表示是互联网的地址 也就是 IP 协议族的地址 查询类型 查询类型 有很多种查询类型 一般最常用的查询类型是 A 类型 表示查 找域名对应的 IP 地址 和 PTR 类型 表示查找 IP 地址对应的域名 查询名为要查找的名字 它由一个或者多个标示符序列组成 每个标示符 已首字符字节数的

12、计数值来说明该表示符长度 每个名字以 0 结束 计数字节 数必须是 0 63 之间 该字段无需填充字节 如 gemine tuc noao edu 资料 4 4 DNSDNS 响应报文中的资源记录格式响应报文中的资源记录格式 数域名 数域名 记录中资源数据对应的名字 它的格式和查询名字段格式相同 类型 类型 类型说明 RR 的类型码 类通常为 1 指 Internet 数据 生存时间 生存时间 客户程序保存该资源记录的秒数 资源数据长度 资源数据长度 说明后面资源数据的数量 该数据的格式依赖于类型字段 的值 对于类 1 A 记录 记录数据室 4 字节的 IP 地址 资源数据 资源数据 服务器端

13、返回给客户端的记录数据 资料 5 5 据包据包 DNSDNS 查询 查询 DNSDNS queryquery 资料 6 6 数据包数据包 DNSDNS 响应 响应 DNSDNS ResponseResponse 资料 三 三 DNSDNS 协议模拟实现协议模拟实现 1 1 内容 内容 设计一个简单的 Winsock 网络程序 模拟 UDP 数据报 加深对 DNS 作用 的理解 按照以下步骤完成练习 1 启动 Visual C 进入集成开发环境 2 建立一个 Win32 Console Application 类型的工程 工程名自拟 3 在该工程下 新建一个源程序文件 即选择 C SourceF

14、ile 文件 名自拟 4 输入源程序 5 编译 连接并运行程序 6 观察程序运行的结果 体会程序中几个重要函数的作用 资料 2 2 数据结构说明 数据结构说明 WSADATA wsaData 初始化 windows sockets API char hostname 256 获得本主机名 int res 错误处理 sockaddr in sa 打印主机每一个网卡的 IP 地址 char hostaddr 50 服务器 IP 地址 3 3 算法流程图 算法流程图 运行程序显示本主机名 用户输入 IP 地址 显示主机 名 用户输入 IP 地址 显示主机 名 程序结束 资料 4 4 程序 程序 in

15、clude include include pragma comment lib ws2 32 lib int main WORD wVersionRequested MAKEWORD 1 1 WSADATA wsaData 初始化 windows sockets API if WSAStartup wVersionRequested return 1 char hostname 256 获得本主机名 int res gethostname hostname sizeof hostname if res 0 错误处理 printf Error u n WSAGetLastError retur

16、n 1 printf 本主机名为 s n hostname 打印本主机名字 printf 请输入一个主机域名 输入一个主机的域名 scanf s hostname 利用主机名获得主机的地址 资料 hostent pHostent gethostbyname hostname if pHostent NULL 错误处理 printf Error u n WSAGetLastError return 1 解析返回的主机地址信息 别名 地址类型 地址长度 并打印 hostent printf name s naliase s naddrtype d nlength d n he h nam e he h aliases he h addrtype he h length sockaddr in sa 打印主机每一个网卡的 IP 地址 for int nAdapter 0 he h addr list nAdapter nAdapter memcpy printf Address s n inet ntoa sa sin addr 显示 lP 地址 printf n unsigned long

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号