一、HTTP

HTTP(超文本传输协议,HyperText Transfer Protocol)是应用层的协议,目前在互联网中应用广泛。

它被设计用于Web浏览器和Web服务器之间的通信,但它也可以用于其他目的。 HTTP遵循经典的客户端-服务端模型
,客户端打开一个连接以发出请求,然后等待它收到服务器端响应。 HTTP是
无状态协议,意味着服务器不会在两个请求之间保留任何数据(状态)。

二、HTTP1.0 ——构建可扩展性

HTTP原有的应用非常局限,浏览器和服务器迅速扩展使其用途更广:

  • 版本信息现在会随着每个请求发送(HTTP1.0 被追加到GET行)

  • 状态代码行也会在响应开始时发送,允许浏览器本身了解请求的成功或失败,并相应地调整其行为(如以特定方式更新或使用本地缓存)

  • 引入了HTTP头的概念,无论是对于请求还是响应,允许传输元数据,并使协议非常灵活和可扩展。

  • 在新的HTTP头的帮助下,增加了传输除纯文本HTML文件外的其他类型文档的能力。(感谢 Content-Type头)。

同时还开始支持一种被称为keep-alive连接的早期实验性持久连接,下图显示了keep-alive连接的一些性能优点,图中将在串行连接上实现4个HTTP事务的时间线与在一条持久连接上实现同样事务所需要的时间线进行了比较。由于去除了进行连接和关闭连接的开销,所以时间有所缩短。

必须发送一个connection:Keep-Alive请求首部来激活keep-alive连接

三、HTTP1.1 ——标准化的协议

HTTP/1.0的多种不同的实现运用起来有些混乱,HTTP1.1是第一个标准化版本,重点关注的是校正HTTP设计中的结构性缺陷:

  • 连接可以重复使用,节省了多次打开它的时间,以显示嵌入到单个原始文档中的资源。

  • 增加流水线操作,允许在第一个应答被完全发送之前发送第二个请求,以降低通信的延迟。

  • 支持响应分块。

  • 引入额外的缓存控制机制。

  • 引入内容协商,包括语言,编码,或类型,并允许客户端和服务器约定以最适当的内容进行交换。

  • 感谢 Host 头,能够使不同的域名配置在同一个IP地址的服务器。

  • 安全性得到了提高

在http1.1中,client和server都是默认对方支持长链接的, 如果不希望使用长链接,则需要在header中指明connection:close;

四、HTTP2.0——为了更优异的表现

HTTP/2在HTTP/1.1有几处基本的不同:

  • HTTP2是二进制协议而不是文本协议。不再可读和无障碍的手动创建,改善的优化技术现在可被实施。
  • 这是一个复用协议。并行的请求能在同一个链接中处理,移除了HTTP/1.x中顺序和阻塞的约束。
  • 压缩了headers。因为headers在一系列请求中常常是相似的,其移除了重复和传输重复数据的成本。
  • 其允许服务器在客户端缓存中填充数据,通过一个叫服务器推送的机制来提前请求。

五、HTTPS

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure
Sockets
Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。现在的HTTPS都是用的TLS协议,但是由于SSL出现的时间比较早,并且依旧被现在浏览器所支持,因此SSL依然是HTTPS的代名词。

HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输的协议,TLS/SSL中使用了非对称加密,对称加密以及HASH算法。

