【发布时间】:2015-04-03 20:11:19
【问题描述】:
我已经阅读了很多关于 OpenSSL 的内容,特别是 TLS 和 DTLS API。大部分都是有道理的,一旦你理解了它,它就是一个非常直观的 API。不过有一件事真的让我摸不着头脑……
我何时/为什么要使用 BIO?
例如,this wiki page 演示了如何设置准系统 TLS 服务器。示例中的任何地方甚至都没有提及 BIO。
现在this page 专门使用 BIO,而不是使用 SSL 结构的读取和写入功能。诚然,它是从 2013 年开始的,但它并不是唯一使用 BIO 的。
为了让它更加混乱,this man page 建议 SSL 结构有一个“底层 BIO”不需要明确设置它。
那么,如果我可以使用 SSL_read() 和 SSL_write(),我为什么还要使用 BIO?有什么优势?为什么有些示例使用 BIO 而其他示例不使用?空载燕子的空速是多少?
【问题讨论】:
-
BIO 的一个用途是将现有套接字升级到 TLS。
-
@user207421:您可以在不使用 BIO 的情况下将套接字升级到 TLS,只需在现有 TCP 套接字上使用
SSL_set_fd后跟SSL_connect或SSL_accept。 -
非洲燕子还是欧洲燕子?