Android Http_Https相关知识

重要知识点

Cookie、Session、Token
1)Cookie
Cookie说明
定义一种 客户端机制
原理服务器在 HTTP 响应头,加上一行特殊指示以提示
内容:【key、value、过期时间、路径&域
路径和域,构成 cookie的作用范围
不设置过期时间,表示该Cookie生命周期 = 在本次会话期间
作用保存一些数据,客户端可序列化到本地
下次请求时反序列化放到Cookie中
限制单个Cookie 保存的数据,不超过4K
安全性Cookie 不安全,可分析存放在本地的Cookie & 进行Cookie欺骗
应用场景存放安全性要求低、数据量小的数据
2)Session
Session说明
定义一种 服务端的机制
特点使用 哈希表(散列表)来保存信息
创建过程1、服务端检查客户端的请求头是否已包含一个 session_id
2、已包含,则根据该 session_id 取出session
3、不包含,则为此客户端创建一个session,生成一个 session_id
session_id是一个 不会重复,不易被仿照的字符串
新创建的session 对应的 session_id 会在本次响应中返回给客户端保存
保存方式可采用cookie
session_id 保存在cookie中的 key 一般类似于 SESSIONID
客户端每次请求都把cookie带上,也就带上了 session_id,发送给服务器
场景存放重要信息,安全性高,存储数据量多
缺点比较 占用服务器的资源
基于Cookie 的身份验证流程
校验通过
用户输入登录凭据
服务器验证凭据
服务器 创建Session
将Session_id 存在Cookie中
返回给客户端
Session的数据存在 服务器数据库
客户端后续请求都带上Cookie
服务器根据请求 Cookie中的 session_id
取出 服务器数据库中的 session 进行验证

验证通过 则继续处理请求
用户 退出登录时
客户端删除该Cookie
服务端销毁该 session
8、基于Token 的身份验证流程
校验通过
用户输入登录凭据
服务器验证凭据
服务器 创建 经过签名的token 返回给客户端
客户端存储token 一般存在 Cookie 中
并序列化到本地
服务端不存储 token
客户端 所有请求都带上token
可以放到 header 中
服务器对 token 解密 验证
验证通过 则继续处理请求
用户 退出登录时
客户端删除该 token
9、Token 相比 cookie 的优点
Token优点
服务器不需要记录 token
服务器工作是, 在登录请求上,签署token
在后续请求中,验证传入的 token
防跨站请求伪造,攻击者无法通过请求链接url获取验证信息
cookie 绑定到单个域,无法被其他域读取
token 可以向多个服务器获取授权

Http优化点

优化点说明
DNS查询优化利用 DNS缓存结果 来达到减少域名解析时间
建立连接池连接复用,避免每次请求都经历 三次握手、慢启动

Http1.0 对比 Http1.1

版本差异
HTTP1.01、非持续连接
每次请求都要创建连接、慢启动、分配缓存和变量

2、缓存处理
使用header 里的 If-Modified-Since,Expires 做缓存判断标准

3、带宽使用问题
存在一些 浪费带宽 的现象
客户端 只需要某个对象的一部分,服务器却将整个对象传过来,且不支持断点续传功能

4、Host头处理
HTTP1.0 认为每台服务器都绑定一个唯一的IP地址
请求消息中的 URL 没有传递主机名(hostname)
物理服务器上可以存在 多个虚拟主机,共享一个IP地址

HTTP1.11、长连接
使用 持续连接,服务器发送响应后,在一段时间内保持这条连接
减少了建立和关闭连接的消耗、延迟
HTTP1.1 中默认开启 Connect: keep-alive

持续连接的两种工作方式:
1)非流水线方式
客户端 收到前一个响应后、才能发出下一个请求

2)流水线方式
客户端 收到 HTTP响应报文之前,能够接着发送新的请求报文
服务器 可连续发回响应报文

2、缓存处理
更多缓存控制策略:Entity tag,If-Unmodified-Since,If-Match,If-None-Match

3、带宽优化
请求头引入了 range头域,允许只请求资源的某个部分,返回码是206(Partial Content)

4、错误通知的管理
新增了24个错误状态码,如:
409(Conflict),表示 请求的资源与资源的当前状态发送冲突
410(Gone),表示服务器上的某个资源被永久性的删除

