云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

网络工具中的瑞士军刀:Ping和Tracert

jxf315 2024-12-08 14:53:50 教程文章 41 ℃

引言:

Ping命令是一种存在于Windows、Unix和Linux系统下的一种命令。往往常用于测试分析判断网络问题所在,ping命令使用ICMP协议,该协议是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息,控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。我们平时可以通过Ping命令来检测当前网络是否联通。Ping测试的是端对端连通性,通常用来作为可用性的检查。但是某些病毒木马会强行大量远程执行Ping命令抢占你的网络资源,导致系统变慢、网速变慢。

Tracert是一个常用的网络工具命令,用于追踪分析数据包在网络中传输时经过的路径,并输出到达目标地址的延迟情况和节点信息。它主要用于确定 IP 数据报访问目标所采取的路径。Tracert 通过向目标发送不同生存时间(TTL)的 Internet 控制消息协议(ICMP)回应数据包,在数据包经过的每个路由器上,TTL 值会减 1,当 TTL 为 0 时,该路由器会返回一个 ICMP 超时消息。这样,Tracert 就可以获取到数据包在网络中经过的各个节点(路由器)的信息,包括 IP 地址和响应时间等。

一、Ping命令详解

Ping命令检查连通性的五个步骤:

1) 使用ipconfig /all观察本地网络设置是否正确;

2) Ping 127.0.0.1,127.0.0.1回送地址,Ping回送地址是为了检查本地的TCP/IP协议有没有设置好;

3) Ping本机IP地址,这样是为了检查本机的IP地址是否设置有误;

4) Ping本网网关或本网IP地址,这样的是为了检查硬件设备是否有问题,也可以检查本机与本地网络连接是否正常;(在非局域网中这一步骤可以忽略)

5) Ping远程IP地址,这主要是检查本网或本机与外部的连接是否正常。

在检查网络连通的过程中可能出现一些错误,这些错误总的来说分为最常见。

1) Request Timed Out

请求超时(Request timed out)

这是经常会碰到的提示信息,有下面几种情况:

i. 对方主机不存在或关机。

ii. 与对方不在同一网段内(路由除外):在不通过路由的情况下,无法ping通不同网段的主机。通过路由能找到对方的情况下也能够ping通。

iii. 对方存在,但设置了ICMP数据包过滤(比如防火墙设置):怎样知道对方是存在,还是不存在呢,可以用带参数 -a 的Ping命令探测对方,如果能得到对方的计算机名称,则说明对方是存在的,是有防火墙设置,如果得不到,多半是对方不存在或关机,或不在同一网段内。

iv. 本机多张网卡设置冲突:如果一台主机有两个网卡,两个网卡的IP处于一个网段,在IP层协议看来,这台主机就有两个不同的接口处于同一网段内。当从这台主机ping其他的机器时,会存在这样的问题:本机不知道数据包要从哪个接口发出,因为两个网络接口都连接在同一网段。从其他主机ping这台主机时,请求包从特定的网卡来,ICMP只须简单地将目的、源地址互换,并更改一些标志即可,ICMP应答包能顺利发出,其他主机也就能成功ping通这台机器了。


2) Destination Host Unreachable

目标主机不可达(Destination host Unreachable)


对方与自己不在同一网段内,而自己又未设置默认的路由,就会出现“目标主机不可达”。或者网线出了故障。

如何用Ping命令来判断一条链路的速度?

我们分析一次完整的Ping请求过程,Ping命令是依托于ICMP协议的,ICMP协议的存在就是为了更高效的转发IP数据报和提高交付成功的机会。Ping命令除了依托于ICMP,在局域网下还要借助于ARP协议,ARP协议能根据IP地址反查出计算机的MAC地址。另外ARP是有缓存的,为了保证ARP的准确性,计算机会更新ARP缓存。它所利用的原理是网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连接相通,时延是多少。

我们先来看看它有那些返回数据:

在例子中“字节=32”表示ICMP报文中有32个字节的测试数据(这是估算速度的关键数据),“时间=40ms”是往返时间。ping可以用来测试端对端的平均通信速率,而非点对点的链路通信速率。

因此需要注意,这种算法在局域网并不适用,因为在局域网中速度非常的快,几乎少于1ms,而Ping的最小时间分辨率是1ms,所以根本无法用Ping命令来检测速度。如果想测试速度那就要用专门仪器来检测。

