当前位置: 首页 > 科技观察

使用 Linux 的 ping 命令诊断网络连接问题

时间:2023-03-12 23:07:19 科技观察

使用Linux的Ping命令诊断网络连接问题一个人可以连接到世界另一端的电脑。通过这种方式,网络可以实现互联网、云、文件共享、媒体流、远程管理、打印等服务。但是当网络出现问题时,有时很难诊断是哪个环节出了问题。接下来介绍一下:最基本的网络连接诊断工具之一——ping命令。基本ping命令当您无法访问本地网络中的计算机或Internet中的服务器时,您可以ping其IP地址。ping将Internet控制消息协议(ICMP)数据包发送到目标IP地址。当我们要判断网络连接状态时,ICMP是一个非常有用的协议。本质上,ICMP是一种响应和回复信号。让我们从近到远排除故障。请先ping您自己的计算机,以确保您的计算机正在运行网络堆栈。你正在操作的计算机称为主机localhost,本地环回地址为:127.0.0.1。ping命令可以使用主机的主机名主机名、IP地址(即127.0.0.1)或仅使用简写0来表示“主机”。您可以使用-c选项来控制发送的数据包数。$ping0-c1PING0(127.0.0.1)56(84)bytesofdata.64bytesfrom127.0.0.1:icmp_seq=1ttl=64time=0.069ms---0pingstatistics---1packetstransmitted,1received,0%packetloss,time0msrttmin/avg/max/mdev=0.069/0.069/0.069/0.000ms确认本地网络堆栈正常运行后,接下来,你可以ping你路由器的IP地址。路由器的IP地址通常以192.168或10开头。实际的IP地址取决于路由器的配置。当不指定发送多少个请求时,可以使用Ctrl+C终止ping的运行。$ping192.168.0.1PING192.168.0.1(192.168.0.1)56(84)字节的数据。来自192.168.0.100:icmp_seq=2重定向主机(新nexthop:192.168.0.1)来自192.168.0.100Redirseq=3icmp(新nexthop:192.168.0.1)From192.168.0.100:icmp_seq=4RedirectHost(Newnexthop:192.168.0.1)From192.168.0.100:icmp_seq=5RedirectHost(Newnexthop:192.168.0.1)^CIfyoucanIfyoucanping您的路由器、有线或无线连接正常。LAN上的其他主机呢?您可以ping各种设备,但不能保证所有设备都会响应,因为有些设备会丢弃ICMP数据包,但很多设备都会响应。比如我可以ping我的打印机:$ping192.168.0.4ping路由器以外的其他服务器确保自己的网络连通后,还可以ping路由器服务器以外的其他服务器。同样,并不是所有的服务器都能接收到ICMP数据包,更不用说响应ICMP数据包了。但是也有一些服务器可以接收和响应ICMP数据包,而Internet中一个重要的服务器就是域名服务器nameserver。Google的域名解析服务器DNS服务器的IP地址好记,会响应ping请求:$ping-c28.8.8.8PING8.8.8.8(8.8.8.8)56(84)bytesofdata.64来自8.8.8.8的字节:icmp_seq=1ttl=116time=53.3ms来自8.8.8.8的64个字节:icmp_seq=2ttl=116time=53.5ms---8.8.8.8ping统计数据---2个数据包已传输,2个已接收,0%丢包,时间1000msrttmin/avg/max/mdev=53.304/53.424/53.544/0.120ms当你无法连接到一个网站时,你可以查询全球DNS网络,找出其主机服务器的地址,然后ping服务器。这至少会告诉您网站是否因为托管服务已关闭而关闭,或者这是否只是网络服务器问题。例如,假设您尝试访问example.com并发现它失败了。首先,使用host命令查找example.com的IP地址:$hostexample.comexample.comhasaddress93.184.216.34example.comhasIPv6address2606:2800:220:1:248:1893:25c8:1946example.com邮件由0处理然后,ping网站的IP地址:$ping93.184.216.34-c1使用IPv6不仅可以PingIPv4,还可以PingIPv6。通过指定-4或-6选项可以仅使用IPv4或IPv6。设置数据包大小您可以使用-s选项更改要发送的ICMP数据包的大小。默认数据大小为56字节,加上8字节的标头,总共64字节的ICMP数据包。下面的例子修改发送的ICMP数据包大小为35+8=43字节:$ping-s35-c58.8.8.8可以使用-D选项让每次Ping打印出当前回复前的时间戳。时间戳是UNIX时间戳加上微秒:$ping-D8.8.8.8PING8.8.8.8(8.8.8.8)56(84)字节数据。[1634013430.297468]64字节来自8.8.8.8:icmp_seq=1ttl=116time=53.3ms[1634013431.298738]64bytesfrom8.8.8.8:icmp_seq=2ttl=116time=53.1ms设置时间间隔/长度可以使用-i选项改变两次ping请求之间的间隔。以下示例将ping间隔更改为2秒:$ping-i2您还可以使用-w选项在一段时间(以秒为单位)后终止ping。$ping-w6ping的变体ping有许多变体。例如,iputils包提供了ping命令;Busybox有ping命令;BSD有;甚至还有一个GUIping:gping,可用于Linux、macOS和Windows。您可以在GitHub上找到有关gping的更多信息。一起来学习一下ping命令,虽然简单,但是可以帮助你诊断网络连接问题。下次遇到网络连接问题时,让ping命令成为您进行故障排除的第一个工具。