title: What are OpenSSL BIOs? How do they work? How are BIOs used in OpenSSL?
body: <p>I need some general information about OpenSSL BIO. Some kind of introduction to it. What is OpenSSL BIO? What is its general idea? I know that it is some kind of API for input/output. But how is it different from stdio or sockets API, for example?</p>
  
  <p>I know that there are source, sink and filter BIOs. What is a filter BIO? What is a source BIO? What is a sink BIO?</p>
  
  <p>It's said that a filter BIO is used to process data. How do I process data using a filter BIO? How can I run data through it? Do I have to feed the data to the filter BIO using the <code>BIO_write</code> function and get processed data using the <code>BIO_read</code> function?</p>
  
  <p>Why are BIOs needed in OpenSSL at all? How are they used when programming with OpenSSL? Any examples?</p>
  
  <p>Which BIOs does OpenSSL provide? Can you provide examples of BIOs and tell about the differences between them?</p>