5、Host头处理
请求消息、响应消息,都支持Host头域
请求消息中如果 没有Host头域,会报错误(400 Bad Request)

Http2.0 对比 Http1.x 的新特性

新特性说明
新的二进制格式HTTP1.x 的解析是 基于文本
HTTP2.0 的解析采用 二进制格式
多路复用一个 request 对应一个id,一个连接上可以有多个 request
每个连接的 request 可以随机的混杂在一起
接收方 根据 request 的 id,将 request 归属到各自不同的请求里面

TCP 拥塞控制的慢启动策略,TCP连接的 起初会限制连接传输的最大速度
如果没有拥塞,会逐渐提高传输速度
导致具有 突发性、短时性 的 Http连接 变得低效传输速度起来之前,请求已经结束

多路复用,所有数据共用同一个连接,更有效的使用TCP连接,重复利用带宽
SPDY位于HTTP之下,SSL和TCP之上: HTTP > SPDY > SSL > TCP
header压缩HTTP1.x header 带有大量信息,每次都要重复发送

HTTP2.0 使用 encoder 压缩,减少传输的 header大小
通讯双方各自 cache 一份 header fields表,差量更新 HTTP头部
避免 重复 header的传输,减小了需要传输的大小
服务端推送HTTP2.0 也具有server push 功能

比如,客户端请求一个 index.html 静态页面
服务端推送,把该静态页面所需要的资源(比如,main.js文件),伴随着index.html一起发送到客户端
省去客户端请求 main.js的步骤

HTTPS 与 HTTP 的区别

协议区别
HTTPHTTP 运行在 TCP 上,传输的内容都是明文
HTTP 使用 80 端口
HTTPSHTTPS 需要到CA申请证书
HTTPS 运行在 SSL/TLS上,SSL/TLS运行在TCP之上,传输的内容都经过加密
HTTPS 使用 443 端口
HTTPS 可以 防止运营商劫持数据

get请求与post请求的区别

方法特征
GET1、参数长度受限制
GET 发送的 数据存放在URL中,直接附加在URL后
用1个问号("?")代表URL的结尾 &请求参数的开始
URL 的长度是受限制的,最大长度 2048 个字符

2、参数的数据类型
只允许传 ASCII 字符

3、安全性低
数据直接添加到URL后,对外可见

4、应用场景
请求 小量、数据不敏感 数据
POST1、参数长度不受限制

2、参数数据类型不受限制

3、安全性高
请求数据一般放在请求体中

4、应用场景
大量、数据敏感,比如向服务器提交数据

HTTPS 加密过程

说明详情
HTTPS 涉及三个密钥服务器端的 公钥、私钥,用来进行 非对称加密
客户端生成的 随机密钥,用来进行 对称加密
第1步客户端向服务器发起HTTPS请求,连接到服务器的 443端口
第2步服务器 将 公钥 发送给客户端
第3步客户端 对公钥进行检查,验证其合法性
如果校验失败,则请求失败
第4步公钥验证通过,客户端会生成一个随机值,作为对称加密的密钥
然后用服务器的公钥对客户端密钥进行非对称加密
第5步客户端发起 第二次请求,将加密之后的客户端密钥发送给服务器
第6步服务器 收到客户端发来的密文后,用私钥对客户端密文解密,解密之后的明文就是客户端密钥
然后 用客户端密钥对数据进行对称加密,这样数据就变成了密文
第7步服务器,将加密后的密文发送给客户端
第8步客户端收到服务器发送的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据
这样HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成

万维网 WWW(World Wide Web) 简称Web

万维网用链接的方法,从因特网上的一个站点访问另一个站点,从而主动按需获取信息。
万维网以 客户-服务器 方式工作。
1、URL格式
<协议>://<主机>:<端口>/<路径>

一、Http(HyberText Transfer Protocol超文本传输协议)基本概念及报文结构

1、基本概念

HTTP 超文本传输协议,面向文本

HTTP 是应用层协议,默认端口号是80,通常可以省略。

HTTP 无状态 数据传输过程中,不保存任何历史状态信息
该特性简化了服务器的设计,使服务器更容易支持大量并发的Http请求。

HTTP 的传输层使用 TCP协议

2、报文结构-请求报文

