故事作者:万泉河

最近创作

看看TA的故事

【热门】0830【万泉河】网络调试利器:PING

已锁定

万泉河

  • 帖子

    10860
  • 精华

    132
  • 被关注

    913

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

【热门】0830【万泉河】网络调试利器:PING

1589

15

2023-08-30 22:54:00

【热门】0830【万泉河】网络调试利器:PING




准确说PING并不是个软件, 而只是个CMD指令。 


有人会笑了, PING, 很简单的,所有人都会。没啥可讨论的干货。嗯。 如果你这样认为, 那文章最后我的疑问希望有人能够可以给我答案。 


这个指令在WINDOWS中执行很简单,打开CMD窗口, 或者开始按钮的右键菜单中的Windows PowerShell或者Windows PowerShell(管理员),在窗口中执行:


PING 127.0.0.1 –t


就可以连续PING通电脑自身。而加上后面的-t,就会是连续不停地PING 。而不加的话只能PING 4个回合。 注意,指令部分可以大写或小写,而后面的参数t就只能是小写了。 


然后,第一个干货来了:


如果你在执行PING指令真的如我上述所述的操作, 那说明你还没有意识到你的操作效率太低了。


更好的方式应该是:

右键中选择运行,然后直接在运行框中录入指令。 

 


然后就可以看到持续PING的结果。 这时候必须有参数-t,否则结果一闪而过,根本看不清楚。 

 


这种方式的好处是, 你近期的所有运行指令(包括PING指令)都可以被记忆,然后需要时只需要从列表中找到曾经PING过的IP。 这是WIN10。 如果WIN7,通常还需要从菜单栏的属性中把默认隐藏的运行指令释放出来。

 


大部分情况下,需要测试的IP地址总是有限的那么几个,所以你就可以省掉了记忆IP的麻烦。 而如果列表中没有这个IP,也可以在已有的指令里找一个接近的稍微修改一下。而以后这个IP还会继续被增加记忆到列表中。 


我因为要调试的网络设备多,看看我积累了多少。


我经常见到有工程师在现场调试网络的时候,不厌其烦地重复输入PING指令,甚至同一个IP地址,我每次看到他们慢腾腾的操作,都禁不住心里暗暗发问:你们是在演示自己的键盘输入有多熟练吗?


从历史记忆中选择需要的操作时间1S, 而录入的时间恐怕要超过10S。仅此一招,效率就差出来了9倍。 


有被击中的回复请扣1 。和我一样操作的请扣2 。


以上只是开胃菜,然后进入正题。 


我在前面写过一篇文章《0818 【万泉河】工控工程师的新梦想:电脑自由》,文中讲述了普天之下所有电脑都可以做网上邻居,都可以远程桌面互相登录操作的实现方法。 


而在进行远程桌面调试之前,通常需要PING指令来确认网络已经打通。 包括要进行以太网的PLC调试,也需要先PING通。 或者如果原本正常的通讯突然中断了, 也首先需要用PING指令来确认网络通畅。 


所以PING指令绝对是网络调试的先行利器。然而我在上一篇文章里面忘记了提及了,所以这回补上, 也尽量补全一点。  


PING指令的本质是一种网络服务。 通讯伙伴之所以能对收到的PING指令做出回复,其实是因为其提供了叫做ICMP协议的服务。 而它的通讯既不是TCP也不是UDP,而是独立于两者之外,或者更上层的一种协议。 本文的目的不在于介绍协议原理,所以对其原理描述到此点到为止。 有兴趣的读者可以去找相关协议的原文读懂理解,而其实那方面很枯燥,并没多大意思。 


所以可想而知,哪怕一个最简单的以太网设备, 比如ET200接口模块,它们在提供基本的网络通讯功能之外,都需要提供ICMP服务协议, 以便于你调试时确认网络通畅。 而如果没有支持这个协议,其实正常的通讯功能也完全有可能运行,只不过在网络调试时有所不便而已。 总之,不是运行成功的先决条件。 


所以,我们也完全可以想得到,有的网络元件有可能会关掉其ICMP服务。 比如一些特殊的网络设备,在同一个网口上有多个IP,设计者就有可能只对其中某个IP开启ICMP,你可以PING通,然而其余的IP,就有可能不允许PING。 


