JavaEE基础(03):Http请求详解,握手挥手流程简介 (2)

HTTPS:是以安全为准则的HTTP通道,是HTTP的安全版,在HTTP请求上加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

安全模式

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

2、Https工作原理

JavaEE基础(03):Http请求详解,握手挥手流程简介

(1)客户基于Https方式访问服务端,与服务器建立SSL连接 ;
(2)服务端收到请求后,会将包含公钥的证书传送给客户端 ;
(3)客户端与服务端进行协调SSL连接的安全等级,也就是指加密的等级 ;
(4)客户端根据双方同意的安全等级,建立会话密钥,使用公钥将会话密钥加密,并传送给服务端 ;
(5)服务端使用私钥解密出会话中传递的内容,使用会话密钥加密与客户端之间的通信 ;

3、Https和Http区别

安全证书

Https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。

数据传输

Http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

连接方式

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

四、TCP传输协议 1、TCP协议简介

TCP传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP用意在于适应并支持多网络应用的分层协议层次结构。

2、三次握手

这一场景在生活中可以描述为通话:

甲:你好,我是甲,你是乙吗; 乙:你好甲:我是乙; 甲:正好找你有点事情,身份确认:

JavaEE基础(03):Http请求详解,握手挥手流程简介

第一次握手

客户端主动向服务器发起请求连接,请求报文中发送SYN=1,此时随机生成初始序列号seq=x,此时,客户端进程进入SYN-SENT同步已发送状态。

第二次握手

服务端收到请求报文后,确认客户的SYN,如果请求没有拒绝,则发出确认报文。报文中应该ACK=1,SYN=1,确认号是ack=x+1,同时自己也发送一个SYN包seq=y,此时,服务器进程进入SYN-RCVD同步收到状态。

第三次握手

客户端收到确认后,需要向服务器确认报文的ACK=1,ack=y+1,此时,TCP连接建立,客户端进入ESTABLISHED已建立连接状态。完成三次握手,客户端与服务器开始传送数据。

3、四次挥手

JavaEE基础(03):Http请求详解,握手挥手流程简介

第一次挥手

客户端发送一个结束FIN,用来主动关闭和服务端的数据传输,释放连接且停止发送数据,报文首部:FIN=1,序列号seq=u;随后客户端进入终止等待1状态FIN-WAIT-1。

第二次挥手

服务端收到这个FIN,发出确认报文ACK=1,确认收到序号是收到的序号+1,即ack=u+1,且带上自己的序列号seq=v,和SYN一样,一个FIN将占用一个序号。如此,服务器通知应用进程,客户端已经没有数据要发送,如果服务器发送数据,客户端依然要接收,该状态会持续一段时间,服务端进入关闭等待状态CLOSE-WAIT。客户端收到服务器的确认请求后,进入终止等待2状态FIN-WAIT-2,等待服务器发送连接释放报文。

第三次挥手

服务器向客户端发送释放连接报文结FIN=1,ack=u+1,此时服务端还处于半关闭状态,服务器可能还会发送一些数据,此时序列号为seq=w,如此,服务器进入最后确认状态LAST-ACK,等待客户端的确认。

第四次挥手

客户端收到服务器的连接释放报文后,回发确认,ACK=1,ack=w+1,序列号是seq=u+1,如此,客户端进入时间等待状态TIME-WAIT。此时TCP连接还没有释放,必须经过最长报文段寿命的时间后,才进入CLOSED状态。MSL:最长报文段寿命,一般2分钟,TCP连接释放时,主动方必须经过2MSL后才进入CLOSED状态,因此主动方关闭时间比较晚。

五、源代码地址 GitHub·地址 https://github.com/cicadasmile/java-base-parent GitEE·地址 https://gitee.com/cicadasmile/java-base-parent

JavaEE基础(03):Http请求详解,握手挥手流程简介

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwzfgx.html