如果你在搜尋引擎中輸入“ARPANET”,搜尋相關圖片,你會看到許多地圖的圖片,上面是這個上世紀六十年代末七十年代初 美國政府建立的研究網路,該網路不斷延伸擴充套件,橫跨了整個美國。我猜很多人第一次瞭解到 ARPANET 的時候都看過這種地圖。
可以說,這些地圖很有意思,畢竟我們很難想象過去連線網路的計算機是那麼少,就連如此低保真的圖片都可以表示出美國全部機器的所在位置(這裡的低保真指的是高射投影儀成像技術,而不是大家熟知的 lo-fi 氛圍音樂)。不過,這些地圖是有問題的。地圖上用加粗的線條連線著大陸各地,強化了人們的一種觀念:ARPANET 最大的貢獻就是首次將橫跨美國東西兩地的電腦連線了起來。
今天,即便是在病毒肆虐、人們困居家中的情況下,網路也能把我們聯絡起來,可謂是我們的生命線。所以,如果認為 ARPANET 是最早的網際網路,那麼在那之前世界必然相互隔絕,畢竟那時還沒有今天的網際網路,對吧?ARPANET 首次透過計算機將人們連線起來,一定是一件驚天動地的大事。
但是,這一觀點卻與歷史事實不符,而且它也沒有進一步解釋 ARPANET 的重要性。
初露鋒芒
華盛頓希爾頓酒店坐落於國家廣場東北方向約 2.4 千米處的一座小山丘山頂附近。酒店左右兩側白色的現代化立面分別向外延展出半個圓形,活像一隻飛鳥的雙翼。1965 年,酒店竣工之後,《紐約時報》報導稱這座建築物就像“一隻棲息在山頂巢穴上的海鷗” [1]。
不過,這家酒店最有名的特點卻深藏在地下。在車道交匯處下方,有著一個巨大的蛋形活動場地,這就是人們熟知的國際宴會廳,多年來一直是華盛頓特區最大的無柱宴會廳。1967 年,大門樂隊在此舉辦了一場音樂會。1968 年,“吉他之神”吉米·亨德里克斯也在此舉辦了一場音樂會。到了 1972 年,國際宴會廳隱去了以往的喧囂,舉辦了首屆國際計算機通訊會議(ICCC)。在這場大會上,研究專案 ARPANET 首次公開亮相。
這場會議舉辦時間為 10 月 24-26 日,與會人數約八百人 [2]。在這場大會上,計算機網路這一新興領域的領袖人物齊聚一堂。因特網的先驅鮑勃·卡恩稱,“如果有人在華盛頓希爾頓酒店上方丟了一顆炸彈,那麼美國的整個網路研究領域將會毀於一旦” [3]。
當然,不是所有的與會人員都是電腦科學家。根據當時的宣傳廣告,這場大會將“以使用者為中心”,面向“律師、醫務人員、經濟學家、政府工作者、工程師以及通訊員等從業人員”[4]。雖然大會的部分議題非常專業,比如《資料網路設計問題(一)》與《資料網路設計問題(二)》,但是正如宣傳廣告所承諾的,大部分會議的主要關注點還是計算機網路給經濟社會帶來的潛在影響。其中甚至有一場會議以驚人的先見之明探討了如何積極利用法律制度“保護計算機資料庫中的隱私權益” [5]。
展示 ARPANET 的目的是作為與會者的一個附帶景點。在國際宴會廳或酒店更下一層的其他地方舉行的會議間歇,與會者可以自由進入喬治敦宴會廳(在國際宴會廳走廊盡頭的一個較小的宴會廳,也可以說是會議室)[6],那裡放置著用以訪問 ARPANET 的 40 臺由不同製造商生產的終端 [7]。這些終端屬於啞終端,也就是說,只能用來輸入命令、輸出結果,本身無法進行計算。事實上,在 1972 年,所以這些終端可能都是硬複製終端,即電傳打字機。啞終端與一臺被稱為“終端介面資訊處理機”(TIP)的計算機相連線,後者放置在宴會廳中間的一個高臺上。TIP 是早期的一種路由器,啞終端可透過 TIP 連線到 ARPANET。有了終端和 TIP,ICCC 與會者可以嘗試登入和訪問組成 ARPANET 的 29 個主機站的計算機 [8]。
為了展示網路的效能,美國全國各主機站的研究員們通力合作,準備了 19 個簡易的“情景”,供使用者測試使用。他們還出了 一份小冊子,將這些情景收錄其中。如果與會人員打算進入這個滿是電線與啞終端的房間,就會得到這樣一本小冊子 [9]。透過這些情景,研究員不僅要證明網路這項新技術的可行性,還要證明其實用性,因為 ARPANET 那時還只是“一條沒有汽車駛過的公路”。此外,來自國防部的投資者們也希望,公開展示 ARPANET 可以進一步激發人們對網路的興趣 [10]。
因此,這些情景充分展示了在 ARPANET 網路上可以使用的軟體的豐富性:有程式語言直譯器,其中一個用於麻省理工學院(MIT)的 Lisp 語言,另一個用於加州大學洛杉磯分校的數值計算環境 Speakeasy;還有一些遊戲,包括國際象棋和 康威生命遊戲;以及幾個也許最受與會者歡迎的人工智慧聊天程式,包括由 MIT 的電腦科學家約瑟夫·魏澤堡開發的著名聊天程式伊莉莎。
設定這些情景的研究人員小心翼翼地列出了他們想讓使用者在終端機上輸入的每一條命令。這點很重要,因為用於連線 ARPANET 主機的命令序列可能會因為主機的不同而發生變化。比如,為了能在 MIT 人工智慧實驗室的 PDP-10 微型電腦上測試人工智慧國際象棋程式,與會者需要按照指示輸入以下命令:
在下方程式碼塊中,
[LF]
、[SP]
以及[CR]
分別代表換行、空格以及Enter鍵。我在每行的//
符號後面都解釋了當前一行命令的含義,不過當時的小冊子本來是沒有使用這一符號的。
@r [LF] // 重置 TIP
@e [SP] r [LF] // “遠端回顯”設定, 主機回顯字元,TIP 不回顯
@L [SP] 134 [LF] // 連線 134 號主機
:login [SP] iccXXX [CR] // 登入 MIT 人工智慧實驗室的系統,“XXX”代表使用者名稱首字母縮寫
:chess [CR] // 啟動國際象棋程式
如果與會者輸入了上述命令,那麼他就可以體驗當時最先進的國際象棋程式,其棋盤佈局如下:
BR BN BB BQ BK BB BN BR
BP BP BP BP ** BP BP BP
-- ** -- ** -- ** -- **
** -- ** -- BP -- ** --
-- ** -- ** WP ** -- **
** -- ** -- ** -- ** --
WP WP WP WP -- WP WP WP
WR WN WB WQ WK WB WN WR
與之不同的是,如果要連線加州大學洛杉磯分校的 IBM System/360 機器,執行 Speakeasy 數值計算環境,與會者需要輸入以下命令:
@r [LF] // 重置 TIP
@t [SP] o [SP] L [LF] // “傳遞換行”設定
@i [SP] L [LF] // “插入換行”設定,即回車時傳送換行符。
@L [SP] 65 [LF] // 連線 65 號主機
tso // 連線 IBM 分時可選軟體系統
logon [SP] icX [CR] // 輸入使用者名稱,進行登入,“X”可為任意數字
iccc [CR] // 輸入密碼(夠安全!)
speakez [CR] // 啟動 Speakeasy
輸入上述命令後,與會者可以在終端中對矩陣進行乘法、轉置以及其他運算,如下所示:
:+! a=m*transpose(m);a [CR]
:+! eigenvals(a) [CR]
當時,這場演示給許多人都留下了深刻的印象,但原因並不是我們所想的那樣,畢竟我們有的只是後見之明。今天的人們總是記不住,在 1972 年,即便身處兩個不同的城市,遠端登入使用計算機也已經不是一件新鮮事兒了。在那之前的數十年,電傳打字機就已經用於與相隔很遠的計算機傳遞資訊了。在 ICCC 第一屆大會之前,差不多整整五年前,在西雅圖的一所高中,比爾·蓋茨使用電傳打字機,在該市其他地方的通用電氣(GE)計算機上執行了他的第一個 BASIC 程式。在當時,登入遠端計算機,執行幾行命令或者玩一些文字遊戲,只不過是家常便飯。因此,雖說上文提到的軟體的確很不錯,但是即便沒有 ARPANET,我剛剛介紹的兩個情景勉強也是可以實現的。
當然,ARPANET 一定帶來了新的東西。參加本次大會的律師、政治家與經濟學家可能被國際象棋遊戲與聊天機器人所吸引,但是網路專家們可能對另外兩個情景更感興趣,因為它們將 ARPANET 的作用更好地展示了出來。
在其中一個情景下,MIT 非相容分時系統(ITS)上執行了一個名為 NETWRK
的程式。NETWRK
命令下有若干個子命令,輸入這些子命令就能得到 ARPANET 各方面的執行狀態。SURVEY
子命令可以列出 ARPANET 上哪些主機正在執行和可用(它們都在一個列表中);SUMMARY.OF.SURVEY
子命令彙總了過去 SURVEY
子命令過去的執行結果,得出每臺主機的“正常執行比率”,以及每臺主機響應訊息的平均時間。SUMMARY.OF.SURVEY
子命令以表格的形式輸出結果,如下所示:
--HOST-- -#- -%-UP- -RESP-
UCLA-NMC 001 097% 00.80
SRI-ARC 002 068% 01.23
UCSB-75 003 059% 00.63
...
可以看到,主機編號的佔位不超過三個數字(哈!)。其他 NETWRK
子命令能夠檢視較長時間內查詢結果的概要,或者檢查單個主機查詢結果的日誌。
第二個情景用到了史丹佛大學開發的一款軟體 —— SRI-ARC 聯機系統。這款軟體功能齊全,非常優秀。美國發明家道格拉斯·恩格爾巴特在 “所有演示之母” 上演示的正是 SRI-ARC 聯機系統。這款軟體可以在加州大學聖芭芭拉分校的主機上執行本質上屬於檔案託管的服務。使用華盛頓希爾頓酒店的終端,使用者可以將史丹佛大學主機上建立的檔案複製到加州大學聖芭芭拉分校的主機上。操作也很簡單,只需執行 copy
命令,然後回答計算機的下列問題:
在下方的程式碼塊中,
[ESC]
、[SP]
與[CR]
分別代表退出、空格與Enter鍵;圓括號中的文字是計算機列印出的提示資訊;第三行中的退出鍵用於自動補全檔名。此處複製的檔案是<system>sample.txt;1
,其中檔名末尾的數字 1 代表檔案的版本號,<system>
表示檔案路徑。這種檔名是 TENEX 作業系統上面的慣用寫法。[11]
@copy
(TO/FROM UCSB) to
(FILE) <system>sample [ESC] .TXT;1 [CR]
(CREATE/REPLACE) create
這兩個情景看起來好像和最初提及的兩個情景沒有太大區別,但是此二者卻意義非凡。因為它們證明了,在 ARPANET 上面,不僅人們可以與計算機進行交流,計算機與計算機也可以 相互 交流。MIT 主機上的 SURVEY
命令的結果並非由人類定期登入並檢查每臺機器的執行狀態收集而來,而是由一款能在網路上與其他機器進行交流的軟體收集得到的。同樣的道理,在史丹佛大學與加州大學聖芭芭拉分校之間傳輸檔案的情景下,也沒有人守在兩所大學的終端旁邊,華盛頓特區的終端使用者僅僅使用了一款軟體,就能讓其他兩地的計算機相互對話。更重要的是,這一點無關乎你使用的是宴會廳裡的哪一臺電腦,因為只要輸入同樣的命令序列,就能在任意一臺電腦上瀏覽 MIT 的網路監視資料,或者在加州大學聖芭芭拉分校的計算機上儲存檔案。
這才是 ARPANET 的全新之處。本次國際計算機通訊會議演示的不僅僅是人與遠端電腦之間的互動,也不僅僅是遠端輸入輸出的操作,更是一個軟體與其他軟體之間的遠端通訊,這一點才是史無前例的。
為什麼這一點才是最重要的,而不是地圖上畫著的那些貫穿整個美國、實際連線起來的電線呢(這些線是租賃的電話線,而且它們以前就在那了!)?要知道,早在 1966 年 ARPANET 專案啟動之前,美國國防部的高階研究計劃署(ARPA)打造了一間終端室,裡面有三臺終端。三臺終端分別連線著位於 MIT、加州大學伯克利分校以及聖塔莫尼卡三地的計算機 [12]。對於 ARPA 的工作人員來說,即便他們身處華盛頓特區,使用這三臺計算機也非常方便。不過,這其中也有不便之處:工作人員必須購買和維護來自三家不同製造商的終端,牢記三種不同的登入步驟,熟悉三種不同的計算環境。雖然這三臺終端機可能就放在一起,但是它們只是電線另一端主機系統的延申,而且操作也和那些計算機一樣各不相同。所以說,在 ARPANET 專案誕生之前,遠端連線計算機進行通訊就已經實現了,但問題是不同的計算系統阻礙了通訊朝著更加先進複雜的方向發展。
集合起來,就在此刻
因此,我想說的是,說法一(ARPANET 首次透過計算機將不同地方的人們連線了起來)與說法二(ARPANET 首次將多個計算機系統彼此連線了起來)之間有著雲泥之別。聽起來似乎有些吹毛求疵,咬文嚼字,但是相較於說法二,說法一忽略了一些重要的歷史發展階段。
首先,歷史學家喬伊·利西·蘭金指出,早在 ARPANET 誕生之前,人們就已經在網路空間中進行交流了。在《美國計算機的人民歷史》一書中,蘭金介紹了幾個覆蓋全美的數字社群,這些社群執行在早於 ARPANET 的分時網路上面。從技術層面講,分時網路並不是計算機網路,因為它僅僅由一臺大型主機構成。這種計算機放置在地下室中,為多臺啞終端提供計算,頗像一隻又黑又胖的奇怪生物,觸手向外伸展著,遍及整個美國。不過,在分時網路時代,被後社交媒體時代稱為“網路”的大部分社會行為應有盡有。例如,Kiewit 網路是達特茅斯分時系統的延伸應用,服務於美國東北部的各個大學和高中。在 Kiewit 網路上,高中生們共同維護著一個“八卦檔案”,用來記錄其他學校發生的趣聞趣事,“在康涅狄格州和緬因州之間建立起了社交聯絡” [13]。同時,曼荷蓮女子學院的女生透過網路與達特茅斯學院的男生進行交流,或者是安排約會,或者是與男朋友保持聯絡 [14]。這些事實都發生在上世紀六十年代。蘭金認為,如果忽視了早期的分時網路,我們對美國過去 50 年數字文化發展的認識必然是貧瘠的:我們眼裡可能只有所謂的“矽谷神話”,認為計算機領域的所有發展都要歸功於少數的幾位天才,或者說網際網路科技巨頭的創始人。
回到 ARPANET,如果我們能意識到真正的困難是計算機 系統 的聯通,而非機器本身的物理連線,那麼在探討 ARPANET 的創新點時,我們就會更加傾向於第二種說法。ARPANET 是有史以來第一個分組交換網路,涉及到許多重要的技術應用。但是如果僅僅因為這項優勢,就說它是一項突破,我覺得這種說法本身就是錯的。ARPANET 旨在促進全美電腦科學家之間的合作,目的是要弄明白不同的作業系統、不同語言編寫的軟體如何配合使用,而非如何在麻省和加州之間實現高效的資料傳輸。因此,ARPANET 不僅是第一個分組交換網路,它還是一項非常成功且優秀的標準。在我看來,後者更有意思,畢竟我在部落格上曾經寫過許多頗有失敗的標準:語義網、RSS 與 FOAF。
ARPANET 專案初期沒有考慮到網路協議,協議的制定是後來的事情了。因此,這項工作自然落到了主要由研究生組成的組織 —— 網路工作組(NWG)身上。該組織的首次會議於 1968 年在加州大學聖芭芭拉分校舉辦 [15]。當時只有 12 人參會,大部分都是來自上述四所大學的代表 [16]。來自加州大學洛杉磯分校的研究生史蒂夫·克羅克參加了這場會議。他告訴我,工作組首次會議的參會者清一色都是年輕人,最年長的可能要數會議主席埃爾默·夏皮羅了,他當年 38 歲左右。ARPA 沒有派人負責研究計算機連線之後如何進行通訊,但是很明顯它需要提供一定的協助。隨著工作組會議的陸續開展,克羅克一直期望著更有經驗與威望的“法定成年人”從東海岸飛過來接手這項工作,但是期望終究還是落空了。在 ARPA 的默許之下,工作組舉辦了多場會議,其中包括很多長途旅行,差旅費由 ARPA 報銷,這些就是它給與工作組的全部協助了 [17]。
當時,網路工作組面臨著巨大的挑戰。從沒有人有過使用通用方式連線計算機系統的經驗,而且這本來就與上世紀六十年代末計算機領域盛行的全部觀點相悖:
那個時候典型的主機表現得就像是它是全宇宙唯一的計算機。即便是最簡短的交流會話,兩臺主機也無法輕易做到。並不是說機器沒辦法相互連線,只是連線之後,兩臺計算機又能做些什麼呢?當時,計算機和與其相連的其他裝置之間的通訊,就像帝王與群臣之間的對話一般。連線到主機的裝置各自執行著自己的任務,每臺外圍裝置都保持著常備不懈的狀態,等待著上司的命令。當時的計算機就是嚴格按照這類互動需求設計出來的;它們向讀卡器、終端與磁帶機等下屬裝置發號施令,發起所有會話。但是,如果一臺計算機拍了拍另一臺計算機的肩膀,說道,“你好,我也是一臺計算機”,那麼另一臺計算機可就傻眼了,什麼也回答不上來 [18]。
於是,工作組的最初進展很緩慢 [19]。直到 1970 年 6 月,也就是首次會議將近兩年之後,工作組才為網路協議選定了一套“正式”規範 [20]。
不過,到了 1972 年,在國際計算機通訊會議上展示 ARPANET 的時候,所有的協議已經準備就緒了。會議期間,這些協議運用到了國際象棋等情景之中。使用者執行 @e r
命令(@echo remote
命令的縮寫形式),可以指示 TIP 使用新 TELNET 虛擬終端協議提供的服務,通知遠端主機它應該回顯使用者輸入的內容。接著,使用者執行 @L 134
命令(@login 134
命令的縮寫形式),讓 TIP 在 134 號主機上呼叫初始連線協議,該協議指示遠端主機分配出連線所需的全部必要資源,並將使用者帶入 TELNET 會話中。上述檔案傳輸的情景也許用到了 檔案傳輸協議(FTP),而該協議恰好是在大會舉辦前夕才剛剛完成的 [21]。所有這些協議都是“三層”協議,其下的第二層是主機到主機的協議,定義了主機之間可以相互傳送和接收的資訊的基本格式;第一層是主機到介面通訊處理機(IMP)的協議,定義了主機如何與連線的遠端裝置進行通訊。令人感到不可思議的是,這些協議都能正常執行。
在我看來,網路工作組之所以能夠在大會舉辦之前做好萬全的準備,順利且出色地完成任務,在於他們採用了開放且非正式的標準化方法,其中一個典型的例子就是著名的 徵求意見(RFC)系列文件。RFC 文件最初透過傳統信件在工作組成員之間進行傳閱,讓成員們在沒有舉辦會議的時候也能保持聯絡,同時收整合員反饋,彙集各方智慧。RFC 框架是克羅克提出的,他寫出了第一篇 RFC 文件,並在早期負責管理 RFC 的郵寄列表。他這樣做是為了強調工作組開放協作的活動本質。有了這套框架以及觸手可及的文件,ARPANET 的協議設計過程成了一個大熔爐,每個人都可以貢獻出自己的力量,步步推進,精益求精,讓最棒的想法脫穎而出,而沒有人失去面子。總而言之,RFC 獲得了巨大成功,並且直至今天,長達半個世紀之後,它依舊是網路標準的“說明書”。
因此,說起 ARPANET 的影響力,我認為不得不強調的一點正是工作組留下的這一成果。今天,網際網路可以把世界各地的人們連線起來,這也是它最神奇的屬性之一。不過如果說這項技術到了上世紀才開始使用,那可就有些滑稽可笑了。要知道,在 ARPANET 出現之前,人們就已經透過電報打破了現實距離的限制。而 ARPANET 打破的應該是各個主機站因使用不同的作業系統、字元編碼、程式語言以及組織策略而在邏輯層面產生的差異限制。當然,將第一個分組交換網路投入使用在技術方面絕對是一大壯舉,這肯定值得一提,不過,制定統一的標準並用以連線原本無法相互協作的計算機,是建立 ARPANET 網路過程中遇到的這兩大難題中更為複雜的一個。而這一難題的解決方案,也成了 ARPANET 整個建立與發展歷史中最為神奇的一個章節。
1981 年,高階研究計劃署發表了一份“完工報告”,回顧了 ARPANET 專案的第一個十年。在《付出收穫了回報的技術方面以及付出未能實現最初設想的技術方面》這一冗長的小標題下,作者們寫道:
或許,在 ARPANET 的開發過程中,最艱難的一項任務就是,儘管主機制造商各不相同,或者同一製造商下作業系統各不相同,我們仍需在眾多的獨立主機系統之間實現通訊交流。好在這項任務後來取得了成功 [22]。
你可以從美國聯邦政府獲得相關資訊。
如果你喜歡這篇文章,歡迎關注推特 @TwoBitHistory,也可透過 RSS 饋送 訂閱,獲取最新文章。
-
“Hilton Hotel Opens in Capital Today.” The New York Times, 20 March 1965, https://www.nytimes.com/1965/03/20/archives/hilton-hotel-opens-in-capital-today.html?searchResultPosition=1. Accessed 7 Feb. 2021. ↩︎
-
James Pelkey. Entrepreneurial Capitalism and Innovation: A History of Computer Communications 1968-1988, Chapter 4, Section 12, 2007, http://www.historyofcomputercommunications.info/Book/4/4.12-ICCC Demonstration71-72.html. Accessed 7 Feb. 2021. ↩︎
-
Katie Hafner and Matthew Lyon. Where Wizards Stay Up Late: The Origins of the Internet. New York, Simon & Schuster, 1996, p. 178. ↩︎
-
“International Conference on Computer Communication.” Computer, vol. 5, no. 4, 1972, p. c2, https://www.computer.org/csdl/magazine/co/1972/04/01641562/13rRUxNmPIA. Accessed 7 Feb. 2021. ↩︎
-
“Program for the International Conference on Computer Communication.” The Papers of Clay T. Whitehead, Box 42, https://d3so5znv45ku4h.cloudfront.net/Box+042/013_Speech-International+Conference+on+Computer+Communications,+Washington,+DC,+October+24,+1972.pdf. Accessed 7 Feb. 2021. ↩︎
-
我其實並不清楚 ARPANET 是在哪個房間展示的。很多地方都提到了“宴會廳”,但是華盛頓希爾頓酒店更習慣於叫它“喬治敦”,而不是把它當成一間會議室。因此,或許這場展示是在國際宴會廳舉辦的。但是 RFC 372 號檔案又提到了預定“喬治敦”作為展示場地一事。華盛頓希爾頓酒店的樓層平面圖可以點選 此處 檢視。 ↩︎
-
Hafner, p. 179. ↩︎
-
ibid., p. 178. ↩︎
-
Bob Metcalfe. “Scenarios for Using the ARPANET.” Collections-Computer History Museum, https://www.computerhistory.org/collections/catalog/102784024. Accessed 7 Feb. 2021. ↩︎
-
Hafner, p. 176. ↩︎
-
Robert H. Thomas. “Planning for ACCAT Remote Site Operations.” BBN Report No. 3677, October 1977, https://apps.dtic.mil/sti/pdfs/ADA046366.pdf. Accessed 7 Feb. 2021. ↩︎
-
Hafner, p. 12. ↩︎
-
Joy Lisi Rankin. A People’s History of Computing in the United States. Cambridge, MA, Harvard University Press, 2018, p. 84. ↩︎
-
Rankin, p. 93. ↩︎
-
Steve Crocker. Personal interview. 17 Dec. 2020. ↩︎
-
克羅克將會議記錄檔案發給了我,檔案列出了所有的參會者。 ↩︎
-
Steve Crocker. Personal interview. ↩︎
-
Hafner, p. 146. ↩︎
-
“Completion Report / A History of the ARPANET: The First Decade.” BBN Report No. 4799, April 1981, https://walden-family.com/bbn/arpanet-completion-report.pdf, p. II-13. ↩︎
-
這裡我指的是 RFC 54 號檔案中的“正式協議”。 ↩︎
-
Hafner, p. 175. ↩︎
-
“Completion Report / A History of the ARPANET: The First Decade,” p. II-29. ↩︎
via: https://twobithistory.org/2021/02/07/arpanet.html
作者:Two-Bit History 選題:lujun9972 譯者:aREversez 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出