網路新聞(Netnews)誕生於 1979 年,由北卡羅萊納大學兩位學生利用 UUCP 串聯三台電腦交換資訊而起。四十餘年演進,雖歷經 A News、B News、C News 更迭,NNTP 協議確立,INN 成為事實標準,但其核心精神——去中心化、洪流式路由、站點自治交換——始終未變。本文系統梳理新聞系統發展脈絡、Usenet 治理模型、文章格式與儲存、傳輸協議演進(批次/ihave-sendme/NNTP)、儲存架構與過期機制,為部署與維護新聞伺服器提供全景技術視野。
| 代號 | 軟體 | 時間 | 關鍵特性 | 現狀 |
|---|---|---|---|---|
| A News | 首個公開發布新聞軟體 | 1980 早期 | Shell 腳本,未公開發布,快被取代 | 歷史文物 |
| B News | Mark Horton & Matt Glickman 重寫 | 1982 v2.1 | C 語言,持續擴展至 v2.11 | 已棄用,最後維護者轉向 INN |
| C News | Geoff Collyer & Henry Spencer 重寫 | 1987 | 效能優化,Performance Release 增加後台模式降低中轉開銷 | UUCP 網路主流,現少見 |
| NNTP | Network News Transfer Protocol (RFC 977) | 1986 | TCP/IP 互動式傳輸與讀取,支援 push/pull/讀取三模式 | 核心傳輸標準 |
| nntpd | Brian Barber & Phil Lapsley | - | 為 B/C News 增加 NNTP 前端,服務區域網讀取 | 輕量級前端 |
| INN | Internet News (Rich Salz 等) | 1990s~ | 獨立新聞系統,複雜中轉守護程式,高併發 NNTP 連線,主流 ISP 首選 | 事實標準,持續維護中 |
Usenet 無中央機構、無核心管理員。成為站點僅需:找到另一 Usenet 站點,雙方維護人員達成一致,互相交換新聞。「提供新聞,你就能上 Usenet。」
欄位: 值)與內文。<serial@site>,歷史檔記錄用於去重。comp.os.linux.announce),一眼可知主題與層級。company.private)。barnyard.edu (主發送站) → gmu.edu (僅接收 sci,comp,rec 主結構)
↓
brewhq (UUCP 站點,資源有限)
↓
gargleblaster.com (提供 fj.* 結構補充)
下游站點可多重上游補全缺失結構,形成彈性網狀拓撲。
文章到達 → 轉發至所有鏈接站點 → 目標站點檢查歷史檔 → 已存在則丟棄。Path: 標頭記錄經徑站點(bang-path 格式),防止迴路。
Distribution: taiwan)。sys 文件雙向限定可交換新聞組集合。| 協議 | 機制 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|---|
| 批次 | 定期打包壓縮所有文章發送 | 簡單、離線友善 | 大量重複傳輸浪費頻寬 | UUCP 低速撥號 |
| ihave/sendme | 發送 Message-ID 清單 → 對方回覆需求列表 → 僅傳缺失文章 | 去重、節省頻寬 | 需雙向頻繁連線、雙方皆為大站點 | 大站點間高頻交換 |
| NNTP (RFC 977) | TCP 即時互動:push(ihave/sendme 即時版)、pull(客戶端拉取新文章)、互動讀取 | 低延遲、支援終端用戶讀取、單一協議統一中轉與讀取 | 需持續 TCP 連線 | Internet 站點、終端用戶存取 |
/var/spool/news/
├── comp/
│ └── os/
│ └── linux/
│ └── misc/
│ ├── 1 # 文章檔,檔名為到達序號
│ ├── 2
│ └── ...
├── active # 記錄各新聞組當前高/低水位號、狀態
├── history # Message-ID 索引(含儲存位置、到達時間)
└── overview/ # 緩存標頭供快速列表(INN 使用)
Expires: 指定具體過期日期。expire 掃描 history,刪除過期文章檔、更新 active 低水位、清理 overview。LIST、GROUP、ARTICLE、POST 等指令。ovdb (Berkeley DB) 或 buffindexed,支援快速主題串列與執行緒重組。expireover、makehistory 重建索引,支援百萬級文章量級。Usenet/Netnews 雖非主流社交媒體,其去中心化、抗審查、歸檔永久、技術社群深度聚焦特性,使其在開源專案討論、學術交流、技術支援、封存歷史記憶等領域不可替代。INN 成熟穩定、效能卓越,配合現代硬體(NVMe、大記憶體、多核心)可輕鬆支撐全量 Usenet 節點。理解其協議精髓與儲存模型,不僅是致敬網路歷史,更是掌握大規模分散式訊息系統設計的經典範本。