网络——HTTP与HTTPS三次握手和四次挥手

HTTP协议本身并不直接处理TCP连接的建立和关闭,这些是由底层的TCP协议来完成的。但是,由于HTTP通常运行在TCP之上,因此理解TCP的三次握手(用于建立连接)和四次挥手(用于关闭连接)对于理解HTTP通信过程是非常有帮助的。

三次握手 (Three-way Handshake)

三次握手是TCP协议中用于在网络中的两个节点之间建立连接的过程。这个过程确保了双方都准备好进行数据传输,并且能够互相发送和接收数据。

  1. 客户端 -> 服务器:客户端发送一个SYN(同步序列编号)包到服务器,表示想要建立连接。
  2. 服务器 -> 客户端:服务器收到SYN后,会回复一个ACK(确认)以及自己的SYN给客户端。
  3. 客户端 -> 服务器:客户端收到服务器的SYN+ACK后,发送一个ACK给服务器,表明已经收到了服务器的响应。

此时,连接正式建立,可以开始传输数据。

四次挥手 (Four-way Handshake)

当一方或双方决定终止连接时,就会启动四次挥手过程。这个过程确保了双方都能正确地结束会话并且释放资源。

  1. 客户端 -> 服务器:客户端发送一个FIN(结束)包给服务器,表示客户端不再发送数据。
  2. 服务器 -> 客户端:服务器回应一个ACK,确认收到了客户端的FIN。
  3. 服务器 -> 客户端:服务器发送自己的FIN给客户端,表示服务器也结束了数据传输。
  4. 客户端 -> 服务器:客户端回应一个ACK,确认收到了服务器的FIN。

在某些情况下,最后一步的ACK可能与第二步的ACK合并成一个步骤,但标准流程是四步。

时序图

下面是三次握手和四次挥手的简单时序图:

三次握手

四次挥手

这里用文字描述了一个简单的时序图。在实际应用中,可以使用专业的绘图工具如Microsoft Visio、Lucidchart等来创建更直观的图形化表示。

HTTPS的三次握手与四次挥手

HTTPS在HTTP的基础上增加了SSL/TLS层进行加密通信。因此,HTTPS的三次握手不仅涉及TCP的三次握手,还涉及SSL/TLS握手过程。同样地,HTTPS的四次挥手与HTTP的四次挥手基本相同,但在断开连接前需要确保所有加密数据都已成功传输且解密完成。

  1. HTTPS的三次握手

    • TCP三次握手:与HTTP的三次握手相同。
    • SSL/TLS握手:在TCP连接建立后,开始进行SSL/TLS握手过程。这包括客户端发送ClientHello消息、服务器回复ServerHello消息、服务器发送数字证书进行身份验证、客户端验证服务器证书的合法性、双方协商加密算法和生成加密密钥等步骤。
  2. HTTPS的四次挥手

    • 与HTTP的四次挥手基本相同。但在断开连接前,HTTPS需要确保所有加密数据都已成功传输且解密完成。之后,按照TCP的四次挥手过程断开连接。

需要注意的是,在SSL/TLS握手过程中,如果服务器需要客户端证书进行双向认证,则客户端也需要发送自己的证书给服务器进行验证。此外,SSL/TLS握手过程中还包括密钥交换和生成会话密钥等步骤,以确保后续通信的数据加密和安全性。

相关推荐
captain3761 小时前
网络原理(9)-数据链路层
java·网络协议·java-ee
yi碗汤园7 小时前
MQTT消息队列遥测传输协议
网络·网络协议·unity
花间相见8 小时前
【后端开发|网络编程】—— 五种实时通信方案全解析:短轮询、长轮询、SSE、MQTT、WebSocket
后端·网络协议
AKA__Zas14 小时前
跨网段主机的文件传输过程
java·网络·网络协议·学习方法
2501_9160088914 小时前
SSE 和 gRPC 流式接口如何抓包,调试 SSE 与 gRPC 流式接口
网络协议·计算机网络·网络安全·ios·adb·https·udp
鱼月半1 天前
两台电脑直连网络不通怎么办?
linux·网络协议
captain3762 天前
网络原理(7)-NAT(Network Address Translation)
java·网络·网络协议·java-ee
爱研究的小梁2 天前
异构链路科普:5G/4G、卫星、专网、WiFi、光纤,如何聚合工作?
网络·网络协议·udp·信息与通信
梦想平凡2 天前
情怀棋牌源代码焕新记录(一):全新国风UI与原版工程梳理
java·服务器·数据库·websocket·网络协议·cocos2d
K成长日志2 天前
DALI-2协议简介
网络·网络协议·智能楼宇·智能照明·智能建筑·dali