gpt4 book ai didi

ssl - SSL 服务器如何处理多个连接?

转载 作者:太空宇宙 更新时间:2023-11-03 13:34:11 25 4
gpt4 key购买 nike

关于法律等级SSL protocols有 4 种类型的消息:

  • 握手协议(protocol)
  • ChangeCipherSpec 协议(protocol)
  • 警报协议(protocol)
  • 应用数据协议(protocol)

握手完成并交换对称私钥后,客户端将向服务器发送Application Data消息。

同一个服务器如何处理多个客户端,并且每个客户端都有自己的对称 key 。

服务器是否保持与所有客户端的连接打开?如果不是,服务器如何知道传入连接使用什么对称 key ? 应用数据协议(protocol)是否提供服务器可用于映射到正确 key 的某种 session ID?

最佳答案

Does the server keeps the connection open with all of the clients?

可以,具体取决于服务器的实现方式。

how does the server know what symmetric key to use for an incoming connection?

假设您有一款多人游戏。您的服务器代码通常如下所示:

sock = socket.listen(port)
clients = []
if sock.new_client_waiting:
new_client = sock.accept()
clients.append(new_client)

for client in clients:
if client.new_data_waiting:
data = client.read()
# handle incoming actions...

因此,如果有两个客户端,服务器将只知道两者,并为两者都有一个套接字对象。这就是您的答案:操作系统(它的 TCP 堆栈)处理连接的概念,并通过为您提供一个套接字,您可以从该套接字读取/写入该套接字,并且您知道它来自哪个客户端(无论如何在某种程度上是确定的) ).

许多服务器的工作方式不同,例如Web 服务器代码更像这样:

sock = socket.listen(port)
while True: # infinitely loop...
client = sock.accept() # This call will block until a client is available
spawn_new_http_handler(client)

每当有新人连接时,工作线程就会接管它并从那里管理事情。但是,它仍将具有可读取和写入的套接字。

Does Application Data Protocol provide some sort of session id that the server can use to map to the right key?

我不太清楚这些规范,但我很确定答案是。 session 恢复较早完成,在握手阶段,用于返回的客户。例如。如果我连接到 https://example.com 30 分钟前,现在返回,它可能有我的 session ,我们不需要再次进行整个握手。它与区分客户没有任何关系。

关于ssl - SSL 服务器如何处理多个连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45420215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com