1、基本HTTP GET/response交互
这个在浏览器中已经看到过,不再赘述
2、HTTP条件Get/response交互
大多数浏览器使用缓存的方式,对于已经缓存的文件,用户再次请求时会使用条件GET,下图是在浏览器缓存清空的状态下对某网站的两次请求(如果第二次请求时Wireshark没有新的报文产生,那就用ctrl+R强制刷新)
点开看详细内容后,可以看到在第一个状态为200的http响应报文中有Last-Modified头部,这告诉了客户端,该内容的最后修改时间
在用户第二次请求时,Get请求报文中会加上If-Modified-Since头部,内容为上一次的响应报文中Last-Modified的值,也就是在向服务器询问,内容在某时刻后是否有更改
对于此条请求,服务器响应状态码为304(如果尚未更改)
需要注意,Date头部描述的时请求时服务器当地时间,可以看到,我的请求时刻是北京时间16:59,在响应报文中的Date是8:59,代表服务器当地时间
3、检索长文件
可以看到响应报文有多个,因为文件的长度超出了MMS,所以TCP把数据分段
4、具有嵌入对象的 HTML 文档
抓包显示是串行下载的两张图片(因为等第一张图的响应报文接收到后才发送的第二章图片的请求),但是按理来说应该是并行
5、HTTP 认证
可以看到一开始的响应报文状态码为401,代表没有权限,第二次我们输入用户名和密码后的Get请求中出现了Authorization 字段,把用户名和密码用base64编码后传输
可以看到解码后的结果