前言

这两天生活变动回到老家,把电脑装上玩了LOL,发现游戏中总是跳ping,气急败坏开始学习计网知识。

跃点跟踪-分段检测

网络连接是分段的,我的网络拓扑图应该是PC-路由器-光纤网关-外网
所以应该分别对这几个网关进行ping操作,需要使用跃点跟踪快速获取到这些跳转的ip地址:

tracert -d [ip|域名]

比较常用的就是用www.baidu.com测试

tracert -d www.baidu.com

ping测试延迟

接着就是对跃点的各个ip进行ping命令,测试网络延迟,分析究竟是哪一块出了问题。
Windows的持续ping操作是:

ping [ip] -t

这里会一直弹最新的ping结果,观察其延迟,进行分析。

可视化

为了方便观察,我(GPT)写了段python脚本把得到的延迟可视化为折线图。在ping一段时间后按CTRL+C结束ping操作,自动给结果画图

import subprocess
import re
import matplotlib.pyplot as plt

def ping_ip(ip_address):
    ping_command = ['ping', ip_address, '-t']
    ping_process = subprocess.Popen(ping_command, stdout=subprocess.PIPE)

    delays = []

    try:
        while True:
            output = ping_process.stdout.readline().decode('gb2312')
            print(output)
            if not output:
                break

            delay_match = re.search(r'时间[<=](\d+)ms', output)
            if delay_match:
                delay = int(delay_match.group(1))
                delays.append(delay)
                print(f"延迟: {delay}ms")

    except KeyboardInterrupt:
        ping_process.terminate()

    return delays

def plot_ping(delays):
    plt.plot(delays)
    plt.title('Ping delays')
    plt.xlabel('icmp_seq')
    plt.ylabel('delayTime (ms)')
    plt.show()

if __name__ == "__main__":
    ip_address = input("请输入要ping的IP地址: ")
    #ip_address = r'192.168.10.1'
    delays = ping_ip(ip_address)
    plot_ping(delays)

图表样例:
Figure_1

分析结果

图表分析

一番测试后,我发现我的电脑在ping路由器的时候就出现跳ping问题,而且是比较规律的跳ping隔一段时间是必定跳ping,如下图(纵轴是延迟,横轴是每一轮次)
Figure_1
光是PC到路由器就会跳ping这是很糟糕的情况,图上峰值延迟快到200ms,这网络玩LOL简直是坐牢。

IOS测试

在测试了PC后我怀疑是路由器的问题,于是要用别的设备验证一下假象,手头正好有台ipad,于是在和机箱相同的位置连接相同的网络,在appstore上下了个叫PING的程序进行检测。
检测导出结果和电脑的ping差不多

PING 192.168.10.1: 64 data bytes
------
#0 sendto: No route to host
#1 sendto: No route to host
64 bytes from 192.168.10.1: icmp_seq=2 ttl=64 time=4.151 ms
64 bytes from 192.168.10.1: icmp_seq=3 ttl=64 time=4.476 ms
64 bytes from 192.168.10.1: icmp_seq=4 ttl=64 time=12.932 ms
64 bytes from 192.168.10.1: icmp_seq=5 ttl=64 time=8.377 ms
64 bytes from 192.168.10.1: icmp_seq=6 ttl=64 time=4.538 ms
64 bytes from 192.168.10.1: icmp_seq=7 ttl=64 time=4.608 ms
64 bytes from 192.168.10.1: icmp_seq=8 ttl=64 time=7.274 ms

检测的结果导出为txt发到电脑上,同样写了个python做可视化,把文件丢到Data文件夹里

import os
import re
import matplotlib.pyplot as plt

def parse_ping_data(file_path):
    icmp_seq = []
    delays = []
    
    with open(file_path, 'r') as file:
        for line in file:
            match = re.search(r'icmp_seq=(\d+) ttl=\d+ time=([\d.]+) ms', line)
            if match:
                seq = int(match.group(1))
                delay = float(match.group(2))
                icmp_seq.append(seq)
                delays.append(delay)
    
    return icmp_seq, delays

def plot_ping_data(directory):
    files = os.listdir(directory)
    files = [file for file in files if file.endswith('.txt')]  # Assuming data files have .txt extension
    
    for file in files:
        file_path = os.path.join(directory, file)
        icmp_seq, delays = parse_ping_data(file_path)
        plt.plot(icmp_seq, delays, label=file)
    
    plt.xlabel('icmp_seq')
    plt.ylabel('Delay (ms)')
    plt.title('Ping Delay')
    plt.legend()
    plt.show()

# Example usage:
directory = r'D:\Data'
plot_ping_data(directory)

可以看到,跑了2次,第一次结果有一个异常高的值(可以当作误差去掉)第二次结果就非常稳定的在25ms内。
所以看来并不是路由器的问题,那很可能就是我电脑自己的问题了。
image

更换路由器测试

为了验证是我PC的问题,我用手机开热点让电脑连,然后ping手机热点。发现仍然波动严重。
image-1712248028128

各种尝试

失败案例

重装网卡驱动

找到主板的官网,重新下载网卡驱动,把现有驱动卸了重装。

重置winsock

CMD管理员win+r,重新启动

netsh winsock reset

重置各网络缓存

netsh winsock reset

netsh int ip reset

ipconfig /release

ipconfig /renew

ipconfig /flushdns

开启tls1.0,ssl3.0等

启动开始菜单,输入 “控制面板”,回车启动。选择 “Internet 选项”>“高级” 选项卡,勾选 “使用 SSL 3.0”、“使用 TLS 1.0”、“使用 TLS 1.1”、“使用 TLS 1.2”,应用并确定。

解决

绕了一圈能用的所有软方法都是试了一遍,但是还是没法解决,估计很有可能是网卡驱动问题。
最后只能拉了一根网线到路由器上,直接物理层面解决了。
附上一张对比图:
PC_compare

题外话

在对比路由器延迟的时候,我后面又用了几台其他设备测试,得到一张对比图。

可以看到小米的网是最差的,平均延迟要比苹果和华为高很多,华为有一些跳动和我电脑一开始的情况很像,平时平均延迟是和苹果非常接近的。
Figure_1_compare

参考

https://answers.microsoft.com/zh-hans/windows/forum/all/win10-wifi/86298925-83e4-4dd4-95e3-a811803deaac

https://answers.microsoft.com/zh-hans/windows/forum/all/win10系统使用wifi/88c71bd5-74bd-4284-8637-1e1576f6f5c8

Q.E.D.


寄蜉蝣于天地,渺沧海之一粟