我正在进行一些测试,我使用ws从Node.js服务器每隔0.5秒向客户端发送一个短字符串(4-8个字节)。客户端使用iOS / Android或Web浏览器。除了我想的TCP-ACKS之外,客户端不会向服务器发送任何内容。奇怪的是,当我使用XCode网络报告在iOS中调试应用程序时,我只能看到客户端在连接建立时发出一些字节(大约500),可能是在HTTP握手期间。剩余时间ZERO数据从设备输出,只有数据进入。在Chrome中接收数据并使用Nettop跟踪数据时,可以获得相同的结果。
令人困惑的是,在Android上,在使用Android Profiler / Battery Historian / TrafficStats检查网络使用情况时,进入设备的数据量几乎相同。我尝试使用不同的库来实现Websocket并使用不同的Android设备。
我很难相信android发出的ACK与收到的消息一样大,即使它只是一个由四个字符组成的小字符串。
所以我的问题是:
答案 0 :(得分:1)
ACK是否可以像一个包含4个字符的简单TCP包一样大?
ACK由IP和TCP报头组成,没有负载。对于IPv4,这意味着至少20个字节的IP报头和20个字节的TCP报头,即40个字节。具有4字节有效载荷的分组仅大4字节,即44字节或仅10%。
Android中的网络报告显示68350英寸对比61370字节,相差11%。这符合预期的差异。
我不熟悉这里的iOS测量,但它可能只测量应用程序有效载荷(即4个字节),或者只是忽略没有有效载荷的数据包,即ACK。