Stories

Detail Return Return

IT術語中的低俗詞語②:早期ping命令源代碼中的quickie - Stories Detail

IT 術語(黑話)自有其傳承。早期黑客文化中,諷刺與反叛幾乎是一種身份象徵,不正經,才夠格。調侃、低俗乃至粗口風格的俚語成為黑客社羣的通用術語,其中一些詞語還沉澱到了官方文檔和源代碼中。

今天要和大家分享的低俗 IT 術語是“quickie”,出自早期 ping 命令的源代碼

一夜之間,ping 誕生了

1983 年年底,就職於美國彈道研究實驗室的 Mike Muuss 時年 25 歲,為了解決工作中煩人的網絡問題,他熬了個通宵編寫出了千行左右的代碼。一夜之間 ping 命令誕生了

Michael John Muuss 1958 年 10 月 16 日~2000 年 11 月 20 日

那一晚,Muuss 不僅用 C 語言編寫了 500 行左右的代碼,做出了 ping 命令,還順帶修改了操作系統 BSD Unix 4.2a 的內核。因為他發現雖然代碼能順利通過編譯,但程序的行為卻不符合預期,查來查去是內核不支持 ICMP 原始套接字(raw socket)導致的,而這正是 ping 所依賴的基礎功能。

Muuss 為 ping 命令設置了幾種工作模式,有每隔 1 秒就發送 1 個 ICMP_ECHO 數據包的默認模式,有一刻不停瘋狂發送數據包的洪水(flood)模式,還有這兩種模式的結合體:先不管三七二十一發出去幾個數據包看看,再進入平和的默認模式,這樣一股腦兒發送的數據包叫作 preload

在發送 preload 數據包時,Muuss 寫下了這樣的註釋:

fire off them quickies”!網絡出問題了,管它什麼原因呢,先發射幾個 ICMP_ECHO 數據包出去看看。

一夜成名,ping 成了系統標配

第二天,Muuss 興沖沖來到辦公室,打算用奮戰一夜的成果 ping 命令來分析煩人的網絡問題。但就在他熬夜編寫代碼的時候,一位同事竟把問題解決了。雖然 ping 失去了首秀的機會,但 BSD Unix 的維護者,加州大學伯克利分校的人察覺到了 ping 的價值,迫不及待地要走了 Muuss 修改後的內核代碼和 ping 的源代碼。

隨後,ping 就成了 BSD Unix 的標準組件。不久後,ping 又被移植到了其他的操作系統中。而今天,無論是 Windows、Linux 還是 macOS,在任何主流的操作系統上幾乎都可以使用 ping 命令來測試網絡通不通,網速快不快。

成為了標配的 ping 也“文明”了起來,在使用手冊(man ping)中,用於發送 preload 的 -l 選項的説明是:

-l preload
If preload is specified, ping sends that many packets as fast as possible before falling into its normal mode of behavior. Only the super-user may use this option.

quickies”改成了中規中矩的“as fast as possible”。


説點題外話吧。我曾在一條小街裏的寫字樓上工作過。每次加班到深夜,街道兩側的大多數店鋪早已關門,只剩街角一間小店還亮着粉燈,還有旁邊那家名叫“快客”的便利店在營業。

🔚

user avatar huandanshendeshoushudao Avatar puxiaoke6 Avatar fabarta Avatar rtedevcomm Avatar biliangxianting Avatar huamingshixunkeji Avatar huggingface Avatar amc Avatar
Favorites 8 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.