第 10 課

按下 URL(網址)之後打開網站時發生了什麼?

由按下 Enter 到網頁出現,中間經過了什麼?

帶路角色:小比、阿麥、路路、八爪、查查博士、阿帕教授閱讀時間約 10 分鐘

1. 漫畫開場

也可以直接點擊任何一格
漫畫文字版(畫面及對白)
格 畫面 對白
1 阿麥在網址列打上 https://example.com/,手指正要按 Enter;小比背好背包。 字幕:「最後一課:一起跟小比走完整趟旅程!」
阿麥:「按 Enter 囉!」
小比:「背包執好,出發囉!」
2 查查博士遞出答案卡 example.com → 192.0.2.80;八爪把小比送往路路的連接埠。 字幕:「先查名字,再在家中 LAN(區域網絡)裡送到路路那裡。」
查查博士:「讓我查一查……192.0.2.80!」
八爪:「收到!馬上送到正確的連接埠!」
3 路路把寄件人改成 203.0.113.1;小比頭上有鎖頭,代表 HTTPS(加密網頁傳輸協定),沿路經過幾部 Router(路由器),走向伺服器大廈 192.0.2.80。 路路:「這邊走,這條路最快!」
字幕:「經過 NAT(網絡位址轉換)、一站又一站的 Router,再加上 HTTPS 加密保護。」
4 阿麥的屏幕出現網頁,網址列有鎖頭;全體角色歡呼,阿帕教授拿著卷軸。 字幕:「網頁出現了!全部角色都出了一分力。」
阿帕教授:「在很久很久以前……發電報要一個字一個字地敲。今天,整個網頁只需一秒!」
阿麥:「看看我的網頁!」

2. 重點概念

打開一個網站,看似只是一秒內的事,其實前九課學過的東西全部都出了場:

先用 Wi-Fi(無線網絡)接上網絡,DHCP(動態主機設定協定)派位址;DNS(網域名稱系統)把名字變成 IP Address(網絡位址);TCP(傳輸控制協定)握手建立連線;HTTPS 加密;最後瀏覽器用 HTTP(超文本傳輸協定)向伺服器要網頁,再把網頁畫在屏幕上。

沿途還有 Switch(交換器)、Router 和 NAT 一起幫忙送貨。

3. 看深一點

想看動畫詳解? 網絡小故事 16. 網絡醫生出診:ICMP、Ping 與 Traceroute、17. 封了口的信:HTTPS 與 TLS(傳輸層安全)

先讀懂網址:URL(網址)

你在網址列打的 https://example.com/,叫 URL(網址),是網上資源的完整地址。它有三部分:

部分 例子 意思
Scheme(協定類型) https 用什麼方法取資料;https 表示加密,預設 Port(連接埠) 443
主機名稱 example.com 去哪一部伺服器,要靠 DNS 查出 IP Address
路徑 / 伺服器上的哪一頁;/ 表示首頁

完整旅程:八個步驟

以下是阿麥在家打開 https://example.com/ 的完整過程。每一步都標明在哪一課學過。

第 1 步:接上 Wi-Fi(第 6 課) 阿麥的電腦找到家中的 SSID(無線網絡名稱),輸入密碼,和 Access Point(無線基地台)連接。空氣中傳送的資料會被加密,例如用 WPA(Wi-Fi 保護存取)的 WPA2 或 WPA3,鄰居就算收到訊號也看不懂。

第 2 步:DHCP 派位址(第 8 課) 阿麥廣播 Discover,路路回覆 Offer……四步 DORA 之後,阿麥得到:IP Address 192.168.1.10、Default Gateway(預設閘道) 192.168.1.1、DNS 伺服器 192.168.1.1。

第 3 步:ARP(位址解析協定)找路路的名牌(第 6 課) 阿麥之後要送的資料,都要先交給 192.168.1.1。他用 ARP 廣播問:「誰是 192.168.1.1?」路路回覆自己的 MAC Address(硬體位址) 00:00:5E:00:53:FE。

