openssl之BIO系列之1---抽象的IO接口
来源:互联网 发布:a标签用js去掉下划线 编辑:程序博客网 时间:2024/05/16 12:54
BIO-抽象的IO接口
其实包含了很多种接口,用通用的函数接口,主要控制在BIO_METHOD中的不通实现函数控制,
我初步估计了一下,大概有14种,包括6种filter型和8种source/sink型。
BIO是在底层覆盖了许多类型I/O接口细节的一种应用接口,如果你在程序中使用BIO,那么就可以和SSL连接、非加密的网络连接以及文件IO进行透明的连接。
有两种不通的BIO接口,一种是source/sink型,一种是fileter型的。
顾名思义,source/sink类型的BIO是数据源或数据目标(我不知道sink该怎么翻译,据水木liaojzh说,一般是destination(目标、宿)的同义词,大家自己理解吧,呵呵),例如,sokect BIO和文件BIO。
而filter BIO就是把数据从一个BIO转换到另外一个BIO或应用接口,在转换过程中,这些数据可以不修改(如信息摘要BIO),也可以进行转换。例如在加密BIO中,如果写操作,数据就会被加密,如果是读操作,数据就会被解密。
BIO可以连接在一起成为一个BIO链(单个的BIO就是一个环节的BIO链的特例),如下是BIO的结构定义,可以看到它有上下环节的:
struct bio_st
{
BIO_METHOD *method;
/* bio, mode, argp, argi, argl, ret */
long (*callback)(struct bio_st *,int,const char *,int, long,long);
char *cb_arg; /* first argument for the callback */
int init;
int shutdown;
int flags; /* extra storage */
int retry_reason;
int num;
void *ptr;
struct bio_st *next_bio; /* used by filter BIOs */BIO下联
struct bio_st *prev_bio; /* used by filter BIOs */BIO上联
int references;
unsigned long num_read;
unsigned long num_write;
CRYPTO_EX_DATA ex_data;
};
一个BIO链通常包括一个source BIO和一个或多个filter BIO,数据从第一个BIO读出或写入,然后经过一系列BIO变化到输出(通常是一个source/sink BIO)。
其实包含了很多种接口,用通用的函数接口,主要控制在BIO_METHOD中的不通实现函数控制,
我初步估计了一下,大概有14种,包括6种filter型和8种source/sink型。
BIO是在底层覆盖了许多类型I/O接口细节的一种应用接口,如果你在程序中使用BIO,那么就可以和SSL连接、非加密的网络连接以及文件IO进行透明的连接。
有两种不通的BIO接口,一种是source/sink型,一种是fileter型的。
顾名思义,source/sink类型的BIO是数据源或数据目标(我不知道sink该怎么翻译,据水木liaojzh说,一般是destination(目标、宿)的同义词,大家自己理解吧,呵呵),例如,sokect BIO和文件BIO。
而filter BIO就是把数据从一个BIO转换到另外一个BIO或应用接口,在转换过程中,这些数据可以不修改(如信息摘要BIO),也可以进行转换。例如在加密BIO中,如果写操作,数据就会被加密,如果是读操作,数据就会被解密。
BIO可以连接在一起成为一个BIO链(单个的BIO就是一个环节的BIO链的特例),如下是BIO的结构定义,可以看到它有上下环节的:
struct bio_st
{
BIO_METHOD *method;
/* bio, mode, argp, argi, argl, ret */
long (*callback)(struct bio_st *,int,const char *,int, long,long);
char *cb_arg; /* first argument for the callback */
int init;
int shutdown;
int flags; /* extra storage */
int retry_reason;
int num;
void *ptr;
struct bio_st *next_bio; /* used by filter BIOs */BIO下联
struct bio_st *prev_bio; /* used by filter BIOs */BIO上联
int references;
unsigned long num_read;
unsigned long num_write;
CRYPTO_EX_DATA ex_data;
};
一个BIO链通常包括一个source BIO和一个或多个filter BIO,数据从第一个BIO读出或写入,然后经过一系列BIO变化到输出(通常是一个source/sink BIO)。
注:这是根据openssl的BIO.pod翻译和根据我自己的理解添加的,以后我会慢慢将BIO的细节说出来,希望大家一起努力。
FW: http://blog.csdn.net/gdwzh/article/details/19194
0 0
- openssl之BIO系列之1---抽象的IO接口
- openssl之BIO系列之1---抽象的IO接口
- openssl之BIO系列之1---抽象的IO接口
- openssl之BIO系列之1---抽象的IO接口
- openssl之BIO系列之6---BIO的IO操作函数
- openssl之BIO系列之6---BIO的IO操作函数
- openssl之BIO系列之6---BIO的IO操作函数
- Openssl之BIO系列
- openssl之BIO系列之7---BIO链的操作
- openssl之:BIO系列之7---BIO链的操作
- openssl之BIO系列之21---Base64类型的BIO
- openssl之BIO系列之22---Cipher类型的BIO
- openssl之BIO系列之23---MD类型的BIO
- openssl之BIO系列之24---SSL类型的BIO
- openssl之BIO系列之7---BIO链的操作
- openssl之:BIO系列之7---BIO链的操作
- openssl之BIO系列之21---Base64类型的BIO
- openssl之BIO系列之22---Cipher类型的BIO
- 微信支付关键点技术解析
- Spark 1.0 开发环境构建:maven/sbt/idea
- Java多线程执行单一类型任务:卖车票模型
- 布局中的一些小知识
- [Leetcode] Construct Binary Tree from Preorder and Inorder Traversal
- openssl之BIO系列之1---抽象的IO接口
- SQL Server中的一个奇怪问题
- 位于 XDB 的服务器 localhost 要求用户名和密码!!
- MYSQL的增量备份
- C语言:存取结构体成员的点运算符(.)和箭头运算符(->)的区别
- CRC32校验算法-C实现
- 《动物农场》读后感
- TMS320F28335项目开发记录3_28335简单介绍
- 【opencv】特征点检测方法--GFTT,SIFT,FAST,SURF