屡次让腾讯上热搜的ping 发明人英年早逝:留下千行源码改变( 二 )


屡次让腾讯上热搜的ping 发明人英年早逝:留下千行源码改变
文章图片

文章图片

那么 , ping究竟是怎么诞生的 , 又是如何被普及开来的?
ping是如何被普及的?
最初编写这份代码的时候 , Muuss完全没想过它后来会这么火 。
毕竟最初的ping , 只是一个用来排查实验室网络异常的测试工具 。
事情源于1983年12月的一天 , Muuss在阿伯丁试验场的弹道研究实验室(BRL)中做实验时 , 突然发现实验室的IP网络出现了异常情况 。
这时候 , 他回忆起几个月前 , 自己曾参与过一次DARPA在挪威举办的研讨会 , 会上一位名叫DaveMills的博士 , 提到过用ICMP数据包测试延迟的方法 。
Muuss认为 , 这个工具的原理 , 就像是发射声波并接收它的回波以计算往返时间一样 。
刚好Muuss在大学的时候学过不少声呐和雷达系统的建模 , 他很快写了一个程序 , 并将之命名为ping , 在声呐中指代声音脉冲、也就是信号的意思 。
随后 , Muuss只用了一晚上 , 就将ping的程序写了出来 。
虽然写出来的时候 , 他所在的实验室已经将网络问题解决了 , 但Muuss还是将它作为一个公有领域软件(publicdomainsoftware , 使用时无需许可证)发布了出去 。
很快加州大学伯克利分校的ErickEngelke发现了这份软件 , 将它改写了一版(遵循GPL开源协议) , 放入伯克利自己开发的Unix操作系统BSD4.3版本中 。
随后 , 计算机工程师TimCrawford又基于MIT开源协议 , 写了一个ReactOS版本的ping代码 。
再之后 , ping被各个计算机大牛写入各种操作系统如macOS、Linux和Windows中 , 又加入了更多的功能 。
如今我们看到的各个系统中自带的ping工具 , 早已经不是最初那个ping.shar程序了 , 其功能和用法都要丰富得多 。
那么 , 如今的ping放到计算机上来说 , 究竟是一个怎样的工具呢?
ping的基本原理
许多计算机发烧友可能会说 , 自己ping用得贼6 。
不过 , 大伙儿知道ping是如何工作的吗?
知其然 , 不妨也了解一下背后的所以然:
ping , 是网络结构里应用层的一个网络管理命令 , 是判断两台主机或路由节点之间网络是否畅通的重要手段 。
简单来说:如果两台主机“ping”得通 , 说明它们之间可以建立连接 。
屡次让腾讯上热搜的ping 发明人英年早逝:留下千行源码改变
文章图片

文章图片

一个小知识:公网(因特网)IP地址具有唯一性 。
这就像你在世界范围(公网)内的一栋楼(主机or路由节点等)里工作 , 这栋楼的地址(IP地址)相对世界来说是唯一的 , 不过楼里面的其他门牌号(内网IP地址)则不一定是唯一的 。
【屡次让腾讯上热搜的ping 发明人英年早逝:留下千行源码改变】利用这一特性 , 我们就能用ping测试两台主机或路由节点中的网络连通性 。
具体来说 , 就是使用ping命令 , 先给目标IP地址发送一个遵循ICMP协议的数据包(echorequest) 。
然后可以根据返回数据包的情况(丢包、速度等) , 检查主机或路由节点之间的网络状态 。
Emm…ICMP协议又是什么?
它的全称是:InternetControlMessageProtocol , 即因特网控制报文协议 , ICMP报文封装在IP包里 。
所谓“控制” , 即在IP主机、路由节点之间传递控制消息 , 来反映数据包是否成功到达目标端 , 以及反映网络状况等 。
在IP通信中 , 当IP包成功到达目标地址并返回时 , 会收到ping应答;而当IP包因为某原因 , 未能成功到达目标地址、或未能成功从目标地址返回时 , ICMP返回的数据包中将含有具体原因 , 如:网络不可达、端口不可达等 。