一起了解http、https、http2.0相关概念

HTTP

我们知道技术一般源于人们的需求与愿望,HTTP也是这样产生的。人们想在互联网上分享信息,他们就得想出一个办法来传输这些信息。最后他们想出了一些交流信息的流程,列出了在互联网传输信息的规则,经过不断的修改、总结,这些东西形成了一个协议,他们把它命名为 HyperText Transfer Protocol,简称HTTP,翻译成中文是超文本传输协议。

HTTP规定了客户端和服务端之间的传输规则。


explain the protocol

为了解释得清楚些,我摘抄了维基百科中关于HTTP的描述:

超文本传输协议
超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。

HTTP的发展是万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)合作的结果,(他们)最终发布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定义了HTTP协议中现今广泛使用的一个版本——HTTP 1.1。

2014年12月互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis(httpbis)工作小组将HTTP/2标准提议递交至IESG进行讨论[1],于2015年2月17日被批准。[2] HTTP/2标准于2015年5月以RFC 7540正式发表,替换HTTP 1.1成为HTTP的实现标准。
协议概述
HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个“中间层”,比如代理服务器、网关或者隧道(tunnel)。

尽管TCP/IP协议是互联网上最流行的应用,HTTP协议中,并没有规定必须使用它或它支持的层。事实上,HTTP可以在任何互联网协议上,或其他网络上实现。HTTP假定其下层协议提供可靠的传输。因此,任何能够提供这种保证的协议都可以被其使用。因此也就是其在TCP/IP协议族使用TCP作为其传输层。

通常,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。

简单总结一下上面的解释,

  • HTTP是互联网上应用最为广泛的一种网络协议,设计最初的目的是为了提供一种发布和接收HTML页面的方法,万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)合作不断发展改进了HTTP,之后HTTP有了好几个版本。
  • HTTP是基于TCP的,由HTTP客户端发起一个请求,会创建一个到服务器指定端口(默认80端口)的TCP连接,HTTP服务器会在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态(如"HTTP/1.1 200 OK")以及返回的内容(如请求的文件、错误消息、或者其它信息)。

如果想对HTTP有详细一点的了解,推荐这里的一篇博客。

HTTP的版本

HTTP作为互联网中使用最广泛的网络协议,肯定是不断改进的结果。而改进的动力简单来说就是对传输速度的追求。

在不断的改进中,HTTP存在有以下几个版本:HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2。

同样我们看看维基百科的介绍:

0.9
已过时。只接受GET一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持POST方法,因此客户端无法向服务器传递太多信息。

HTTP/1.0
这是第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用,特别是在代理服务器中。

HTTP/1.1
持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式在同时发送多个请求,以便降低线路负载,提高传输速度。

HTTP/1.1相较于HTTP/1.0协议的区别主要体现在:

缓存处理
带宽优化及网络连接的使用
错误通知的管理
消息在网络中的发送
互联网地址的维护
安全性及完整性

HTTP/2
当前版本,于2015年5月作为互联网标准正式发布。

HTTP/0.9是HTTP的第一个版本,现在已经过时,为了改进协议,之后相继有了HTTP/1.0、HTTP/1.1。1.0和1.1并存了很长时间,HTTP/1.1是目前主流版本。2015年发布了HTTP/2.0,这个也是这两年讨论比较多的技术了,因为它相对于HTTP/1.x来说有非常大的进步,优化了HTTP/1.x很多问题,不过作为下一代的HTTP协议,需要很长一段的时间才会普及。

在HTTP/2.0出现之前,为了优化HTTP/1.x的各种问题,还出现了一种HTTP兼容协议,叫SPDY,由Google发起的,Chrome、Opera、Firefox以及Amazon Silk等浏览器都提供了支持。其实,http2.0也是以SPDY为原型进行讨论和标准化的。为了给http2.0让路,google已决定在2016年不再继续支持SPDY开发,但在http2.0出生之前,SPDY已经有了相当规模的应用,作为一个过渡方案恐怕在还将一段时间内继续存在。 关于http2.0以及SPDY更多的了解,可以参考这篇文章

HTTPS

超文本传输安全协议(英语:Hyper Text Transfer Protocol over Secure Socket Layer,缩写HTTPS。也被称为HTTP over TLS,HTTP over SSL或HTTP Secure)。

简单来说HTTPS就是安全增强版的HTTP,是HTTP协议与加密协议的结合,使HTTP的协议数据在传输过程中更加安全。因为原先互联网上使用的 HTTP(这里说的是HTTP/1.x,HTTP/2.0不会再用明文) 协议是明文的,存在很多缺点——比如传输内容会被偷窥(嗅探)和篡改。 所以网景公司Netscape)在1994年创建了HTTPS。

上面说到的加密协议叫SSL,是英文Secure Sockets Layer的缩写,中文叫“安全套接层”,也是由网景公司设计的,所以上面说HTTPS也被称为HTTP over SSL。

到了1999年,SSL 因为应用广泛,已经成为互联网上的事实标准。IETF 就把 SSL 标准化了。标准化之后的名称改为 TLS(是“Transport Layer Security”的缩写),中文叫做“传输层安全协议”。很多相关的文章都把这两者并列称呼(SSL/TLS),因为这两者可以视作同一个东西的不同阶段。

HTTPS将HTTP协议数据包放到SSL/TSL层加密后,在TCP/IP层组成IP数据报去传输,以此保证传输数据的安全;而对于接收端,在SSL/TSL将接收的数据包解密之后,将数据传给HTTP协议层,就是普通的HTTP数据。

imgr.png

接下来了解下SSL/TLS协议。首先了解下对称加密和非对称加密,对称加密就是将你要传输的内容用一个密钥加密起来,发送方和都要知道这个密钥,用它来加密解密。但使用对称加密需要给对方传这个密钥,在互联网上传输这个密钥很容易被截取。所以就有了非对称加密,这种加密指的是可以生成一对密钥 (k1, k2)。凡是 k1 加密的数据,k1 自身不能解密,而需要 k2 才能解密;凡是 k2 加密的数据,k2 不能解密,需要 k1 才能解密。

SSL/TLS协议的做法是把这两者结合:

  1. 假如A与B要传输信息,那么A可以使用非对称加密生成一对密钥 (k1, k2),然后将k1发给B, k2自己保留;
  2. B收到k1后先自己使用对称加密生成一个key, 然后使用k1将这个key加密传给A;
  3. A收到密文后使用k2将其解密,至此,A和B已经完成了key的传输,之后他们就可以使用这个key按对称加密的方式传输信息。

因为在传输过程中只暴露了k1,要解密需要知道k2,所以就算有人窃取到传输的信息,也无法解密。

但SSL/TLS协议不仅仅是做了这些,因为如果这样的方式还是有方法可以破解的,有一种方法是“中间人攻击”,它分别欺骗A和B,让对方误以为它是A(或者B),这样它就可以自己定义一个key,然后欺骗A和B,让他们误以为已经完成了key的传输,然后使用这个key来传输信息。为了防止这种攻击,又引入了一个叫 CA的东西。CA(Certificate Authority) 是一些非常权威的专门用于认证一个网站合法性的组织。这样A和B在传输密钥的时候就可以通过CA来判断对方是否合法,这样“中间人攻击”也就无法实施。

HTTPS把对称加密、非对称加密和CA结合起来以保证数据安全。如果想对对称加密和非对称加密以及SSL/TLS要更多了解可以参考下面两篇文章:

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

推荐阅读更多精彩内容