首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Websocket根据操作系统提供不同的数字

Websocket根据操作系统提供不同的数字
EN

Stack Overflow用户
提问于 2018-05-22 14:05:23
回答 1查看 48关注 0票数 1

我正在做一个小测试,每0.5秒使用Node.js从ws服务器向客户端发送一个短字符串(4-8字节)。客户端要么使用iOS/Android,要么使用web浏览器。除了我想的TCP-ACKS之外,客户机不会将任何东西发送回服务器。奇怪的是,当我使用iOS网络报告在XCode中调试应用程序时,我只能看到客户端在连接建立时发送一些字节(约500字节),可能是在HTTP握手期间。剩余的时间--零数据从设备中输出,只有数据进入。当接收Chrome中的数据并使用Nettop跟踪数据时,也得到了相同的结果。

令人困惑的是,在Android上,当使用Android分析器/电池历史学家/流量统计(流量统计)检查网络使用情况时,进入设备的数据量几乎相同。我尝试过使用不同的库来实现Websocket和使用不同的Android设备。

我很难相信android发送的ACKS和收到的消息一样大,尽管它只是一个由四个字符组成的小字符串。

所以我的问题是:

  1. 难道Nettop/XCode网络报告完全忽略了所有的ACKS,所以在现实中,Chrome/iOS和Android中发送的数据一样多吗?
  2. 在Android系统中使用的库有什么“错误”吗?还是它的操作系统有问题呢?
  3. ACK能像一个简单的包含4个字符的TCP包那样大吗?

使用Websocket时,下面的结果

使用Android电池历史学家时接收/传输的数据

利用网络报告在iOS上接收/传输数据

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50469755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档