网易首页 > 网易号 > 正文 申请入驻

屡次让拳头翻车的ping:作者因车祸英年早逝,千行源码改变世界

0
分享至

Alex 萧箫 发自 凹非寺
量子位 | 公众号 QbitAI

也是没想到,“ping”这么个计算机术语,竟然在英雄联盟MSI话题下被讨论上了热搜。

无论在微博还是知乎,不少“ping”相关话题的热度已经过千万甚至上亿。


从话题下的讨论来看,不少网友甚至产生了对ping的研究热情:


说起来,经常玩联机游戏的小伙伴,想必对ping都不陌生。

谁还没感受过几次被ping值支配的恐惧呢?(手动狗头)


△高ping战士无所畏惧

ping值越高,代表着打游戏时的网络延迟越高,表现到游戏中,就是延迟低的比延迟高的人更快做出各种(击杀、移动等)动作。


注意,这里的ping值并不代表你的网速。
这么说吧,如果你的数据包是一份快递的话,网速越高代表卡车吨量越大,而ping值则代表了这辆卡车能跑得多快、路上有多堵。
越低的ping值,意味着你的网络越畅通,但和它一次能搬运多少数据并没有什么关系。

但你知道,ping最初是如何被发明出来的吗?

其实,这个如今在打游戏、开会和测延迟中“无处不在”的计算机技术,当年竟然是被“随手”写出来的。

故事还要从80年代的时候说起。

来自1983年的千行代码

这个名叫ping的工具,最初是由一位叫Michael John Muuss的老哥搞出来的。


Muuss出生于1958年,从约翰·霍普金斯大学毕业后,在美国陆军一个名叫“阿伯丁试验场”的兵器试验中心做研究,主要与计算机网络和几何建模等方向有关。

例如,光线追踪在80年代刚火起来那会儿,Muuss老哥就已经在潜心研究相应的技术了。

期间他做了不少相关成果,但反而是“随手发明”出来的ping,如今成了最著名的网络工具之一。

ping应用广泛到什么程度?

从最初的Unix系统,到如今的Windows、macOS和Linux,ping虽然历经好几个版本,但一直在各个操作系统上被广泛使用。

如今我们在GitHub上随手一搜,能看到不少实现ping的代码,但这些都不是最初的版本了。


Muuss在自己的主页上提供了ping最初的源代码,然而我们点进去后就会发现,网页跳转了好几次,最终似乎也无法下载:



事实上,我们还能看到Muuss的主页,本身就已经不寻常了——

2000年时,Muuss不幸因车祸去世,当时他才刚过完自己的42岁生日:


还好在Web Archive上保存了那个时候的网页,我们得以看见ping的第一版源代码

这份代码文件名是ping.shar,一个非常有年代感的后缀,如今已经基本没有人使用这个文件扩展名了。

它是一个41KB大小的文件,从编辑器中来看,大约有1600行左右的代码:


那么,ping究竟是怎么诞生的,又是如何被普及开来的?

ping是如何被普及的?

最初编写这份代码的时候,Muuss完全没想过它后来会这么火。

毕竟最初的ping,只是一个用来排查实验室网络异常的测试工具

事情源于1983年12月的一天,Muuss在阿伯丁试验场的弹道研究实验室(BRL)中做实验时,突然发现实验室的IP网络出现了异常情况。

这时候,他回忆起几个月前,自己曾参与过一次DARPA在挪威举办的研讨会,会上一位名叫Dave Mills的博士,提到过用ICMP数据包测试延迟的方法。

Muuss认为,这个工具的原理,就像是发射声波并接收它的回波以计算往返时间一样。


△声呐,图源维基百科

刚好Muuss在大学的时候学过不少声呐和雷达系统的建模,他很快写了一个程序,并将之命名为ping,在声呐中指代声音脉冲、也就是信号的意思。

随后,Muuss只用了一晚上,就将ping的程序写了出来。

