HTTP是HyperText Transfer Protocol的缩写,译为超文本传输协议。是一种应用于OSI七层模型中应用层的协议,是我们平常互联网网络通信传输的基础。它的作用就是规定了服务器和客户端之间的建立连接,请求数据,响应数据,关闭连接(我们常说的三次握手,四次挥手)。

建立连接阶段:进行三次握手:1.客户端向服务端发送连接请求,2.服务端回应客户端:ok,已经确认,3,客户端回应服务端,收到你的确认信息。

进行请求阶段:以下图为例,浏览器对于服务器的请求,浏览器会将我们对于服务器的请求封装成请求头和请求体。请求头包括浏览器的类型,请求的域名,ip地址,请求的方法类型等,请求体可以是参数形式,如 ?page=3&offset=3,也可以是post请求的哈希数据或者json。每个请求头用\r\n隔开,请求头请求体用\r\n\r\n隔开,这是HTTP规定好的格式。

服务器响应:服务器接收到客户端传来的请求头请求体后,分解进行回应,首先以状态码开头,经常见到的404以及302这样的信息,接着浏览器接收到html信息就渲染成了我们所见到的页面。

关闭阶段:四次挥手:客户端发送关闭连接请求,服务端回复:收到请求,准备关闭,服务端回复:可以断开了,客户端:收到,确认!

  HTTP/1.0 规定浏览器与服务器之保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不追踪每个浏览器也不记录每个浏览器的请求。因为TCP请求是无状态的,所以每次都需要完成三次握手四次挥手,数据量一多,就非常浪费时间,效率比较低。

  对于HTTP/1.0版本,1.1版本对这一点做了改进

  引入了管道机制:TCP连接建立后,不马上断开连接,而是过一会,如果没有收到客户端请求后,再断开连接。

  这样做的好处有两点:1.不需要多次的三次握手四次挥手,提高了效率,2.因为一个服务器是被多个客户端同时访问的,一些信息如果客户端强制结束可能会发到其他的客户端,造成错误,如果可以延时关闭,可以给服务器充分的时间确认连接状态以及发送关闭信号。

  HTTP2是HTTP/1.1的升级,客户端TCP连接只能一次一次的发送,为了提升效率,HTTP2引入了多路复用,就是可以客户端一次发送多个请求,服务端一起回复,提升了效率。但由于在信息的封装上还不够成熟,技术成本比较高,已受到攻击,目前普及度不高。

  HTTPS 是HyperText Transfer Protocol Secure缩写,相较于HTTP,突出了安全!因为在网络信息传输过程中服务端和客户端的信息都会被SSL,TSL加密,在传输的过程中,即便被截取了,别人也不知道你们的会话内容是什么,只有收发方才有对应的密钥去解开,再对内容进行回应。其中的原理就是:服务端和客户端都有两把钥匙:公钥和私钥,公钥用来加密数据,同时只能用自己的私钥去解开,这样及时公钥被截获,密文内容也破解不了。

私钥使用非对称的方式生成的,关于非对称加密有兴趣的老板可以自行搜索一下,实现的过程就是:

1.服务器发送公钥信息给服务器,2.这个公钥是经过第三方认证加密的有数字证书,无法造假的,3.浏览器接收到公钥,根据算法生成私钥,再把私钥加密返回给服务器,4服务器解析私钥,这样就有了共同的私钥了。目前大部分网站都是采用这种协议了,不过https每年的价格也是不菲呢,大企业的证书年费用上十万都是正常的。

