HTTP协议完全攻略(一直更新)

因为我才疏学浅,所以这是一篇对HTTP协议文章的笔记
参考链接:
https://mp.weixin.qq.com/s?__biz=MjM5NTEwMTAwNg==&mid=2650215417&idx=1&sn=8b15c2167f617a91c3dc0702db8cecd5&pass_ticket=weF7IZ62U9Y%2B6dqssNfT%2FfPzCAOaQGTVIs3u%2Fz8xi5M7Gq%2Bi6TfCRFxzITBo9Cfk

HTTP简介

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是基于TCP/IP协议传递(HTML文件、图片文件、查询结果等)。它不涉及数据包(packer)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。

HTTP特点

  1. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、PUT、DELETE、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  2. 灵活:HTTP允许传输任意类型的数据对象。
  3. 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
    所以HTTP的半双工通信
    同一时间数据是单向流动,服务器不能主动推送数据给客户端。直到WebSocket出现,很好解决这个问题。
    4无状态:HTTP协议是无状态的,HTTP 协议自身不对请求和响应之间的通信状态进行保存。任何两次请求之间都没有依赖关系。.直观地说,就是每个请求都是独立的,与前面的请求和后面的请求都是没有直接联系的。协议本身并不保留之前一切的请求或 响应报文的信息。这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把 HTTP 协议设计成如此简单的。

GET与POST区别

  • GET在浏览器回退时是无害的,而POST会再次提交请求。

  • GET请求会被浏览器主动缓存,而POST不会,除非手动设置。

  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

  • GET请求在URL中传送的参数是有长度限制的,而POST没有限制。

  • GET参数通过URL传递,POST放在Request body中。
    在这里插入图片描述

持久连接

**HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接。**以当年的通信情况来说,因为都是些容量很小的文本传输,所以即使这样也没有多大问题。可随着 HTTP 的 普及,文档中包含大量图片的情况多了起来。比如,使用浏览器浏览一个包含多张图片的 HTML 页面时,在发送请求访问 HTML 页面资源的同时,也会请 求该 HTML 页面里包含的其他资源。因此,每次的请求都会造成无谓的 TCP 连接建立和断开,增加通信量的 开销。

为解决上述 TCP 连接的问题, HTTP/1.1 和一部分的 HTTP/1.0 想出了持久连接(HTTP Persistent Connections,也称为 HTTP keep-alive 或 HTTP connection reuse)的方法。持久连接的特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态。

持久连接的好处在于减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。另外, 减少开销的那部分时间,使 HTTP 请求和响应能够更早地结束,这样 Web 页面的显示速度也就相应提高了。
在 HTTP/1.1 中,所有的连接默认都是持久连接,但在 HTTP/1.0 内并未标准化。虽然有一部分服务器通过非 标准的手段实现了持久连接,但服务器端不一定能够支持持久连接。毫无疑问,除了服务器端,客户端也需 要支持持久连接。

管线化

持久连接使得多数请求以管线化(pipelining)方式发送成为可能。从前发送请求后需等待并收到响应,才能 发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求。(异步)
这样就能够做到同时并行发送多个请求,而不需要一个接一个地等待响应了。通俗地讲,请求打包一次传输过去,响应打包一次传递回来。管线化的前提是在持久连接下。

假如当请求一个包含 10 张图片的 HTML Web 页面,与挨个连接相比,用持久连接可以让请求更快结束。 而管线化技术则比持久连接还要快。

TCP三次握手和四次挥手

TCP是一个很复杂的协议,对于其中的很多内容,对于初学的我太艰深。等什么时候,我有能力去理解这些内容,再来更新。所以我直接放链接供大家阅读。
https://juejin.im/entry/58fe461c570c350058ec7a57
三次握手
在这里插入图片描述
四次挥手
https://juejin.im/post/5a7835a46fb9a063606eb801
在这里插入图片描述

HTTPS和HTTP的区别

HTTPS和HTTP的主要区别:多了一个TLS加密。TLS加密是非对称加密,具体的原理我还是不懂,直接放链接了。
https://juejin.im/post/584b76d3a22b9d0058d5036f
https://zhuanlan.zhihu.com/p/37738632(这篇文章由浅入深,推荐)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值