1. 網際網路運作原理
網際網路是什麼?是WWW(全球資訊網路)嗎?答案是不是,這兩個是完全不同的東西,網際網路是指偏向物理層面的,接下來就讓我們來瞭解一下資料如何交換,如何找到你是誰並給你你要的資料?
IP位置
在網際網路的世界中,IP(Internet Protocol,網際網路協定)就是網路上的郵政系統。
你今天在google搜尋「貓咪 圖片」,google的伺服器蒐集好了可愛貓咪的圖片準備要回傳給你,不過google 的伺服器怎麼知道你是誰?
而「IP 地址(IP Address)」,就是每台設備的實體門牌號碼。無論是你的手機、筆電、還是 Google 的伺服器,只要想連上網際網路,都必須擁有一個獨一無二的 IP 地址,否則網路上的資料封包就不知道該送去哪裡。
- 定址(Addressing): 為網路上的每個設備編發一個獨一無二的地址(門牌號碼)。
- 路由(Routing): 決定資料封包(信件)要經過哪些路由器(郵局),才能最快抵達目的地。
IP由四組 0 到 255 的數字組成,中間用點「.」隔開。(192.168.1.1 或 140.131.x.x),它是 32 位元(32-bit)的架構,總共可以提供約 43 億個 地址。
43 億個聽起來很多,但在人手一機、加上智慧家電(物聯網)的時代,IPv4 地址早在幾年前就已經「用完了!」。
IPv4 與 IPv6
為了解決 IPv4 地址不夠用的危機,聰明的科學家開發了全新的 IPv6,改用 16 進位制,由八組數字與字母組成,中間用冒號「:」隔開 (2001:0db8:85a3:0000:0000:8a2e:0370:7334 )容。
由於它是 128 位元(128-bit)的架構,可以提供的地址數量高達 3.4乘10的38次方 個。
這個數量大到「可以給地球上的每一粒沙子都分配一個獨立的 IP 地址」,徹底解決了地址不足的問題。
DNS
雖然解決了不夠用的問題,但新的問題也隨之而來,那就是人類其實不擅長記一大串的數字,於是人們就開始想:「我有沒有辦法將IP轉為文字方便我記憶呢?」DNS由此誕生。
DNS (網域名稱系統,Domain Name System) 是網際網路的電話簿。將人類易讀的網域名稱(例如 google.com)轉換為機器能讀取的 IP 位址(例如 142.250.190.46)。
分布式階層架構
DNS 伺服器不是只有一台,而是由上到下分成好幾層:
- DNS 快取伺服器(預設/本地 DNS): 就像你身邊的萬事通朋友(通常由 ISP 如中華電信,或 Google 的
8.8.8.8提供)。他會幫你跑腿去外面問路,而且會把問到的答案記下來(快取),下次你再問同一個網址,他就能秒回答。- 根域名伺服器(Root DNS Server): 網路世界的最高權威(全世界只有 13 組群組)。它不知道具體 IP,但它知道「去哪裡找下一層」。
- 頂級域名伺服器(TLD DNS Server): 負責管理網址的結尾,例如
.com、.org、.tw等。- 授權域名伺服器(Authoritative DNS Server): 終點站。這台伺服器由網站的主人自己管理(或託管),上面紀錄了該網站真正的 IP 地址。
我們來實際跟著流程走一次!
假設你在瀏覽器輸入了學校官網 www.ntub.edu.tw,而本地 DNS 過去從來沒有紀錄(第一次查詢),整個「問路」的過程會如下運行:
- 第一步(問身邊的朋友): 電腦問「本地 DNS」:「你知道
www.ntub.edu.tw的 IP 是多少嗎?」 本地 DNS 翻了翻口袋發現沒有紀錄,於是說:「你等等,我幫你去問。」 - 第二步(向最高權威求助): 本地 DNS 跑去問全球的「根域名伺服器 (Root)」。 根域名伺服器說:「我不知道具體 IP,但我知道這是
.tw結尾的,你去問負責管理.tw的頂級域名伺服器吧!」(給予方向) - 第三步(縮小範圍到國家/類型): 本地 DNS 接著跑去問「
.tw頂級域名伺服器」。 頂級域名伺服器說:「我也不知道具體 IP,但我知道ntub.edu.tw是由北商大自己管的,你拿著這張地址,去問他們的授權域名伺服器。」 - 第四步(抵達終點站取得答案): 本地 DNS 來到最後一站——北商大的「授權域名伺服器」。 學校的伺服器自豪地說:「沒錯!這是我家的網站,它的 IP 地址是
140.131.x.x!」 - 第五步(回報並紀錄): 本地 DNS 把這個 IP 抄下來,急忙跑回去告訴電腦,同時自己也偷偷背起來(快取),方便下一次別人問。 最後,瀏覽器拿到
140.131.x.x,終於可以順利連上學校官網了!
應用層協定
應用層協定(Application Layer Protocols)是 OSI 網路七層模型與 TCP/IP 模型的最頂層,直接與應用程式互動。
1. 網頁瀏覽:HTTP / HTTPS
- HTTP(超文字傳輸協定): 全球資訊網(WWW)的基石。定義了瀏覽器要怎麼向網頁伺服器請求網頁檔案(HTML、CSS、JavaScript),以及伺服器如何回應。
- HTTPS(安全超文字傳輸協定): HTTP 的安全加密版。在傳輸過程中加入 SSL/TLS 加密機制,防止信用卡號、密碼等敏感資料被中途竊聽或竄改。
2. 檔案傳輸與網路管理:FTP / DNS / DHCP
- FTP(檔案傳輸協定): 專門用來在兩台電腦之間「上傳」與「下載」檔案的協定。
- DNS(網域系統協定): (前一章已提及)負責將網址翻譯成 IP 位址的無名英雄。
- DHCP(動態主機設定協定): 自動發配 IP 地址的裝置。當你的手機連上星巴克的 Wi-Fi 就能立刻上網,就是 DHCP 自動幫你分配好 IP、子網路遮罩和閘道器。
3. 電子郵件:SMTP / POP3 / IMAP
- SMTP(簡單郵件傳輸協定): 專門負責把郵件「寄出去」(寄到收件人的郵件伺服器)。
- POP3 / IMAP: 負責把郵件「收進來」到手機或電腦裡。
- POP3: 把郵件下載到本地電腦後,通常會把伺服器上的備份刪除(適合單一裝置)。
- IMAP: 讓郵件留在伺服器上,手機、筆電同步讀取(現代主流,如 Gmail 運作方式)。
4. 遠端控制:SSH / Telnet
- SSH(安全外殼協定): 讓工程師可以用加密、安全的方式,遠端連線並控制放在機房的伺服器。
- Telnet: 早期常見的遠端連線協定,但因為所有資料(含密碼)都是明碼傳輸,現已沒落(台灣著名的 PTT 批踢踢 BBS 仍在使用此協定)。
HTTP協定
拿回前面的例子,當你今天去google搜尋「貓咪 圖片」時,實際上對電腦來說發生了什麼呢?
HTTP 請求 – Request
當使用者透過瀏覽器向伺服器要資料時,需要發出Request (請求),請求的格式如下:
- 請求行(Request Line): 包含方法、路徑與協定版本。
- 範例:
GET /index.html HTTP/1.1
- 範例:
- 請求標頭(Headers): 瀏覽器的自我介紹與額外要求(鍵值對格式)。
Host: www.example.com(我要找哪台主機)User-Agent: Mozilla/5.0...(我是什麼瀏覽器)Accept-Language: zh-TW(我看得懂繁體中文)
- 空行(Blank Line): 必須存在,用來告訴伺服器「標頭結束了,下面是內容」。
- 請求主體(Body): 如果是
GET通常是空的;如果是POST(如送出登入表單),這裡就會存放帳號密碼等資料。
HTTP 回應 – Response
接著當伺服器處理完,回傳給瀏覽器的封包長這樣:
- 狀態行(Status Line): 協定版本與狀態碼。
- 範例:
HTTP/1.1 200 OK
- 範例:
- 回應標頭(Headers): 伺服器的自我介紹與檔案設定。
Content-Type: text/html(我回傳的是網頁 HTML 檔案喔!)Content-Length: 1234(這個檔案的大小)Server: Apache(我是 Apache 伺服器)
- 空行(Blank Line)
- 回應主體(Body): 最重要的部分。網頁的 HTML 原始碼、圖片的二進位資料、或是 API 的 JSON 資料都放在這裡,瀏覽器拿到後才會把它渲染成我們看到的精美網頁。

