自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

屢次讓拳頭翻車(chē)的ping:作者因車(chē)禍英年早逝,千行源碼改變世界

人工智能 新聞
無(wú)論在微博還是知乎,不少“ping”相關(guān)話題的熱度已經(jīng)過(guò)千萬(wàn)甚至上億。

本文經(jīng)AI新媒體量子位(公眾號(hào)ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)聯(lián)系出處。

也是沒(méi)想到,“ping”這么個(gè)計(jì)算機(jī)術(shù)語(yǔ),竟然在英雄聯(lián)盟MSI話題下被討論上了熱搜。

無(wú)論在微博還是知乎,不少“ping”相關(guān)話題的熱度已經(jīng)過(guò)千萬(wàn)甚至上億。

從話題下的討論來(lái)看,不少網(wǎng)友甚至產(chǎn)生了對(duì)ping的研究熱情:

說(shuō)起來(lái),經(jīng)常玩聯(lián)機(jī)游戲的小伙伴,想必對(duì)ping都不陌生。

誰(shuí)還沒(méi)感受過(guò)幾次被ping值支配的恐懼呢?(手動(dòng)狗頭)

△高ping戰(zhàn)士無(wú)所畏懼

ping值越高,代表著打游戲時(shí)的網(wǎng)絡(luò)延遲越高,表現(xiàn)到游戲中,就是延遲低的比延遲高的人更快做出各種(擊殺、移動(dòng)等)動(dòng)作。

注意,這里的ping值并不代表你的網(wǎng)速。

這么說(shuō)吧,如果你的數(shù)據(jù)包是一份快遞的話,網(wǎng)速越高代表卡車(chē)噸量越大,而ping值則代表了這輛卡車(chē)能跑得多快、路上有多堵。

越低的ping值,意味著你的網(wǎng)絡(luò)越暢通,但和它一次能搬運(yùn)多少數(shù)據(jù)并沒(méi)有什么關(guān)系。

但你知道,ping最初是如何被發(fā)明出來(lái)的嗎?

其實(shí),這個(gè)如今在打游戲、開(kāi)會(huì)和測(cè)延遲中“無(wú)處不在”的計(jì)算機(jī)技術(shù),當(dāng)年竟然是被“隨手”寫(xiě)出來(lái)的。

故事還要從80年代的時(shí)候說(shuō)起。

來(lái)自1983年的千行代碼

這個(gè)名叫ping的工具,最初是由一位叫Michael John Muuss的老哥搞出來(lái)的。

Muuss出生于1958年,從約翰·霍普金斯大學(xué)畢業(yè)后,在美國(guó)陸軍一個(gè)名叫“阿伯丁試驗(yàn)場(chǎng)”的兵器試驗(yàn)中心做研究,主要與計(jì)算機(jī)網(wǎng)絡(luò)和幾何建模等方向有關(guān)。

例如,光線追蹤在80年代剛火起來(lái)那會(huì)兒,Muuss老哥就已經(jīng)在潛心研究相應(yīng)的技術(shù)了。

期間他做了不少相關(guān)成果,但反而是“隨手發(fā)明”出來(lái)的ping,如今成了最著名的網(wǎng)絡(luò)工具之一。

ping應(yīng)用廣泛到什么程度?

從最初的Unix系統(tǒng),到如今的Windows、macOS和Linux,ping雖然歷經(jīng)好幾個(gè)版本,但一直在各個(gè)操作系統(tǒng)上被廣泛使用。

如今我們?cè)贕itHub上隨手一搜,能看到不少實(shí)現(xiàn)ping的代碼,但這些都不是最初的版本了。

Muuss在自己的主頁(yè)上提供了ping最初的源代碼,然而我們點(diǎn)進(jìn)去后就會(huì)發(fā)現(xiàn),網(wǎng)頁(yè)跳轉(zhuǎn)了好幾次,最終似乎也無(wú)法下載:

事實(shí)上,我們還能看到Muuss的主頁(yè),本身就已經(jīng)不尋常了——

