HTTP协议基本格式

目录

一、HTTP协议是什么

二、理解 HTTP 协议的工作过程

三、HTTP协议格式

3.1 抓包工具的使用

3.2 抓包结果


一、HTTP协议是什么

HTTP(全称“超文本传输协议”)是一种应用非常广泛的 应用层协议

HTTP协议基本格式_第1张图片

HTTP协议往往是基于传输层TCP协议实现的,我们平时打开的网站都是通过HTTP协议来传输数据的。

二、理解 HTTP 协议的工作过程

当我们在浏览器中输入一个 "网址",此时浏览器就会给对应的服务器发送一个 HTTP 请求。对方服务器收到这个请求之后,经过计算处理,就会返回一个 HTTP 响应。

HTTP协议基本格式_第2张图片事实上,当我们访问一个网站的时候,可能涉及不止一次的 HTTP 请求/响应 的交互过程。可以通过浏览器的开发者工具观察到这个详细的过程。

通过 F12 打开浏览器的开发者工具,切换到 Network 标签页。然后刷新页面即可看到如下图效果。每一条记录都是一次 HTTP 请求/响应

HTTP协议基本格式_第3张图片

三、HTTP协议格式

3.1 抓包工具的使用

为了详细的观察HTTP协议格式,这里推荐使用抓包工具Fiddler来分析HTTP请求/响应的细节,在官网中进行下载。Fiddler官方下载地址 选择经典版(不收费的版本)下载完成之后一路next。

HTTP协议基本格式_第4张图片

将Fiddler下载完成之后还需要配置一些工具,才能开始抓包,因为现在的浏览器大部分都是通过https进行传输的。

HTTP协议基本格式_第5张图片

完成上述操作就可以直接开始抓包了,下面以搜狗网页为例展示抓包的结果(打开Fiddler,访问搜狗主页就可以自动抓包了)

如果页面的抓包过多影响观察,可以选择其中的一个然后ctrl+a选中全部的delete就行了

HTTP协议基本格式_第6张图片

3.2 抓包结果

以下是搜狗HTTP 请求/响应 的抓包结果

HTTP协议基本格式_第7张图片

  • 首行: [方法] + [url] + [版本]
  • Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
  • Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度; 

HTTP响应

HTTP协议基本格式_第8张图片

  • 首行: [版本号] + [状态码] + [状态码解释]
  • Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
  • Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度; 如果服务器返回了一个html页面, 那么html页面内容就是在body中. 

协议格式总结

HTTP协议基本格式_第9张图片

对于HTTP报文中存在 “空行”:这相当于是“报文的结束标记”,HTTP在传输层依赖TCP协议,TCP是面向字节流的,如果没有空行的话就会产生“粘包问题”。

你可能感兴趣的:(网络原理,http,网络,网络协议)