HTTP 学习第2课之HTTP是什么

92 阅读4分钟

“你觉得 HTTP 是什么呢?”

可能我们随口就能说出来:“HTTP 就是超文本传输协议,也就是 HyperText Transfer Protocol。”

回答非常正确!恭喜你:能给出这个答案,就表明你具有至少 50%HTTP 相关的知识储备,应该算得上是“半个专家”了。。。。

如果换个场景,面试官问你这个问题呢?显然不是他想要的答案,可能过于简单了。

  • 你怎么理解 HTTP 字面上的“超文本”和“传输协议”的?
  • 能否谈一下你对 HTTP 的认识?越多越好。
  • HTTP 有什么特点?优点和缺点?
  • HTTP 下层都有哪些协议?是如何工作的?
  • .....

so,我觉得有必要深度地解答一下“HTTP“ 是什么?

HTTP 是什么

超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在[TCP]之上。分为三部分;

  • 超文本
  • 传输
  • 协议 WechatIMG40.png 首先,HTTP 是一个协议。不过,协议又是什么呢?

“协议”并不仅限于计算机世界,现实生活中也随处可见。例如,我们在刚毕业时会签一个“三方协议”,找房子时会签一个“租房协议”,公司入职时还可能会签一个“保密协议”,工作中使用的各种软件也都带着各自的“许可协议”。

1.协 肯定是双方或多方参与的,一个人也弄不成事 2.协议是对参与者的一种行为约定和规范,也就是“议”。

总结:HTTP 是一个用在计算机世界里的协议。它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范,以及相关的各种控制和错误处理方式。

接下来看 HTTP 第二部分:“传输”

计算机和网络世界里有数不清的各种角色:CPU、内存、总线、磁盘、操作系统、浏览器、网关、服务器……这些角色之间相互通信也必然会有各式各样、五花八门的协议,用处也各不相同,例如广播协议、寻址协议、路由协议、隧道协议、选举协议等等。 HTTP 是一个“传输协议”,所谓的“传输”(Transfer)其实很好理解,就是把一堆东西从 A 点搬到 B 点,或者从 B 点搬到 A 点,即“A<===>B”。

由此可看出 HTTP协议应该是一个“双向协议

有两个最基本的参与者 A 和 B,从 A 开始到 B 结束,数据在 A 和 B 之间双向而不是单向流动。通常我们把先发起传输动作的 A 叫做请求方,把后接到传输的 B 叫做应答方或者响应方。拿我们最常见的上网冲浪来举例子,浏览器就是请求方 A,网易、新浪这些网站就是应答方 B。双方约定用 HTTP 协议来通信,于是浏览器把一些数据发送给网站,网站再把一些数据发回给浏览器,最后展现在屏幕上,你就可以看到各种有意思的新闻、视频了。

总结:HTTP 是一个在计算机世界里专门用来在两点之间传输数据的约定和规范。

“超文本”

上面说了HTTP既然是一个“传输协议”,那传输的超文本到底是啥呢,

所谓“文本”(Text),就表示 HTTP 传输的不是 TCP/UDP 这些底层协议里被切分的杂乱无章的二进制包(datagram),而是完整的、有意义的数据,可以被浏览器、服务器这样的上层应用程序处理。

早期的互联网,“文本”只是简单的字符文字,但发展到现在,“文本”的涵义已经被大大地扩展了,图片、音频、视频、甚至是压缩包,在 HTTP 眼里都可以算做是“文本”。

对于“超文本”,我们最熟悉的就应该是 HTML 了,它本身只是纯文字文件,但内部用很多标签定义了对图片、音频、视频等的链接,再经过浏览器的解释,呈现在我们面前的就是一个含有多种视听信息的页面。

总结:

  1. HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范”。
  2. HTTP 是构建互联网的重要基础技术,它没有实体,依赖许多其他的技术来实现,但同时许多技术也都依赖于它。