计算机网络实验教程7( DNS、HTTP、TCP协议学习与分析)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《计算机网络》课程实验项目七

一、实验项目名称及实验项目编号

DNS、HTTP、TCP协议学习与分析

二、课程名称及课程编号

计算机网络

三、实验目的

通过本实验使学生:

1.学习DNS命令格式、功能以及DNS协议格式;

2.通过wireshark对DNS包进行分析。

3.学习http协议格式;

2.通过wireshark对http进行分析。

四、DNS协议的工作原理以及格式

第一部分:Windows下的DNS命令nslookup

nslookup集成于windows NT/2000/XP/2003中,它是监测网络中DNS服务器是否能正确实现域名解析的命令行工具

1、在命令窗口中运行nslookup

功能:查询DNS记录

2、在命令窗口中运行nslookup –type=NS

功能:查询域名服务器

3、在命令窗口中运行ipconfig /all

4、在命令窗口中运行ipconfig /displaydns 显示DNS 解析器缓存的内容

5、在命令窗口中运行ipconfig /flushdns

作用:清楚DNS 解析器缓存的内容

第二部分:wireshark对DNS包进行分析

1、运行wireshark,点击capture----interface,选择网卡进行数据报

的捕获

2、在命令窗口中运行nslookup

3、在wireshark中结束数据包的捕获,在Filter:条件中输入dns,只查看dns数据

4、分析、查看捕获到的dns数据,并分析dns解析域名的过程

DNS报文格式:

分析DNS报文中的各个组成部分,回答如下问题:

(1)DNS协议主要使用UDP封装还是TCP封装?

(2)DNS查询消息的目的端口是__________________?DNS响应消息的源端口是__________________?

(3)DNS查询消息的IP地址是__________________?你默认的本地DNS服务器的IP地址是__________________?

(4)在DNS查询消息中是否包含“回答(answers)”部分?

(5)在该查询过程中是沿着过程进行的

五、http协议的工作原理以及格式

第一部分:http消息格式

HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。

请求报文

一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。

(1)请求行

请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。

HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。这里介绍最常用的GET方法和POST方法。

GET:当客户端要从服务器中读取文档时,使用GET方法。GET方法要求服务器将URL 定位的资源放在响应报文的数据部分,回送给客户端。使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号(“?”)代表URL的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。

POST:当客户端给服务器提供信息较多时可以使用POST方法。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据。

(2)请求头部

请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:

User-Agent:产生请求的浏览器类型。

Accept:客户端可识别的内容类型列表。

Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。

(3)空行

最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。

(4)请求数据

请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。

POST请求时,我读取完\r\n后,再读取一行,发现没有可以读取的内容了,那么请求数据应该怎样读取呢?

2010.07.20

终于弄清楚了为什么按照上面的方法读取不了请求数据,而且还跳转不到指定的地方,这是因为请求数据并不是按行存取的,即不以'\n'结束,所以因为读取不了\n而进入了死循环状态。

只要将缓冲区的剩余部分,用printf打印出来即可。

第二部分:使用wireshark进行http消息格式分析

实验一

1、打开浏览器ie

2、运行wireshark,并进行包的捕获

在ie中输入/wireshark-labs/HTTP-wireshark-file1.html

3、在wireshark中停止包的捕获

查看get消息和相应消息,回答如下问题:

1、浏览器运行的http协议版本是1.0 还是1.1?服务器端的http协议版本是1.0 还是

1.1?

2、用户希望优先得到的语言版本是______________?

3、你机器的IP地址是_______________________________? 你请求的服务器的ip地址是

__________________________________?

4、你的浏览器返回多少字节的内容?

实验二

1、在ie的工具----Internet选项-----删除----Internet临时文件历史记录删除缓存中的内容

2、启动ie

3、运行wireshar,进行包捕获

4、在ie中输入/wireshark-labs/HTTP-wireshark-file2.html

5、接着刷新浏览器

6、停止包捕获

7、查看第二条GET /wireshark-labs/HTTP-wireshark-file2.html HTTP/1.1\r\n的记录,与上一条GET /wireshark-labs/HTTP-wireshark-file2.html HTTP/1.1\r\n相比较,查看其记录中是否多了如下内容:

If-Modified-Since: Sun, 12 Dec 2010 13:41:01 GMT\r\n?

8、在第二条GET /wireshark-labs/HTTP-wireshark-file2.html HTTP/1.1\r\n之后的响应记录中与第一条的GET /wireshark-labs/HTTP-wireshark-file2.html HTTP/1.1\r\n的响应记录有何区别?

相关文档
最新文档