虽然写出来的时候,他所在的实验室已经将网络问题解决了,但Muuss还是将它作为一个公有领域软件(public domain software,使用时无需许可证)发布了出去。

很快加州大学伯克利分校的Erick Engelke发现了这份软件,将它改写了一版(遵循GPL开源协议),放入伯克利自己开发的Unix操作系统BSD4.3版本中。

随后,计算机工程师Tim Crawford又基于MIT开源协议,写了一个ReactOS版本的ping代码。

再之后,ping被各个计算机大牛写入各种操作系统如macOS、Linux和Windows中,又加入了更多的功能。


△Linux系统上的ping.c

如今我们看到的各个系统中自带的ping工具,早已经不是最初那个ping.shar程序了,其功能和用法都要丰富得多。

那么,如今的ping放到计算机上来说,究竟是一个怎样的工具呢?

ping的基本原理

许多计算机发烧友可能会说,自己ping用得贼6。

不过,大伙儿知道ping是如何工作的吗?

知其然,不妨也了解一下背后的所以然:

ping,是网络结构里应用层的一个网络管理命令,是判断两台主机或路由节点之间网络是否畅通的重要手段。

简单来说:如果两台主机“ping”得通,说明它们之间可以建立连接。


一个小知识:公网(因特网)IP地址具有唯一性。

这就像你在世界范围(公网)内的一栋楼(主机or路由节点等)里工作,这栋楼的地址(IP地址)相对世界来说是唯一的,不过楼里面的其他门牌号(内网IP地址)则不一定是唯一的。

利用这一特性,我们就能用ping测试两台主机或路由节点中的网络连通性。

具体来说,就是使用ping命令,先给目标IP地址发送一个遵循ICMP协议的数据包(echo request)。

然后可以根据返回数据包的情况(丢包、速度等),检查主机或路由节点之间的网络状态。

Emm…ICMP协议又是什么?

它的全称是:Internet Control Message Protocol,即因特网控制报文协议,ICMP报文封装在IP包里。

所谓“控制”,即在IP主机、路由节点之间传递控制消息,来反映数据包是否成功到达目标端,以及反映网络状况等。

在IP通信中,当IP包成功到达目标地址并返回时,会收到ping应答;而当IP包因为某原因,未能成功到达目标地址、或未能成功从目标地址返回时,ICMP返回的数据包中将含有具体原因,如:网络不可达、端口不可达等。

怎样ping起来

下面介绍一下ping的基本操作。

ping命令在各个常见的操作系统中通用,这里以macOS为例:

从Finder中找到“终端”。


输入ping+IP地址(网址或域名也可以),这里先以百度为例。

然后,即可查看每个数据包,从本电脑对百度的网络服务器发送数据,到接收到服务器反馈数据的延迟时间。


由于macOS发送的每个IP数据包默认大小是64个字节,所以返回的数据包大小也是64个字节。

而这里的延迟时间,就是ping值

除了输入百度等网址,想要测两台主机之间的ping值也没问题,在一台上输入另一台的IP地址即可:


所以,在玩网络游戏的时候,如果ping值过高就会感觉操作延迟。

这个延迟的后果还挺严重的——

例如,在打王者排位的关键时刻,如果网络连接(可能是自己的无线网,也可能是附近的服务器)卡顿,明明自己已经操作了,但由于敌方的操作反馈时间更快,所以只能眼睁睁得看着自己的英雄挂掉。


说到这里,量子位急忙上号诊断了一下自己的网络。


还好,王者荣耀的延迟低于70ms算正常。

对于LOL,玩家可打开设置菜单,点击“显示”标签,然后点击“切换FPS显示”按钮,查看自己的ping值。


至于锁ping(人工延迟)技术要如何实现,目前拳头游戏官方给出了一份技术说明:


从说明中来看,拳头表示在线下场馆比赛时加入了一个人工延迟工具调整ping值。

