俯视 HTTP 协议

生活中的各类电商系统,学校的教务系统,工作中的各种办公软件基本上都是 Web 网站。少部分的是桌面应用,而这一部分的桌面软件也都纷纷在往 Web 应用上面迁移。因为桌面软件还需要下载 APP 安装到本地电脑,而 Web 网站你只要打开浏览器就可以直接访问,在便利性方面 Web 网站是有巨大的优势。作为互联网的从业者,我们需要了解这个表现背后的原理,那就是 Http 协议,它帮助我们将远端服务器的数据信息传输到我们浏览器的客户端。本小节,将会从历史背景,实现原理,协议是什么,几个方面让你对 Http 有一个比较深刻的了解。

1. HTTP 的历史背景

一个东西的产生可能有偶然因素,但是事物的兴盛就必然有他客观价值的存在。HTTP(hypertext transport protocol)超文本传输协议也是如此,下面我们来介绍它诞生的背景。

1.1 WEB网络

WWW (World Wide Web),英文名 World 看出来这东西很宏大,顾名思义就是全世界都在一个网络里,因为它世界的距离被拉近。但是这家伙最早也是从单细胞慢慢演变而来的,它是诞生于科学家的物理实验室中用于档案的存储,后来慢慢演变成大学里知识交流的一个网络,再后来这个网络的规模越变越大,突破层级构架成了如今的互联网。

Web 网络方便了我们的信息传递,背后依托的就是 Http 这项协议。

www

1.2 HTTP 协议

Http 是一种协议,它制定了浏览器客户端和 Web 服务端信息传递的规则,所有的浏览器厂商和所有的 Web 后台服务都是遵从这个规则来实现信息的传递的。Web 服务的信息传递从最早期单一的文字,到后来有了图片,音频视频,而 HTTP 协议随着传递信息的变化也经历了以下几个版本的变化:

  • HTTP/0.9:于 1990 年问世,用于简单文字的交换;
  • HTTP/1.0:被正式列为 www 传输的标准,纳入 RFC1945;
  • HTTP/1.1:在 1.0 的基础上新增了连接方式的规约;
  • HTTP/2.0:随着网络的应用越来越广,内容也越来越丰富。HTTP2.0 在安全,性能,交互场景都有了很大的改进。

目前市场上主流的还是 HTTP/1.1 ,随便打开一个浏览器 F12 查看下网络,基本上都可以看到 版本:HTTP/1.1。但是 HTTP/2.0 作为下一代的网络协议,前景可期。因为我们现在的网络都在追求加速,在硬件不断叠加,程序不断优化,CDN资源加速,之后如果继续优化的话那就只有 HTTP 协议本身了。2.0 因为有了多路复用,协议压缩等功能,所以性能上面是要比 1.1 高出不少的,普及只是时间问题。

2. 实现-TCP/IP 协议

Http 和 TCP/IP 都是协议,它们的不同之处在于:HTTP 是浏览器和后台服务之间的语言,而 TCP/IP是电脑之间的语言(相同的语言才能互相理解双方要表达的意思)。Http 本身只是约定了传输的时候文字要是什么格式,具体文字如何转成物理的高低电平穿越电脑实现传输的过程它是不知道的。

所以它需要借助专业的人士 TCP/IP 来处理。TCP/IP 是专门解决主机之间信息传输的,它不局限于为 Http 服务,像发送邮件也有自己的邮件协议(SMTP),它的底层也需要借助 TCP/IP 来实现。(TCP/IP是整套完整的网络传输框架模型,HTTP 也是属于它里面的应用层)。

demo

3. 为什么要学习 HTTP 协议?

Http 协议是前后端 API 接口交互的桥梁,不管你是前端开发,移动端开发,后端开发,它都是你工作必不可少的部分。在如今的生产环境中,为了快速实现逻辑业务的开发,往往这部分是被框架封装得很完整了,初学者就更加容易忽视它,以至于遇到问题无从下手。

  • 为什么我资源更新了,界面还是旧的,可能是 Http 缓存了;
  • 请求的参数该放路径还是 Body 中;
  • 接口报错了,返回的状态码看不懂;
  • 接口文档如何编写才是规范的;
  • 让 Http 协议规范自己的软件开发;
  • 虽然 Http 工具封装得很好用,但我必须搞懂它,要做工具的主人而不是奴隶,必要的时候自己造工具。

4. 本课程的学习基础

本课程面向的是的入门小白,和初级开发人员。只要是计算机相关专业的即可,对于非计算机专业的学生,建议先去学习下计算机组成原理再来看该系列的文章会更容易吸收。

5. 小结

Http 并不单单应用在 Web 网站中,桌面软件/移动应用这些客户端要想与服务器交互数据,也同样可以借助 Http 协议。它是一种轻量级,跨语言,使用范围很广的传输协议。