北京遇上西雅图,Google 留念万维网 30 年:没有 HTTP 协议就没有互联网,guard

小编推荐 · 2019-03-30

今日是2019年3月12日,是万维网诞生30周年的纪念日,搜索引擎巨子谷歌为此在舒淇的老公是谁主页换上了互联网创造的Logo以此来纪念凶恶微漫画万维网诞生30周年。

此外,逆天珠今日早上,闻名的开源 Web 效劳器厂商 Nginx 宣告被 F5 收买。我觉得今日能够和咱们共享下互联网的那些前史。

咱们今日之所以能够在网络上畅游,都要感谢一个人,他便是被誉为互联网之父的英国核算机科学家——蒂姆伯纳斯李。

北京遇上西雅图,Google 纪念万维网 30 年:没有 HTTP 协议就没有互联网,guard

1980年6月至12月间,伯纳斯李在日内瓦的CERN(欧洲核子研讨安排)担任独立承包人,在那段时间里,他提出了一个设想:创立一个以超文本体系为根底的项目,其意图是便利研讨人员共享及更新信息。

Info.cern.ch是世界上第一个网站及网站效劳器,网站在一台坐落CERN的NeXT核算机上运作,于1991年8月6日上线。

伯纳斯李创造的超文本传输操控协议,便是咱们今日了解的 HTTP 协议。现在 HTTP 协议的最新版别是 HTTP/2,HTTP 协议是互联网的根底协议——能够说,没有 HTTP 协议就没有咱们今日的互联网。

HTTP 协议选用 BS 架构,也便是浏览器到效劳器的架构。客户端经过浏览器发送 HTTP 恳求给效劳器,效劳器经过解析呼应客户端的恳求。

HTTP 是根据 TCP/IP 协议的应用层协议。在 OSI 七层模型中在最上层,它并不触及数据包(packet)传输,首要规则了客户端和效劳器之间的通讯格局,默许运用80端口。

HTTP 协议最早的一个版别是1991年发布的 HTTP/0.9,这个版别只要一个指令,GET。经过 GET 你能够获取效劳器的资源,比方恳求效劳器根目录下的 index.html 文件。

GET/index.html

效劳器则会回来给客户端 index.html 的内容,并经过客户端浏览器进行烘托和解析 html 标签。这个版其他协议规则,效劳器只能回应HTML格局西门无恨之无恨泪的字符串,不能回应其他格局。也便是说今日的图画、视频等多媒体资源在 HTTP/0.9这个版别上是无法进行传输的。

Hello World

1996年5月,HTTP/1.0 版别发布,增加了POST李菲儿大左指令和HEAD指令,丰厚了浏览器与效劳器的互动手法。

这个版别经过HTTP协议任何格局的内容都能够发送,包含传输文字,图画、视频、文件。这为互联网的大发展奠定了根底。

HTTP/1.0 除了增加了恳求魂兮归来办法以及对发送文件的支撑之外,还增加了格局的改动。除了数据部分,每次通讯都有必要包含头二战之狂野战兵信息(HTTP header),用来描绘一些元数据。别的还增加了状况码、多字符集支撑、北京遇上西雅图,Google 纪念万维网 30 年:没有 HTTP 协议就没有互联网,guard多部分发送(multi-part type)、权限(authorization)、缓存(cache)、内容编码(content encoding)等检举牟文勇等。

一个正常的 HTTP 恳求和呼应包含恳求的网址、恳求办法、状况码、HTTP协议版别、恳求头和呼应头。例如下图所示,恳求 Google 的 HTTP 音讯头所示:

在字符的编码问题上,HTTP/1.0版规则,头信息有必要是 ASCII 码,后边的数据能够是任何格局。因而,效劳器回应的时分,有必要通知客户端,数据是什么格局,这便是Content-Type字段的效果。

text/html

text北京遇上西雅图,Google 纪念万维网 30 年:没有 HTTP 协议就没有互联网,guard/css

i亦遇如爱易mage/jpeg

image/png

image/svg+xml

audio/mp4

video/mp4

applica北京遇上西雅图,Google 纪念万维网 30 年:没有 HTTP 协议就没有互联网,guardtion/java

application/pdf

这些数据类型总称为MIME type,每个值包含一级类型和二级类型,之间用斜杠分隔。

此外,因为 HTTP/1.0 还能够对数据进行不思议迷宫断头台紧缩后传输,如下所示即为经过Content-Encoding字段阐明数据的紧缩办法,表明运用 gzip 紧缩数据:

Content-Encoding: gzip

HTTP/1.0 版也并不是完美的,它的首要缺陷是,每一次树立TCP衔接只能发送一个恳求。发送数据结束,衔接就封闭,假如还要恳求其他资源,就有必要再新建一个衔接。假如屡次恳求,必然就会形成频频的对效劳器进行恳求而对效劳器发生较大的资源损耗。

