bio
名稱
bio - 基本 I/O 抽象
語法
#include <openssl/bio.h>
說明
BIO 是一種 I/O 抽象,它隱藏了許多底層 I/O 細節,使其不會出現在應用程式中。如果應用程式使用 BIO 進行其 I/O,它可以透明地處理 SSL 連線、未加密的網路連線和檔案 I/O。
有兩種 BIO,分別是來源/匯出 BIO 和過濾 BIO。
顧名思義,來源/匯出 BIO 是資料的來源和/或匯出,範例包括 socket BIO 和檔案 BIO。
過濾 BIO 從一個 BIO 取得資料,並將其傳遞給另一個 BIO 或應用程式。資料可能會保持不變(例如訊息摘要 BIO)或轉換(例如加密 BIO)。過濾 BIO 的效果可能會根據它執行的 I/O 作業而改變:例如,如果要寫入加密 BIO,它會加密資料;如果要從加密 BIO 讀取,它會解密資料。
BIO 可以串聯在一起形成一個鏈(單一 BIO 是只有一個元件的鏈)。一個鏈通常包含一個來源/匯出 BIO 和一個或多個過濾 BIO。從第一個 BIO 讀取或寫入的資料會透過鏈傳遞到最後(通常是來源/匯出 BIO)。
有些 BIO(例如記憶體 BIO)可以在呼叫 BIO_new() 之後立即使用。其他 BIO(例如檔案 BIO)需要一些額外的初始化,而且通常會有一個實用函式來建立和初始化這些 BIO。
如果在 BIO 鏈上呼叫 BIO_free(),它只會釋放一個 BIO,導致記憶體外洩。
在單一 BIO 上呼叫 BIO_free_all() 的效果與在它上面呼叫 BIO_free() 相同,除了捨棄的傳回值之外。
通常,類型引數是由函式提供的,該函式傳回 BIO_METHOD 的指標。此類函式有一個命名慣例:來源/匯出 BIO 通常以BIO_s_開頭,而過濾 BIO 則以BIO_f_開頭。
TCP 快速開啟
自 OpenSSL 3.2 起,BIO 介面支援 TCP 快速開啟 (RFC7413),簡稱「TFO」。TFO 在以下作業系統中受支援
Linux kernel 3.13 及更新版本,其中 TFO 預設啟用。
Linux kernel 4.11 及更新版本,使用 TCP_FASTOPEN_CONNECT。
FreeBSD 10.3 至 11.4,僅支援伺服器 TFO。
FreeBSD 12.0 及更新版本,支援用戶端和伺服器 TFO。
macOS 10.14 及更新版本。
每個作業系統對 TFO 都有略有不同的 API。直接使用 socket 時,請參閱作業系統的 API 文件。
範例
建立記憶體 BIO
BIO *mem = BIO_new(BIO_s_mem());
另請參閱
BIO_ctrl(3)、BIO_f_base64(3)、BIO_f_buffer(3)、BIO_f_cipher(3)、BIO_f_md(3)、BIO_f_null(3)、BIO_f_ssl(3)、BIO_f_readbuffer(3)、BIO_find_type(3)、BIO_get_conn_mode(3)、BIO_new(3)、BIO_new_bio_pair(3)、BIO_push(3)、BIO_read_ex(3)、BIO_s_accept(3)、BIO_s_bio(3)、BIO_s_connect(3)、BIO_s_fd(3)、BIO_s_file(3)、BIO_s_mem(3)、BIO_s_null(3)、BIO_s_socket(3)、BIO_set_callback(3)、BIO_set_conn_mode(3)、BIO_set_tfo(3)、BIO_set_tfo_accept(3)、BIO_should_retry(3)
版權
Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved.
根據 Apache License 2.0(「授權」)授權。您不得在不遵守授權的情況下使用此檔案。您可以在原始程式碼散佈中的 LICENSE 檔案或 https://www.openssl.org/source/license.html 中取得副本。