第 4 步:DNS 查名字(第 7 課) 瀏覽器先看看 Cache(快取)有沒有 example.com 的答案。沒有的話,就問 DNS 伺服器;經過 Root Server(根伺服器)、.com TLD(頂級網域)伺服器和 Authoritative Server(權威伺服器),得到答案:192.0.2.80。這個查詢用 UDP(用戶資料包協定) Port 53 送出。

第 5 步:TCP 三次握手(第 9 課) 阿麥發現 192.0.2.80 不在自己的 Subnet(子網絡),於是把封包交給 Default Gateway(第 4 課)。他向 192.0.2.80:443 送出 SYN,收到 SYN-ACK,再回覆 ACK(確認),連線建立。

一路上:

  • 八爪(Switch)看 MAC Address,把 Frame(訊框)送到路路(第 3、6 課)。
  • 路路做 NAT,把寄件人 192.168.1.10:50000 改成 203.0.113.1:40001(第 8 課)。
  • 互聯網上的 Router 一站一站轉送,每站換一次 Frame、TTL(存活時間)減 1,IP 收件人一直是 192.0.2.80(第 5 課)。

第 6 步:TLS 加密握手(本課) 因為網址是 https,雙方要先談好怎樣加密,這一步用 TLS(傳輸層安全)。伺服器會出示一張 Digital Certificate(數碼證書),證明「我真的是 example.com」。瀏覽器核實無誤後,雙方協議出一條只有彼此知道的鑰匙,之後的內容全部加密。網址列旁的鎖頭,就是這一步成功的標記。

第 7 步:HTTP 要網頁(本課) 瀏覽器透過已加密的連線,送出一個 HTTP 請求:「GET /,請給我首頁。」伺服器回覆:「200 OK」,後面附上網頁內容。網頁是用 HTML(超文本標記語言)寫的。

第 8 步:瀏覽器畫出網頁 瀏覽器讀 HTML,發現還需要圖片、樣式和程式,於是再向伺服器要這些檔案,通常會沿用已建立的連線。全部到齊後,網頁就完整地出現在屏幕上。

圖解:上方是由阿麥的電腦經 Access Point、Switch、Router 到互聯網和 example.com 伺服器的路線;下方按次序列出 Wi-Fi、DHCP、ARP、DNS、TCP、TLS、HTTP 和畫出網頁八個步驟,每一步標示負責的角色和課程

圖解:上方是路線圖,虛線框內是阿麥家中 LAN,右邊是互聯網;下方是八個步驟,每一步旁邊標示負責的角色和在哪一課學過。

HTTP(超文本傳輸協定)的回覆號碼

伺服器每次回覆,都會附上一個三位數的狀態碼。你可能見過其中一些:

狀態碼 意思
200 OK 成功,網頁在這裡
301/302 網頁搬了家,請去新地址
404 Not Found 找不到這一頁
500 伺服器自己出了問題

HTTP 和 HTTPS 有什麼分別?

HTTP HTTPS(加密網頁傳輸協定)
預設 Port 80 443
內容加密 沒有,途經的人都看得到 有,用 TLS 加密
證明伺服器身份 不能 可以,靠 Digital Certificate
比喻 明信片 封了口的信封

今天絕大部分網站都用 HTTPS。如果瀏覽器提醒你「不安全」,就不要在那個網頁輸入密碼或信用卡資料。

全課程總複習

旅程中的工作 負責的技術 角色 課程
資料切成小份,一層包一層 Packet(封包)、Encapsulation(封裝) 小比 第 5 課
在 LAN 內認出誰是誰 MAC Address 阿麥 第 3 課
在 LAN 內送貨 Switch 八爪 第 6 課
由 IP Address 找 MAC Address ARP 阿麥、路路 第 6 課
派位址和設定 DHCP 路路 第 8 課
把名字變成位址 DNS 查查博士 第 7 課
說明「你在哪裡」 IP Address 阿麥、路路 第 4 課
在網絡之間指路 Router、Routing Table(路由表) 路路 第 6 課
全家共用一個 Public IP(公共位址) NAT 路路 第 8 課
保證送達、找對程式 TCP、Port 小比 第 9 課
這一切從哪裡來 ARPANET、TCP/IP 阿帕教授 第 2 課

