一、三次握手
第一次握手: 客户端向服务器发送连接请求包,标志位SYN(同步序号)置为1,序号为X=0
第二次握手: 服务器收到客户端发过来报文,由SYN=1知道客户端要求建立联机。向客户端发送一个SYN和ACK都置为1的TCP报文,设置初始序号Y=0,将确认序号(Acknowledgement Number)设置为客户的序列号加1,即X+1 = 0+1=1, 如下图:
第三次握手: 客户端收到服务器发来的包后检查确认序号(Acknowledgement Number)是否正确,即第一次发送的序号加1(X+1=1)。以及标志位ACK是否为1。若正确,客户端再次发送确认包,ACK标志位为1,SYN标志位为0。确认序号(Acknowledgement Number)=Y+1=0+1=1,发送序号为X+1=1。服务器收到后确认序号值与ACK=1则连接建立成功,可以传送数据了。
二、四次挥手
第一次挥手:客户端向服务器端发送一段TCP报文,其中将标志位FIN和ACK置为1,序号为Seq=X=1665,确认序号为ack=Z=673。
第二次挥手:服务器收到FIN后,发回一个ACK(标志位ACK=1),确认序号为收到的序号加1,即ack=X=1665+1=1666。序号为收到的确认序号Seq=Z=673。
第三次挥手:服务器关闭与客户端的连接,发送一个FIN。标志位FIN和ACK置为1,序号为Seq=Y=673,确认序号为ack=X=1666。
第四次挥手:客户端收到服务器发送的FIN之后,发回ACK确认(标志位ACK=1),确认序号为收到的序号加1,即ack=Y+1=674。序号为收到的确认序号Seq=X=1666。
三、应用层HTTP流程协议分析
HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。
HTTP请求报文分析:
HTTP响应报文分析:
四、SSL握手
TLS是一种密码学协议,用于保证两者之间的会话安全。
ClientHello为握手的第一条消息,发送的内容有如下图:
ServerHello消息的意义是将服务器选择的连接参数传送回客户端,结构与ClientHello类似:
Certificate 该部分是服务器返回给客户端的证书链:
ServerKeyExchange 该消息的目的是携带密钥交换的额外数据
ServerHelloDone 消息表明服务器已经将所有预计的握手消息发送完毕。
Client Key Exchange 消息携带客户端为密钥交换提供的所有信息,内容随着不同的协商密码套件而不同。
ChangeCipherSpec 消息表明发送端已取得用以生成连接参数的足够信息,已生成加密密钥,并且将切换到加密模式,此后客户端的数据均为协商密钥加密的密文。
Encypted Handshake Message(finish) 为结合所有当前的通信参数信息生成一段数据,并使用协商密钥加密后的内容
New Session Ticket 会话标识符,解决会话缓存问题。