计算机网络DNS以及HTTP协议实验报告
学生实验报告姓名: 学号:班级: 指导老师:内容摘要该实验报告介绍了DNS 协议分析实验和http 的相关分析。DNS 协议分析是通过nslookup 进行域名解析
学生实验报告
姓名: 学号:
班级: 指导老师:
内容摘要
该实验报告介绍了DNS 协议分析实验和http 的相关分析。
DNS 协议分析是通过nslookup 进行域名解析并通过协议分析软件来分析DNS 协议的报文格式,如:DNS 中RR 格式的具体内容,以及DNS 报文中事物标号,报文类型,问题的个数,回答RR 个数,权威域名RR 数,附加RR 数,问题具体RR 数,回答具体RR 数,域名对应的权威域名服务器的相关RR 和附加的具体RR 数;
一、DNS 协议分析:
实验目的
1. 学会客户端使用nslookup 命令进行域名解析
2. 通过协议分析软件掌握DNS 协议的报文格式
实验原理
连上internet 的PC 机,并且安装有协议分析软件Wireshark 。
实验原理及概况
1.DNS 解析过程:
(1) 当客户机提出查询请求时,首先在本地计算机的缓存中查找,如果在本地无
法查询信息,则将查询请求发给DNS 服务器
(2) 首先客户机将域名查询请求发送到本地DNS 服务器,当本地DNS 服务器接
到查询后,首先在该服务器管理的区域的记录中查找,如果找到该记录,则进行此记录进行解析,如果没有区域信息可以满足查询要求,服务器在本地缓存中查找
(3) 如果本地服务器不能在本地找到客户机查询的信息,将客户机请求发送到根
域名DNS 服务器
(4) 根域名服务器负责解析客户机请求的根域名部分,它将包含下一级域名信息
的DNS 服务器地址地址返回给客户机的DNS 服务器地址
(5) 客户机的DNS 服务器利用根域名服务器解析的地址访问下一级DNS 服务器,得到再下一级域名的DNS 服务器地址
(6) 按照上述递归方法逐级接近查询目标,最后在有目标域名的DNS 服务器上
找到相应IP 地址信息
(7) 客户机的本地DNS 服务器将递归查询结构返回客户机
(8) 客户机利用从本地DNS 服务器查询得到的IP 访问目标主机,就完成了一个
解析过程
(9) 同时客户机本地DNS 服务器更新其缓存表,客户机也更新期缓存表,方便
以后查询 3. DNS处于IP 分层结构的应用层,是一种应用层协议,DNS 协议数据单元 1
,封装在UDP 数据报文中,DNS 服务器端使用公用端口号为53(使用UDP 协议0x11)


标识字段:占用两个字节,由客户程序设置,并由服务器返回结果 标志字段:该字段占两个字节长,被细分成8个字段:
QR :1bits 字段,0表示查询报文,1表示响应报文 Opcode:4bits 字段,通常值为0(标准查询),其他值为1(反向查询)和2(服务器状态请求)
AA :1bits 标志表示授权回答(authoritive answer), 该名字服务器是授权于该领域的 TC:1bits 字段,表示可截(truncated ),使用UDP 时,它表示当应答的总长度超过512字节时,只返回前512个字节
RD :1bits 字段,表示期望递归,该比特能在一个查询中设置,并在一个响应中返回,这个标志告诉名字服务器必须处理这个查询,也称为一个递归查询,如果该位为0,且被请求的名字服务器没有一个授权回答,它就返回一个能解答该查询的其他名字服务器列表,这称为迭代查询(期望递归)
RA :1bits 字段,表示可用递归,如果名字服务器支持递归查询,则在响应中将该bit 置为1(可用递归)

zero :必须为0
rcode :是一个4bit 的返回码字段,通常值为0(没有差错)和3(名字差错),名字差错只有从一个授权名字服务器上返回,它表示在查询中指定的域名不存在
随后的4个bit 字段说明最后4个变长字段中包含的条目数,对于查询报文,问题数通常是1,其他三项为0,类似的,对于应答报文,回答数至少是1,剩余两项可以使0或非0 5. DNS查询报文中每个查询问题的格式
2
,查询名:要查找的名字
查询类:通常值为1,表示是互联网的地址,也就是IP 协议族的地址
查询类型:有很多种查询类型,一般最常用的查询类型是A 类型(表示查找域名对应的IP 地址)和PTR 类型(表示查找IP 地址对应的域名)
查询名为要查找的名字,它由一个或者多个标示符序列组成,每个标示符已首字符字节数的计数值来说明该表示符长度,每个名字以0结束,计数字节数必须是0~63之间,该字段无需填充字节,如:

