我目前正在通过使用openSSL库来处理TLS协议。我有一台服务器,最多监听5个端口,监听端口80。
当我要通过2个不同的应用程序通过不同的端口进行连接时,对于第一次连接,TCP握手和TLS握手已成功建立。
但是对于第二个连接,仅建立TCP握手。仅当我关闭第一个连接的套接字时,才会处理TLS握手。
有人有经验吗?
谢谢。
答案 0 :(得分:0)
有人有经验吗?
这似乎是您的应用程序中的问题。我猜它只能同时处理一个客户端,即它是单线程,单进程的,并且不支持基于事件的I / O。假设您没有显示任何代码,那么这当然只是一个有根据的猜测,它将解释您看到的行为:
TCP连接由OS内核处理。 TLS握手在应用程序内部处理。使用第一个客户端,TCP(在内核中)和TLS(在应用程序中)握手都将成功。对于第二个客户端,TCP握手也将成功,因为它是在OS内核中处理的。但是,只有在应用程序能够处理TLS握手后,TLS握手才会成功,即与第一个客户端一起完成。