透视 HTTP 协议
罗剑锋(Chrono)
前奇虎 360 技术专家,Nginx/OpenResty 开源项目贡献者
63942 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
开篇词 (1讲)
透视 HTTP 协议
15
15
1.0x
00:00/00:00
登录|注册

02 | HTTP是什么?HTTP又不是什么?

超文本
文本
中间人
双向
行为约定和规范
参与者
孤立的协议
HTML
编程语言
互联网
实体
超文本
传输
协议
不是什么
什么
HTTP

该思维导图由 AI 生成,仅供参考

首先我来问出这个问题:“你觉得 HTTP 是什么呢?”
你可能会不假思索、脱口而出:“HTTP 就是超文本传输协议,也就是 HyperText Transfer Protocol。”
回答非常正确!我必须由衷地恭喜你:能给出这个答案,就表明你具有至少 50%HTTP 相关的知识储备,应该算得上是“半个专家”了。
不过让我们换个对话场景,假设不是我,而是由一位面试官问出刚才的问题呢?
显然,这个答案有点过于简单了,不能让他满意,他肯定会再追问你一些问题:
你是怎么理解 HTTP 字面上的“超文本”和“传输协议”的?
能否谈一下你对 HTTP 的认识?越多越好。
HTTP 有什么特点?有什么优点和缺点?
HTTP 下层都有哪些协议?是如何工作的?
……
几乎所有面试时问到的 HTTP 相关问题,都可以从这个最简单的“HTTP 是什么?”引出来。
所以,今天的话题就从这里开始,深度地解答一下“HTTP 是什么?”,以及延伸出来的第二个问题“HTTP 不是什么?

HTTP 是什么

咱们中国有个成语“人如其名”,意思是一个人的性格和特点是与他的名字相符的。
先看一下 HTTP 的名字:“超文本传输协议”,它可以拆成三个部分,分别是:“超文本”“传输”和“协议”。我们从后往前来逐个解析,理解了这三个词,我们也就明白了什么是 HTTP。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

