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

13 | HTTP有哪些特点?

支持国际化语言
支持身份认证
可分段获取数据
实体数据可缓存可压缩
协议不要求记录请求相关信息
每个请求互相独立
服务器被动回复请求
客户端主动发起请求
能够传输任意数据
通用功能更多
尽量保证数据送达
基于TCP/IP协议
逐渐增加特性
可任意添加头字段
HTTP协议简单灵活
其他特点
无状态
请求-应答通信模式
应用层协议
可靠传输
灵活可扩展
HTTP的特点

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

通过“基础篇”前几讲的学习,你应该已经知道了 HTTP 协议的基本知识,了解它的报文结构,请求头、响应头以及内部的请求方法、URI 和状态码等细节。
你会不会有种疑惑:“HTTP 协议好像也挺简单的啊,凭什么它就能统治互联网这么多年呢?”
所以接下来的这两讲,我会跟你聊聊 HTTP 协议的特点、优点和缺点。既要看到它好的一面,也要正视它不好的一面,只有全方位、多角度了解 HTTP,才能实现“扬长避短”,更好地利用 HTTP。
今天这节课主要说的是 HTTP 协议的特点,但不会讲它们的好坏,这些特点即有可能是优点,也有可能是缺点,你可以边听边思考。

灵活可扩展

首先, HTTP 协议是一个“灵活可扩展”的传输协议
HTTP 协议最初诞生的时候就比较简单,本着开放的精神只规定了报文的基本格式,比如用空格分隔单词,用换行分隔字段,“header+body”等,报文里的各个组成部分都没有做严格的语法语义限制,可以由开发者任意定制。
所以,HTTP 协议就随着互联网的发展一同成长起来了。在这个过程中,HTTP 协议逐渐增加了请求方法、版本号、状态码、头字段等特性。而 body 也不再限于文本形式的 TXT 或 HTML,而是能够传输图片、音频视频等任意数据,这些都是源于它的“灵活可扩展”的特点。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

HTTP协议是互联网上最为重要的协议之一,具有多个特点。首先,HTTP协议是灵活可扩展的传输协议,其报文结构和功能可以根据需求进行定制和扩展。其次,HTTP是基于可靠的TCP/IP协议,能够在一定程度上保证数据的可靠传输。此外,HTTP是一个应用层协议,相比其他应用层协议,如FTP、SSH等,功能更为通用,能够传输任意数据。HTTP采用请求-应答通信模式,客户端主动发起请求,服务器被动回复请求。最重要的是,HTTP是无状态的,每个请求都是互相独立、毫无关联的,协议不要求客户端或服务器记录请求相关的信息。除此之外,HTTP还具有其他特点,如传输的实体数据可缓存可压缩、可分段获取数据、支持身份认证、支持国际化语言等。这些特点使得HTTP协议在互联网中具有重要地位,并且能够适应不断变化的网络环境和需求。 HTTP协议的灵活可扩展性使其能够根据需求进行定制和扩展,这是其优点之一。同时,基于可靠的TCP/IP协议能够保证数据的可靠传输,这也是其优点之一。然而,HTTP协议的无状态特点可能会导致一些额外的处理和管理工作,这可以被视为其缺点之一。 对于不同的应用场合,不同的特点可能具有不同的重要性。然而,对于大多数用户来说,HTTP协议的灵活可扩展性和基于可靠的TCP/IP协议的可靠传输能力可能是最重要的特点,因为这些特点能够确保数据的安全传输和满足不同应用需求。 HTTP协议作为互联网中最为重要的协议之一,其特点的灵活性和可靠性使其能够适应不断变化的网络环境和需求,为用户提供了稳定可靠的数据传输服务。

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

