And*_*rew 6 networking internet https corruption tcp
我在网络 A 上运行了几台主机,这些主机向网络 B 上的服务器(我不拥有)发出请求,该服务器位于 Internet 的某处。不幸的是,这些请求中的许多都被破坏了。如果我通过未加密的 HTTP 发出请求,我会收到暗示请求损坏的奇怪错误。如果我通过 HTTPS 发出请求,则会收到 SSL 级别的错误。我可以通过运行来重现问题:
sh -e -c 'while true; do curl $SERVER > /dev/null; sleep 1; done'
Run Code Online (Sandbox Code Playgroud)
通常在 20 个请求内,curl 失败并显示“未知 SSL 协议错误”或“tlsv1 警报解密错误”等错误。我可以在网络 A 中的多个主机上重现这个,访问网络 B 上的多个服务器。但我无法从网络 A 复制到其他服务器,或从其他主机复制到网络 B。在这些情况下,循环将永远运行而不会出错。
所以很明显我的 TCP 流在 A 和 B 之间被破坏了。顺便说一下,这已经持续了 3 天多。
第一个问题:这怎么可能发生?TCP 具有数据包级校验和,通过校验和的损坏数据包应该比我看到的要少得多。此外,如果我运行网络捕获,我不会看到很多重新传输(根据wireshark 的 tcp.analysis.retransmit 过滤器),如果数据包被损坏并且 TCP 校验和失败,您会期望这些。我想某些路由器必须进行更高级别的数据处理(NAT?透明代理?)并破坏数据但修复校验和?
第二个问题:我可以使用任何工具来隔离问题吗?我找不到任何。如果我知道网络拓扑结构并且可以在 A 和 B 之间的每一跳后面找到 HTTPS 服务器,我就可以对它们进行测试。但我没有。还有哪些测试会显示网络损坏?
我已经联系了网络 A 和网络 B 的所有者,但到目前为止他们没有帮助。
更新:对于任何建议路径中可能存在哪种错误设备的人,除了联系所有者之外,还有其他方法可以检测到这种情况吗?
| 归档时间: |
|
| 查看次数: |
3586 次 |
| 最近记录: |