报文结构内容
请求行方法 URL 版本
比如:GET /chn/yxsz/index.html HTTP/1.1
headerkey1: value1
key2: value2
key3: value3

比如:
Host: www.tsinghua.edu.cn
User-Agent: Mozilla/5.0
header 与 body 之间
空一行
body请求体
比如:key1=value1&key2=value2
		|
请求行   | [方法] 空格 [URL] 空格 [版本] [回车换行]
		|
Header	| [header字段名][:] 空格 [header字段值][回车换行]
		|		...
		| [header字段名][:] 空格 [header字段值][回车换行]
		| [回车换行]
Body	| [请求体]
		|
1)请求行

方法,URL,版本 三个字段之间以 空格分隔开 。结束时回车换行
URL 是指端口之后的部分
若 接口 = http://www.baidu.com/ ,则 URL = /
若 接口 = http://www.weibo.com/288/home 则 URL = /288/home

协议版本:HTTP/1.0,HTTP/1.1, HTTP/2.0

2)Header请求头

key:value的方式,用来传一些信息。可以有多行,每行结束时回车换行
整个Header结束时,还有一空行,将Header 和后面的Body分开。

作用:声明 客户端、服务器 / 报文的部分信息
使用方式:key : value 的方式

请求和响应报文通用请求头:
请求头说明
Content-Type请求体 / 响应体的类型,如:text/plain、application/json
Accept说明接收的类型,可多个值,用,(半角逗号)分开
Content-Length请求体 / 响应体的长度,单位 字节
Content-Encoding请求体 / 响应体的编码格式,如:gzip、deflate
Accept-Encoding告知对方,我方接受的Content-Encoding
ETag给当前资源的标识,和 Last-Modified、If-None-Match、If-Modified-Since 配合,用于缓存控制
Cache-Control取值一般为 no-cache / max-age=XX,XX为整数,表示缓存有效期(
常见请求头
请求头说明
Authorization用于设置身份认证信息
User-Agent用户标识,如:OS和浏览器的类型和版本
If-Modified-Since值为上一次服务器返回的 Last-Modified 的值
用于确认某个资源是否被更改过
没有更改过(304),就从缓存读取
If-None-Match值为上以此服务器返回的 ETag 值,一般会和 If-Modified-Since 一起出现。
Cookie已有的Cookie
Referer表示请求引用自哪个地址,比如你从 页面A 跳转到 页面B 时,值为 页面A 的地址
Host请求的主机、端口号
3)请求体

作用:存放 需要发送给服务器的数据,GET请求没有请求体

使用方式:
数据交换:请求体可以任意类型,但服务器需额外解析。比如:{“name”:“html”, “year”:“5”}
键值对:键值之间用"=“连接,每个键值对间用”&"连接。比如:key1=value&key2=value2

分部分形式:请求体被分为多个部分,每段以 -{boundary} 开头,
描述头后空一行 接 内容,每段以 -{boundary}- 结束
比如:

-{boundary}    //开头
Content-Disposition: form-data;name="name" //描述头
//空格
this is first request part! //内容

-{boundary}    //开头
Content-Disposition: form-data;name="name" //描述头
//空格
this is second request part! //内容
-{boundary}-  //结束
4)请求报文实例
请求行:GET /chn/yxsz/index.html HTTP/1.1
请求头:Host: www.tsinghua.edu.cn
		User-Agent: Mozilla/5.0
空行:
请求体:key1=value1&key2=value2

3、报文结构-响应报文

报文结构说明
状态行版本 状态码 状态码解释
比如:
HTTP/1.1 202 Accepted
Headerkey1:value1
key2:value2
空行
Body响应体
1)状态行

版本,状态码,解释状态码的短语 三个字段之间用空格分隔开。结束时回车换行
实例:
HTTP/1.1 202 Accepted
HTTP/1.1 404 Not Found

2)Header 响应头

key:value的方式,用来传一些信息。可以有多行,每行结束时回车换行
整个Header结束时,还有一空行,将Header 和后面的Body分开

常见响应头

响应头说明
Date服务器的日期
Last-Modified该资源最后被修改时间
Transfer-Encoding取值一般为chunked出现在Content-Length不能确定的情况下
表示 服务器不指定响应体的数据大小,一般同时还会出现 Content-Encoding 响应头
Set-Cookie设置Cookie
Location重定向到另一个URL,如:在浏览器输入 baidu.com 回车,会自动跳到 https://www.baidu.com
就是通过这个响应头控制的
Server后台服务器
3)响应体