二、Tracert命令概述

通过 Tracert 命令,用户可以了解网络的连通性情况,发现网络中的故障点或延迟较大的节点,对于网络故障排查和性能评估具有重要意义。它能帮助网络管理员或技术人员确定网络数据包传输的路径和潜在问题,以便采取相应的措施来优化网络性能或解决网络故障。

如何使用Tracert命令

在 Windows 10 系统中,可以使用以下步骤来使用 tracert 命令:

1) 打开命令行:可以通过在开始菜单中搜索“命令提示符”或“CMD”来打开命令行窗口。

2) 输入命令:在命令行中输入“tracert”,后面加上要跟踪的目标地址或域名,例如“tracert example.com”。

3) 查看结果:tracert 命令会显示从本地计算机到目标地址的路由路径,包括经过的每个路由器的 IP 地址和响应时间。

此外,tracert 命令还有一些常用的选项,例如:

-d :不解析主机名,直接显示 IP 地址,以加快显示速度。

-h :指定跟踪的跃点数,默认值为 30。

-w :指定等待每个应答的时间(以毫秒为单位),默认值为 3000 毫秒。


通过使用 tracert 命令,用户可以了解网络连接的情况,确定数据包在网络中的传输路径,有助于排查网络故障和优化网络性能。


Tracert命令被广泛用于网络故障处理和网络性能分析。比如你需要查询到百度的IP地址的路由信息,你可以使用Tracert命令,windows系统会自动进行路由跟踪,并打印出许多节点信息

三、 实际应用场景及案例分析

在一个真实的场景里,某公司员工反映上网缓慢,IT支持人员便可以通过执行Ping和Tracert操作初步判断问题是出在哪一段。通过对总部服务器的连续几轮Ping检测发现有较高的丢包率;然后用Tracert进一步查探具体路由节点存在问题,结果表明某个跳跃点出现显著延时。于是工程师联系该跳转点所在的ISP提供商解决了此瓶颈,有效提升了整个办公环境的网络性能。


假设我们要检测与网站 example.com 的网络情况。

首先执行 ping example.com ,结果可能如下:

可以看到数据包全部成功接收,没有丢包,且延迟较为稳定。

接着执行 tracert example.com ,可能得到如下结果:

从这个结果可以清晰地看到数据包经过的各个路由节点以及相应的响应时间,有助于了解网络的具体路径和潜在问题。关于“请求超时”部分,可能存在以下几种可能:

i. 目标主机不可达或者不在线。

ii. 网络故障,如路由器或链路问题。

iii. 防火墙或安全软件阻止了 tracert 请求。

iv. tracert 请求的超时时间设置得太短。


解决方法:

i. 检查目标主机是否在线,并且确保没有网络地址转换(NAT)或防火墙阻止tracert命令。

ii. 尝试ping目标地址,以确定目标是否可达。

iii. 如果可能,尝试使用其他路由来运行tracert,以排除特定路由器或链路问题。

iv. 检查本地计算机的网络配置,确保没有错误的IP地址、子网掩码或默认网关设置。

v. 如果你是网络管理员,检查网络中的路由器和防火墙设置,确保它们没有阻止ICMP数据包。

vi. 如果问题依然存在,可能需要联系网络服务提供商或中间网络设备的管理员来进一步诊断问题。


四、结论

综上所述,无论是初级用户还是资深系统管理员都应当学会掌握Ping和Tracert这两种简单但强大的工具。虽然现代有很多图形界面的网络监测软件提供更丰富的选项和视觉反馈,但在某些特定情况下原始的命令行方式依然不可或缺,因为Ping和Tracert不需要借助任何第三方软件,即可在windows系统上实现网络检测。懂得灵活运用这两把"瑞士军刀"对确保网络安全顺畅地运作至关重要。




文章引用:

1、cmd命令中ping命令的应用

https://jingyan.baidu.com/article/fa4125ace1adf028ac709295.html

2、涨姿势:Tracert的详细使用方法(网络路由跟踪命令)

https://best.pconline.com.cn/yuanchuang/12840476.html

3、详解ping命令

https://syjx.gdhsc.edu.cn/info/1012/1675.htm

Tags:

最近发表
标签列表