【发布时间】:2016-03-20 21:16:00
【问题描述】:
我们在 Tomcat8 上运行了一个应用程序,在 https 获取响应中,有 2 个重新组装的 SSL 段。
有什么方法可以关闭它并发送一个 TCP 数据包? enter image description here
【问题讨论】:
标签: java tomcat ssl https segment
我们在 Tomcat8 上运行了一个应用程序,在 https 获取响应中,有 2 个重新组装的 SSL 段。
有什么方法可以关闭它并发送一个 TCP 数据包? enter image description here
【问题讨论】:
标签: java tomcat ssl https segment
恐怕答案是“可能不是”,但我们首先要确定您的网络是否在做正确的事情。响应中的最大分段大小受您的客户端在 TCP 握手中发送的 MSS(最大分段大小)值的限制。
由于您可以看到正在进行的重组,我假设您已经安装了 Wireshark 或 tcpdump。查看您的客户端在对话开始时发送的SYN 数据包。找到 TCP 选项并在其中找到 MSS 值。大多数以太网硬件的正常值是 1460 字节。
增加 MSS 的一种方法是启用 jumbo frames(如果您的本地网络硬件支持)。
另请注意,在复杂环境中,“智能”路由器和防火墙能够拦截和修改(即减少)MSS 值以应对其自身的限制。在像这样的环境中,你真的必须在连接的两端都有wireshark才能看到整个画面。
【讨论】:
在Tomcat6中,只有一个数据包,大小约为2700字节。 而在 Tomcat8 中,它是 2 个重组的 SSL 段。一个是 290 包含标题,另一个是左边带有 xml 正文。
通过将端口更改为“org.apache.coyote.http11.Http11Nio2Protocol”,它运行良好。我也试过“org.apache.coyote.http11.Http11Nio1Protocol”,它会发送两个包,对于“org.apache.coyote.http11.Http11Protocol”,它只会发送一个包。
【讨论】: