- 姓名:王璐璐
- 学号:201821121037
- 班级:计算1812
0.摘要
这篇博客记录的是我的第一个抓包实验,是我对计算机网络了解的初始。在下面的实验报告中,我将阐述我第一次使用Packet Tracer工具来抓取HTTP数据包的过程,并对抓取到的数据包中的信息进行解析,通过这样的实验来加深网络协议在网络信息传输中起到的作用的理解。
1.实验目的
熟练使用Packet Tracer工具。分析抓到的HTTP数据包,深入理解:HTTP协议,包括语法、语义、时序。
2.实验内容
客户端向服务器发送请求报文,服务器向客户端发送响应报文。具体包含:
- 建立网络拓扑结构
- 配置参数
- 抓包
- 分析数据包
3.实验报告
3.1概念梳理
(1)什么是抓包?
由于不同主机之间的数据通信是通过网络来进行传输,而我们对那些在网络上传输的数据(发送、请求的数据)进行截获、编辑、转存等操作就是抓包。抓包可以是抓取电脑端请求的数据,还可以抓取移动端的数据包。
(2)我们为什么要抓包呢?
当我们发现一个网络在传输数据的过程中出现了问题后,想要对这个问题进行修复,我们可以怎么做呢?首先想到的便是要去分析网络传输过程信息,通过该信息去进一步查找问题出在哪个部分。而通过抓包操作,我们可以对抓取到的数据包进行解析,以便找出网络传输中的Debug。
当然我们也可以通过抓取用户发送的涉及用户名和密码的数据包来获取用户的密码。
(3)HTTP协议是什么?
HTTP协议是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。HTTP是一种协议规范,这种规范记录在文档上,为真正通过HTTP协议进行通信的HTTP的实现程序。
(来源于:https://baike.baidu.com/item/http/243074?fromtitle=%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE&fromid=8535513)
3.2实验操作过程
整个实验的操作流程:先构建网络拓扑结构,对客户端与服务器进行参数的配置,将要抓取的包限定为HTTP,在客户端中输入服务器的IP地址,对获取到的数据包进行分析。
(1)建立网络拓扑结构
上图为本次实验的网络拓扑结构。左侧的PC-PT为客户端,右侧的Server-PT为服务器端。
在客户端上将会运行客户程序,而在服务器端上将会运行服务器程序。在两个应用程序之间将会产生通信关系:客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的文档。
(2)配置参数
我将客户端的IP地址设置为:192.168.1.37
服务器的IP地址被设置成:192.168.1.55
(3)访问服务器
在客户端中,将服务器端的IP地址输入,表示客户程序对服务器程序将要发出请求。当服务器接收到了来自客户端的请求后,将会把相关的文档传输回客户端,这时在客户端上,我们将会看到客户程序向服务器程序发送请求所要的文档内容。
(4)抓包并分析抓到的数据包
上图是在对网络传输过程进行仿真模拟后的结果。
HTTP有两类报文——请求报文与响应报文。下面将对这两类报文进行简单地分析:
在我的实验中,我获取到的请求报文省略了一行,即 Get / HTTP/1.1。
- Get / HTTP/1.1 该行为请求行,在这里将会使用相对URL(即省略主机的域名)
Get操作方法的意义是请求读取由URL所标志的信息
最后的HTTP/1.1表示的是客户程序采用的HTTP的版本为1.1
- HTTP Data:Accept-Language:en-us 该行表示用户希望优先得到英文版本的文档
- Accept:*/* 该行表示用户希望接受任意的数据类型
- Connection:close 该行表示告诉服务器发送完请求的文档后就可释放连接
- Host:192.168.1.55 在这一行中给出了主机的域名
- 在请求报文的最后有一行空行
上图是HTTP的响应报文,在我的实验结果中,响应报文也省略了一行,即HTTP/1.1 200 OK。
- HTTP/1.1 200 OK 该行表示的是状态行
状态码为200表示请求成功
- HTTP Data:Connection:close 该行表示告诉服务器发送完请求的文档后就可释放连接
- Content-Length:369 该行用于描述HTTP消息实体的传输长度
(对于Content-Length的理解参考:https://blog.csdn.net/u013749540/article/details/52373733)
- Sever:PT-Sever/5.2 该行表示的是后台服务器
- 在响应报文的最后也有一行空行
(5)HTTP报文结构整理
在对HTTP协议进行抓包仿真实验后,我对于HTTP的请求与响应报文的组成有了初步的了解。通过阅读课本,对于HTTP的报文结构的一些主要特点进行罗列。
- HTTP的请求报文与响应报文都是由三个部分组成的,即开始行(请求报文中称请求行,响应报文中称状态行)、首部行、实体主体(在请求报文中一般不用该字段,在响应报文中也可能没有该字段)。
- 请求报文中的请求行只有三个内容:方法、请求资源的URL、HTTP的版本
- 响应报文中的状态行也只有三个内容:HTTP的版本、状态码、解释状态码的简单短语
- 状态码都是三位数字,分为5大类。这5大类的状态码都是以不同的数字开头的,下面为5大类状态码表示的意思。
1xx:表示通知信息,如请求收到了或正在进行处理
2xx:表示成功,如接受(HTTP/1.1 202 Accepted)或知道了
3xx:表示重定向,如要完成请求还必须采用进一步的行动
4xx:表示客户的差错,如请求中有错误的语法(HTTP/1.1 400 Bad Request——错误的请求)或不能完成(HTTP/1.1 404 Not Found——找不到)
5xx:表示服务器的差错,如服务器失效无法完成请求
3.3新的疑问及解答
(1)在参数配置中我们设置的IP地址中每一个数字都代表什么含义呢?
在该链接中详细地介绍了IP地址中的每一个数字代表什么:http://www.360doc.com/content/18/0210/16/38623992_729160150.shtml