我正在使用与 UDP 不同的网络传输协议构建 DTLS 服务器和客户端设置。但是这个协议也是不可靠的,所以需要 DTLS。该协议使用无线电网络将数据从客户端传输到服务器,反之亦然。为了使其与 DTLS 兼容,接收到的数据随后通过 UDP-Client 转发到服务器端的 DTLS-Server,并通过 UDP-Server 转发到客户端的 DTLS-Client,两者都在 localhost 上工作。
作为基础,我使用了 mbedTLS 的程序/ssl 目录中给出的 DTLS 示例实现。由于在传输的情况下使用的协议不是 fastet,我通过使用 mbedtls_ssl_conf_handshake_timeout 函数调整了握手超时,这样就没有任何可能干扰实际数据传输的早期重传。这是根据需要工作的。
大约 2 分钟后,服务器收到第一个握手消息(ClientHello)。服务器使用 VerifyRequest 进行应答,再过 3 分钟,服务器收到客户端的应答 (ClientHello+Cookie)。但是,服务器没有发送 ServerHello,而是使用另一个 VerifyRequest 来回答,例如他忘记了第一次初始化 ClientHello。
我将收到的 ClientHello 消息与使用相同设置但 UDP 作为网络协议的 DTLS-Handshake 生成的一些消息进行了比较,它们几乎是等效的(除了随机部分和 cookie)。
我是否需要调整另一个超时计时器,以便服务器等待第二个 ClientHello 的时间更长?还是我忽略了另一件事?
如果您需要对问题的任何进一步描述,我会尽力提供。
我将不胜感激任何想法或提示。