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

打印 上一主题 下一主题

主题 1856|帖子 1856|积分 5568

前面先容了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请求的示例:
  1. GET /index.html HTTP/1.1
  2. Host: www.example.com
复制代码
HTTP响应的示例:
  1. HTTP/1.1 200 OK
  2. Content-Type: text/html; charset=UTF-8
  3. Content-Length: 137
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7.     <title>Example</title>
  8. </head>
  9. <body>
  10.     <h1>Hello, World!</h1>
  11. </body>
  12. </html>
复制代码
如果利用了HTTPS,则全部HTTP请求和响应都会在TLS加密通道中传输,确保数据的安全性。
(4)、流程图示例

以下是HTTP、TLS和TCP协同工作的详细流程图:

表明:
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企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

欢乐狗

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表