iOS面试

HTTPS和HTTP的区别, HTTP2.0、1.1和1.0的区

2019-03-12  本文已影响0人  广告位招租

HTTPS的工作原理

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

1.浏览器将自己支持的一套加密规则发送给网站。

2.网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。

3.浏览器获得网站证书之后浏览器要做以下工作:

a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
b) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。
c) 使用约定好的HASH算法计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。

4.网站接收浏览器发来的数据之后要做以下的操作:

a) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
b) 使用密码加密一段握手消息,发送给浏览器。

  1. 浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。

这里浏览器与网站互相发送加密的握手消息并验证,目的是为了保证双方都获得了一致的密码,并且可以正常的加密解密数据,为后续真正数据的传输做一次测试。

HTTPS和HTTP的区别

HTTP2和HTTP1的区别

HTTP1.1和HTTP1.0的区别

什么是keep-alive模式 (持久连接,连接重用)
keep-alive使客户端到服务端的连接持久有效,当出现对服务器的后继请求时,keep-alive功能避免了建立或者重新连接
不需要重新建立tcp的三次握手,就是说不释放连接

http1.1默认启用

HTTP结构

HTTP请求报文和响应报文都由四部分组成

一个完整的请求报文结构


image.png

在浏览器中的请求报文


image.png

常用方法

  1. GET是最常用的方法,通常用于请求服务器发送某个资源。
  2. HEAD与GET类似,但服务器在响应中只返回首部,不返回实体的主体部分
  3. PUT让服务器用请求的主体部分来创建一个由所请求的URL命名的新文档,或者,如果那个URL已经存在的话,就用这个主体替代它
  4. POST起初是用来向服务器输入数据的。实际上,通常会用它来支持HTML的表单。表单中填好的数据通常会被送给服务器,然后由服务器将其发送到要去的地方。
  5. TRACE会在目的服务器端发起一个环回诊断,最后一站的服务器会弹回一个TRACE响应并在响应主体中携带它收到的原始请求报文。TRACE方法主要用于诊断,用于验证请求是否如愿穿过了请求/响应链。
  6. OPTIONS方法请求web服务器告知其支持的各种功能。可以查询服务器支持哪些方法或者对某些特殊资源支持哪些方法。
  7. DELETE请求服务器删除请求URL指定的资源

请求报头举例

请求报头 内容
Accept 客户端可识别的内容类型列表,用于指定客户端接收那些类型的信息
Cache-control 用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制)
Host 请求主机名
User-agent 发送请求的浏览器类型、操作系统等信息
Accenp-Language 表示浏览器所支持的语言类型

一个完整的响应报文结构

image.png

在浏览器中的响应报文


image.png

响应报头举例

响应报头 内容
Cache-Control:max-age 避免了服务端和客户端时间不一致的问题。
content-type 发送给接收者的实体正文的媒体类型
Date 顾名思义
Expires 实体报头给出响应过期的日期和时间
Last-Modified 标记此文件在服务期端最后被修改的时间
上一篇下一篇

猜你喜欢

热点阅读