HTTP、HTTP1.0、HTTP1.1、HTTP2.0、HTTPS的更多相关文章

  1. HTTP/1.0和HTTP/1.1 http2.0的区别,HTTP怎么处理长连接(阿里)

    HTTP1.0 HTTP 1.1主要区别 长连接 HTTP 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而HTTP1.1默认支持长连接. HTTP是基于TCP/IP协议的,创 ...

  2. HTTP1.0、HTTP1.1 和 HTTP2.0 的区别

    一.HTTP的历史 早在 HTTP 建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器.也是说对于前端来说,我们所写的HTML页面将要放在我们的 web 服务器上 ...

  3. http1.0 、http1.1和http2.0的区别

    一.HTTP1.0 HTTP 1.1主要区别       1.1 长链接             HTTP 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而HTTP1.1默认支 ...

  4. 杂谈:HTTP1.1 与 HTTP2.0 知多少?

    HTTP是应用层协议,是基于TCP底层协议而来. TCP的机制限定,每建立一个连接需要3次握手,断开连接则需要4次挥手. HTTP协议采用"请求-应答"模式,HTTP1.0下,HT ...

  5. http1.1与http2.0

    简介 http1.0: 1.0版本中每个TCP连接只能发送一个请求,数据发送完毕连接就关闭,如果还要请求其他资源,就必须重新建立TCP连接.(TCP为了保证正确性和可靠性需要客户端和服务器三次握手和四 ...

  6. http2.0与http1.X的区别

    此文只是方便重看,原文在:http://www.mamicode.com/info-detail-1199706.html 1.1 HTTP应用场景 http诞生之初主要是应用于web端内容获取,那时 ...

  7. http2.0

    HTTP2.0性能增强的核心:二进制分帧 HTTP 2.0最大的特点: 不会改动HTTP 的语义,HTTP 方法.状态码.URI 及首部字段,等等这些核心概念上一如往常,却能致力于突破上一代标准的性能 ...

  8. HTTP2.0和QUIC

    最近看到腾讯云支持QUIC的文章,突然意识到还没有好好认识HTTP2.QUIC,而要认识HTTP2,就需要从HTTP1.0开始讲起,才能清楚HTTP的发展历程. HTTP1.x HTTP(HyperT ...

  9. HTTP2.0 简明笔记

    前言 RFC2616发布以来,一直是互联网发展的基石.HTTP协议也成为了可以在任何领域使用的核心协议,基于这个协议人们设计和部署了越来越多的应用.HTTP的简单本质是其快速发展的关键,但随着越来越多 ...

  10. HTTP2.0简明笔记

    版权声明:本文由史燕飞原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/82 来源:腾云阁https://www.qcloud ...

随机推荐

  1. poj3264 Balanced Lineup(树状数组)

    题目传送门 Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 64655   Accepted: ...

  2. mapreduce实验

    代码: public class WordCount { public static void main(String[] args) throws IOException, ClassNotFoun ...

  3. c# 微服务Ocelot网关服务发现

    前面提到微服务方案,介绍了该东西,推荐一篇介绍博文https://www.cnblogs.com/jesse2013/p/net-core-apigateway-ocelot-docs.html 我要 ...

  4. WPFの触发器详解

    例子1 简单触发器Triggers——满足简答的条件,触发 <Window x:Class="Styles.SimpleTriggers" xmlns="http: ...

  5. 如何判断一个List集合中是否有空值

    list.Any(v => string.IsNullOrWhiteSpace(v))

  6. 【记录】spring boot 整合mybatis 实体类返回日期格式化

    1:首先将返回的实体类的时间由Date类型 换成String类型 2:将mapper.xml里的created_time 不设置类型,并将查询字段时间格式化,注意此次查询需要使用别名 不然返回查不到此 ...

  7. 2018-5-26-Latex-去掉行号

    title author date CreateTime categories Latex 去掉行号 lindexi 2018-05-26 10:32:25 +0800 2018-2-13 17:23 ...

  8. Docker容器网络前提提要

    docker exec -it kvstor1 /bin/sh ##[进入一个redis容器] docker exec -it web1 /bin/sh ##[进入一个nginx容器] ###dock ...

  9. tensorflow基础重新巩固

    tensorflow框架整体结构 用张量tensor表示数据:计算图graph表示任务:在会话session中执行context: 通过变量维护状态:通过feed和fetch可以任意的操作(arbit ...

  10. Android---OS

    一.概述 基于Linux的OS,内置JVM 二.发展史 二.系统架构