文章目录
1. 实验前准备
1.1 wireshark抓包数据分析
抓包数据界面从上到下分为三个部分:封包列表,封包详细数据和16进制数据。
1.1.1 封包列表
- no:数据包标号
- time:在软件启动的多长时间内抓到
- source:来源ip
- destination:目的ip
- protocol:协议类型
- length:数据包长度
- info:数据包信息
1.1.2 封包详细数据
- frame:数据包的物理层,可以看到帧数和封装类型等
- Ethernet:展开可以看到数据包的目的地址,源地址和使用的ip协议
- Internet protocol version:可以看到ip数据包总长度,头部数据的校验状态等
- transmission control protocol:展开可以看到端口号,确认号等
1.2 HTTP状态码
- 200 OK:服务已经接收请求
- 301 Moved Permanently:被请求的资源已经永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URL之一。
- 304 Not Modified:如果客户端发送了一个待条件的GET请求并且这个请求已经被允许,并且上次访问以来这个界面内容没有改变,则服务器返回这个状态码
- 404 Not Found:请求失败,请求的资源未被在服务器上发现
- 401 Unauthorized:当前请求需要用户验证。
2. 实验过程
2.1 对HTTP协议进行分析
2.1.1 基本的HTTP请求/响应
- 操作:启动浏览器,打开wireshark开始捕获,在浏览器输入网址,稍等一会儿,结束捕获,过滤出http
- 结果:状态码200OK,服务器成功接收请求。
- 分析:并且连着两条数据,第一条是客户端发送请求,第二条是服务端响应,两条数据的源地址和目的地址刚好相反。
2.1.2 HTTP条件请求/响应
- 操作:清空浏览器缓存,wireshark开始捕获,输入网址,几分钟后刷新浏览器,几分钟后停止捕获,过滤出http
- 结果:一条状态码200 ,一条状态码304
- 分析:第一次输入网址后,返回200。刷新浏览器相当于再次请求访问相同的资源,所以返回304,表示当前请求的资源与上一次请求的资源相同,已经有了缓存,直接从本地获取。
2.1.3 检索长文档
- 操作:与2.1.1相同。
- 结果:200 OK。
2.1.4 嵌入对象的HTML文档
- 操作:与2.1.1相同。
- 结果:两条200 OK。
- 分析:因为嵌入了对象,所以两次请求,第一次请求到HTML界面,第二次请求到嵌入的对象(一张图片)。
2.1.5 HTTP认证
- 操作:与2.1.1相同。
- 结果:一条401,一条200
- 分析:刚刚请求到资源时,处于未登录状态,所以状态码为401,表示当前请求需要用户进行验证。输入了用户名和密码后,状态码为200,表示成功请求到资源。
2.2 对TCP协议进行分析
2.2.1 抓取传输到远程服务器的TCP数据包
打开浏览器,打开wireshark开始捕获;输入网址,几分钟后结束捕获,过滤tcp
2.2.2 分析建立TCP连接过程
TCP连接通过称为三次握手的三条报文建立。
- 客户端发送一个SYN包给服务器(SYN=1, Seq=x)
- 服务端接收SYN包,返回一个SYN-ACK包(SYN=1, ACK=x+1)
- 客户端再次接收SYN-ACK,回应一个ACK。