作用:存放 返回给客户端的数据信息
使用方式与请求体一致。

使用方式:
数据交换:请求体可以任意类型,但服务器需额外解析。比如:{“name”:“html”, “year”:“5”}

键值对:键值之间用"=“连接,每个键值对间用”&"连接。比如:key1=value&key2=value2

分部分形式:请求体被分为多个部分,每段以 -{boundary} 开头,
描述头后空一行 接 内容,每段以 -{boundary}- 结束
比如:

-{boundary}    //开头
Content-Disposition: form-data;name="name" //描述头
//空格
this is first request part! //内容

-{boundary}    //开头
Content-Disposition: form-data;name="name" //描述头
//空格
this is second request part! //内容
-{boundary}-  //结束	
4、请求方法
方法用途
OPTION请求一些选项的信息
GET请求读取由URL所标志的信息
POST给服务器添加信息
HEAD请求读取由URL所标志的信息的首部
PUT在指明的URL下 存储一个文档
DELETE删除 指明 URL 所标志的 资源
TRACE用来进行 环回测试 的请求报文
CONNECT用于 代理服务器
5、常见状态码
状态码含义
1xx表示,通知信息,如 请求收到了或正在进行处理
2xx表示,成功
3xx表示,重定向
4xx表示,客户端的差错
5xx表示,服务器的差错
常见 状态行:
	HTTP/1.1 202 Accepted   	   {接受}
	HTTP/1.1 400 Bad Request       {错误的请求}
	HTTP/1.1 404 Not Found	       {找不到}

二、Http常见错误码

1、常见状态码
1xx 表示,通知信息,如请求收到了或正在进行处理。
2xx 表示,成功
3xx 表示,重定向
4xx 表示,客户的差错
5xx 表示,服务器的差错。
状态码实例:
200: 请求成功,请求内容于该响应一起返回

201: 请求成功,资源被正确的创建

202: 请求已被接受,但还没处理 (客户端轮询等机制继续请求)

203: 请求的代理服务器,命中了缓存,告诉我们这部分信息不一定是最新的。

300: 请求成功,但结果有多种选择

301: 请求的资源已被永久转移

302: 请求的资源已被临时转移

303: 使用GET 来访问新的地址来获取资源

304: 未按预期修改(请求的资源没有被修改)

308: 使用原有的地址请求方式,通过新地址获取资源

400: 请求参数有误,当前请求无法被服务器理解

401: 请求需要验证用户,比如,没有带上token

403: 不允许访问该地址,没有访问权限

404: Not Found

406: 请求的资源并不符合要求

408: 请求超时

413: 请求体过大。

415: 类型不正确。

416: 请求的区间无效

500: 服务器内部错误

501: 请求还没有被实现

502: Bad Gateway网关出错

503: 服务暂时不可用。服务器正好在更新代码重启。

505: 请求的 HTTP 版本不支持。

三、Http1.0与Http1.1与Http2.0的区别

HTTP 的基本优化
影响HTTP网络请求的两个因素:带宽、延迟。
1、延迟
1)浏览器阻塞
	浏览器对同一个域名,同时只能维持一定数量的连接,
	超过连接数限制,后续请求会被阻塞。

2)DNS查询
	将域名解析为IP,通常可以利用 DNS缓存结果来达到减少域名解析时间的目的。		
	
3)建立连接
	HTTP 是基于 TCP 协议的,最快也要在第三次握手时才能捎带 HTTP 请求报文。
	连接无法复用,会导致每次请求都经历三次握手和慢启动。
2、Http1.0 和 Http1.1的区别
1)缓存处理
Http1.0 使用header 里的 If-Modified-Since,Expires 做缓存判断标准

Http1.1 引入更多缓存控制策略,如,Entity tag,If-Unmodified-Since,If-Match,If-None-Match
		更多可供选择的缓存头来控制缓存策略。
2)带宽优化和网络连接的使用
Http1.0 存在一些浪费带宽的现象。
		如,客户端只需要某个对象的一部分,而服务器却将整个对象传过来,且不支持断点续传功能。
		