http/1.0/1.1/2.0与https的比较的更多相关文章

  1. js正则表达式校验非负浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. [转]IIS6.0迁移至IIS7.0

    原文地址:http://www.splaybow.com/post/iis-6.0-7.0.html 公司的项目需要迁移到IIS7的目标机器中 在此做记录 原来server 2003系统 迁到2008 ...

  3. 编译可在Nexus5上运行的CyanogenMod13.0 ROM(基于Android6.0)

    编译可在Nexus5上运行的CyanogenMod13.0 ROM (基于Android6.0) 作者:寻禹@阿里聚安全 前言 下文中无特殊说明时CM代表CyanogenMod的缩写. 下文中说的“设 ...

  4. iis7.0上发布mvc4.0网站

    步骤如下: 1.右击需要发布的项目,在弹出的菜单中选择“发布...”选项 2.在“发布web”对话框中进行设置,配置文件名称默认为“配置文件1”可以修改为需要的名字,以便识别,也可以不改.发布方法选择 ...

  5. IIS6.0添加上.net4.0后,以前的.net系统出现“服务器应用程序不可用”的错误提示解决办法

    把VS2010开发的网站.net4.0部署到Windows Server 2003的服务器上去, Windows Server 2003操作系统自带的为IIS 6.0,IIS 6.0一般只支持.NET ...

  6. Swift 3.0 【Swift 3.0 相较于 Swift 2.2 的变化】

    一.编译器和语法变化 函数或方法参数 调用函数或方法时从第一个参数开始就必须指定参数名 在Swift的历史版本中出现过在调用函数时不需要指定任何函数参数(或者从第二个参数开始指定参数名),在调用方法时 ...

  7. 给定一个double类型的数组arr,其中的元素可正可负可0,返回子数组累乘的最大乘积。例如arr=[-2.5,4,0,3,0.5,8,-1],子数组[3,0.5,8]累乘可以获得最大的乘积12,所以返回12。

    分析,是一个dp的题目, 设f[i]表示以i为结尾的最大值,g[i]表示以i结尾的最小值,那么 f[i+1] = max{f[i]*arr[i+1], g[i]*arr[i+1],arr[i+1]} ...

  8. Elasticsearch5.0.1 + Kibana5.0.1 + IK 5.0.1安装记录

    最近工作需要,开始研究ES,当前ES的最新版本为5.0.1,从之前的2.x的版本号一下升级到5.x,主要是之前Elastic的产品版本号因为收购等原因很乱,ES 2.X版本的和Kibana 4.x版本 ...

  9. Oracle_RAC数据库GI的PSU升级(11.2.0.4.0到11.2.0.4.8)

    Oracle_RAC数据库GI的PSU升级(11.2.0.4.0到11.2.0.4.8) 本次演示为升级oracle rac数据库,用GI的psu升级,从11.2.0.4.0升级到11.2.0.4.8 ...

  10. elasticsearch5.0集群+kibana5.0+head插件插件的安装

    elasticsearch5.0集群+kibana5.0+head插件插件的安装 es集群的规划: 两台16核64G内存的服务器: yunva_etl_es1  ip:1.1.1.1 u04es01. ...

随机推荐

  1. Spring 极速集成注解 redis 实践

    Redis 做为基于内存的 Key-Value 数据库,用来做缓存服务器性价比相当高. 官方推出的面向 Java 的 Client Jedis,提供了很多接口和方法,可以让 Java 操作使用 Red ...

  2. 图像旋转与图像缩放及Matlab代码实现

    本周的作业是自己通过公式编写图像旋转与缩放的代码.今天先通过调用函数的方法来实现. 图像的旋转: A=imread('2.jpg'); J=imrotate(A, 30); subplot(1,2,1 ...

  3. vs2013突然打不开项目,项目全部不兼容

    转载:https://forum.cocos.com/t/vs2013/40931 转载:https://jingyan.baidu.com/article/cdddd41c7c6b5353cb00e ...

  4. JS高程12.2.3元素大小的学习笔记

    <JavaScript高级程序设计>中讲述了通过JS如何控制页面中元素的大小,其中涉及到三对属性:偏移量,客户区大小,滚动大小.以前自己经常看到这三对属性,但是具体不是很清楚,容易混淆.所 ...

  5. [java]第一个程序

    HelloWorld 主函数 学习一门语言第一部分就是学习主函数,Java的主函数是main函数有如下形式: public class HelloWorld{ public static void m ...

  6. 【.Net Core】Assets file project.assets.json not found. Run a NuGet package restore

    问题起因 添加 .net core的Project build失败. 提示以下error: Assets file project.assets.json not found. Run a NuGet ...

  7. WEB前端基础知识点

    因为要告知浏览器的解析器用什么文档标准解析这个文档,所以在文档的开头要写上文档类型声明,H5的文档类型声明要比H4文档类型声明简洁的多.因为H5不基于SGML(标准通用标记语言),所以不需要对DTD文 ...

  8. Elasticsearch Windows下安装及配置集群

    首先打开网址:https://www.elastic.co/cn/ 进入如下页面: 下载: 解压: 进入bin文件夹下,运行bat文件: 成功后打开浏览器输入地址: 安装head插件: 首先安装nod ...

  9. java.lang.ClassNotFoundException: javax.servlet.SessionCookieConfig

    使用 MockMvc 模拟进行单元测试时出现以下的错误,网上看到的资料应该是说Spring4.0需要servlet3.0的支持? 在pom.xml更改servlet的版本依赖后即可

  10. Data Block -- Uncompressed

    Overview of Data Blocks Oracle Database manages the logical storage space in the data files of a dat ...