HTTP超文本传输协议详解

在这里插入图片描述
HTTP(Hyper text transfer protocol)超文本传输协议,是一个属于应用层的面向对象的协议,其详细规定了浏览器和万维网服务器之间互相通信的规则。客户端和服务端进行通信时传输的内容称之为报文。HTTP协议就是规定了报文的格式。客户端发送给服务器的称之为“请求报文”,服务器发送给客户端的称之为“相应报文”。

HTTP协议的发展历程(了解即可)
HTTP/0.9 -> HTTP/1.0 -> HTTP/1.1 -> HTTP/2.0 -> HTTP/3.0
HTTP/1.1仍然是目前非常流行的版本
HTTP发展历史以及各版本的特点

HTTP数据交互
1.请求-响应模式:客户端向服务端发送(请求),服务端向客户端返回(响应),类似于一个人提问(客户端),另一个人回答(服务器)。
2.数据的格式:请求时发送的数据称之为请求报文,响应时返回的数据称之为响应报文。
在这里插入图片描述
2.1请求报文
在这里插入图片描述
请求首行(请求行);GET/POST 资源参数?路径 HTTP/1.1
请求头信息(请求头);
空行;
请求体;POST请求才有请求体
下图为请求www.baidu.com查看请求报文格式(打开浏览器点击F12,接着点击network,访问www.baidu.com,在弹出的所有请求中找到www.baidu.com,点击后打开标头,里面有响应标头(响应报文)和请求标头(请求报文),点击请求标头后点击原始选项即可查看原始请求标头数据)
在这里插入图片描述
第一行为请求首行,接下来是请求头信息,其中:

//请求地址
Host: URL
// 长链接
Connection:keep-alive
// 请求协议的自动升级[http的请求,服务器是https的,浏览器会自动升级为https]
Upgrade-Insecure-Requests: 1
// 用户系统信息
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
// 浏览器支持的文件类型
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
// 浏览器支持的压缩格式
Accept-Encoding: gzip, deflate, br, zstd
// 浏览器支持的语言
Accept-Language: zh-CN,zh;q=0.9

2.2响应报文
在这里插入图片描述
访问www.jd.com,响应报文的原始数据:
在这里插入图片描述
与请求报文的格式类似,其中200的状态码以及OK表示正常,高版本的Tomcat不会显示OK
常见的状态码及含义
connection:Keep-alive表示长链接
Content-Length: 103506表示报文主体的长度,可用于校验

HTTP的长链接(HTTP/1.1版本首次出现)和短链接
HTTP是应用层协议,默认使用的传输层协议是TCP协议,网络层协议是IP协议,TCP/IP是即面向连接的协议(三次握手和四次挥手)
当我们想要获取一个完整的网页,通常需要客户端浏览器向服务器发送多次请求,例如,可以打开浏览器并按F12,并选择Network,此时当我们访问www.jd.com时,可以看到非常多的请求,
在这里插入图片描述
第一个请求是页面主体部分的html文件,
在这里插入图片描述
可以点击此文件名预览该文件,这就是该网页的主体部分。
在这里插入图片描述
接下来客户端浏览器会解析该html文件,得到一些css,js以及图片等文件的地址,类似于下面这种,
在这里插入图片描述
这时候客户端会继续向服务器发送请求,服务器会响应请求并将这些文件发送给客户端,客户端得到所有的文件即可正确解析网页。
由于每次打开网页都需要大量的请求-响应,在HTTP/1.1之前,每次请求都需要创建一次新的TCP连接,接着将TCP连接关闭,即为所述短链接,这样是非常浪费资源的,因为每次连接都需要发送大量的请求响应报文,服务器也要给连接分配相应的资源。长链接允许创建持久连接,在一段时间内,多次的请求响应操作仅创建一次TCP连接,在规定时间内无请求报文发送则会关闭TCP连接,大大节省了网络资源。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值