前端工程师再进化: No.1 HTTP协议简史

Posted 小不正经

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端工程师再进化: No.1 HTTP协议简史相关的知识,希望对你有一定的参考价值。

前端工程师再进化系列旨在探究前端前端基础技术的原理,实现细节和关联知识。小不正经才疏学浅,难免会有谬误,欢迎留言指正。


HTTP 是超文本传输协议(HyperText Transfer Protocol)的缩写。HTTP最初目的是提供一种发布和接收html的方法。截止目前,HTTP有4个公认的版本, 分别是0.9, 1.0, 1.1,  2.0.

1989年3月,蒂姆·伯纳斯·李提出了互联网(WWW,又称万维网)的模型。1990年圣诞假期期间蒂姆·伯纳斯·李完成了互联网所需工具的开发,包括服务器,超文本传输协议和浏览器, 当然,这些工具没有当前互联网所使用的工具完善,但是确定了这些工具的基本模型。

这个只是简单实现了部分功能的HTTP协议版本后来被称为 HTTP 0.9.

请求很简单,包含请求方法和URI, 且请求方法只有GET:

GET /path/to/request

响应也很简单,直接返回响应实体, 如HTML文档。


1991年到1994年期间,HTML快速发展,1993年6月发布了HTML草案(HTML 1.0)。

1994年11月,Marc Andressen和Jim Clark成立了Mosaic Communication公司,当年12月他们公司发布了大名鼎鼎的网景浏览器1.0. 

1994到1995年期间, CompuServe, AOL, 和Prodigy 三家公司开始提供拨号互联网接入服务, 使越来越多的人开始接触到互联网。

应用的快速发展和需求的快速增长使人们越来越意识到HTTP 0.9的局限性。1994年,在瑞士日内瓦举行的万维网大会上,确立了两个工作组, W3C(World Wide Web Consortium)和HTTP-WG(HTTP Working Group), 分别去推进HTML和HTTP的发展。

1996年5月,经过工作组夜以继日的工作,HTTP 1.0终于发布。HTTP 1.0的诞生具有划时代的意义,HTTP 1.0确定了HTTP协议的基本结构。 后续的发展也不过是在其上做优化性能,扩充内容等工作。

HTTP 1.0中,请求部分起始行添加了协议版本,请求方法扩充了POSTHEAD, 增加了请求首部和请求实体。响应部分起始行有了协议版本,响应状态码和响应解释, 增加了响应首部。

请求格式如:

POST /path/to/submit HTTP/1.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
Accept: */*

I am abot, I need your response.

请求响应格式如:

HTTP/1.0 400 Bad Request
Content-Type: text/html; charset=UTF-8
Referrer-Policy: no-referrer
Content-Length: 1555
Date: Fri, 14 Sep 2018 13:02:27 GMT

<!DOCTYPE html>
<html lang=en>
  <meta charset=utf-8>
...

HTTP 1.0 参考: https://tools.ietf.org/html/rfc1945


1997年1月,HTTP 1.0才发布6个多月之后, HTTP 1.1发布,规范为RFC 2068 (https://tools.ietf.org/html/rfc2068). 

1999年6月,两年半之后,HTTP 1.1大量的改进和更新发布, 规范为RFC 2616(https://tools.ietf.org/html/rfc2616).

HTTP 1.1明确了很早期协议的歧义之处,扩充了请求方法,响应状态码和请求响应首部;优化了很多关键性能:如连接保持, 分片传输, 分段请求,缓存机制和编码传输等。

改进之后的HTTP 1.1已经是很完善的协议了,支持了互联网十多年的高速发展,可以说是对互联网,Web 2.0以及丰富的互联网应用具有成就之功。


随着越来越多的用户,设备和应用接入到互联网,HTTP 1.1的性能逐渐成为瓶颈, 越来越多人意识到需要新一代HTTP协议 。

2012年初,HTTP工作组宣布开始筹备新一代的HTTP协议——HTTP 2.

2012年7月,Google发布了SPDY协议,大大的提高了网络传输性能。该协议很快得到了包括Chrome, Firefox, Safari, IE, Opera在内的各大主流浏览器的支持。HTTP很快把SPDY作为HTTP 2的第一个草案。

2015年5月,经过三年多的筹备讨论,各方角力,HTTP 2终于发布, 规范为RFC 7540(https://tools.ietf.org/html/rfc7540). 

HTTP 2在性能上有很多改进,提出了很多创新性的解决方案, 如多路复用,分帧传输,首部压缩和服务端推送等。

可以断定的是,HTTP 2将会满足互联网未来数年甚至数十年的需求,短期内应该不会发布新的协议。HTTP 2是一个比较完善的协议,所以,HTTP工作组也宣布了:不会有HTTP 2.x 版本,下一个版本直接就是 HTTP 3了。


小不正经后续文章将会持续介绍HTTP协议的细节,原理,使用方法,欢迎大家持续关注。




以上是关于前端工程师再进化: No.1 HTTP协议简史的主要内容,如果未能解决你的问题,请参考以下文章

前端简史之纵横:Node东出

前端简史之纵横:Node东出

前端简史之纵横:Node东出

九千字图解:HTTP 协议演进简史

硬盘接口进化简史

http协议简史