網路是怎麼運作的:從網路卡、路由器、ISP 骨幹到伺服器的請求路徑,兼談 IP 位址與 IPv4、IPv6 差異
到上一篇為止,已經有了自己的伺服器、SSH 金鑰,也成功連上了伺服器。接下來的計畫是買一個網域名稱,再把網域接到伺服器上,正式讓網站上線。在動手之前,這一節先花時間把整個網際網路運作的大架構講清楚:一個請求究竟是怎麼從個人電腦一路傳到某台遠方的伺服器上的。
為什麼要理解「網路是怎麼運作的」
「網路是怎麼運作的」是一個經典的面試題,之所以好用,是因為它幾乎沒有標準答案:可以從作業系統、網頁伺服器、應用程式伺服器等技術堆疊(stack)的任何一層切入作答。多數人聽到這個問題只會含糊地說「瀏覽器跟某個伺服器講話」,但這個問題真正想考驗的,是回答者對整個生態系的好奇心與涉獵深度,多數前端工程師日常工作根本不需要知道怎麼開一台伺服器、怎麼設定防火牆,這些事通常有其他人負責,但願不願意多了解一點背後的機制,往往能看出一個人的求知欲。
網際網路的核心建立在合作與規則之上。網路服務供應商(ISP)靠向使用者收費來維護光纖線路等基礎設施,但真正讓不同系統能互相溝通的,並不是某一家公司說了算,而是大家共同遵守同一套標準。例如 Ubuntu 與 macOS 都各自實作了 SSH,正是因為雙方都同意採用同一套通訊協定,才使得原本毫無關聯的系統可以互相對話。網際網路最早只是美國國防部(DARPA)與少數大學之間一種鬆散的實驗性連線,如今演變成今天的規模,並不是任何單一個人、公司或組織的成果,而是無數人、無數組織、無數技術長年累積合作出來的結果。
一個網路請求會經過哪些節點
一台電腦要連上網際網路,第一步一定要有網路卡(network card),這是電腦與外部網路溝通的介面。早年還需要外接數據機(modem),像是透過電話線傳輸的 56K 數據機,撥接上網時甚至不能同時使用電話;現在網路卡已經內建在電腦裡,不需要額外添購。
網路卡連上的下一個節點通常是路由器(router)。路由器的作用是讓一整個網路內的所有裝置共用同一個對外 IP 位址,同時各自保有不同的內部 IP 位址,等於用一個對外窗口,撐起了背後多台裝置同時連網的能力。
路由器接著會連上數據機,再透過數據機連到 ISP(網路服務供應商),也就是使用者付費請它提供網路連線服務的業者。ISP 不一定是 Tier 1(一級)業者,但最終一定會連上某個 Tier 1 ISP。這些 Tier 1 業者就是所謂的網際網路骨幹(backbone),是整個網際網路運作的關鍵支柱:一旦骨幹出問題,整個網際網路都會感受到影響,過去幾年也確實發生過幾次因為骨幹端設定錯誤而造成大範圍網路中斷的事件。要成為 Tier 1 業者,處理速度至少要達到每秒上百 GB 的等級,骨幹之間彼此也會互相連接、傳遞流量。
骨幹網路之後會連到某個資料中心(例如 Rackspace、DigitalOcean 之類的業者),資料中心裡有著屬於某個人或某間公司的伺服器叢集(server cluster)。伺服器叢集通常不會只有一台伺服器對外服務,而是搭配負載平衡器(load balancer)把流量平均分散到多台伺服器上,避免所有請求都打在同一台伺服器上造成過載,最終請求才會真正抵達其中一台伺服器。
整理起來,一個請求大致會經過:網路卡 → 路由器 → 數據機 → ISP → Tier 1 骨幹 ISP → 資料中心 → 伺服器叢集(搭配負載平衡器)→ 伺服器。這已經是高度簡化過的版本,還有很多細節沒有涵蓋在內,例如 BGP(邊界閘道協定)、不同國家 ISP 之間的跨境互聯協議、海底電纜的實際走線,甚至還沒談到瀏覽器如何解讀 TCP 與 HTTP 請求、把它們轉換成可以渲染呈現的畫面。這些都是前端畫面之下那一大塊看不見、卻真正撐起一切運作的基礎設施,也呼應了課程一開始提到的:前端只是現代運算裡的一部分,其餘看不見的部分同樣重要,只是容易被忽略。
網路相關的基礎名詞
網際網路(Internet)本質上就是「網路的網路」(a network of networks),沒有更複雜的定義;早期不過是少數大學裡的研究人員,用速度緩慢的大型主機互相通訊。除此之外還有幾個常見的相關名詞:
- Intranet(內部網路):企業內部使用的私有網路,雖然仍與外部網際網路相連,但透過防火牆、VPN 等機制阻擋外部存取
- LAN(區域網路):同一個房間或同一棟建築物內的裝置直接互連,早年網際網路速度太慢時,玩家得靠 LAN 派對聚在同一個空間才能一起連線打遊戲,優點是幾乎沒有延遲
- WAN(廣域網路):概念類似 LAN,但範圍擴大到橫跨多棟建築物,如今這類需求大多已經被網際網路本身取代
IP 位址:連上網路裝置的身分標籤
前面反覆提到 IP,IP 就是 Internet Protocol(網際網路協定)的縮寫,呼應了「網際網路建立在規則與合作之上」這個核心概念:這套協定明確定義了「什麼是一個位址」「位址該長什麼樣子」「有哪些規則」,例如是否可以包含字母、是否允許空格,Internet Protocol 對這些細節都有明確規範。
IP 位址是分配給每一台連上網路裝置的標籤,世界上幾乎每一台連網裝置都有屬於自己的 IP 位址。透過路由器連網時,裝置拿到的通常是類似 192.168.x.x 這種區域網路內部使用的位址;但只要接上更大範圍的網路,通常就會對應到一個對外的 IP 位址,這正是路由器能同時服務多台裝置的關鍵。
IP 位址的區塊實際上分屬不同組織與公司持有:例如 Cloudflare 持有 1.1.1.x 這整個區塊,Google、Amazon 與各國政府也各自持有大量的 IP 位址區塊,這些區塊必須向對應的管理機構購買或申請。這也是網際網路一個有趣的矛盾之處:它表面上開放而自由,但實際上背後每一塊資源都被特定組織所擁有,只是這種公私協作的方式,最終仍讓整體運作得以順暢進行。
IPv4 與 IPv6:位址不夠用的問題
早期制定 IP 位址規格時,設計者決定用四個區塊來標示一個位址,也就是現在熟知的 IPv4,格式類似 127.0.0.1。IPv4 是 32 位元,總共能提供約 43 億個位址;在 1980、90 年代制定這套標準時,這個數字聽起來多到用不完,沒有人想過將來會有數十億台裝置同時連上網路。但事實證明,43 億個位址早就不夠用了,這正是後來催生 IPv6 的原因。
IPv6 是 128 位元,可提供的位址數量高達 340 undecillion(340 乘以 10 的 36 次方)個,數量級遠遠超過 IPv4。雖然過去也曾有人自信滿滿地說「位址永遠用不完」結果後來被打臉,但以 IPv6 目前的規模來看,短期內應該不太需要擔心位址枯竭的問題。這門課不會深入探討 IPv6 的細節,但只要看到這種格式的位址,知道它是比 IPv4 更新、位元數更大的標準即可。
複習
網際網路最根本的定義是什麼?
網際網路是「網路的網路」(a network of networks),最初只是連結少數大學電腦的鬆散網路,如今則是透過合作與標準化的通訊協定,把全球裝置串連在一起。
IPv4 與 IPv6 有什麼差異?
IPv4 是 32 位元,大約能提供 43 億個位址;IPv6 是 128 位元,可提供的位址數量高達 340 undecillion 個,數量級遠大於 IPv4。
路由器在網路連線中扮演什麼角色?
路由器讓多台裝置共用同一個對外 IP 位址,同時為每台裝置各自建立內部 IP 位址,不需要每台裝置都各自申請一個對外位址就能同時連上網路。
一個典型的網路請求從電腦到伺服器,大致會經過哪些節點?
網路卡 → 路由器 → 數據機 → 網路服務供應商(ISP)→ Tier 1 骨幹 ISP → 資料中心 → 伺服器叢集 → 負載平衡器 → 伺服器。
課程中提到了哪幾種不同類型的網路?
網際網路(公開網路)、內部網路(Intranet,私有網路)、區域網路(LAN)與廣域網路(WAN)。
小測驗
網際網路最根本的定義是什麼?
網路的網路(a network of networks)IP 位址裡的「IP」代表什麼?
Internet Protocol(網際網路協定)IPv4 大約能提供多少個位址?
約 43 億個位址什麼是 Intranet(內部網路)?
組織內部使用的私有網路此文章是 FrontendMasters 上的 Full Stack Fundamentals, v3 課程筆記