2000年時(shí),Muuss不幸因車(chē)禍去世,當(dāng)時(shí)他才剛過(guò)完自己的42歲生日:

還好在Web Archive上保存了那個(gè)時(shí)候的網(wǎng)頁(yè),我們得以看見(jiàn)ping的第一版源代碼。

這份代碼文件名是ping.shar,一個(gè)非常有年代感的后綴,如今已經(jīng)基本沒(méi)有人使用這個(gè)文件擴(kuò)展名了。

它是一個(gè)41KB大小的文件,從編輯器中來(lái)看,大約有1600行左右的代碼:

那么,ping究竟是怎么誕生的,又是如何被普及開(kāi)來(lái)的?

ping是如何被普及的?

最初編寫(xiě)這份代碼的時(shí)候,Muuss完全沒(méi)想過(guò)它后來(lái)會(huì)這么火。

畢竟最初的ping,只是一個(gè)用來(lái)排查實(shí)驗(yàn)室網(wǎng)絡(luò)異常的測(cè)試工具。

事情源于1983年12月的一天,Muuss在阿伯丁試驗(yàn)場(chǎng)的彈道研究實(shí)驗(yàn)室(BRL)中做實(shí)驗(yàn)時(shí),突然發(fā)現(xiàn)實(shí)驗(yàn)室的IP網(wǎng)絡(luò)出現(xiàn)了異常情況。

這時(shí)候,他回憶起幾個(gè)月前,自己曾參與過(guò)一次DARPA在挪威舉辦的研討會(huì),會(huì)上一位名叫Dave Mills的博士,提到過(guò)用ICMP數(shù)據(jù)包測(cè)試延遲的方法。

Muuss認(rèn)為,這個(gè)工具的原理,就像是發(fā)射聲波并接收它的回波以計(jì)算往返時(shí)間一樣。

△聲吶,圖源維基百科

剛好Muuss在大學(xué)的時(shí)候?qū)W過(guò)不少聲吶和雷達(dá)系統(tǒng)的建模,他很快寫(xiě)了一個(gè)程序,并將之命名為ping,在聲吶中指代聲音脈沖、也就是信號(hào)的意思。

隨后,Muuss只用了一晚上,就將ping的程序?qū)懥顺鰜?lái)。

雖然寫(xiě)出來(lái)的時(shí)候,他所在的實(shí)驗(yàn)室已經(jīng)將網(wǎng)絡(luò)問(wèn)題解決了,但Muuss還是將它作為一個(gè)公有領(lǐng)域軟件(public domain software,使用時(shí)無(wú)需許可證)發(fā)布了出去。

很快加州大學(xué)伯克利分校的Erick Engelke發(fā)現(xiàn)了這份軟件,將它改寫(xiě)了一版(遵循GPL開(kāi)源協(xié)議),放入伯克利自己開(kāi)發(fā)的Unix操作系統(tǒng)BSD4.3版本中。

隨后,計(jì)算機(jī)工程師Tim Crawford又基于MIT開(kāi)源協(xié)議,寫(xiě)了一個(gè)ReactOS版本的ping代碼。

再之后,ping被各個(gè)計(jì)算機(jī)大牛寫(xiě)入各種操作系統(tǒng)如macOS、Linux和Windows中,又加入了更多的功能。

△Linux系統(tǒng)上的ping.c

如今我們看到的各個(gè)系統(tǒng)中自帶的ping工具,早已經(jīng)不是最初那個(gè)ping.shar程序了,其功能和用法都要豐富得多。

那么,如今的ping放到計(jì)算機(jī)上來(lái)說(shuō),究竟是一個(gè)怎樣的工具呢?

ping的基本原理

許多計(jì)算機(jī)發(fā)燒友可能會(huì)說(shuō),自己ping用得賊6。

不過(guò),大伙兒知道ping是如何工作的嗎?

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

ping,是網(wǎng)絡(luò)結(jié)構(gòu)里應(yīng)用層的一個(gè)網(wǎng)絡(luò)管理命令,是判斷兩臺(tái)主機(jī)或路由節(jié)點(diǎn)之間網(wǎng)絡(luò)是否暢通的重要手段。

