带你一步步解析 HTTP( 十 )


应用广泛、环境成熟因为过于简单,普及,因此应用很广泛 。因为 HTTP 协议本身不属于一种语言,它并不限定某种编程语言或者操作系统,所以天然具有跨语言、跨平台的优越性 。而且,因为本身的简单特性很容易实现,所以几乎所有的编程语言都有 HTTP 调用库和外围的开发测试工具 。
随着移动互联网的发展,HTTP 的触角已经延伸到了世界的每一个角落,从简单的 Web 页面到复杂的 JSON、XML 数据,从台式机上的浏览器到手机上的各种 APP、新闻、论坛、购物、手机游戏,你很难找到一个没有使用 HTTP 的地方 。
无状态无状态其实既是优点又是缺点 。因为服务器没有记忆能力,所以就不需要额外的资源来记录状态信息,不仅实现上会简单一些,而且还能减轻服务器的负担,能够把更多的 CPU 和内存用来对外提供服务 。
HTTP 的缺点无状态既然服务器没有记忆能力,它就无法支持需要连续多个步骤的事务操作 。每次都得问一遍身份信息,不仅麻烦,而且还增加了不必要的数据传输量 。由此出现了 Cookie 技术 。
明文HTTP 协议里还有一把优缺点一体的双刃剑,就是明文传输 。明文意思就是协议里的报文(准确地说是 header 部分)不使用二进制数据,而是用简单可阅读的文本形式 。
对比 TCP、UDP 这样的二进制协议,它的优点显而易见,不需要借助任何外部工具,用浏览器、Wireshark 或者 tcpdump 抓包后,直接用肉眼就可以很容易地查看或者修改,为我们的开发调试工作带来极大的便利 。
当然缺点也是显而易见的,就是不安全,可以被监听和被窥探 。因为无法判断通信双方的身份,不能判断报文是否被更改过 。
性能HTTP 的性能不算差,但不完全适应现在的互联网,还有很大的提升空间 。
参考资料:
https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Technical_overview
《极客时间》- 透视 HTTP 协议
https://developer.mozilla.org/en-US/docs/Web/HTTP
https://baike.baidu.com/item/WEB服务器/8390210?fr=aladdin
https://baike.baidu.com/item/内容分发网络/4034265
https://baike.baidu.com/item/HTML/97049?fr=aladdin
https://www.jianshu.com/p/3dd8f1879acb
《计算机网络-自顶向下方法》
《图解 HTTP》
HTTP协议的内容协商
https://www.w3school.com.cn/tags/att_form_accept_charset.asp




推荐阅读