HTTPS
假設我們向google 發出了request,我們的request會跨越大海去到google的伺服器去跟他要資料,那如果駭客透過監聽訊號,監聽這一段訊息呢?如果只是貓咪圖片這種無關緊要的事,那好像還好,但如果今天你發送的request中包含信用卡號等資訊呢?
因此誕生了HTTPS,HTTPS是密文傳輸,在應用層與傳輸層之間加了一層加密防護罩。這樣駭客就算監聽到了你的信用卡號,也只會得到一堆亂碼! 而HTTPS是如何實現加密這件事的呢?
TLS 交握
TLS 交握(TLS Handshake)是客戶端(如瀏覽器)與伺服器在傳輸資料前建立安全連線的過程。
有了TLS,雙方能驗證彼此身份、協商加密演算法,並安全地交換對稱式金鑰,確保後續傳輸的隱私與完整性,整個流程大致如下:
第一步:打招呼與開條件 (Client Hello)
瀏覽器(客戶端)率先向伺服器發送問候,並遞出一份自備清單:
- 「嘿!我支援 TLS 1.2 版本。」
- 「這是我看得懂的密碼演算法清單(密碼套件)。」
- 「順便附上一串我自己產生的隨機亂數(Client Random)!」
第二步:回應與亮出身份證 (Server Hello & Certificate)
伺服器收到後,挑選好溝通方式,並亮出自己的大名與證明:
- 「收到!那我們就用 TLS 1.2 和你清單上的 A 演算法來溝通。」
- 「附上我這邊產生的隨機亂數(Server Random)。」
- 【憑證】「對了,這是公正第三方(CA 機構)發給我的數位憑證(身份證),證明我真的是 Google 官方,不是詐騙網站!」
第三步:打造鑰匙的雛形 (Client Key Exchange)
一旦確認伺服器不是冒牌貨,瀏覽器就要開始動手做鑰匙了:
- 瀏覽器在後台默默產生第三個亂數,叫做預主金鑰(Pre-Master Secret)。
- 瀏覽器拿出憑證上的「伺服器公鑰」,把這個預主金鑰鎖起來,大方地傳給伺服器。
第四步:原神! 啟動!
伺服器用私鑰解開密碼,順利拿到預主金鑰。此時,奇蹟發生了:
- 現在,瀏覽器與伺服器的手上,同時都擁有了三個元素:
Client Random+Server Random+Pre-Master Secret。 - 雙方在各自的後台,用這三個元素各自運算出同一把「對稱加密金鑰(Session Key)」。
- 雙方互相發送
Finished封包,宣示:「密鑰打造完成!接下來我們說的每句話,都要用這把鑰匙鎖進保險箱囉!」
交握大功告成!接下來,你在網頁上輸入的信用卡號,就會被這把 Session Key 狠狠鎖上,化作 request 跨越大海平安送達。
小結
講到這,你已經對網際網路的基礎運作原理有了一定的了解,接著我們就繼續前往瀏覽器的世界~!
