使用 HTTP 下载一个 20MB 的文件,抓包发现客户端应答了 2500 多个 ACK 包,总共 160KB 。
如果绕过 TCP 协议栈(比如 libpcap )写一个 HTTP 下载程序,客户端隔较长时间答复 ACK ,最终只应答了 60 个 ACK 包,文件同样也能传输成功,而客户端只发送了几 KB 的流量。
不知常用的系统(比如 Linux )是否可通过设置,把 ACK 应答数量减少到极致?看了下 TCP delayed ACK ,规定最大超时是 500ms ,并且收到的数据量足够时就得应答。貌似不好实现。
有些场景下,机器出流量昂贵,但入流量免费且带宽充足,因此即使对方重传包也不影响费用,而我方产生 ACK 则是计费的,因此越少越好。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.