簡(jiǎn)單來(lái)說(shuō):如果兩臺(tái)主機(jī)“ping”得通,說(shuō)明它們之間可以建立連接。

一個(gè)小知識(shí):公網(wǎng)(因特網(wǎng))IP地址具有唯一性。

這就像你在世界范圍(公網(wǎng))內(nèi)的一棟樓(主機(jī)or路由節(jié)點(diǎn)等)里工作,這棟樓的地址(IP地址)相對(duì)世界來(lái)說(shuō)是唯一的,不過(guò)樓里面的其他門(mén)牌號(hào)(內(nèi)網(wǎng)IP地址)則不一定是唯一的。

利用這一特性,我們就能用ping測(cè)試兩臺(tái)主機(jī)或路由節(jié)點(diǎn)中的網(wǎng)絡(luò)連通性。

具體來(lái)說(shuō),就是使用ping命令,先給目標(biāo)IP地址發(fā)送一個(gè)遵循ICMP協(xié)議的數(shù)據(jù)包(echo request)。

然后可以根據(jù)返回?cái)?shù)據(jù)包的情況(丟包、速度等),檢查主機(jī)或路由節(jié)點(diǎn)之間的網(wǎng)絡(luò)狀態(tài)。

Emm…ICMP協(xié)議又是什么?

它的全稱是:Internet Control Message Protocol,即因特網(wǎng)控制報(bào)文協(xié)議,ICMP報(bào)文封裝在IP包里。

所謂“控制”,即在IP主機(jī)、路由節(jié)點(diǎn)之間傳遞控制消息,來(lái)反映數(shù)據(jù)包是否成功到達(dá)目標(biāo)端,以及反映網(wǎng)絡(luò)狀況等。

在IP通信中,當(dāng)IP包成功到達(dá)目標(biāo)地址并返回時(shí),會(huì)收到ping應(yīng)答;而當(dāng)IP包因?yàn)槟吃?,未能成功到達(dá)目標(biāo)地址、或未能成功從目標(biāo)地址返回時(shí),ICMP返回的數(shù)據(jù)包中將含有具體原因,如:網(wǎng)絡(luò)不可達(dá)、端口不可達(dá)等。

怎樣ping起來(lái)

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

ping命令在各個(gè)常見(jiàn)的操作系統(tǒng)中通用,這里以macOS為例:

從Finder中找到“終端”。

輸入ping+IP地址(網(wǎng)址或域名也可以),這里先以百度為例。

然后,即可查看每個(gè)數(shù)據(jù)包,從本電腦對(duì)百度的網(wǎng)絡(luò)服務(wù)器發(fā)送數(shù)據(jù),到接收到服務(wù)器反饋數(shù)據(jù)的延遲時(shí)間。

由于macOS發(fā)送的每個(gè)IP數(shù)據(jù)包默認(rèn)大小是64個(gè)字節(jié),所以返回的數(shù)據(jù)包大小也是64個(gè)字節(jié)。

而這里的延遲時(shí)間,就是ping值

除了輸入百度等網(wǎng)址,想要測(cè)兩臺(tái)主機(jī)之間的ping值也沒(méi)問(wèn)題,在一臺(tái)上輸入另一臺(tái)的IP地址即可:

所以,在玩網(wǎng)絡(luò)游戲的時(shí)候,如果ping值過(guò)高就會(huì)感覺(jué)操作延遲。

這個(gè)延遲的后果還挺嚴(yán)重的——

例如,在打王者排位的關(guān)鍵時(shí)刻,如果網(wǎng)絡(luò)連接(可能是自己的無(wú)線網(wǎng),也可能是附近的服務(wù)器)卡頓,明明自己已經(jīng)操作了,但由于敵方的操作反饋時(shí)間更快,所以只能眼睜睜得看著自己的英雄掛掉。

說(shuō)到這里,量子位急忙上號(hào)診斷了一下自己的網(wǎng)絡(luò)。