由于人工延迟工具的代码运算出现错误,导致线下ping值过高,目前已通过调节配置修复,但游戏中显示的ping值会因为这一配置调节出现问题。


具体人工延迟工具(锁ping)的技术代码,目前拳头游戏并未公开。不过GitHub上也已经有人做过人工延迟工具,如下面这个clumsy开源模拟器,可以模拟延迟、丢包等bug。感兴趣的小伙伴可以去看看:


One More Thing

在自己的主页上,Muuss还po出了另一个与“ping”相关的小趣事。

早在1933年,美国儿童图画书作家Marjorie Flack就曾经出版过一个绘本:《ping的故事》。


在这里,ping是故事主角小鸭子的名字:

小鸭子ping和伙伴还有主人一起生活在一条船上,每天最后一只回家的小鸭子要被打屁股。一天傍晚,ping贪玩落在了最后,为了不挨打,它没有回家,由此在长江中开启了一段奇妙冒险,最终平安回到主人的船上。

这看似是一本寻常的儿童读物,但多年后,有读者发现,小鸭子ping的故事与计算机中的ping数据包竟有异曲同工之妙!

一个ping数据包就像一只鸭子,它和其他数据包(更多鸭子)一起,在主机(小船)上度过了一段时期。

然后,这些数据包(鸭子)通过一个通道(桥)离开主机(船),进入互联网(长江)。

数据包(鸭子)在另一个主机(另一艘船)上经过短暂的时间后,又回到了原来的主机(船)上。

所以,今天你的ping值如何?


参考链接:
[1]https://blog.paessler.com/a-brief-history-of-ping
[2]https://ftp.arl.army.mil/~mike/ping.html
[3]https://s.weibo.com/weibo?q=%23MSI%E7%8E%B0%E5%9C%BA%E5%AE%9E%E9%99%85ping%E5%80%BC%23
[4]https://github.com/iputils/iputils/blob/master/ping/ping.c
[5]https://en.wikipedia.org/wiki/Mike_Muuss
[6]https://ngabbs.com/read.php?tid=30095855&rand=196
[7]https://github.com/jagt/clumsy
[8]拳头技术博客公告:https://weibo.com/ttarticle/p/show?id=2309404770219460790187

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
秦始皇的子孙后代被找到,这4个姓氏都是他后裔,有你的姓氏吗?

秦始皇的子孙后代被找到,这4个姓氏都是他后裔,有你的姓氏吗?

丹宝说文史
2022-07-01 10:20:22
A股:下周的走势可能会非常严峻

A股:下周的走势可能会非常严峻

生活中的栗子
2022-07-01 16:04:30
跑了三个月滴滴下来给我最大的感受就是:浪费生命。

跑了三个月滴滴下来给我最大的感受就是:浪费生命。

钢蛋街拍大杂烩
2022-07-01 11:12:27
遭沉重打击,就是否从中国购买军舰发生争吵,心态有点怪

遭沉重打击,就是否从中国购买军舰发生争吵,心态有点怪

瞩望云霄
2022-07-01 08:00:08
女大学公交车上惨遭6人轮奸,凶手竟用手塞进下体把肠子拽出来了

女大学公交车上惨遭6人轮奸,凶手竟用手塞进下体把肠子拽出来了

长留纪实
2022-06-30 11:53:44
断气就扣船?俄罗斯3艘LNG船被德国“收归国有”!希腊船东懵了

断气就扣船?俄罗斯3艘LNG船被德国“收归国有”!希腊船东懵了

国际船舶网
2022-07-01 13:55:15
俄军血战小岛4个月,击败美乌多次进攻:最后乘坐3艘快艇强行突围

俄军血战小岛4个月,击败美乌多次进攻:最后乘坐3艘快艇强行突围

无定河
2022-07-01 16:12:59
今年七一,香港警队迎来这些新变化

今年七一,香港警队迎来这些新变化

环球网资讯
2022-07-01 07:28:21
21岁外国女子胸部疯长,洗澡都非常不方便,无奈发贴跟网友求助

