如何禁用碎片:Tomcat8 SSL return 2 个重组的 SSL 段

How to disable fragmentation: Tomcat8 SSL return 2 reassembled SSL segments

我们有一个在 Tomcat8 上运行的应用程序,在 https 获取响应中,有 2 个重新组合的 SSL 段。

有什么方法可以关闭它并发送一个 TCP 数据包吗? enter image description here

恐怕答案是 'probably not',但我们首先要确定您的网络是否在做正确的事情。响应中的最大段大小受客户端在 TCP 握手中发送的 MSS(最大段大小)值的限制。

由于您可以看到正在进行的重组,我假设您已经安装了 Wireshark 或 tcpdump。查看您的客户端在对话开始时发送的 SYN 数据包。找到 TCP 选项并在其中找到 MSS 值。大多数以太网硬件的正常值为 1460 字节。

增加 MSS 的一种方法是启用 jumbo frames 如果您的本地网络硬件支持它们。

另请注意,在复杂环境中 'smart' 路由器和防火墙能够拦截和修改(即减少)MSS 值以应对其自身的局限性。在这样的环境中,您真的必须在连接的两端都安装 wireshark 才能看到全貌。

在Tomcat6中,只有一个数据包,大约2700字节。 而在 Tomcat8 中,它是 2 个重新组装的 SSL 段。一个是290含header,另一个是左边含xmlbody.

通过将端口更改为"org.apache.coyote.http11.Http11Nio2Protocol",效果很好。我也试过"org.apache.coyote.http11.Http11Nio1Protocol",会发两包,"org.apache.coyote.http11.Http11Protocol",只会发一个包。