← 網誌

觀點

手提電腦已死。 你個褲袋萬歲。

但 SSH 同 TCP/IP 仲喺度。謹以此文送別一位沉甸甸、暖笠笠嘅老友 —— 順便講吓嗰個靜靜雞搬咗入你手上部機嘅終端機。

證物 A:一次真實嘅 SSH 會話、一個 coding agent,仲有一條 Agent 提示 —— 全部喺你褲袋嗰部機度跑,四圍都見唔到充電器。

手提電腦 —— 全世界開發者、寫作人同旅人嘅摯愛拍檔 —— 本星期喺一間咖啡店入面安詳離世, 享年四十五歲,走嗰陣仲剩返 6% 電,身邊冇充電器。一如以往,佢俾一大堆應承過會睇嘅分頁圍住。

冇乜戲劇性。佢只係暗咗落去,經把風扇嘆咗最後一口氣,然後 —— 喺最唔啱嘅時候,最後一次 —— 問你:而家裝個更新係咪啱啱好。

“每次你終於諗到啲嘢,佢就要求重啟固件。佢一路都係咁。”

沉甸甸嘅一生,一路有人孭住

佢 1981 年生於 Osborne 1 門下 —— 十一公斤嘅「搬得郁」野心,冇電池,一塊五吋螢幕 —— 之後四十五年一直喺度減磅,但始終冇真係輕得起。佢走嗰陣大約一公斤半,呢個數字喺佢老豆眼中係妖術嚟嘅。 我哋記得嗰副鍵盤。記得暖笠笠嘅機底。記得每一次思考都由風扇嘅呼呼聲宣告。記得個袋永遠塞多咗少少, 記得嗰嚿厚過本小說嘅火牛,仲有嗰場永恆而又滿懷希望嘅搜尋 —— 窗邊一個冇人用嘅插蘇。

佢對我哋要求好多,我哋照樣一路孭住佢,由書枱去到登機閘口再去到 24B 位,因為好長一段時間, 得佢一個裝得落一個真正嘅終端機。呢樣嘢,而家已經唔成立。

身後仍在嘅,係佢啲長輩

手提電腦冇留低仔女。當年應承過佢嘅接班人 —— 平板、Chromebook、嗰啲鍵盤拆得出嚟嘅嘢 —— 都嚟齊咗,坐咗喺後排,最後發現不過係接口少啲嘅手提電腦。真正活得過佢嘅, 係兩位親戚:佢出世嗰陣佢哋已經喺度做嘢,今朝佢哋一樣喺度做嘢。

TCP/IP 係長輩。Vint Cerf、Bob Kahn 同一大隊合作者喺 1974 年 5 月發表咗呢套 設計;同年 12 月嘅 RFC 675 寫到一清二楚,仲順手造咗「internet」呢個字出嚟。ARPANET 由 1983 年 1 月 1 日開始搬過嚟,到嗰年 6 月搬完 —— 嗰陣手提電腦仲係個孭住軟碟機嘅學行仔。

SSH 係姪仔,三十一歲,一眾扶靈者之中最後生嗰個。1995 年春天,Tatu Ylönen 喺 Helsinki University of Technology 寫低咗佢 —— 之前校園網上面有個 sniffer 靜靜雞收埋咗 成千上萬個密碼。嗰年 7 月佢放出 ssh-1.0.0;22 號端口係佢自己揀嘅:21 上面嘅 FTP 同 23 上面嘅 telnet 之間唯一仲空住嗰個號碼,佢嘅盤算係,坐喺自己打算取代嗰兩個協議中間,「或者正正就係嗰啲 畀到少少可信光環嘅小事」。佢禮拜一去問 IANA。佢哋禮拜二點頭。佢禮拜三就出咗貨。

  1. 1974 Cerf、Kahn 同同事發表咗後來變成 TCP/IP 嘅設計 仲行緊
  2. 1978 DEC 推出 VT100,佢第一部相容 ANSI 嘅終端機 跳脫序列仲用緊
  3. 1981 Osborne 1 上市:11 公斤,1,795 美元,淨係食市電 1983 年停產
  4. 1983 ARPANET 完成由 NCP 搬去 TCP/IP 仲行緊
  5. 1995 SSH 喺赫爾辛基寫成;IANA 7 月 11 日批出 22 號端口 仲行緊
  6. 2026 手提電腦,享年 45 歲,咖啡店,6% 電,冇充電器 上述各位送佢一程
追思會上宣讀嘅出場次序。最年長嗰位弔唁者五十二歲。

協議從來冇假設過嘅嘢