全部留言(50)

  • 最新
  • 精选
  • 壹笙☞漂泊
    课后题: 1、我觉得所谓的优点和缺点都是要区别场景来看待的,比如,在一些长连接场景中,需要保存上下文状态,那么无状态这一点就成为缺点甚至是致命缺点了。但是在客户端-服务端通信中,如果场景不需要保存上下文信息,那么无状态就可以减少一些网络资源消耗,也就是优点了。 2、可靠传输对我比较重要,减少很多查错的工作。。。 总结: http特点: 灵活可扩展 可以扩展头字段实现功能 可靠传输 HTTP并不能100%保证数据一定能够发送到另一端,在网络繁忙、连接差等恶劣环境时,也有可能收发失败,可靠只是向使用者提供了一个承诺,会在下层用多种手段尽量保证数据的完整送达 应用层协议 请求-应答通信模式 客户端主动请求,服务端被动响应 无状态协议 状态:客户端或者服务器里保存的一些数据或者标志,记录了通信过程中的一些变化信息 每个请求都是互相独立,毫无关联的,两端都不会记录请求相关的信息

    作者回复: 一直这么认真学习,值得表扬!!

    2019-06-26
    61
  • 狼的诱惑
    老师好,有两点疑问 1、为什么说MQ的比HTTP是高可靠的 2、个人觉得http的无状态,完全符合可扩展,轻量级、易维护现代设计,属于优点,不算是缺点,为什么大家认为不支持有状态就算是缺点,如果http做成有状态,估计复杂度会非常高吧? 个人想法,还请老师指正

    作者回复: 1.mq的设计目的就是消息传输,保证不丢失,为此用了很多的手段,比如消息队列、路由、存储等等。而http的目的不在于此,它的可靠性基于tcp,而tcp不能保证消息100%发送。 2.无状态有的时候是优点有的时候是缺点,看应用场景,在需要扩展的时候无状态就是优点,在需要会话保持的时候就是缺点。 3.但无状态可以很容易变成有状态,而反过来就很难,这就体现了http的灵活性。

    2019-07-31
    43
  • Celine
    Http的缺点,无状态,在需要身份信息验证的时候就显示为缺点,用户登陆后每次请求都需要阐释一下身份,不能保存登陆成功的状态,不过现在可以在头字段里加入cookie或者token来解决这个问题;请求应答模式,导致服务器端只能被动的接收而不能主动推送,如果服务器资源状态变化的时候想要主动推送到客户端就需要借助其他协议来完成,比如we socket

    作者回复: 说的很好,最后应该是笔误,WebSocket。

    2020-03-27
    21
  • http无状态不是特别理解,状态的意思就是一个事物因为外界因素导致这个事物的形态,使用等发生改变,这个就是有状态的吧,http作为一个协议,本质不承载任何东西,只是一个数据的传输通道,即使传输通道里的数据有状态改变,也不能称为是http状态改变,因为理解为无状态,可以这样理解吗?

    作者回复: http协议里的“状态”是指没有规定通信双方需要记录通信过程的上下文信息,与日常生活的“状态”意思是不一样的。 每次http请求都是独立,无关的,不需要保留状态信息。

    2019-06-29
    2
    19
  • 1:就如同开头我讲的那样,你能说一下今天列出的这些 HTTP 的特点中哪些是优点,哪些是缺点吗? 灵活可扩展是优点,没有这一点,她不可能一统江湖,这也是她敢说“在坐的各位都是垃圾”的底气。 灵活可扩展是缺点,她引入了一定的复杂度,增加了一定的学习成本。 可靠传输协议是优点,保证了数据的可靠性。 可靠传输协议是缺点,必须先建连才行,效率估计不如UDP。 应用层协议是优点,靠近用户,对用户优化,方便使用。 应用层协议是缺点,越往上处理的事情会越多,通信效率会差一些。 请求应答模式是优点,符合人类的对话方式容易理解,一个请求得到响应在发生另外一个。 请求应答模式是缺点,我请求一个资源,发现不够再请求一次,你一次回给我俩,不用回两次这么简单的事就做不到。 无状态是优点,无状态意味着易扩展,也不需要保持状态信息,节省空间。 无状态是缺点,我想保持回话状态还必须自己去想办法。 好吧!😅我编不下去了,不过我觉得HTTP最大的优点就是灵活可扩展,我们自己设计程序也希望做到这样,不过真要如此,复杂度会马上上去,不过HTTP确做到了灵活可扩展但是复杂度却没有增加太多。这一点太厉害了。 2:不同的应用场合有不同的侧重方面,你觉得哪个特点对你来说是最重要的呢? 看应用场景吧!目前,可靠传输对我而言至关重要,效率可以放一放,安全稳定第一。

    作者回复: 1.说的很好,没有绝对的优点,也没有绝对的缺点。 2.http的可靠传输不能算是顶级的,但搭配上灵活就无敌了。

    2020-03-28
    17
  • 尔冬橙
    HTTP的长连接和无状态不矛盾么

    作者回复: 不矛盾,长连接只是在连接层面节约了成本,每次的请求还是没有携带任何客户端的信息,服务器仍然不记录状态,每次请求都是独立的。

    2019-12-14
    3
    14
  • 渴望做梦
    老师,这个顺序发包和顺序收包不是很理解,是是指第一个发送的请求一定会排在第一位处理吗?

    作者回复: 是的,http这种请求-应答模式就是这样,必须第一个有回应后才能处理下一个。

    2019-08-21
    2
    11
  • 彩色的沙漠
    请求应答模式也就注定了HTTP不适合用于IM场景?

    作者回复: 是的,所以就出现了WebSocket。

    2019-06-26
    4
    6
  • 哈德韦
    尽量送达不是UDP的特征吗?只送出去不确认的,而TCP是保证送达,收不到确认会重试的,如果实在不行就会报错。HTTP基于它,应该也是保证送达吧?

    作者回复: 可能是我说的不是太准确,引起误会了。tcp是保证送达的,用“尽量”也许和udp有点混淆了,抱歉。

    2020-10-07
    5
  • 有米
    即使是当红MQ也没人敢打包票100%不丢

    作者回复: 对,但可靠性99.9%和99.999%还是有差距的,所以需要根据具体场合选用恰当的产品。

    2020-05-13
    5
收起评论
显示
设置
留言
50
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部