关于您的编辑,为了帮助您理解。网络遵循一种称为“开放式源互连(OSI)”的模型。该模型分为七个不同的层,每个层都有一个功能。
这些层在此处:
![OSI Model](https://istack.dev59.com/48Shn.gif)
Wireshark检测位于第三层的数据包,由路由器处理。网络接口卡(NIC)将分配的数据转换为数据包以通过电线发送。只有当您的NIC将其转换为路由器处理的数据包时,Wireshark才能检测到该数据包。一旦转换为数据包,它就包含以下信息:
- 4位包含版本(IPV4或IPV6)
- 4位包含互联网头。
- 8位包含服务类型或服务质量和优先级。
- 16位包含数据包的字节长度。
- 16位包含标识符,以帮助重建来自片段的数据包。
- 3位,第一个是零,后跟一个标志,表示允许分段还是不允许。数量。
- 13位包含片段偏移量,用于标识到原始位置的位置。
- 8位包含生存时间(TTL)和路由器间跳数。
- 8位包含协议(TCP,UDP,ICMP等)
- 16位包含标题校验和
- 32位包含源IP地址
- 32位包含目标IP地址
这些是创建此类数据包时创建的关键160位。
这是什么意思?
您知道,Wireshark需要二十秒钟才能检测到您的数据包。因此我们可以得出结论,您的应用程序实际上需要二十秒钟来构建此数据包。
我们知道服务器也需要重组此数据包以处理数据并可能发送请求。
我们也知道路由器就像交通警察一样,将您的数据发送到互联网或本地网络。
这增加了很多推断,但我该去哪里呢?
您有一个名为:tracert的实用工具。
平均而言,路径请求需要一到两毫秒通过五到六英尺的电缆传递,因此如果初始跳跃生成一到两毫秒,但第二个跳跃在二十到三十毫秒内触发,则可以使用简单的公式:
6 * 20
根据我们的
tracert当前速度,我们可以估算时间持续时间。这是一种非常通用的方法,但存在工具以实现精确准确性。但是跳数越多,到达目的地所需的时间就越长。同时,你需要乘以更多因素。
那么客户端和服务器之间呢?
局域网(LAN):网络的内部效率取决于每个网络协议、设备和物理介质的优化。网络管理员必须通过速度来衡量可靠性,以及网络生成的所有流量。因此,设备的吞吐量和物理介质非常重要。您不希望十辆汽车汇入一个单车道隧道,这可能会造成瓶颈,同样适用于网络。
广域网(WAN):这基本上是连接到互联网、云的方式。想象一下:您的计算机位于LAN上,路由器连接到WAN。然后,您的ISP很可能有一个LAN,然后将其WAN打开到更大的分销设施。它继续向上工作,直到到达互联网。
那我能做什么呢?
你知道现在的情况,但我能做什么呢?
当你生成你的服务时,你显然希望确保你的代码精简高效。因为效率对速度非常关键。所以改变缓冲区大小、传输速率等等可以极大地提高你的应用程序。
显然,良好的代码实践会有所帮助。
但我的代码非常稳定啊?
如果你认为此时你的代码不是问题,或者你主机和创建服务的方法不是问题,那么这些因素可能是原因:
- 本地计算机可能产生过多的交互,因此需要更长的时间。
- 本地网络产生过多的交互或效率低下/吞吐量低。
- 你的请求正在远距离传输,所以时间被延迟了。
- 你的互联网服务提供商可能有硬件防火墙、代理等,扫描这些数据包。
- 你的服务器可能有过多的请求,或者主机方法不够有效。
这些是较大的变量。你所能尝试的就是重构服务,并确保你的服务器以最有效的方式进行主机。否则,你需要让信息技术团队参与,这是至关重要的。
请注意,您与该服务的接口体验可能比其他客户好或差。
我假设您部署在一个位置,并且可能距离服务器有几个州的距离。
工具:
命令行:
- Ping
- Tracert
网络和协议分析工具:
- Fiddler(HTTP/HTTPS):查看Fiddler是否显示任何HTTP状态代码以进行故障排除。
- Wireshark:将分析您的网络流量,可以帮助您计算时间持续时间。
还有其他可用于缓解和测试网络速度甚至到其他位置的实用程序,只需搜索“网络工具”。Fluke有一些。
希望这能解释为什么Wireshark甚至要花20秒才能在网络上显示数据包。
希望能对您有所帮助。