http到底有什么魔性,备受青睐

[图片上传失败...(image-6f0b9a-1618307825179)]

原文始发于:https://mp.weixin.qq.com/s/5Y8XD_T4F0U7SsDahc6nww

http是什么

http是超文本传输协议,也就是Hyper Text Transfer Protocol,是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。

先看一下http名字:超文本传输协议。顾名思义,它可以拆成三部分,分别为:超文本、传输、协议。那我们接下来去聊一聊每部分的含义。

[图片上传失败...(image-c4b4a3-1618307825179)]

首先http是一个协议,那么协议到底是什么?

其实"协议"并不仅仅局限在计算机世界里,在现实生活中"协议"也是无处不在的,比如租房时会签订一个租房合同、刚毕业的大学生会和公司签订一个三方协议、员工入职时会签订一个保密协议等等,协议渗透到生活的方方面面。

之所以出现"协议",也是对参与者的一种行为约定和规范。俗话说:"没有规矩,不成方圆",也体现出了协议的重要性。

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

协议聊完了,那接下里看看http第二组成部分:传输

所谓的传输,就是把一大推东西从A点搬到B点,或者从B点搬到A点,即"A<==>B"。

就拿网络冲浪举例子吧,迈莫在手机上浏览公众号<<迈莫coding>>,发现一篇文章<<http到底是有什么魔性,备受青睐>>对自己帮助更大,随手点了个赞。

拿点赞这一操作来说,客户端需要将点赞人的ID、文章ID等必备数据给到服务器,服务器拿到这些数据去更新数据库,更新完成之后,将现有的点赞数通知客户端,客户端拿到服务器发送过来的数据后,将点赞数更新。

说到这里,你也差不多理解了http的第二层的含义了吧。

说完"协议"和"传输",现在我们终于到了http的第三部分:超文本

既然http是"传输协议",那么它传输的"超文本"到底是什么?它为什么是超文本而不是文本?超文本和文本区别是什么?接下来,我们慢慢聊。

先说文本是什么。文本表示http传输的是完整的、有意义的数据,可以被浏览器、服务器这些上层应用程序处理。不是tcp/udp这些底层协议里被切分的杂乱无章的二进制包。

超文本就是"超越了普通文本的文本",不再局限于简单的文字,而是文字、图片、音频和视频等的混合体,最关键的是“超链接”,能够从一个"超文本"跳跃到另一个"超文本",形成复杂的非线性、网状的机构关系。

到这里,我们详细解释了http是超文本传输协议,最后用一句话来概括:http是一个计算机世界里专门在两点之间传输文字、图片、音频和视频等超文本数据的约定和规范。

http特点

上述聊完了http的含义,接下来一起看看http为什么这么备受青睐,他到底有什么魔性,让互联网人无法自拔。

我用一张图来简单概括一下http的特点,然后再分开细聊。先有整体思想,然后细看每个特点。

[图片上传失败...(image-bfc80a-1618307825179)]

- 简单快速

客户端访问服务端时,只需传送请求方法和路径。请求方法常用的有 GET、HEAD、POST 等等。每种方法规定了客户与服务器联系的类型不同。由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。

- 灵活可扩展

在使用http数据传输过程中,请求主体body 也不再限于文本形式的 TXT 或HTML,而是能够传输图片、音频视频等任意数据。也可以在请求头header 中添加一些特性,比如请求方法、版本号、状态码段等。

- 可靠性传输

http是基于tcp/ip协议的,而由于tcp是可靠性传输协议,所以 HTTP 自然也就继承了这个特性,能够在请求方和应答方之间“可靠”地传输数据。

不过我们必须正确地理解“可靠”的含义,HTTP 并不能 100% 保证数据一定能够发送到
另一端,在网络繁忙、连接质量差等恶劣的环境下,也有可能收发失败。“可靠”只是向使用者提供了一个“承诺”,会在下层用多种手段“尽量”保证数据的完整送达。

- 无状态

HTTP 协议是无状态协议。无状态,是指协议对于事务处理没有记忆能力。无状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

我们可以再对比一下 UDP 协议,不过它是无连接也无状态的,顺序发包乱序收包,数据包发出去后就不管了,收到后也不会顺序整理。而 HTTP 是有连接无状态,顺序发包顺序收包,按照收发的顺序管理报文。

http 1.0/1.1/2.x 版本

http1.0 比较 http1.1

- 长连接

处理在一个 TCP 连接上可以传送多个 HTTP 请求和响应,减少了建立和关闭连接的消耗和延迟。在 HTTP1.1中 默认开启Connection:keep-alive ,一定程度上弥补了 HTTP1.0 每次请求都要创建连接的缺点。

- 请求流水线Pipelining

HTTP1.1 还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。

http1.x 比较 http2.x

- 多路复用机制

http2.0 采用多路复用技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。

[图片上传失败...(image-8c60ff-1618307825179)]

- 头部数据压缩

在HTTP1.1中,HTTP请求和响应都是由状态行、请求/响应头部、消息主体三部分组成。一般而言,消息主体都会经过gzip压缩,或者本身传输的就是压缩过后的二进制文件,但状态行和头部却没有经过任何压缩,直接以纯文本传输。随着Web功能越来越复杂,每个页面产生的请求数也越来越多,导致消耗在头部的流量越来越多,尤其是每次都要传输UserAgent、Cookie这类不会频繁变动的内容,完全是一种浪费。

而且并发请求的数量比HTTP1.1大了好几个数量级。HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。

为此,将请求头部进行微压缩,可以让那些请求秩序一个来回搞定,大大节约了时间和资源的浪费。

- 采用二进制格式

比起文本协议,二进制解析起来更加高效,"线上"更紧凑,更重要的是错误更少。

- 服务器推送

服务端推送是一种在客户端请求之前发送数据的机制。网页使用了许多资源:HTML、样式表、脚本、图片等等。在HTTP1.1中这些资源每一个都必须明确地请求。这是一个很慢的过程。浏览器从获取HTML开始,然后在它解析和评估页面的时候,增量地获取更多的资源。因为服务器必须等待浏览器做每一个请求,网络经常是空闲的和未充分使用的。

为了改善延迟,HTTP2.0引入了server push,它允许服务端推送资源给浏览器,在浏览器明确地请求之前,免得客户端再次创建连接发送请求到服务器端获取。这样客户端可以直接从本地加载这些资源,不用再通过网络。

[图片上传失败...(image-340d72-1618307825179)]

到这里,http的概念、特点、版本差异及其特点也就告一段落了,今天就到这里。

咱们下期再见~~~

文章也会持续更新,可以微信搜索「 迈莫coding 」第一时间阅读。每天分享优质文章、大厂经验、大厂面经,助力面试,是每个程序员值得关注的平台。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容