Http1.1 在请求头引入了 range头域,允许只请求资源的某个部分,返回码是206(Partial Content)		
		方便开发者自由的选择,便于重复利用带宽。
3)错误通知的管理
Http1.1 新增了24个错误状态码,
		如:409(Conflict),表示请求的资源与资源的当前状态发送冲突
			410(Gone),表示服务器上的某个资源被永久性的删除
4)Host头处理
Http1.0 HTTP1.0 认为每台服务器都绑定一个唯一的IP地址,
		因此,请求消息中的URL并没有传递主机名(hostname)。
		但是,一台物理服务器上可以存在多个虚拟主机,并且它们共享一个IP地址。

Http1.1 HTTP1.1 的请求消息和响应消息,都支持Host头域,
		且请求消息中如果没有Host头域,会报错误(400 Bad Request) 
5)长连接
Http1.0 使用 非持续连接,每次请求都要创建连接、慢启动、分配缓存和变量。

Http1.1 使用 持续连接,服务器发送响应后,仍在一段时间内保持这条连接。
		持续连接支持请求的流水线处理。
		减少了建立和关闭连接的消耗和延迟。
		在HTTP1.1 中默认开启 Connect: keep-alive。
		
		持续连接的两种工作方式:
		1)非流水线方式
			客户端收到前一个响应后才能发出下一个请求。
			
		2)流水线方式
			客户端收到HTTP响应报文之前,能够接着发送新的请求报文。
			服务器可连续发回响应报文。
3、HTTPS 与 HTTP 的区别
HTTPS 需要到CA申请证书,一般免费证书很少,需要交费。

HTTP 运行在TCP之上,所有传输的内容都是明文,
HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的。

HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题。

HTTP  |---> TCP 
------|-----------------------------------
HTTPS |---> SSL/TLS加密 -----> TCP
4、SPDY:Http1.x的优化
1)降低延迟
SPDY优雅的采取了多路复用(multiplexing)。
	
多路复用通过多个请求stream共享一个tcp连接的方式,解决了HOL blocking的问题,
降低了延迟、提高了带宽的利用率。
2)请求优先级(request prioritization)。
多路复用带来一个问题是,在连接共享的基础之上有可能会导致关键请求被阻塞。

SPDY允许给每个request设置优先级,这样重要的请求就会优先得到响应。
3)header压缩
HTTP1.x的header很多时候都是重复多余的。选择合适的压缩算法可以减小包的大小和数量。
4)基于HTTPS的加密协议传输,大大提高了传输数据的可靠性。
5)服务端推送(server push)
采用了SPDY的网页,例如网页有一个sytle.css的请求,在客户端收到sytle.css数据的同时,
服务端会将sytle.js的文件推送给客户端。
当客户端再次尝试获取sytle.js时就可以直接从缓存中获取到,不用再发请求了
5、Http2.0:SPDY的升级版
SPDY位于HTTP之下,SSL和TCP之上   HTTP-->SPDY-->SSL-->TCP
HTTP2.0 和 SPDY 的区别:

1)HTTP2.0 支持明文 HTTP 传输,而 SPDY 强制使用 HTTPS
2)HTTP2.0 消息头的压缩算法采用 HPACK
SPDY 采用的 DEFLATE

6、Http2.0 和 Http1.x 相比的新特性
1)新的二进制格式(Binary Format)
	HTTP1.x 的解析是基于文本
	HTTP2.0 的解析采用二进制格式
	
2)多路复用(MultiPlexing)
	连接共享
	每一个request都是是用作连接共享机制的。
	一个request对应一个id,一个连接上可以有多个request,
	每个连接的request可以随机的混杂在一起,
	接收方可以根据request的 id 将 request再归属到各自不同的请求里面。
	
	由于TCP拥塞控制的慢启动策略,TCP连接的起初会限制连接传输的最大速度,
	如果网络没有拥塞,会逐渐提高传输速度。
	这让具有 突发性和短时性 的 Http连接 变得低效。(传输速度起来之前,可能请求已经结束)
	
	多路复用,让所有数据共用同一个连接,可以更有效的使用TCP连接,重复利用带宽。		

3)header压缩
	HTTP1.x 的header带有大量信息,而且每次都要重复发送。
	
	HTTP2.0 使用 encoder 来减少需要传输的header大小,
			通讯双方各自cache一份header fields表,
			既避免了重复header的传输,又减小了需要传输的大小。
			
			HTTP2.0 可以维护一个字典,差量更新HTTP头部,大大降低因头部传输产生的流量。
	
