HTTP的三次握手:
- 客户端发送SYN包,告诉服务端它想建立连接。
- 服务端接收到SYN包后,发送一个SYN-ACK包,表示同意建立连接。
- 客户端接收到服务端的SYN-ACK包后,发送一个ACK包,表示确认连接建立。
HTTPS的三次握手:
- 客户端向服务端发送ClientHello,包含支持的加密套件列表等信息。
- 服务端收到ClientHello后,回复ServerHello,选择一个加密套件、发送数字证书等。
- 客户端收到ServerHello后,验证数字证书,生成随机值,发送PreMasterSecret。
- 服务端和客户端分别使用预主密钥生成会话密钥,并发送Finished消息,握手阶段完成。
HTTP的四次挥手:
- 客户端发送一个FIN包,表示不再发送数据。
- 服务端收到FIN包后,发送一个ACK包,表示接收到了FIN。
- 服务端发送一个FIN包,表示不再发送数据。
- 客户端收到FIN包后,发送一个ACK包,表示接收到了FIN。
HTTPS的四次挥手:
- 客户端发送一个关闭连接的消息。
- 服务端回复一个关闭连接的消息。
- 服务端发送一个关闭连接的消息。
- 客户端回复一个关闭连接的消息,完成连接的关闭。
在这些握手和挥手过程中,双方交换信息,协商参数,建立或关闭连接,以保证数据的可靠传输。HTTPS在此基础上加入了数字证书验证和加密通信,增加了安全性。这些步骤确保了HTTP和HTTPS协议的通信过程的稳定和安全。