還好,王者榮耀的延遲低于70ms算正常。

對(duì)于LOL,玩家可打開(kāi)設(shè)置菜單,點(diǎn)擊“顯示”標(biāo)簽,然后點(diǎn)擊“切換FPS顯示”按鈕,查看自己的ping值。

至于鎖ping(人工延遲)技術(shù)要如何實(shí)現(xiàn),目前拳頭游戲官方給出了一份技術(shù)說(shuō)明:

從說(shuō)明中來(lái)看,拳頭表示在線下場(chǎng)館比賽時(shí)加入了一個(gè)人工延遲工具調(diào)整ping值。

由于人工延遲工具的代碼運(yùn)算出現(xiàn)錯(cuò)誤,導(dǎo)致線下ping值過(guò)高,目前已通過(guò)調(diào)節(jié)配置修復(fù),但游戲中顯示的ping值會(huì)因?yàn)檫@一配置調(diào)節(jié)出現(xiàn)問(wèn)題。

具體人工延遲工具(鎖ping)的技術(shù)代碼,目前拳頭游戲并未公開(kāi)。不過(guò)GitHub上也已經(jīng)有人做過(guò)人工延遲工具,如下面這個(gè)clumsy開(kāi)源模擬器,可以模擬延遲、丟包等bug。感興趣的小伙伴可以去看看:

One More Thing

在自己的主頁(yè)上,Muuss還po出了另一個(gè)與“ping”相關(guān)的小趣事。

早在1933年,美國(guó)兒童圖畫(huà)書(shū)作家Marjorie Flack就曾經(jīng)出版過(guò)一個(gè)繪本:《ping的故事》。

在這里,ping是故事主角小鴨子的名字:

小鴨子ping和伙伴還有主人一起生活在一條船上,每天最后一只回家的小鴨子要被打屁股。一天傍晚,ping貪玩落在了最后,為了不挨打,它沒(méi)有回家,由此在長(zhǎng)江中開(kāi)啟了一段奇妙冒險(xiǎn),最終平安回到主人的船上。

這看似是一本尋常的兒童讀物,但多年后,有讀者發(fā)現(xiàn),小鴨子ping的故事與計(jì)算機(jī)中的ping數(shù)據(jù)包竟有異曲同工之妙!

一個(gè)ping數(shù)據(jù)包就像一只鴨子,它和其他數(shù)據(jù)包(更多鴨子)一起,在主機(jī)(小船)上度過(guò)了一段時(shí)期。

然后,這些數(shù)據(jù)包(鴨子)通過(guò)一個(gè)通道(橋)離開(kāi)主機(jī)(船),進(jìn)入互聯(lián)網(wǎng)(長(zhǎng)江)。

數(shù)據(jù)包(鴨子)在另一個(gè)主機(jī)(另一艘船)上經(jīng)過(guò)短暫的時(shí)間后,又回到了原來(lái)的主機(jī)(船)上。

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

責(zé)任編輯:張燕妮 來(lái)源: 量子位
相關(guān)推薦

2019-03-07 11:11:08

Vamei抑郁癥 Python

2025-01-03 11:24:03

AI谷歌研究

2013-07-10 13:45:52

yum

2020-10-15 15:42:12

天翼云普惠AI

2018-03-08 14:31:06

喬布斯求職信蘋(píng)果

2024-01-03 07:11:58

2019-08-19 01:02:47

2018-10-15 09:20:08

代碼軟件工程師

2022-11-21 16:40:29

融視

2024-03-13 11:36:22

2021-09-08 10:00:31

數(shù)據(jù)中心經(jīng)濟(jì)電信

2022-07-13 17:56:09

Bug率產(chǎn)品經(jīng)理系數(shù)

2011-07-26 09:01:05

Java

2024-03-13 11:34:21

2019-03-04 15:53:02

SQL存儲(chǔ)系統(tǒng)

2022-08-29 15:01:58

5G數(shù)字經(jīng)濟(jì)醫(yī)療
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)