To answer this, you need to remember that it boost::asio::ssl::streamis a template class. Usually it looks like boost::asio::ssl::stream<boost::asio::ip::tcp::socket>. So used boost::asio::ip::tcp::socket. This will be next_layer for boost::asio::ssl::stream. On the other hand, low_layer will always be basic_socket(described in docs ).
, tcp::socket, typedef basic_stream_socket<Tcp>, basic_socket. .. "next_layer IS the low_layer"..
, ssl::stream< MyOwnClass >. next_layer MyOwnClass, / . low_layer , MyOwnClass typedef.
UPD: . next_layer / ( SSL, ). low_layer .