gemine.tuc.noao.edu
实验步骤
1. 打开Wireshark ,设置好过滤器
(1). 打开后选择capture, 后选择

interfaces;
(2).接着选择有数据变动的网络连接,后选option ;

(3)在Filter 里输入udp

port 53;
2. 使用命令提示符输入nslookup 查找www.sina.com 的IP 地址,
3
,
分析Wireshark 捕获的数据包;

具体分析如下:
1. 第一帧:由本地PC 机IP 地址为182.1.63.149发送报文给本地DNS 服务器219.229.240.19的反向查询,用于查询本地服务器的名字,具体协议如下:

4
,报文标识为1;标志为1;问题数1;回答数0;权威RR 为0;附加RR 为0;询问IP 地址为219.229.240.19的权威域名,type 类型为PTR ;
第二帧是本地DNS 服务器响应报文,包含了查询结果,即本地DNS 服务器的名字:

权威回答数1;本地DNS 服务器的名字为dns.jxnu.edu.cn
附加RR 回答了本地域名服务器域名对应的IP 地址;
第三帧用于客户端发送给本地DNS 服务器的请求报文,用于请求www.baidu.com 的IP 地址

5
,第四帧是本地DNS 域名服务器的响应报文,包含了回答www.baidu.com 的IP 地址
生存时间
别名
其中,权威RR 回答了IP 地址,别名等信息;
二、Http 协议分析:

6
,实验目的
1. 分析http1.0和1.1之间的区别(持续连接和非持续连接,流水线和非流水线)。
2. 分析http 的请求报文和响应报文的格式。
3. 验证Web 缓存。
4. 验证cookie 的存在。
5. 验证http 的明文传输特性。
实验原理
HTTP 是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP )。通过使用Web 浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP 请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML 文件和图像。我们称这个应答服务器为源服务器(origin server )。在用户代理和源服务器中间可能存在多个中间层,比如代理,网关,或者隧道(tunnel )。 尽管TCP/IP协议是互联网上最流行的应用,HTTP 协议中,并没有规定必须使用它或它支持的层。事实上,HTTP 可以在任何互联网协议上,或其他网络上实现。HTTP 假定其下层协议提供可靠的传输。因此,任何能够提供这种保证的协议都可以被其使用。因此也就是其在TCP/IP协议族使用TCP 作为其传输层。 通常,由HTTP 客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP 连接。HTTP 服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK" ,以及返回的内容,如请求的文件、错误消息、或者其它信息
注:取自维基百科
实验步骤
1. 设置协议分析软件Wireshark 的过滤器,只捕获http 的报文;
1). 打开Wireshark 后选择capture ,后选择interfaces
2). 接着选择有数据变动的网络连接,后选择option
3). 在Filter 里输入

tcp port 80

7
,2. 打开浏览器,访问不同的网站,抓取不同的http 报文,本实验捕获访问百度网站www.baidu.com 进行分析,在浏览器输入网址后,点击抓包按钮,开始抓包

请求方式:GET ,HTTP 版本为1.1
浏览器类型是
MOZILA/5.0

8
,上传浏览器缓存cookie 内容为加密的用户名,密码等
状态码:200
回应内容:OK
时间2013年9月30日。。。
最终收到完
整的页面
内容的获取:获取页面文档阶段


9
,3. 登陆http://jwc.jxnu.edu.cn/检测http 是否为明文登陆





4.Http1.0和Http1.1的区别
HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP 连接,服务器完成请求处理后立即断开TCP 连接,服务器不跟踪每个客户也不记录过去的请求。此外,由于大多数网页的流量都比较小,一次TCP 连接很少能通过slow-start 区,不利于提高带宽利用率。
HTTP 1.1支持长连接(PersistentConnection )和请求的流水线(Pipelining )处理,在一个TCP 连接上可以传送多个HTTP 请求和响应,减少了建立和关闭连接的消耗和延迟。例如:一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输,但每个单独的网页文件的请求和应答仍然需要使用各自的连接。
HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。
在HTTP/1.0中,要建立长连接,可以在请求消息中包含Connection: Keep-Alive头域,如果服务器愿意维持这条连接,在响应消息中也会包含一个Connection: Keep-Alive的头域。同时,可以加入一些指令描述该长连接的属性,如max ,timeout 等。
10