4)服务端推送(server push)
	同SPDY一样,HTTP2.0 也具有server push功能
	
	比如,客户端请求一个index.html 静态页面,
		  服务端推送能把该静态页面所需要的资源(不如,main.js文件),伴随着index.html一起发送到客户端。
		  省去客户端请求 main.js的步骤。
7、HTTP2.0的多路复用 和 HTTP1.1 的长连接复用区别
HTTP/1.0 使用 非持续连接,一次请求-响应,建立一个连接,用完关闭;
		 每一个请求都要建立一个连接;

HTTP/1.1 使用 持续连接,服务器发送响应后,仍在一段时间内保持这条连接。
		 一个连接每次只能执行一个请求,如果该请求阻塞,其他请求无法使用该连接。

HTTP/2	多个请求可同时在一个连接上并行执行。
		某个请求任务耗时严重,不会影响到其它连接的正常执行。

四、Http中get请求与post请求的区别

1、GET 请求:
1)参数长度受限制
	GET 发送的数据存放在URL中,直接附加在URL后,利用1个问号("?")代表URL的结尾 &请求参数的开始
	而URL 的长度是受限制的,最大长度 2048 个字符。

2)参数的数据类型
	只允许传 ASCII 字符

3)安全性差
	数据直接添加到URL后,对外可见

4)应用场景
	小量、数据不敏感,比如请求获取一些不敏感的数据
2、POST 请求:
1)参数长度不受限制

2)参数数据类型不受限制

3)安全性高
	请求数据一般放在请求体中

4)应用场景
	大量、数据敏感,比如向服务器提交数据。

五、HTTP长连接处理

1、Http1.1 默认保持长连接
	数据传输完成后,TCP连接不断开
2、建立长连接
1)Http头部字符:Connect,表示使用长连接后多少次失败后断开/超时时间/不适用长连接

	表示不使用长连接:	Connection: close    
	
	表示使用长连接的失败次数,超过20次则断开:
				Connection: Keep-Alive
				Keep-Alive: max=20
	
	表示使用长连接的超时时间,超过20秒则断开:
				Connection: Keep-Alive
				Keep-Alive: time=20

2)Keep-Alive机制:Keep-Alive机制开启后,TCP层将定时发送相应的 KeepAlive 探针,确定连接的可用性
3、结束长连接
使用长连接后,客户端、服务端,如何知道本次传输结束?

1)判断传输数据是否达到了 Content-Length 指示的大小

2)根据Chunked编码判断:若Chunked编码的数据在最后有一个空的 Chunked块,表明本次传输数据结束。

附加:Https原理及流程

在这里插入图片描述

HTTPS在传输的过程中会涉及到三个密钥:

服务器端的公钥和私钥,用来进行非对称加密

客户端生成的随机密钥,用来进行对称加密

一个HTTPS请求实际上包含了两次HTTP传输,可以细分为8步。

  • 1.客户端向服务器发起HTTPS请求,连接到服务器的443端口

  • 2.服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人。

  • 3.服务器将自己的公钥发送给客户端。

  • 4.客户端收到服务器端的公钥之后,会对公钥进行检查,验证其合法性。

    如果公钥校验失败,那么HTTPS传输就无法继续。

    如果公钥通过,那么客户端会生成一个随机值,这个随机值就是用于进行对称加密的密钥,我们将该密钥称之为client key,即客户端密钥。

    这样在概念上和服务器端的密钥容易进行区分。然后用服务器的公钥对客户端密钥进行非对称加密,这样客户端密钥就变成密文了,至此,HTTPS中的第一次HTTP请求结束。

  • 5.客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端密钥发送给服务器。

  • 6.服务器接收到客户端发来的密文之后,会用自己的私钥对其进行非对称解密,解密之后的明文就是客户端密钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文。

  • 7.然后服务器将加密后的密文发送给客户端。

  • 8.客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。这样HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成。

推荐阅读:
《计算机网络第七版 谢希仁》 第六章 应用层 第七章 网络安全
HTTP1.0、HTTP1.1 和 HTTP2.0 的区别
清晰的计算机网络基础 学习指南

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值