欢乐狗 发表于 2025-4-1 02:23:32

消息队列篇--通信协议篇--理解HTTP、TLS和TCP怎样协同工作

前面先容了HTTP/HTTPS,SSL/TLS以及TCP和UDP,这些在网络传输上分别有着自己的作用。为了深入理解下这些概念,本篇重点先容下HTTP、TLS 和 TCP是怎样协同工作的?我们从底层到上层逐步分析每个协议的作用及其相互关系。这些协议共同协作确保数据在网络中的可靠传输和安全性。
1、TCP(Transmission Control Protocol)

TCP是一种面向连接的传输层协议,负责在客户端和服务器之间建立可靠的通信通道。
重要功能:


[*]可靠性:通过序列号和确认机制确保数据包按顺序到达且不丢失。
[*]流量控制:防止发送方发送过多的数据导致接收方溢出。
[*]拥塞控制:监控网络状态,制止网络拥塞。
[*]错误检测与改正:通过校验和检测传输中的错误,并在必要时重传数据包。
2、TLS(Transport Layer Security)

TLS是一种加密协议,用于在客户端和服务器之间提供安全通信。它运行在TCP之上。
重要功能:


[*]加密:利用对称加密算法(如AES)加密数据,确保数据在传输过程中不被窃听。
[*]身份验证:通过数字证书验证服务器的身份,防止中心人攻击。
[*]完备性查抄:利用消息认证码(MAC)确保数据未被篡改。
[*]密钥互换:通过握手过程天生共享的秘密密钥,用于后续的加密通信。
3、HTTP(HyperText Transfer Protocol)

HTTP是一种应用层协议,用于在客户端(通常是Web欣赏器)和服务器之间传输超文本(如HTML文档)。它基于请求-响应模型工作,客户端发送请求,服务器返回响应。
4、三者协作工作流程

当用户在欣赏器中输入一个URL并发起请求时,整个通信过程涉及以下几个步骤:
(1)、建立TCP连接

首先,客户端需要与服务器建立一个TCP连接。这个过程称为“三次握手”(Three-Way Handshake),确保双方都预备好进行通信。
三次握手的过程:
1、SYN:客户端向服务器发送一个SYN(同步)消息,表现希望建立连接,并包罗一个初始序列号。
2、SYN-ACK:服务器回应一个SYN-ACK消息,表现同意建立连接,并包罗自己的初始序列号。
3、ACK:客户端发送一个ACK(确认)消息,确认收到服务器的SYN-ACK消息,并完成连接建立。
此时,客户端和服务器之间的TCP连接已经建立,可以开始传输数据。
(2)、TLS握手(可选)

如果客户端请求的是HTTPS(即HTTP over TLS),则需要在TCP连接的基础上进行TLS握手,以建立安全的通信通道。
TLS握手的过程:
1、Client Hello:客户端向服务器发送一个Client Hello消息,包罗支持的TLS版本、加密套件列表、客户端随机数等信息。
2、Server Hello:服务器回应一个Server Hello消息,选择一个双方都支持的加密套件,并发送服务器的数字证书(之后利用CA公钥验证),服务器公钥、服务器随机数等信息。
3、客户端验证证书:客户端验证服务器的数字证书,确保其真实性。如果验证失败,握手终止。(客户端利用利用CA的公钥验证证书签名的精确性和时效性等)
4、密钥互换:客户端天生一个预主密钥,并利用服务器的公钥对其进行加密,然后发送给服务器。服务器利用自己的私钥解密预主密钥,双方根据Client Random、Server Random和Pre-Master Secret计算出会话密钥。
5、加密通信预备就绪:双方互换Finished消息,确认握手乐成。此后,全部通信都将利用会话密钥进行加密。
此时,客户端和服务器之间的TLS连接已经建立,可以开始加密通信。
(3)、HTTP请求与响应

一旦TCP连接(或TLS 连接)建立完成,客户端就可以通过HTTP协议向服务器发送请求,服务器返回响应。
HTTP请求的示例:
GET /index.html HTTP/1.1
Host: www.example.com
HTTP响应的示例:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 137

<!DOCTYPE html>
<html>
<head>
    <title>Example</title>
</head>
<body>
    <h1>Hello, World!</h1>
</body>
</html>
如果利用了HTTPS,则全部HTTP请求和响应都会在TLS加密通道中传输,确保数据的安全性。
(4)、流程图示例

以下是HTTP、TLS和TCP协同工作的详细流程图:
https://i-blog.csdnimg.cn/direct/44ccddca57004d8595914b58d5834ed8.png
表明:
1、TCP连接建立:


[*]客户端通过三次握手与服务器建立TCP连接。(SYN,SYN-ACK,ACK)
[*]这一步确保了双方能够可靠地传输数据。
2、TLS握手(仅HTTPS):
[*]如果是HTTPS请求,客户端和服务器将进行TLS握手。(Client Hello-到-Client Finished)
[*]双方协商加密套件,验证服务器证书,天生会话密钥。
[*]此后,全部通信将利用会话密钥进行加密。
3、HTTP请求与响应:
[*]客户端通过已建立的TCP或TLS连接发送HTTP请求。
[*]服务器处理请求并返回HTTP响应。
[*]如果利用了HTTPS,全部请求和响应都在加密通道中传输。
4、关闭连接:
[*]当数据传输完成后,客户端和服务器可以通过四次挥手关闭TCP连接。
[*]四次挥手确保双方都能精确关闭连接,释放资源。
5、总结



[*]TCP提供了底层的可靠传输服务,确保数据包按顺序到达且不丢失。
[*]TLS在TCP之上增长了加密和身份验证功能,确保数据的安全性和完备性。
[*]HTTP是应用层协议,负责定义客户端和服务器之间的请求和响应格式。
通过这种分层结构,HTTP、TLS和TCP协同工作,确保了网络通信的可靠性、安全性和效率。如果你利用的是HTTPS,那么全部的HTTP请求和响应都会在TLS加密通道中传输,从而保护数据免受窃听和篡改。
逆风翻盘,Dare To Be!!!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 消息队列篇--通信协议篇--理解HTTP、TLS和TCP怎样协同工作