关于您的编辑,以帮助您理解。网络遵循称为开源互通 (OSI)的模型。该模型分为七个不同的层,所有层都有一个功能。
这些层在这里:

Wireshark 检测位于第 3 层的数据包。由路由器处理。网络接口卡 (NIC)获取分配的数据并将其转换为数据包以通过网络发送。
在您的NIC将其转换为路由器处理的数据包之前,Wireshark 不会检测到该数据包。
您会看到,一旦将其转换为数据包,它就会包含以下信息:
- 4 位包含版本(IPV4 或 IPV6)
- 4 位包含 Internet 标头。
- 包含服务类型或服务质量和优先级的 8 位。
- 包含数据包长度的 16 位,以字节为单位。
- 包含识别标签的 16 位,以帮助从 Fragments 重建数据包。
- 3 位,第一个是零,后跟一个标志,表示是否允许分片。和数量。
- 包含片段偏移量的 13 位,用于标识原始位置的字段。
- 包含生存时间 (TTL)和跨路由器的跳数的 8 位。
- 8 位包含协议(TCP、UDP、ICMP 等)
- 包含Header Checksum的 16 位
- 包含源 IP 地址的 32 位
- 包含目标 IP 地址的 32 位
这些是创建此类数据包时创建的关键 160 位。
这是什么意思?
好吧,您知道Wireshark需要 20 秒才能检测到您的数据包。因此,我们一开始就知道您的应用程序需要 20 秒才能真正构建此数据包。
我们知道服务器还需要重建这个数据包,以便它可以处理数据并可能发送请求。
我们也知道路由器就像交通警察一样,通过互联网或本地网络发送您的数据。
好吧,这增加了很多推断?但我该去哪里?
您有一个名为:tracert
平均而言,通过 5 到 6 英尺的电缆需要一到两毫秒的路由请求,因此如果它生成一到两毫秒的初始跃点,但在 230 毫秒内触发第二个跃点,那么您可以使用一个简单的公式:
6 * 20
根据我们跟踪器的当前速度,我们可以估计持续时间。这是一种非常通用的方法,但存在用于精确准确性的工具。但是跳越多,到达目的地所需的时间就越多。此外,您将乘以更多。
从客户端到服务器之间的那个呢?
局域网(LAN):网络的内部效率是由于每个网络协议、设备和物理介质的优化。网络管理员必须以速度衡量可靠性;以及网络产生的所有流量。因此,设备吞吐量和物理中位数很重要。您不希望十辆汽车合并到一条单车道隧道中,这可能会产生同样适用于网络的瓶颈。
广域网(WAN):这本质上是与互联网、云的连接。可以这样想:您的计算机在 LAN 上,路由器连接到 WAN。然后你的 ISP 很可能有一个 LAN,然后它的 WAN 向更大的分发设施开放。它一直在工作,直到它到达互联网。
不过我能做什么?
你知道现在之间是什么,但我能做什么?
好吧,当您生成服务时,您显然希望确保您的代码精简且高效。因为效率对速度至关重要。因此,改变缓冲区大小、传输速率等可以极大地改进您的应用程序。
显然,良好的代码实践会有所帮助。
我的代码是坚如磐石吗?
如果您认为您的代码此时不是问题,或者您托管和创建服务的方法不是问题,那么这些因素可能是原因:
- 本地机器可能会产生过多的抖动,因此需要更长的时间。
- 本地网络正在产生过多的抖动或低效/低吞吐量。
- 您的请求是长途旅行,所以时间有所延迟。
- 您的 Internet 服务提供商可能具有扫描这些数据包的硬件防火墙、代理等。
- 您的服务器可能有过多的请求或 Host 方法效率不高。
这些是更大的变量。您可以尝试的只是重构服务并确保您的服务器以最有效的方式托管它。否则,您需要让信息技术团队参与进来,这一点至关重要。
但请记住这一点,您的体验可能比与此服务交互的其他客户更好或更差。
我是在假设您部署在一个位置并且您可能远离您的服务器的几个州的情况下说的。
工具:
命令行:
网络和协议分析仪:
- Fiddler (HTTP/HTTPS) :查看 Fiddler 是否显示任何 HTTP 状态代码以进行故障排除。
- Wireshark :将分析您的网络流量,这有助于持续时间。
还有其他实用程序可用于实际缓解和测试网络速度,甚至到其他位置,仅谷歌“网络工具”。福禄克有几个。
希望这可以解释为什么 Wireshark 甚至可能需要 20 秒才能在网络上显示数据包。
希望有帮助。