乐趣区

关于java:初识HTTP11

本文为《三万长文 50+ 趣图带你领悟 web 编程的内功心法》第二个章节。

2、初识 HTTP/1.1

接下来咱们先来简略介绍下 HTTP/1.1 的优缺点,好让大家对它有个意识,而后再进一步深刻理解。

2.1、可扩大

正是因为 HTTP 标准中限度很少,通知你能够做什么,然而不会通知你各种条条框框不能做什么,所以,很容易扩大,这也是为什么从 HTTP/0.9 诞生,始终扩大降级,增加更多的个性的起因。

2.2、传输可靠性

因为底层是基于 TCP 协定的,所以继承了 TCP 传输数据的可靠性,次要体现在1

  • 数据的程序传输;
  • 丢包重传,保障牢靠;
  • 连贯保护;
  • 流量管制,保障稳固;
  • 拥塞管制,及时调整,最大水平保障传输失常进行。

2.3、基于申请应答模式

只有一方先被动发动连贯和申请之后,接管刚才能够进行响应。HTTP 正是基于这种一问一答的申请应答模式。如果客户端不申请,服务端就不会搭理客户端。

尽管前面 HTTP/ 2 呈现了服务端推送2,然而也是针对特定资源的推送,并不是服务端想推送什么就推送什么。

2.4、无状态

有状态意味着肯定会通过某种状态标识为去追踪状态,就像 TCP 的状态机,TCP 申请头有特定的状态标识位来保护连贯的状态。

HTTP 并没有提供记录状态的中央,也就是说在交互性场景中,HTTP 没有记忆能力。这就会导致这样的问题:

  • 同一个用户屡次拜访一个网站,都须要反复读做身份验证。

即便开启了 keep-alive 机制,也只是 TCP 层面的维持连贯,对于 HTTP 层来说,看起来还是无状态的。

咱们不能每次都要让用户输出账号密码进行身份验证吧,为此才会呈现 Cookie 和 Session,为 HTTP 补救了状态存储的问题。

2.5、明文传输,不平安

咱们通过抓包工具抓 HTTP/1.1 的包,通过肉眼都能够看到申请头和申请体外面的内容,那么用户登录申请的时候,传输的账号密码以下子就能够捕捉到了。

咱们晓得,数据在网络中申请的链路是很漫长的,只有任何一个环节抓到了你的包,你的数据就泄露了。这也是为什么要推出 HTTPS 的起因。

2.6、性能较差(申请 - 应答)

因为应用申请应答机制,每次都须要传一大段申请头,效率比拟差。

另外,HTTP/1.1 基于申请 - 应答模式,在应用层存在队头阻塞问题,并且 TCP 层同样会存在 TCP 的队头阻塞问题,导致性能比拟差,须要通过各种奇门妙招去优化网络申请。

效率问题正是促使 HTTP/2、HTTP/ 3 诞生的起因之一。


本文为 arthinking 基于相干技术材料和官网文档撰写而成,确保内容的准确性,如果你发现了有何错漏之处,烦请高抬贵手帮忙斧正,万分感激。

如果您感觉读完本文有所播种的话,能够关注我的账号,或者点赞吧,码字不易,您的反对就是我写作的最大能源,再次感激!

为了把相干系列文章收集起来,不便后续查阅,这里我创立了一个 Github 仓库,把公布的文章依照分类收集起来了,感兴趣的敌人能够 Star 跟进:

https://github.com/arthinking…

关注我的博客 IT 宅(itzhai.com) 或者公众号Java 架构杂谈,及时获取最新的文章。我将继续更新后端相干技术,波及 JVM、Java 根底、架构设计、网络编程、数据结构、数据库、算法、并发编程、分布式系统等相干内容。


References

  • 谢希仁. 计算机网络(第 6 版). 电子工业出版社.
  • TCP/IP 详解 卷 1:协定(原书第 2 版). 机械工业出版社.
  • UNIX 网络编程 卷 1:套接字联网 API. 人民邮电出版社
  • HTTP 权威指南. 人民邮电出版社
  • HTTP/ 2 基础教程. 人民邮电出版社
  • 刘超. 趣谈网络协议. 极客工夫
  • 罗剑锋. 透视 HTTP 协定. 极客工夫

本文同步发表于我的博客 IT 宅(itzhai.com)公众号(Java 架构杂谈)

作者: arthinking | 公众号:Java 架构杂谈

博客链接: https://www.itzhai.com/articl…

版权申明: 版权归作者所有,未经许可不得转载,侵权必究!分割作者请加公众号。


  1. 两万字长文 50+ 张趣图带你领悟网络编程的内功心法 -TCP 特点. Retrieved from https://www.itzhai.com/network/comprehend-the-underlying-principles-of-network-programming.html#4-2-2%E3%80%81TCP%E7%89%B9%E7%82%B9 ↩
  2. 技术干货:HTTP/2 之服务器推送 (Server Push) 最佳实际. Retrieved from https://www.infoq.cn/article/qYdN85t4G4dL4vBAe3N2 ↩
退出移动版