Whois++ (RFC 1913/1914) 是目錄服務協議,採用去中心化網狀拓撲:
polled-by 或 polled-for 獲取鄰居列表,繼續漫游。QueriedServers 集合防止重複查詢/循環。Query = 用戶查詢條件
QueriedServers = {} // 已查詢服務器集合
AnswerList = {} // 彙總結果
OriginalServers = {種子服務器}
while (OriginalServers 不為空) {
ServerList = OriginalServers
OriginalServers = {} // 下一輪擴展用
// 階段 1: 數據查詢
while (ServerList 不為空) {
Server = ServerList[0]
if (Server 不在 QueriedServers) {
send Query to Server
Answer = receive response
ServerList += Answer.ServersToAsk // 附加轉發指針
remove Server from ServerList
AnswerList += Answer.Answers
QueriedServers += Server
}
}
// 階段 2: 擴展查詢 (若需)
if (應該擴展查詢) {
ServerList = AnswerList 中收集的轉發指針
while (ServerList 不為空) {
Server = ServerList[0]
send 'Polled-For-Query' to Server
Answer = receive response
OriginalServers += Answer.ServersToAsk // 下一輪查詢目標
remove Server from ServerList
}
}
}
Display AnswerList
若頻繁查詢遠程服務器 B,在本地部署索引服務器 A 映射 B 的數據/指針。客戶端查詢 A 即可獲得 B 信息,大幅降低延遲。
服務器間建立直接「捷徑」 (如 B ↔ F 直連),繞過中間節點 A→C→F。響應需標識來源服務器,客戶端按需篩選。
屏蔽高延遲、不可靠、收費、策略禁止的服務器,避免漫游進入「黑洞」。
Whois++ 已被 LDAP (v3)、DNS-based 服務發現 (SRV/TXT)、RESTful 目錄 API 取代。理解其網狀漫游算法對設計P2P 覆蓋網絡、區塊鏈輕節點發現、服務網格側車發現仍有啟發價值。
Whois++ 客戶端核心是有狀態的圖遍歷:維護已訪問集合、雙階段查詢 (數據/擴展)、優化捷徑與黑名單。算法簡潔卻蘊含分佈式系統核心思想:去中心化、最終一致性、客戶端智能路由。