对电脑来说, 去PING别人纵然很容易,然而它自己,却未必那么容易允许被PING。比如WIN7和WIN10,缺省状态下防火墙都是对PING指令屏蔽的。 如果要对一台电脑PING,首先需要设置其防火墙允许PING。当然也可以先把防火墙关掉,测试确认是防火墙阻挡之后,再次进行防火墙的设置。  


打开网络防火墙的高级设置,入站规则中,将规则按协议顺序排列:

 


可以看到一批ICMPV4和ICMPV6的协议,我们可以顺便将这些规则全部启用。 而其实对IPV4来说PING指令放行的规则是:文件和打印机共享(回显请求-ICMPV4-IN)。

放行后网上邻居的其它电脑即可PING通,而禁用后会再次不通。 


系统默认禁用被PING的原因是,如果这台服务器是裸漏在公网上, 那么如果有黑客操纵几千上万台电脑同时对这台服务器进行PING,也会导致这台电脑瘫痪。 这是一种最简单的DOS攻击,被成为死亡之PING。


所以对于公网上的电脑,放开PING是要小心的,需要有防范手段。 


而绝大多数的云服务提供商,所提供的云服务器, 不仅仅在操作系统镜像中,而且在云平台的管理侧也有一层防火墙规则,也仍然需要单独设置打开放行ICMP,才可以PING。 


前天,有用户要我协助调试跨网络的网上邻居和远程桌面。我把我的移动云的云服务器账户信息发给他要他测试。 他从我给建立的内网网络可以PING通云服务器,也可以远程桌面连接,然而我给他的公网IP却PING不通,问我咋回事。


我说,可能是我在云平台管理控制台中忘记打开了。 

 


于是,我进入云平台控制台, 增加了一条ICMP的规则后, 再次尝试,就畅通无阻了。 


申请这个云平台的目的是为了方便随时随地使用手机和IPAD等也都可以登录到自己的内网,甚至以此为跳板跳到更多的自己的电脑。 


所以,其实,在手机侧也有必要进行PING指令测试。手机也是以太网设备, 同一路由器下,对其IP进行PING 查询也可以通。 而从手机侧如何发出PING指令来测试其它的设备的在线情况呢?


答案是,不管是ANDRIOD还是IOS,都可以有免费的PING 功能的APP可以下载使用。 

 



 

它们的图标就是一个黑色背景的DOS指令窗口。 


这些工具对从事网络调试来说,都非常重要且实用了。 


前几天,有WANQ用户联系咨询我,说远程的PLC连不上, PING 不通,而现场只有一个机械安装工。 我从WANQ的云平台上可以看到他远端的WANQ设备分明正常在线,然后就只有怀疑远端的WANQ的网口、网线、到PLC的那一段网络了。 而教给客户测试的方法就是,可以在手机上安装一个PING, 手机连到就地的WANQ的WIFI网络,测试PING 其PLC, 以验证发现网络问题。 


那么虽然现场的工人没有电脑工具,然而只需要有手机,也仍然可以配合进行网络调试。


我们可以发现一个规律, 在做网络调试的时候, 发起网络通讯的一方,需要有PING指令配合验证。而被动通讯的一方,通常不需要。 甚至,由于网络的单向穿透特性,也只有发起通讯的一方的验证才可信。 


比如,你不需要从一台简单的网络设备, 比如通信仪表,网关,PN从站,路由器等发出PING查询。甚至PLC。


然而PLC其实并不是一个简单网络设备,现在的性能比较好的PLC,其本质上都已经是一台微型电脑了。 所以它在网络中都不仅仅是接受网络连接, 还有可能是发起网络连接的一方。 


比如S7-1500 CPU,可以发起网络通讯,与SQL数据库通讯,与MQTT服务器通讯。 这些类似功能都有功能块分享或出售。 尤其后者, MQTT服务器BROKER往往位于公网上,那么在CPU发起通讯之前,我们是不是也需要做个通讯测试,验证网络已经通了,然后再去调试程序。 而不是调试了半天程序而不成功之后,也不知道网络是否通, CPU到底能不能连到公网上的服务器? 


那么,我的问题来了,在S7-1500中有没有PING指令, 如何运行PING指令测试?


在此之前,在不能完全确定网络通常之前,网络延迟多少,经过了多少个网关,TTL值多少一概不知道, 一概一头雾水,要我调试类似的SQL通讯, MQTT通讯, 我是不愿意的。我甚至情愿不做这样的网络通讯方案,情愿用其它的方案替代。 

 


【热门】0830【万泉河】网络调试利器:PING 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3239条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。