HTTP是一种用于在计算机世界中传输超文本数据的协议。本文从HTTP的名字出发,解释了“超文本”、“传输”和“协议”三个关键词的含义。HTTP作为一种协议,规定了计算机之间交流通信的规范和相关的控制方式。它是一种传输协议,用于在两点之间传输数据,并允许中间有“中转”或“接力”,以优化传输过程。HTTP传输的是超文本,即文字、图片、音频、视频等的混合体,含有超链接,能够形成复杂的非线性结构关系。此外,HTTP并非独立存在,而是与其他技术相互依赖,构成了一个协议网。综合而言,HTTP可以被定义为“与HTTP协议相关的所有应用层技术的总和”。文章还提出了一些“HTTP不是什么”的观点,例如HTTP不是互联网、不是编程语言、不是HTML等。通过对HTTP名字中的三个部分的解释,读者能够深入理解HTTP的含义和特点。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《透视 HTTP 协议》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(120)

  • 最新
  • 精选
  • 壹笙☞漂泊
    问题一: 我觉得这种说法是错误的。 理由:HTTP是在计算机世界里,用于两点之间之间传输超文本的协议。这两点并不限定于是服务器还是浏览器。可以是从浏览器到服务器,也可以从服务器到服务器,也可以是浏览器到浏览器。并不能描述成从服务器到浏览器。 问题二: HTTP不是软件、不是网址(暂时想到的比较少) 总结: 协议:HTTP是一个用在计算机世界里的协议。它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范,以及相关的各种控制和错误处理方式 传输:HTTP是一个在计算机世界里专门用来在两点之间传输数据的约定和规范 1、HTTP协议是一个“双向协议” 2、不限定两个角色,允许有中转或接力A<=>X<=>Y<=>Z<=>B 文本:完整的有意义的数据,可以被上层应用程序处理 包括但不限于 文字、图片、音频、压缩包 超文本:超越了普通文本的文本。是文字、图片、音频和视频等的混合体。最关键的是含有超链接。能从一个超文本跳跃到另一个超文本。形成复杂的非线性、网状的结构关系。 HTTP是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。 HTTP不是互联网、不是编程语言、不是HTML,不是一个孤立的协议 HTTP通常跑在TCP/IP协议栈之上,依靠IP实现寻址和路由、TCP协议实现可靠数据传输、DNS协议实现域名查找、SSL/TLS协议实现安全通信。此外,还有一些协议依赖于HTTP,例如WebSocket、HTTPDNS等。这些协议相互交织,构成了一个协议网,而HTTP则处于中心地位。

    作者回复: 总结的很好,也很早啊。 指出一点误解:两个浏览器不能通信。服务器可以当客户端,但浏览器只是客户端。

    2019-05-31
    9
    127
  • 团结屯儿王二狗
    所谓的专家是用大家能听懂的语言,把复杂的知识讲明白。看的出来峰哥简单的背后是巨大的知识储备,感觉很用心,不错。期待后面文章能够让大家循序渐进、由浅入深,已关注,哈哈哈

    作者回复: 是啊,讲清楚讲明白太不容易了。

    2019-06-04
    62
  • 小米
    这是我看过的讲HTTP最通俗易懂的文章,忍不住要点赞!

    作者回复: 非常感谢。

    2019-05-31
    44
  • A-Lang
    这个课程感觉很适合基础的同学学习!不知道后面老师会不会逐渐深入讲解一些深层次的东西

    作者回复: 讲深了当然可以,但如果上来就是RFC估计会“吓跑”很多人,所以还是循序渐进比较好。 后面的进阶、安全、飞翔都有比较深的干货,有具体的需求也可以提,如果感兴趣的人多就多加点料。

    2019-05-31
    31
  • xing.org1^
    老师您好,请问小结第二条,说http是在两点之间进行传输数据。我的疑惑是:http不是协议吗?我就按照老师的比喻把他理解为“协议”、“合同”了,如果就是纸上的约定,只是一个规范的话,http怎么做传输数据的事情呢?另外http又是怎么做到的呢? 我的网络知识真的是小白,问的很幼稚还请见谅:)

    作者回复: 你理解的很对,既然是约定,只要大家都遵守,那么协议就生效了。 就像红绿灯,它只是有颜色转换,怎么就能管理交通呢,你可以对比理解一下。 计算机依据http的规范去做,发请求收响应,就实现了传输数据。如果不按照http规范,就不能完成通信。

    2019-06-07
    6
    22
  • 恩佐
    老师你的知识导图里有错误 错误在HHTTP/2里的gRPC 您写的是gRFC

    作者回复: 感谢指正,人老了,手抖了,笑。

    2019-06-18
    2
    19
  • XThundering
    有个小问题,为什么文章说HTTP通常跑在 TCP/IP协议栈之上,请问还有其它协议栈吗?

    作者回复: 有的,比如在UNIX上可以用Domain Socket,还有SSL/TLS。

    2019-05-31
    2
    10
  • 不靠谱~
    1 错误的说法,Http可以在任意两点间进行传输。只是从服务器传输到浏览器这种形式比较常见。 2 http不是一种服务,不是一种语言,不是一种网络。只是一种协议,一种约定。 感谢老师分享

    作者回复: 对。

    2019-05-31
    9
  • 欢乐的小马驹
    我定了快二十个专栏。这是唯一一个对所有人回复的专栏 👍

    作者回复: 呵呵,感谢夸奖。

    2020-02-18
    8
  • tokamak
    老师你好,我想用Linux C++写一个HTTP Client,但有个问题:当我用socket套接字接收HTTP 响应报文时,会调用recv(int sockfd, void *buf, size_t len, int flags);,这里的len填多少合适呢?开源代码里有填1个字节的,也有填4096个字节的,你怎么看这个问题?

    作者回复: len参数是buf的长度,你开了多少就填多少,实际接收到的数据长度在函数返回值里。 调用示例可以参考Nginx源码的ngx_recv.c。

    2019-05-31
    7
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部