关于使用Java而不是netty等框架使用SSL
实现NIO (SocketChannel and SSLEngine)
的信息,有一些有用的信息。
我正在尝试提出一个SSL
实现,该实现可以与blocking/non
阻塞 channel 一起使用,并获得一些基本的qns
。
当操作appData和Net缓冲区时,没有太多有关线程安全性问题的信息。根据SSLEngine
的文档,
“需要注意两个并发问题:wrap()
和unwrap()
方法可以彼此同时执行。SSL/TLS
协议(protocol)使用有序数据包。应用程序必须注意确保按顺序交付生成的数据包。如果数据包乱序到达,则可能会发生意外或致命的结果。”
这是否适用于阻塞和非阻塞?有人可以解释。谢谢。
另外,设置初始缓冲区大小的一般建议似乎基于(session.getApplicationBufferSize()/getPacketBufferSize()
),如何设置这些值?这些更好地代替32k
的某些标准缓冲区大小使用吗?
最佳答案
SSLEngine
操作,因此不会出现此问题。您唯一使用另一个线程的时间是在执行SSLEngine
任务时,并且不使用SSLEngine
。 getPacketBufferSize()
,并将您的应用程序缓冲区大小设置为getApplicationBufferSize()
。