HTTP协议

1、HTTP协议(超文本传输协议)

HTTP允许浏览器和服务器进行通信。

(1)HTTP 0.9

蒂姆伯纳斯李 发明万维网,创建了单行HTTP协议。
它是一个简单的一页规范,它只有一种方法,GET 后跟文档地址和可选的端口地址,并以回车和换行结束。
HTTP0.9 有四个术语,连接,断开连接,请求,和响应
没有HTTP标头,没有状态/错误代码,没有cookie,也没有其他现代功能。
HTTP/0.9 建立在TCP传输协议之上,响应后立即终止连接。

(2)HTTP 1.0

1996年,HTTP1.0发布,该规范是显著扩大,并且支持三种请求方式,GET,HEAD,POST。还有其他术语,消息,资源实体,客户端,用户代理,服务器,源服务器,代理,网关,隧道,缓存。
HTTP/1.0和HTTP/0.9的区别:
每个请求都附加了HTTP版本。
在响应开始时发送状态代码。
请求和响应都包含HTTP报文头。
报文头中的元数据使协议具有灵活性和可扩展性。
内容类型能够传输HTML文件以外的文档。
但是,HTTP/1.0不是官方标准。

(3) HTTP/1.1

1997年发布,HTTP/1.1支持七种请求方法OPTIONS,GET,HEAD,POST,PUT,DELETE,和TRACE、
HTTP/1.1有额外的术语,表示,内容协商,变体,可缓存,第一手,显示过期时间,启发式过期时间,年龄,生命周期,语义透明和验证器。
HTTP/1.1是HTTP1.0的增强
虚拟主机允许从单个IP地址提供多个域、
持久连接和流水线连接允许Web浏览器通过单个持久连接发送多个请求、
缓存支持节省了带宽并使响应速度更快
分块编码允许在知道其总长度之前发送响应,这将启用动态生成的页面
内容协商,包括语言,编码或类型,允许客户端和服务器就最适合交换的内容达成一致。
HTTP1.0和HTTP1.1的区别:
增强,增加了新的请求方法,PUT,DELETE,TRACE,OPTIONS
增加了缓存支持分块编码

(3)HTTP/2

HTTP/2旨在更有效的使用网络资源并减少延迟感知,它引入了一个新的二进制帧层,它不向后兼容HTTP/1.X服务器和客户端。
2015年发布的。它具有附加术语,连接错误,端点,帧,对等,接受方,发送方,流,流错误,中介和有效载荷主体。
HTTP/2构建了对流量的并行优化,优先化和流量控制、
通信是通过单个TCP连接与任意数量的双向流进行的。
它是一个多路复用协议,并行请求通过同一连接处理。

它提供了将一种资源优先于另一种资源的能力,从而将其置于响应行的头部。

它允许主动将表示从服务器推送到客户端。

它使用二进制协议而不是文本。这使其成为机器可读的并提高了性能。它还提高了整体的安全性。

请求和响应头被压缩。

帧在流上传送,数据帧有效载荷受流控制。

(4)HTTP/3

随着越来越多的智能手机和便携式设备的出现以及越来越多的设备实现无线连接,整体网络响应时间也有所增加。HTTP/2 的队头阻塞问题会导致缓慢且无响应的用户体验。

由于 TCP 保证发送和接收数据包的顺序,丢失的数据包将停止所有流,即使它可能只影响其中一个。
HTTP/2 没有强制加密,容易受到流重用攻击以及压缩页头和 cookie 攻击。

HTTP/3 可以解决这些问题。

HTTP/3 是继 HTTP/1.1 和 HTTP/2之后的第三次重大修订。

目前,它仍然是一个草案。最新规范于 2021 年 5 月 27 日发布。它具有附加术语:中止、HTTP/3 连接和内容。

HTTP/3 是一种新的、快速、可靠且安全的协议,适用于所有形式的设备。HTTP/3 没有使用 TCP,而是使用谷歌在 2012 年开发的新协议 QUIC。QUIC 运行在 UDP(用户数据保护协议)之上。 QUIC 提供本地多路复用,丢失的数据包仅影响数据丢失的流程。这解决了 HTTP/2 中的队头阻塞问题。
QUIC 为流数据和在流上发送的所有 HTTP/3 帧类型提供流量控制。

因此,所有帧头和有效载荷都受到流量控制。

请求和响应头由 QPACK 压缩,而不是 HTTP/2 中的 HPACK。

几个 HTTP/3 帧用于管理服务器推送。

HTTP/3 包括 TLS 1.3 加密。实际上,它充当 HTTPS。

HTTP/3 带来了革命性的变化,以提高 Web 性能和安全性。设置 HTTP/3 网站需要服务器和浏览器支持。

目前,谷歌云、Cloudflare和Fastly支持 HTTP/3。

Chrome、Firefox、Edge、Opera 和一些移动浏览器支持 HTTP/3。

我们可以去caniuse网站检查浏览器的支持性。

TCP

TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的RFC 793定义。TCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构,你可以把它想象成排水管中的水流。
第一次握手

客户端向服务端发送连接请求报文段。该报文段中包含自身的数据通讯初始序号。请求发送后,客户端便进入 SYN-SENT 状态。

第二次握手

服务端收到连接请求报文段后,如果同意连接,则会发送一个应答,该应答中也会包含自身的数据通讯初始序号,发送完成后便进入 SYN-RECEIVED 状态。

第三次握手

当客户端收到连接同意的应答后,还要向服务端发送一个确认报文。客户端发完这个报文段后便进入 ESTABLISHED 状态,服务端收到这个应答后也进入 ESTABLISHED 状态,此时连接建立成功。

这里可能大家会有个疑惑:为什么 TCP 建立连接需要三次握手,而不是两次?这是因为这是为了防止出现失效的连接请求报文段被服务端接收的情况,从而产生错误。

TCP协议的特点
面向连接

面向连接,是指发送数据之前必须在两端建立连接。建立连接的方法是“三次握手”,这样能建立可靠的连接。建立连接,是为数据的可靠传输打下了基础。

仅支持单播传输

每条TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。

面向字节流
TCP不像UDP一样那样一个个报文独立地传输,而是在不保留报文边界的情况下以字节流方式进行传输。

可靠传输

对于可靠传输,判断丢包,误码靠的是TCP的段编号以及确认号。TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。

提供拥塞控制

当网络出现拥塞的时候,TCP能够减小向网络注入数据的速率和数量,缓解拥塞

TCP提供全双工通信
TCP允许通信双方的应用程序在任何时候都能发送数据,因为TCP连接的两端都设有缓存,用来临时存放双向通信的数据。当然,TCP可以立即发送一个数据段,也可以缓存一段时间以便一次发送更多的数据段(最大的数据段大小取决于MSS)

UDP

UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
TCP向上层提供面向连接的可靠服务 ,UDP向上层提供无连接不可靠服务。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值