利用Wireshark软件抓包深入分析HTTP,Web缓存。加计算机网络课后实验

Wireshark软件的下载

为了运行Wireshark,您需要一台支持Wireshark和libpcap或WinPCap(这个在一定要安装)分组捕获库的计算机。当您安装Wireshark时,如果您的操作系统中未安装libpcap软件,它将会自动安装。有关支持的操作系统和下载站点的列表,请访问http://www.wireshark.org/download.html

Wireshark软件的启动

运行Wireshark
当您运行Wireshark程序时,您将看到一个类似下面的启动界面:
在这里插入图片描述
选择你要抓取的接口,如果是使用以太网上网就选择对应的接口。双击打开就开始进行抓包了。
在这里插入图片描述

HTTP和Web缓存的理论基础

HTTP中文名超文本传输协议(HyperText Transfer Protocol),是web的应用层协议,使用TCP作为它的支撑运输协议,因为http请求对于数据的可靠性要求比较高所以选择TCP而不选择UDP进行传输。
HTTP连接的过程:第一步HTTP客户端进程向目标服务(www.qq.com)发起一个TCP连接,由TCP套接字来完成。
第二步:HTTP客户端(一般是你自己所使用的浏览器)经它的套接字向服务器发送一个HTTP请求报文。
第三步:HTTP服务器进程经由它的套接字接收请求报文,从自己的存储器里或者磁盘里检索出你所需要的内容(www.qq.com),封装成HTTP响应报文,并通过套接字向HTTP客户端。
第四步:HTTP服务器断开TCP连接。
第五步:HTTP客户端接受到响应报文后,TCP连接关闭。然后你的客户端即浏览器提取HTML文件,一个HTTP请求流程到此结束。
在这里插入图片描述
HTTP请求报文
在这里插入图片描述
HTTP响应报文
在这里插入图片描述

抓包分析

1.基本HTTP GET/response交互我们开始探索HTTP,方法是下载一个非常简单的HTML文件 非常短,并且不包含嵌入的对象。
启动Wireshark数据包嗅探器,在display-filter-specification窗口中输入“http”(只是字母,不含引号标记),这样就在稍后的分组列表窗口中只捕获HTTP消息。(我们只对HTTP协议感兴趣,不想看到其他所有的混乱的数据包)。
稍等一会儿(我们将会明白为什么不久),然后开始Wireshark数据包捕获。
在浏览器中输入以下内容 http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html,或直接复制这个链接搜索, 您的浏览器应显示非常简单的单行HTML文件。停止Wireshark数据包捕获。
在这里插入图片描述

在这里我们访问了书上提供的一个简单的网页。
2.在display-filter-specification窗口输入http,显示所抓到的http
在这里插入图片描述
在这里插入图片描述
3.双击第一行具体分析
在这里插入图片描述

GET报文的分析
在这里插入图片描述
我们发现抓取的报文中
GET /wireshark-labs/HTTP-wireshark-file1.html HTTP/1.1\r\n,与书上的报文一一对应。
在这里插入图片描述
GET报文比较简单,接下来看一下服务器回复的报文,多了服务器发送的HTML文件。在这里插入图片描述
至此我们了解了整个请求和回复的过程。要注意的是在请求之前,客户端先要与服务器进行TCP连接有一个三次握手的过程。
在这里插入图片描述

Web缓存的概念

Web缓存(或HTTP缓存)是用于临时存储(缓存)Web文档(如HTML页面和图像),以减少服务器延迟的一种信息技术。Web缓存系统会保存下通过这套系统的文档的副本;如果满足某些条件,则可以由缓存满足后续请求。 Web缓存系统既可以指设备,也可以指计算机程序。
从上面一个例子来讲,假设我们连续输入
http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html,然后再利用抓包软件来分析这两次的请求与回复报文是否一样?我们会有惊奇的发现

在这里插入图片描述

在这里插入图片描述
回复的报文中不再是HTTP/1.1 200 OK (text/html),而是 HTTP/1.1 304 Not Modified ,这个是什么意思的?Modified是改进修改的意思,Not Modified意思是服务器告诉客户端你请求的HTML并没有改变,请从Web缓存中或者代理服务器中得到。我们从报文中可以看到此时服务器并没有向客户端发送HTML文件。可以与第一次所抓到的报文做对比。!
在这里插入图片描述
所以当我们对某一个服务器发出连续的HTTP请求时,如果服务器检查资源没有被修改就回复304 Not Modified,直接从本地缓存中调出数据,方便快捷。
优点:缓存的优点通过缓存可以减少冗余的数据传输,从而达到节省流量的效果。缓存还能够缓解带宽的瓶颈问题和瞬间拥塞问题。加载页面的时候不需要更多的带宽,对原始服务器的要求也降低了。缓存降低了距离延时, 因为从较远的地方加载页面会更慢一些。