代码之家  ›  专栏  ›  技术社区  ›  Krishna Mothukuri

SSL+NIO的线程安全

  •  3
  • Krishna Mothukuri  · 技术社区  · 9 年前

    SSL 具有 NIO (SocketChannel and SSLEngine)

    我正在努力想出一个 SSL 可以使用的实现 blocking/non 封锁渠道并获得一些基本信息 qns .

    当操作appData和Net缓冲区时,没有太多关于线程安全问题的信息。根据文件 SSLEngine ,

    “需要注意两个并发问题:

    这个 wrap() unwrap() 方法可以彼此并发执行。

    这个 SSL/TLS 协议采用有序数据包。应用程序必须注意确保生成的数据包按顺序传递。如果数据包无序到达,可能会出现意外或致命的结果。“

    此外,设置初始缓冲区大小的一般建议似乎基于( session.getApplicationBufferSize()/getPacketBufferSize() ),如何设置这些值?这些是否比标准的缓冲区大小更好 32k ...左右

    1 回复  |  直到 9 年前
        1
  •  1
  •   user207421    9 年前
    1. 你通常不会这么做 SSLEngine 多线程中的操作,因此不应出现问题。只有在执行时才能使用另一个线程 SSL发动机 任务,而这不使用 SSL发动机 .

    这是否适用于阻塞和非阻塞?

    1. 是的,当然。

    session.getApplicationBufferSize()/getPacketBufferSize()) ,如何设置这些值?

    1. 将网络缓冲区大小设置为 getPacketBufferSize() ,应用程序缓冲区大小为 getApplicationBufferSize() .

    这些是否比32k左右的标准缓冲区大小更好?

    1. 如果愿意,可以使用不同的缓冲区大小,但为什么?您可能会面临这样的风险:要么用太大的缓冲区浪费空间,要么提供太小而无法使用的缓冲区。