c - 什么是配置 Heartbeat 空闲超时的 openssl API

标签 c sockets ssl openssl tls1.2

我正在使用 openssl 库来实现 tls 服务器。 如何使用openssl API配置Heartbeat请求超时和重试次数来控制keepalive消息流?

最佳答案

我假设您确实如您所说的那样指的是 TLS,而不是 DTLS。在 TLS 中使用心跳是很不寻常的,尽管 OpenSSL 在版本 1.0.2 中支持它。该支持已从 OpenSSL 1.1.0 中删除,因此,出于这个原因,我建议不要在新应用程序中使用它。改用 TCP keep alives。

Heartbeat API 非常简单。你可以做三件事:

1) 使用SSL_heartbeat()发送心跳

2) 使用 SSL_get_tlsext_heartbeat_pending()

查看先前发送的心跳是否仍在等待响应

3) 使用SSL_set_tlsext_heartbeat_no_requests()

设置心跳模式禁止对端发送心跳请求

其他任何事情都取决于应用程序。 TLS 中不需要重试,因为它被设计为在可靠的传输层上运行。如果连接存在,它将到达那里。如果不是,它不会。 TCP 层将处理丢失数据包的重传。超时也应该在 TCP 层完成。如果 TCP 连接超时,SSL 连接将失败。

关于c - 什么是配置 Heartbeat 空闲超时的 openssl API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42109328/

相关文章:

apache - 将非 https 域重定向到 http

actionscript-3 - 联系 HTTPS REST 服务时出现 2032 Flex 错误

c++ - 在 c 程序和 C++ Qt 应用程序之间使用什么 Linux IPC?

C 程序 - 值不添加到循环中的 vector

如果服务器打开,Java会自动连接到服务器

python - 使用 PythonAnywhere 作为游戏服务器

node.js - HTTP2:内部服务 API 是否应该使用 http2

c - 从二叉搜索树中搜索、插入、输出。

c - 启动时存储的函数内部定义的本地数据在哪里

ruby - Websocket发送无法从电话网络发送