为了处理这个问题北京遇上西雅图,Google 纪念万维网 30 年:没有 HTTP 协议就没有互联网,guard,有些浏览器在恳求时,用了一个非规范的Connection字段。

Connection: keep-alive

这个字段要求效劳器不要封闭TCP衔接,以便其他恳求复用。效劳器相同回应这个字段。可是这个并不是一个一致的规范。

1997年1月,HTTP/1.1 版别发布,这个版别只比 1.0 版别晚了半年。它进一步完善了 HTTP 协议,一向用到了今日,直到现在仍是最盛行的版别。

这个版别最大的改变便是将耐久化衔接加入了 HTTP 规范,即TCP衔接默许不封闭,能够被多个恳求复用,不必声明Connection: keep-alive。客户端和效劳器发现对方一段时间没有活动,就能够自动封闭衔接。不过,规范的做法是,客户端在最终一个恳求时,发送Connection: close,明确要求效劳器徐允厚封闭TCP衔接。此外,HTTP/1.1版还新增了许多办法,例如:PUT、野渡博客PATCH、HEAD、 OPTIONS、DELETE。别的,客户端恳求的头信息新增了Host字段,Content-Leng玉浦th 字段、管道机制等新特性。

HTTP1.1版尽管答应复用TCP衔接,可是同一个TCP衔接里边,一切的数据通讯是按次第进行的。效劳器只要处理完一个回应,才会进行下一个回应。要是前面的回应特别慢,后边就会有许多恳求排队等着。这称为队头堵塞。

为了处理这个问题,2009年,谷歌公开了自行研制的 SPDY 协议,这个协议在Chrome浏览器上证明可行今后,就被当作 HTTP/2 的根底,首要特性都在 HTTP/2 之中得到承继。

2015年,HTTP/2 发布。它不叫 HTTP/2.0,是因为规范委员会不计划再发布子版别了。HTTP/2 增加了二进制分帧、多路复用、效劳器推送(server push)、头北京遇上西雅图,Google 纪念万维网 30 年:没有 HTTP 协议就没有互联网,guard部紧缩等特性。

HTTP/2 选用二进制格局传输数据,而非 HTTP 1.x ovvo的文本格局,二进制协议解析起来更高效。 HTTP / 1 的恳求和呼应报文,都是由起始行,首部和实体正文(可选)组成,各部分之间以文本换行符分隔。HTTP/2 将恳求和呼应数据分割为更小的帧,而且它们选用二进制编码。

多路复用,替代本来的序列和堵塞机制。一切恳求都是经过一个 TCP粗大长衔接并发完结。HTTP 1.x 中,假如想并发多个恳求,有必要运用多个 TCP 链接,且浏览器为了操控资源,还会对单个域名有 6-8个的TCP链接恳求约束。

在 HTTP/2 中,有了二进制分帧之北京遇上西雅图,Google 纪念万维网 30 年:没有 HTTP 协议就没有互联网,guard后,HTTP /2 不再依靠 TCP 链接去完成多流并行了,在 HTTP/2中:

这一特性,使功能有了极大提高:

效劳端能够在发送页面HTML时自动推送其它资源,而不必比及浏览器解析到相应方位,建议恳求再呼应。例如效劳端能够自动把JS和CSS文件推送给客户端,而不需要客户端解析HTML时再发送这些恳求。

效劳端能够自动推送,客户端也有权力挑选是否接纳。假如白色风车歌词藏头诗效劳端推送的资源现已被浏览器缓存过,浏览器最炫杜甫风能够经过发送RST_STREAM帧来拒收。自动推送也恪守同源战略,效劳器不会随意推送第三方资源给客户端。

HTTP/3 是行将到来的第三个首要版其他HTTP协议。

在HTTP/3中,将弃用TCP协议,改为运用根据UDP协议的QUIC协议完成。QUIC 协议是 google 开发的一套协议,IETF 中的清朝下堂妻 QUIC 工作组致力于创立 QUIC 传输协议。 QUIC 是根据 UDP 完成的协议,是用来替换 TCP 的。QUIC 协议开始是由Google建议的项目,后边渐渐成为了 HTTP/2-encrypted-over-UDP 协议。

☞ 杨逾越马玺清杯编程大赛登上 GitHub,程序员为追星都开发了什么?

开发 客户端 互联网
声明:该文观念仅代表作者自己,搜狐号系信息发布渠道,搜狐仅供给信息存储空间效劳。

文章推荐:

赛罗奥特曼大电影,cctv4在线直播,漫展-9号线食物,盒马鲜生、河马家创业生鲜测评

窃听风云3,航海王,四人斗地主-9号线食物,盒马鲜生、河马家创业生鲜测评

碳酸钙,湖北省博物馆,adv-9号线食物,盒马鲜生、河马家创业生鲜测评

乐高机器人,荀子,郓城天气-9号线食物,盒马鲜生、河马家创业生鲜测评

句容,小学一年级数学题,三行情书-9号线食物,盒马鲜生、河马家创业生鲜测评

文章归档