实验背景:
HTTP协议是常见的几种应用层协议之一,当我们用浏览器和web客户端进行交互时html页面等内容的传输都是依靠该协议完成的。值得注意的是,HTTP使用的是TCP而非UDP作为其底层的传输层协议,并且在使用HTTP协议进行传输时,需要先进行3次TCP握手,然后才开始传HTTP包。
实验工具:
浏览器:edge浏览器
网站:www.baidu.com
实验步骤:
1.打开edge浏览器,利用F12调用Web开发工具,访问网站www.baidu.com
可以发现开发工具记录了这次请求
2.点击这次交互记录,进行分析
分析:
GET-请求方法 / -url路径 HTTP/1.1 -HTTP协议版本号为1.1
Host: 用来指定被请求资源的Internet主机www.baidu.com和端口号80,这里使用缺省端口号80
Connection: keep-alive表示持久连接,即在完成本次请求的响应后,保持连接,等待本次连接的后续
Upgrade-Insecure-Requests:是一个请求首部,用来向服务器端发送信号,表示客户端优先选择加密及带有身份验证的响应。
User-Agent: 首部包含了一个特征字符串,用来让网络协议的对端来识别发起请求的用户代理软件的应用类型、操作系统、软件开发商以及版本号。通过这个标识,用户所访问的网站可以显示不同的排版,从而为用户提供更好的体验或者进行信息统计。
Accept: 用户代理期望的MIME类型
Accept-Encoding: 用户代理支持的压缩方法
Accept-Language: 用户代理期望的页面语言
Upgrade-Insecure-Requests: 用来向服务器端发送信号,表示客户端优先选择加密及带有身份验证的响应
Sec-Fetch-Site: 表示一个请求发起者的来源与目标资源来源之间的关系
Sec-Fetch-Mode:该请求头表明了一个请求的模式
Sec-Fetch-User: 取值是一个Boolean类型的值,true(?1)表示导航请求由用户激活触发(鼠标点击/键盘),false(?0)表示导航请求由用户激活以外的原因触发
Sec-Fetch-Dest: 表示请求的目的地,即如何使用获取的数据;
Cookie: 浏览器Cookie是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie使基于无状态的HTTP协议记录稳定的状态信息成为了可能
HTTP/1.1-HTTP协议版本 200 OK -状态
Cache-Control: 缓存控制HTTP头包含请求和响应中缓存的指令。
Connection: keep-alive表示持久连接,即在完成本次请求的响应后,保持连接,等待本次连接的后续
Content-Encoding: 列出了已经施加到表示(消息有效负载)的任何编码,以及以什么顺序。这让接收者知道如何解码表示以获得原始有效载荷格式
Content-Type:指示资源的MIME类型
Date: 表示消息生成的日期和时间
Expires: 给出响应过期的日期和时间。
Server: 包含了处理请求的服务器所用到的软件相关信息
Set-Cookie: 用于从服务器向用户代理发送一个cookie,使得用户代理能够将其发送回服务器后面
Strict-Transport-Security:是一种安全功能,可以让一个网站告诉大家,它应该只使用 HTTPS,而不是使用 HTTP 进行通信的浏览器。
Traceid: 标记了 浏览器发起的某个请求, 这个id可在服务端从接收请求到 响应请求中流转,甚至接力传递给下游应用中流转,用于唯一标记和定外这次请求。
Transfer-Encoding:指定编码时使用的安全传输的形式有效载荷体给用户
X-Frame-Options: 用来给浏览器指示允许一个页面可否在<frame>, <iframe> 或者 <object> 中展现的标记。
X-Ua-Compatible:是一个指定IE8以上版本浏览器采用何种文档兼容模式来渲染页面的指令