佢哋長命唔係乜嘢謎。佢哋捱得咁耐,係因為佢哋幾乎乜都冇假設。TCP 假設有封包,其中有啲會唔見咗、 會重複、會亂咗次序先到。SSH 假設有一條靠得住嘅位元組流同一對密鑰。兩張清單上面都搵唔到嘅係:螢幕尺寸、 鍵盤佈局、機殼、鉸位、牆上嗰個插蘇,同埋一間仲未執笠嘅廠商。

SSH 連你個終端機幾大都唔假設。佢會問 —— 而且容許你遲啲畀個唔同嘅答案。呢份體貼當年係為咗嗰啲 用滑鼠拖桌面視窗角仔嘅人而發明。佢同時亦都係點解部電話打橫打掂都唔會斷會話。

“硬件係一副身體。協議係一種習慣。得其中一樣會俾人由樓梯間掟落去。”

凡係綁死喺機殼上面嘅嘢都行先,而佢哋冇一個係死於做工差。軟碟機、PC Card 插槽、擴充座接口 —— 每一樣都係為一組特定條件而精心製造,而要命嘅偏偏就係嗰組條件。協議連自己個主人都唔綁。當 Ylönen 後期版本嘅授權收緊,OpenBSD 項目就退返去 ssh 1.2.12,即係最後一個自由到可以攞嚟再用嘅 版本,再喺 1999 年 12 月 1 日隨 OpenBSD 2.6 出咗 OpenSSH。協議照樣行落去。 佢從來都唔屬於邊個,而呢樣嘢正正就係佢今日仲喺度嘅原因。

唯一一個要打補丁嘅假設

憑良心講,要更正一句。TCP 的確做過一個假設,而且錯咗:佢假設部機唔會郁。一條連線由四個 數字命名 —— 兩個地址、兩個端口 —— 喺 1981 年,咁樣命名一件嘢啱到不得了,因為嗰件嘢係用螺絲釘死喺 一間架空地板嘅機房入面。但當你揸住部電話行出咖啡店,呢四個數字入面就有一個靜靜雞變咗大話。

冇第二場喪禮。協議留低咗,個假設就喺周圍打補丁補返。啲功夫搬咗去遠端,搬到一個行緊出門口嘅 客戶端掂唔到嘅地方:先係 screen,跟住 tmux,喺終端機來來去去嘅時候將個 shell 一直開住。Eternal Terminal 行多一步,改為命名會話而唔係命名地址,於是底下個地址點變, 會話都照樣生存。

“你啲伺服器從來冇忠於過部手提電腦。佢哋忠於嘅係嗰個端口。”

呢啲嘢全部都唔係為電話而發明,電話只係繼承咗佢哋。一個帶住 Eternal Terminal 傳輸、tmux 管理器、指數退避重連嘅保活機制,同埋每部已儲存伺服器可以有幾個地址嘅客戶端,可以喺指令跑到一半嗰陣 俾人帶出座樓,然後喺行人路上面接返落去。遠端知道嘅,得你客戶端嘅版本字串同你個終端機幾大。 從來冇人話畀佢聽嗰邊有冇一個鉸位。

啲功夫靜靜雞搬咗入褲袋

最後嗰幾年,手提電腦開始為自己仲有冇存在價值而焦慮。佢焦慮得有道理。佢當年當成自己嗰啲功夫 —— 真正嘅終端機、真正嘅檔案傳輸、真正嘅密鑰、真正嘅隧道 —— 已經靜靜雞溜咗入你手上嗰部機。

嗰部機跑緊 Mobile SSH:一款為 Android、iPhone 同 iPad 而設嘅原生 SSH、SFTP 同終端機客戶端。唔係玩具 shell,亦唔係扮終端機嘅遠端桌面。係一個完整嘅 xterm-256color 終端機 —— 正貨嚟㗎 —— 大細啱啱好塞得入手提電腦 部火牛以前佔嗰個位。

“佢當年當成自己嗰啲功夫搬咗入褲袋 —— 而且一次都冇開口問人攞插蘇。”

身後遺下:你部電話 —— 同 Mobile SSH

遺產清單如下。懇辭花圈,家屬只求你將下面呢篇悼文睇完,並且記住:入面每一行都係你今日就裝得到 嘅真實軟件。

“「手提電腦已死」係一篇悼文,唔係一份驗屍報告。守夜嗰晚,手提電腦照樣歡迎。”

我哋講呢句話係帶住愛嘅。手提電腦服役光榮,守夜嗰晚隨時歡迎佢嚟 —— 揭開擺喺邊几上面, 風扇輕輕咁轉,終於插得成電。但日頭嗰份工已經執輕咗行李,離開咗座樓。佢而家袋得落褲袋。 第一下鈴響就聽。

SSH 同 TCP/IP 冇送花。佢哋喺度做緊嘢。