《计算机网络》课程实验项目七
一、实验项目名称及实验项目编号
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的响应记录有何区别?