HTTP协议

1.什么是HTTP

HTTP(HyperText Transfer Protocol)即超文本传输协议 ,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,它是万维网交换信息的基础,它允许将HTML(超文本标记语言)文档从Web服务器传送到Web浏览器。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

2.HTTP报文格式

HTTP报文是HTTP应用程序之间传输的数据块,HTTP报文分为HTTP请求报文和HTTP响应报文,但是无论哪种报文,他的整体格式是类似的,大致都是由起始、首部、主体三部分组成,起始说明报文的动作,首部说明报文的属性,主体则是报文的数据。
2.1 HTTP请求报文
在这里插入图片描述

2.2 HTTP响应报文
在这里插入图片描述

3.HTTP版本

http/0.9:原型版本,功能简陋
method:GET(服务度传数据给客户端)

http/1.0:引入 cache, MIME, method(请求方法)机制
MIME:Multipurpose Internet Mail Extesion (多用途互联网邮件扩展类型),是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。
method:GET(服务度传数据给客户端), POST, HEAD,PUT

http/1.1:增强了缓存功能;
SPDY协议是Google提出的基于传输控制协议(TCP)的应用层协议,通过压缩、多路复用和优先级来缩短加载时间。该协议是一种更加快速的内容传输协议。
method:PUT, DELETE,TRACE, OPTIONS,GET, POST, HEAD

http/2.0
HTTP2.0大幅度的提高了web性能,在HTTP1.1完全语意兼容的基础上,进一步减少了网络的延迟。实现低延迟高吞吐量。对于前端开发者而言,减少了优化工作。

在这里插入图片描述

4.HTTP工作原理

HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。
Web服务器根据接收到的请求后,向客户端发送响应信息。
HTTP默认端口号为80,但是你也可以改为8080或者其他端口。
注意事项:

  1. HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  2. HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
  3. HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

5.HTTP的特点

(1)支持客户端/服务器模式

HTTP工作于客户端服务端的架构之上,浏览器作为客户端通过url向服务器及web服务器发送请求,web服务器根据接收到的请求向客户端发送响应信息。

(2)简单快速

客户端向服务器请求时,只需传送请求方法和路径,请求方法有post、get等,每种方法规定了客户端与服务端连接的类型不同。由于HTTP协议简单,使得HTTP服务程序规模小而且通信速度很快。

(3)灵活

HTTP允许传输任意类型的数据对象。

(4)无连接

限制每次连接只能处理一个请求,服务器处理完客户端的请求并收到客户端的应答后即断开连接,采用这种方式可以节省时间。HTTP1.1后默认采用keepline长连接,服务器要等一段时间后才能断开连接,以保证连接特性。但是你始终都要认为HTTP请求在结束后连接就会关闭,这是HTTP的特性。与下层实现在结束后是否关闭连接都不会改变这个特性,长连接可以理解为下层实现对上层透明。

(5)无状态

无状态是指协议对事务处理没有记忆能力,意味着如果后续处理需要前面的信息,则必须被重传,这可能导致每次连接的数据量增大,另一方面不需要前面信息时,它的应答就较快。

6.HTTP常见状态码

  1. 200(“OK”) 一切正常。实体主体中的文档(若存在的话)是某资源的表示。
  2. 400(“Bad Request”)
    客户端方面的问题。实体主题中的文档(若存在的话)是一个错误消息。希望客户端能够理解此错误消息,并改正问题。
  3. 500(“Internal Server Error”)
    服务期方面的问题。实体主体中的文档(如果存在的话)是一个错误消息。该错误消息通常无济于事,因为客户端无法修复服务器方面的问题。
  4. 301(“Moved Permanently”)
    当客户端触发的动作引起了资源URI的变化时发送此响应代码。另外,当客户端向一个资源的旧URI发送请求时,也发送此响应代码。
  5. 404(“Not Found”) 和410(“Gone”)
    当客户端所请求的URI不对应于任何资源时,发送此响应代码。404用于服务器端不知道客户端要请求哪个资源的情况;410用于服务器端知道客户端所请求的资源曾经存在,但现在已经不存在了的情况。
  6. 409(“Conflict”) 当客户端试图执行一个”会导致一个或多个资源处于不一致状态“的操作时,发送此响应代码。

7.HTTP现状

HTTP / 2用法的更改
此图显示了最近在HTTP / 2和其他站点元素之间更改的网站的百分比。有关调查中使用的方法的说明,请参阅技术概述。
如何阅读该图:
直到最近,使用HTTP / 2的网站中有0.03%使用SPDY。
直到最近,只有不到0.01%的使用HTTP / 2的网站现在使用SPDY。
在这里插入图片描述
HTTP / 2的使用情况按排名细分
在这里插入图片描述
目前HTTP/2.0(简称h2)已经在广泛使用(截止2020年3月根据Alexa流行度排名的头部一百万网站中,h2占比约47.4%)。
历史趋势
在这里插入图片描述
使用HTTP / 2的热门网站

  1. Google.com
  2. Youtube.com
  3. 天猫商城
  4. Qq.com
  5. 搜狐网
  6. 淘宝网
  7. Wikipedia.org
  8. Yahoo.com
  9. 微博
  10. 新浪网
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值