21岁外国女子胸部疯长,洗澡都非常不方便,无奈发贴跟网友求助

科学理论
2022-07-01 14:03:17
北约拒绝让步,埃尔多安喊话普京体面退出,考验俄军的时候到了

北约拒绝让步,埃尔多安喊话普京体面退出,考验俄军的时候到了

一支傲娇的玫瑰
2022-07-01 01:51:47
你敢布水雷,我就封锁水道!我专家对美亮剑,建议以其道还治其身

你敢布水雷,我就封锁水道!我专家对美亮剑,建议以其道还治其身

戎评说
2022-07-01 14:09:44
考生估分710,父亲大摆酒席提前庆祝,分数揭晓,实际考了多少分?

考生估分710,父亲大摆酒席提前庆祝,分数揭晓,实际考了多少分?

高考满分数学
2022-07-01 15:05:30
王菲离婚“魔咒”又重来?谢霆锋要重走她两任前夫的路了?

王菲离婚“魔咒”又重来?谢霆锋要重走她两任前夫的路了?

银翼聊娱乐
2022-06-29 14:27:43
江苏无锡多地划定为高中风险区

江苏无锡多地划定为高中风险区

界面新闻
2022-07-01 18:04:19
司马南在海大被扔鞋是第一次,但不会是最后一次!竟然还笑得出来

司马南在海大被扔鞋是第一次,但不会是最后一次!竟然还笑得出来

历史档案馆5
2022-07-01 11:20:44
李泽钜女儿获重任,梁洛施三个儿子成为输家,未来没有机会接班了

李泽钜女儿获重任,梁洛施三个儿子成为输家,未来没有机会接班了

林小明担扑
2022-06-30 19:14:22
梁朝伟刘嘉玲尴尬了,与梁朝伟在一起6年的曾华倩晒出与22岁儿子在一起的幸福照片

梁朝伟刘嘉玲尴尬了,与梁朝伟在一起6年的曾华倩晒出与22岁儿子在一起的幸福照片

香粽综艺
2022-07-01 07:22:33
又一起悲剧!尼泊尔果断开闸放水,印度61个村庄突遭淹没

又一起悲剧!尼泊尔果断开闸放水,印度61个村庄突遭淹没

低调yangzw
2022-07-01 14:08:45
伊朗够狠:40年共枪毙6000多LGBT人士,刚刚又处决一个!

伊朗够狠:40年共枪毙6000多LGBT人士,刚刚又处决一个!

宸泽文化
2022-07-01 12:43:00
两针30万,50万臀部整形,女贪官的“美容腐败”有多令人咋舌?

两针30万,50万臀部整形,女贪官的“美容腐败”有多令人咋舌?

李砍柴
2022-06-30 17:36:33
2022-07-01 19:18:44
量子位
量子位
追踪人工智能动态
6464文章数 152768关注度
往期回顾 全部

科技要闻

突遭做空!蔚来的大麻烦 才刚刚开始

头条要闻

拉脱维亚总统:若俄获胜 将给中国树立"开战"榜样

头条要闻

拉脱维亚总统:若俄获胜 将给中国树立"开战"榜样

体育要闻

杜兰特引发联盟地震 篮网超市开张

娱乐要闻

港风版画传:再现香港文娱圈名场面

财经要闻

汽车要闻

飞凡R7内饰首秀 三联屏比7个iPhone 13还大

态度原创

教育
时尚
家居
亲子
军事航空

教育要闻

定制课程 专业培训 继续教育 品质服务

金靖的这段限定恋爱,逼得男方只想逃跑?

家居要闻

湖北95后美女独居85平两居 把家装成"公主城堡"

亲子要闻

明星孙俪跟普通家长一样,面对神兽出笼放暑假,同样的焦虑

军事要闻

航母“带刀侍卫”055南昌舰10万海里历程

进入关怀模式