В настоящее время я использую Netty 4.1.24 для Сервера, обменивающегося данными через Socket Connection через TLS 1.2 с Клиентом.
В настоящее время размер записи TLS («обтекание») составляет 16 КБ, как определено в спецификации (см. Реализацию в SslHandler ; соответствующие переменные MAX_PLAINTEXT_LENGTH
и wrapDataSize
)
Из-за ограничений памяти на клиенте мне нужно уменьшить размер записи TLS, генерируемой Сервером. Я использую setWrapDataSize
для ограничения размера, но Netty не использует его (он по-прежнему создает записи по 16 Кб).
Я использую следующий фрагмент в ChannelInitializer
для создания SSLEngine
/ SslHandler
final SslContext sslCtx = SslContextBuilder.forServer(keyManagerFactory)
.trustManager(trustManagerFactory)
.clientAuth(ClientAuth.REQUIRE)
.build();
LOGGER.info("Default SSL Provider: {}", SslContext.defaultServerProvider());
final SslHandler sslHandler = sslCtx.newHandler(channel.alloc());
// Currently not working
sslHandler.setWrapDataSize(1024);
Чтобы проверить размер записей, я использую WireShark и все еще вижу количество записей 16388 байт.
Мой поставщик SslContext по умолчанию - JDK.
Вопрос: как заставить Netty создавать записи меньшего размера?
Примечание: я также уменьшил размер буфера отправки в SocketChannelConfig
, что также не имело никакого эффекта. (потому что это связано с TLS).