⚡ 站長快讀:核心重點
- 文章屬性:科技冷知識 / 規格解析
- 核心結論:127.0.0.1 不是「你這台電腦的 IP」,而是協定層保留給回送用的一整段位址;封包送進去會在 IP 堆疊裡折返,從頭到尾沒碰到網路卡。
- 適用對象:架過本機開發環境、天天打
localhost:8080,卻沒問過它憑什麼成立的人
📌 快速答案
一句話答案:127.0.0.1 Loopback 是 IANA 依 RFC 1122 登記的回送位址,而且保留的是整段 127.0.0.0/8;作業系統在 IP 層就把這些封包折返給本機,不轉發、也不會離開這台電腦。
🔍 故事的起點
把網路線拔掉、Wi-Fi 關掉,瀏覽器打 http://127.0.0.1 照樣連得上你剛啟動的本機服務——裝過 XAMPP、Node.js 或 Python 開發伺服器的人幾乎都遇過,卻很少人追問它為什麼成立。更妙的是,這串數字在全世界每一台電腦上都指向「它自己」:你打 127.0.0.1 連到你的機器,我打 127.0.0.1 連到我的機器,兩邊不會打架,也不需要任何機構分配。它不是某種約定俗成的「本機小網段」,而是寫進 IP 協定標準、由 IANA 正式登記的保留位址。真正有意思的是兩件事:被保留的不只一個位址,而是一整段;而 localhost 這個名字和 127.0.0.1 的關係,也比多數教學講得更鬆。如果你正照著〈在自己的電腦用 XAMPP 架設 WordPress 網站(Windows 篇)〉這類教學架本機站,這篇正好補上背後的原理。
🧪 原理拆解
這一整段位址,1981 年就被劃走了
先講結果:IANA 的 IPv4 Special-Purpose Address Space 登記表,把 127.0.0.0/8 整段命名為 Loopback,依據是 RFC 1122 第 3.2.1.3 節,配置日期記為 1981 年 9 月。同一張表還有五個布林欄位,127.0.0.0/8 的填法是 Source、Destination、Forwardable、Globally Reachable 四項全為 False,Reserved-by-Protocol 為 True。翻成白話:這段位址不能當跨裝置封包的來源或目的、路由器不得轉發、在公開網際網路上不可達,而且 IP 協定本身就要求所有實作對它做特別處理——不是靠誰的路由設定擋下來,是規格層級的規定。不過那四個 False 旁邊掛了一個註腳:少數協定獲准對這段位址採例外處理,IANA 舉的例子是 MPLS 的 LSP Ping(RFC 8029)與 BFD(RFC 5884)——日常上網碰不到,但「零例外」這句話別講死。
/8 代表一千六百多萬個位址全在射程內,127.0.0.1 只是最常被寫進文件的那一個。Microsoft 官方的 WSL 文件就提到,wsl hostname -i 會回 127.0.1.1,並註明那是佔位用的診斷位址——它一樣落在 127 這段裡。至於「為什麼偏偏是 127」,IANA 登記表與它引用的 RFC 都只寫結果、沒寫理由;網路上流傳的各種說法屬於事後推測,站長我這裡就不當事實寫。
封包為什麼出不了網卡
關鍵在 Reserved-by-Protocol 那一格是 True。作業系統的 TCP/IP 堆疊看到目的位址落在 127.0.0.0/8,就直接在 IP 層把它交還給本機的回送介面(loopback interface),不會交給實體網路卡,自然也沒有電訊號、沒有交換器、沒有路由器的事。這也是為什麼 ping 127.0.0.1 只能證明「這台機器的 TCP/IP 堆疊還活著」,完全不能證明你上得了網——遠端協助時常見的第一句「先 ping 一下 127.0.0.1」,測的是本機協定堆疊,不是線路。
localhost 不等於「一定是」127.0.0.1
localhost 是名字,127.0.0.1 是位址,兩者靠名稱解析接起來,而這個解析規則同樣有標準可查:RFC 6761 第 6.3 節把 localhost 列為特殊用途網域名稱,要求名稱解析 API 與函式庫「應該」直接回傳 IP 回送位址、不要把 localhost 的查詢送給所設定的 DNS 伺服器,並明講 localhost 的有效資料由協定規範定義,無法用本地設定改寫。
重點在於「回送位址」不只一個:IPv4 是 127.0.0.1,IPv6 則是 ::1——IANA 的 IPv6 登記表把 ::1/128 列為 Loopback Address,依據 RFC 4291,同樣是四個布林全 False、Reserved-by-Protocol 為 True。於是在雙堆疊環境下,如果你的服務只綁 127.0.0.1,而用戶端把 localhost 解析成 ::1 先試,就會冒出「服務明明開著卻連不上」的鬼打牆;只綁 ::1 而用戶端走 IPv4,結果也一樣。遇到這種狀況,先把網址裡的 localhost 換成明確的 127.0.0.1 或 [::1] 各測一次,通常三十秒就能分辨是「服務沒起來」還是「解析走了另一條堆疊」。
💡 總結:冷知識延伸
站長我覺得 loopback 最被低估的價值,是它在瀏覽器眼中的地位。W3C 的 Secure Contexts 規範把回送 IP 位址列為「潛在可信任」的來源;至於 localhost 這個名字,規範的寫法是使用者代理「得」(MAY)在遵守 localhost 解析規則的前提下比照辦理。實務上的結果就是:本機開發不必生一張自簽憑證,那些只在安全脈絡下才開放的 Web API 照樣能用——這也是為什麼前端教學總叫你「跑起本機伺服器再開 http://localhost:3000」,而不是直接雙擊 HTML 檔。
另一個實務陷阱是「你以為的同一台」。Microsoft 官方文件寫得很清楚:WSL 預設走 NAT 架構,從 Windows 用 localhost 連進 Linux 裡的服務沒問題,但反過來從 Linux 連 Windows 上的服務就得用主機 IP;要讓 Linux 端也能用 127.0.0.1 連到 Windows,得在 Windows 11 22H2 以上把 .wslconfig 的 networkingMode 設成 mirrored,而官方也明載這個模式不支援 IPv6 的 ::1 回送位址。設定細節可以看〈WSL2 Mirrored Mode 網路教學〉。所以「localhost 就是這台電腦」這句話,在虛擬機與容器普及之後,還得多問一句:誰的這台?
❓ 常見問題
Q:為什麼是 127,不是別的數字?
可查證的只有結果:IANA 登記顯示 127.0.0.0/8 自 1981 年 9 月起保留為 Loopback,至今未變。官方文件沒有記載挑 127 的理由,流傳的解釋都屬事後推測,別把它當定論。
Q:整個 127.x.x.x 都算「自己」嗎?
以標準來說是,IANA 保留的是整段 /8,不是單一位址。但實際能不能直接用某個 127.x 位址,還要看作業系統預設綁定了哪些位址、你的服務又綁在哪個位址上,各平台預設不完全一樣。
Q:localhost 一定等於 127.0.0.1 嗎?
不一定。RFC 6761 要求的是解析到「對應的」IP 回送位址,IPv6 環境就是 ::1。雙堆疊機器上兩者都可能被選中,這正是本機服務連不上的常見成因。
Q:ping 127.0.0.1 通,代表網路正常嗎?
不代表。那只說明本機 TCP/IP 堆疊與回送介面正常,封包根本沒離開你的電腦,和對外連線通不通是兩回事。
🔗 延伸閱讀
- WSL 入門:一行指令在 Windows 跑 Linux(安裝+WSL 1/2 差異)
- WP-Cron 是什麼?搞懂 WordPress 假 cron 原理,改用系統 cron
- MAMP Windows 版|5 分鐘快速建立本機 WordPress 網站
- Windows 本機跑 AI(Ollama + Open WebUI)完整教學
📎 參考資料來源
📖 第一級|標準組織與廠商官方:
- IANA:IPv4 Special-Purpose Address Space — 2026-09-06 查證
- IANA:IPv6 Special-Purpose Address Space — 2026-09-06 查證
- RFC 6761:Special-Use Domain Names(第 6.3 節 localhost) — 2026-09-06 查證
- W3C:Secure Contexts — 2026-09-06 查證
- Microsoft Learn:Accessing network applications with WSL — 2026-09-06 查證
⚠️ 本文屬 E3 等級(官方登記表與標準文件交叉查證),非站長第一手實測。
📅 本文查證戳記:2026-09-06 依 IANA 特殊用途位址登記表(IPv4 表最後更新 2025-10-09)與 RFC 6761、RFC 4291 撰寫。
