我正在做一个小测试,每0.5秒使用Node.js从ws服务器向客户端发送一个短字符串(4-8字节)。客户端要么使用iOS/Android,要么使用web浏览器。除了我想的TCP-ACKS之外,客户机不会将任何东西发送回服务器。奇怪的是,当我使用iOS网络报告在XCode中调试应用程序时,我只能看到客户端在连接建立时发送一些字节(约500字节),可能是在HTTP握手期间。剩余的时间--零数据从设备中输出,只有数据进入。当接收Chrome中的数据并使用Nettop跟踪数据时,也得到了相同的结果。
令人困惑的是,在Android上,当使用Android分析器/电池历史学家/流量统计(流量统计)检查网络使用情况时,进入设备的数据量几乎相同。我尝试过使用不同的库来实现Websocket和使用不同的Android设备。
我很难相信android发送的ACKS和收到的消息一样大,尽管它只是一个由四个字符组成的小字符串。
所以我的问题是:
使用Websocket时,下面的结果
使用Android电池历史学家时接收/传输的数据
利用网络报告在iOS上接收/传输数据
发布于 2018-05-22 14:30:03
ACK能像一个简单的包含4个字符的TCP包那样大吗?
ACK由IP和TCP报头以及无有效负载组成。对于IPv4,这意味着至少有20个字节的IP头和20个字节的,即40个字节。具有4字节有效负载的数据包仅大4字节,即44字节或仅10%。
安卓系统中的网络报告显示,68350字节与61370字节之间的差异为11%。这与预期的差异相匹配。
我在这里不熟悉iOS的度量,但是它可能只测量应用程序的有效负载(即4个字节),或者简单地忽略没有有效负载的数据包,即ACK的。
https://stackoverflow.com/questions/50469755
复制相似问题