计算机网络实验: 应用层和传输层网络协议分析

实验名称

应用层和传输层网络协议分析

实验介绍

实验使用 Wireshark 工具对网络数据包进行抓取,并针对应用层和传输层封装的网络封包进行详细分析,通过实践观察加深对应用层HTTP协议以及传输层TCP协议具体实现过程的理解。
在这个实验中,我们将探讨 HTTP 协议的几个方面:基本/响应交互,HTTP 消息格式,检索大型 HTML 文件,检索 HTML 文件嵌入对象,HTTP 身份验证和安全。

实验目的

(1) 理解和掌握 Wireshark 等工具的使用方法;
(2) 利用 Wireshark 工具对应用层 HTTP 协议和传输层 TCP 协议进行分析。

背景知识和准备

HTTP协议以及TCP协议的理论知识。

HTTP协议

HTTP概述

HTTP是超文本传输协议,是Web的核心。它包括两个部分:客户及程序、服务器程序。它们分别运行在不同的端系统中,通过交换HTTP报文进行会话。HTTP协议定义了报文的格式以及客户机和服务器交换报文的方式。
用户请求一个Web页(如点击一个超链接),浏览器向服务器发出对该页所含对象的“HTTP请求报文”。服务器接受请求,回发包含请求对象的“HTTP响应报文”。
计算机网络实验: 应用层和传输层网络协议分析

HTTP连接

HTTP连接包括非持续HTTP连接、持续HTTP连接两种,默认方式下使用持续连接。对于持续连接,服务器在发送响应后保持该TCP连接,相同客户机与服务器之间的后续请求和响应报文通过相同的连接进行传送。此外,一个TCP连接上可以传送多个Web对象。

HTTP请求报文

计算机网络实验: 应用层和传输层网络协议分析

HTTP响应报文

计算机网络实验: 应用层和传输层网络协议分析

TCP协议

TCP概述
i. 端到端

一个发送方, 一个接收方,连接状态与端系统有关,不为路由器所知。

ii. 可靠、有序的字节流
iii. 流水线

TCP拥塞和流量控制设置滑动窗口协议。

iv. 发送和接收缓冲区
v. 全双工网络

同一连接上的双向数据流。

vi. 面向连接

在进行数据交换前,初始化发送方与接收方状态,进行握手(交换控制信息)。

vii. 流量控制

发送方不能淹没接收方。

viii. 拥塞控制

抑止发送方速率来防止过分占用网络资源。

可靠数据传输

TCP在IP不可靠服务的基础上创建可靠数据传输服务。

TCP报文段结构

计算机网络实验: 应用层和传输层网络协议分析

实验过程

1. 了解Wireshark工具的工作原理及使用方法

2. 对HTTP协议进行分析

在这个实验中,我们将探讨 HTTP 协议的几个方面:基本/响应交互,HTTP 消息格式,检索大型 HTML 文件,检索 HTML 文件嵌入对象,HTTP 身份验证和安全。

基本的HTTP请求/响应

a) 启动web浏览器,以Microsoft Edge为例。
计算机网络实验: 应用层和传输层网络协议分析
b) 启动Wireshark 的数据包嗅探器,然后输入“http”(不带引号)。
计算机网络实验: 应用层和传输层网络协议分析
c) 稍等片刻,然后按下开始按钮,开始捕获 Wireshark 的数据包。
计算机网络实验: 应用层和传输层网络协议分析
现在,正在进行捕获。
计算机网络实验: 应用层和传输层网络协议分析
d) 在浏览器中输入以下网址:
http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html
计算机网络实验: 应用层和传输层网络协议分析
e) 停止 Wireshark 捕获数据包,Wireshark获取数据如下图:
计算机网络实验: 应用层和传输层网络协议分析
f) 观察到上面捕获了较多的数据包,是不符合预期的,这不方便我们进行分析。推测原因在于,从捕获开始到捕获结束的这段时间内,除了访问指定网址以外,有其他应用程序(如QQ、网易云音乐等)传递的HTTP消息被同时捕获到。同时正在访问的其他网页对我们的捕获也产生了影响。因此,我关闭了其他应用程序,只访问指定的网页,快速地访问网页,之后马上停止捕获。此次的捕获结果为:
计算机网络实验: 应用层和传输层网络协议分析
按下Ctrl+S,保存该报文。
计算机网络实验: 应用层和传输层网络协议分析
g) 观察到HTTP响应状态为“304 Not Modified”,而不是“200 OK”,推测原因在于先前已经访问该网站,再次访问只起到了“刷新”的作用。我查了一下“304 Not Modified”的含义:
当客户端缓存了目标资源但不确定该缓存资源是否是最新版本的时候, 就会发送一个条件请求。在进行条件请求时,客户端会提供给服务器一个If-Modified-Since请求头,其值为服务器上次返回响应头中Last-Modified值,还会提供一个If-None-Match请求头,值为服务器上次返回的ETag响应头的值。
服务器会读取到这两个请求头中的值,判断出客户端缓存的资源是否是最新的,如果是的话,服务器就会返回HTTP/304 Not Modified响应头, 但没有响应体.客户端收到304响应后,就会从本地缓存中读取对应的资源。 所以:当访问资源出现304访问的情况下其实就是先在本地缓存了访问的资源。
清除已缓存的数据:
计算机网络实验: 应用层和传输层网络协议分析
再次尝试抓包,成功。
计算机网络实验: 应用层和传输层网络协议分析
响应报文状态为200 OK。查阅资料得知,HTTP 200 OK成功状态响应码指示请求已成功。200响应默认是可缓存的。Wireshark 获取到的请求报文如下图:
计算机网络实验: 应用层和传输层网络协议分析
Wireshark 获取到的响应报文如下图:
计算机网络实验: 应用层和传输层网络协议分析
按下Ctrl+S,保存该报文。

HTTP条件请求/响应(file 2)

下次更新,不知道有人看吗?