说起来,经常玩联机游戏的小伙伴,想必对 ping 都不陌生。谁还没感受过几次被 ping 值支配的恐惧呢?(手动狗头)
△ 高 ping 战士无所畏惧
ping 值越高,代表着打游戏时的网络延迟越高,表现到游戏中,就是延迟低的比延迟高的人更快做出各种(击杀、移动等)动作。
注意,这里的 ping 值并不代表你的网速。
这么说吧,如果你的数据包是一份快递的话,网速越高代表卡车吨量越大,而 ping 值则代表了这辆卡车能跑得多快、路上有多堵。
越低的 ping 值,意味着你的网络越畅通,但和它一次能搬运多少数据并没有什么关系。
但你知道,ping 最初是如何被发明出来的吗?其实,这个如今在打游戏、开会和测延迟中“无处不在”的计算机技术,当年竟然是被“随手”写出来的。故事还要从 80 年代的时候说起。
来自 1983 年的千行代码
这个名叫 ping 的工具,最初是由一位叫 Michael John Muuss 的老哥搞出来的。
Muuss 出生于 1958 年,从约翰・霍普金斯大学毕业后,在美国陆军一个名叫“阿伯丁试验场”的兵器试验中心做研究,主要与计算机网络和几何建模等方向有关。
例如,光线追踪在 80 年代刚火起来那会儿,Muuse 老哥就已经在潜心研究相应的技术了。期间他做了不少相关成果,但反而是“随手发明”出来的 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
在自己的主页上,Muuse 还 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
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。