4. 動手試試

任務一:看看鎖頭後面的證書

  1. 用電腦瀏覽器打開任何一個 https 網站。
  2. 按網址列旁邊的鎖頭(或設定圖示),選「連線是安全的」→「憑證有效」(不同瀏覽器字眼略有不同)。
  3. 看看證書是發給哪個網域、由誰簽發、何時到期。

任務二:用開發人員工具偷看請求

  1. 在電腦的 Chrome、Edge 或 Firefox 按 F12(Mac 按 Cmd + Option + I),選「Network(網絡)」分頁。
  2. 保持工具打開,重新載入網頁。
  3. 你會見到一長串請求:第一行通常是網頁本身,之後是圖片、樣式和程式。
  4. 看看「Status」一欄,大部分是不是 200?一個網頁要幾多個請求?

這些工具只會讓你看自己瀏覽器收發了什麼,不會改變網站。

小互動

把旅程排好次序

電腦剛剛開機,什麼記錄都沒有。把打開 https://example.com/ 的八個步驟排好次序。

  1. DNS:查出 example.com 是 192.0.2.80
  2. HTTP:送出「GET /」,收到「200 OK」
  3. Wi-Fi:連接 Access Point
  4. TLS:核實 Digital Certificate,建立加密
  5. ARP:找出 192.168.1.1 的 MAC Address
  6. 瀏覽器畫出網頁
  7. DHCP:取得 192.168.1.10
  8. TCP:和 192.0.2.80:443 三次握手

5. 比喻的極限

  • 不是每次都要走足八步。 Wi-Fi 和 DHCP 通常早已完成;ARP 和 DNS 的答案多數已在 Cache 裡;所以平日開網頁,往往由 TCP 那一步開始,甚至沿用舊連線。
  • 小比不是只有一個。 一個網頁往往要幾十個甚至幾百個請求,每個請求和回覆都由很多個封包組成,可能同時由幾條連線送來。
  • 網頁不一定來自同一部伺服器。 圖片、影片和廣告常常來自其他網域,每個網域都要再查 DNS、再建立連線。
  • 鎖頭不代表網站可信。 它只證明「連線有加密、伺服器真的是這個網域」;騙子也可以為自己的網域申請證書,所以仍然要看清楚網址。
  • 新一代的 HTTP/3 不用 TCP。 它用建立在 UDP 之上的 QUIC,把第 5 步和第 6 步合併,令網頁更快打開。

6. 小測驗

第 1 題,共 3 題打開 https://example.com/ 時,以下哪一個步驟最先發生(假設電腦剛剛開機、什麼記錄都沒有)?
第 2 題,共 3 題網址列旁邊的鎖頭,表示哪一個步驟成功完成了?
第 3 題,共 3 題在整趟旅程中,哪一樣東西由阿麥家一直到 example.com 的伺服器都沒有改變?

7. 重點筆記

  • URL(網址)由 Scheme、主機名稱和路徑組成,例如 https://example.com/。
  • 打開網站的八步:Wi-Fi → DHCP → ARP → DNS → TCP 三次握手 → TLS 加密 → HTTP 請求 → 瀏覽器畫出網頁。
  • HTTPS 用 TLS(傳輸層安全)加密,並用 Digital Certificate(數碼證書)證明伺服器身份;鎖頭不代表網站內容可信。
  • HTTP 回覆附有狀態碼:200 成功,404 找不到。
  • 前九課的每一個角色,都在這一秒之內出了場。

下一站

恭喜你完成全部十課!你已經由一個名牌,一路走到整個互聯網。

想知道更多?去 看八爪、路路和新朋友盾盾,怎樣解決真實網絡中的各種難題。