你有沒有想過,當你打開網頁、傳檔案、收 Email 的時候,電腦到底是怎麼「溝通」的?
其實網路通訊有一套分層架構,叫做 TCP/IP 模型,從下到上分成四層:
- 網路存取層:處理實體線路、網卡這些硬體層面的事
- 網際網路層:負責 IP 位址、路由,讓資料知道要送去哪
- 傳輸層:確保資料完整送達(TCP)或快速傳輸(UDP)
- 應用層:直接面對使用者的服務,像是網頁、Email、檔案傳輸
這篇文章要介紹的,就是最上面那層——應用層的協議。
簡單說,應用層協議就是定義「我們要怎麼用網路做某件事」的規則。瀏覽網頁有瀏覽網頁的規則(HTTP),傳檔案有傳檔案的規則(FTP),收發信有收發信的規則(SMTP、POP3)。
接下來,我會用最白話的方式,帶你認識這些常見的應用層協議。放心,不會太硬!
瀏覽網頁:HTTP 和 HTTPS
HTTP:網頁背後的功臣
每次你在瀏覽器輸入網址、逛網站,背後都是 HTTP 在幫你搬資料。
簡單說,HTTP 就是幫你把網頁從伺服器「搬」到你的電腦上顯示。
它的工作模式很單純
- 你發一個請求(我要看這個網頁)
- 伺服器回你一個回應(好,網頁給你)
- 結束,掰掰
每次都是這樣一來一回,做完就斷線。這種方式叫做「短連接」,等等會跟另一種「長連接」做比較,你就更懂了。
HTTPS:多一個 S,多一層保護
你有沒有注意過,有些網址是 http:// 開頭,有些是 https://?
多的那個 S 代表 Secure(安全),意思是資料有加密過。
打個比方
- HTTP 像是寄明信片,內容誰都能看
- HTTPS 像是寄密封信,只有收件人能打開
所以現在只要牽涉到登入、付款、個資,網站都會用 HTTPS。你看到網址旁邊有個小鎖頭,就是 HTTPS 在保護你。
遠端連線:Telnet 和 SSH
當你需要「進到別台電腦裡面操作」的時候,就需要用到遠端連線協議。就像你人在家裡,但可以遙控公司的電腦一樣。
Telnet:老派但還活著
Telnet 是很早期的遠端連線方式,在網路發展初期就存在了。
Telnet 是做什麼的?
簡單說,Telnet 讓你可以透過網路「登入」到另一台電腦,然後在上面打指令、執行程式,就像你人坐在那台電腦前面一樣。
現在還有人用嗎?
老實說,Telnet 現在幾乎被淘汰了。但在台灣,它還有一個很知名的用途——連 PTT:
telnet://ptt.cc你可以在終端機輸入:
telnet ptt.cc就會連進 PTT 的文字介面,這就是 Telnet 的經典應用。
安全性問題
不過 Telnet 有個致命的缺點:完全沒加密。
你輸入的帳號、密碼、所有操作內容,都是「明文」在網路上傳輸。只要有人在中間攔截封包,就能看到你打了什麼。
這就像你在咖啡廳大聲報出自己的銀行密碼——誰都聽得到。
所以現在除了 PTT 這種特殊情況,正經的伺服器管理都已經改用 SSH 了。
SSH:工程師的日常工具
SSH 的全名是 Secure Shell,顧名思義,就是「安全的 Shell」。它是 Telnet 的安全升級版,所有傳輸內容都經過加密。
SSH 能做什麼?
- 遠端登入伺服器:連進 Linux 主機,執行指令、管理檔案
- 安全傳輸資料:透過加密通道傳檔案(SFTP、SCP)
- 建立加密隧道:讓其他服務「搭便車」走 SSH 的加密通道
什麼時候會聽到?
如果你聽到有人說:
- 「SSH 進去看一下 log」
- 「給我你的 SSH 金鑰」
- 「開一個 SSH 連線到 production」
這些都是工程師在說要遠端連進伺服器操作的意思。
實際怎麼用?
在終端機輸入:
ssh username@伺服器IP比如說:
ssh root@192.168.1.100輸入密碼後,你就「進到」那台伺服器裡面了,可以開始打指令。
SSH 金鑰是什麼?
除了用密碼登入,SSH 還支援「金鑰認證」,這是更安全也更方便的方式。
原理是這樣的:
- 你在自己電腦上產生一對金鑰:公鑰和私鑰
- 把公鑰放到伺服器上
- 之後連線時,伺服器會用公鑰驗證你的私鑰
- 驗證通過就直接登入,不用再打密碼
這就像你家大門有一把特殊的鎖,只有你手上的鑰匙能打開。就算別人知道你家地址,沒有鑰匙也進不去。
為什麼 SSH 很重要?
SSH 不只是用來「連進伺服器打指令」,它建立的加密通道還可以讓其他服務搭便車:
- SFTP:透過 SSH 通道傳檔案(等等會介紹)
- SCP:用 SSH 複製檔案到遠端
- SSH Tunnel:把其他流量包在 SSH 裡面傳輸
可以說,只要你會 SSH,很多進階的伺服器操作都會用到它。這也是為什麼我們要先介紹 SSH,後面講 SFTP 時你才知道它背後的原理。
傳檔案:FTP 和 SFTP
FTP:專門搬檔案的搬運工
如果你需要把檔案傳到遠端的伺服器(比如上傳網站檔案),FTP 就是你的好幫手。
FTP 的全名是 File Transfer Protocol(檔案傳輸協議),顧名思義,它就是專門設計來「搬檔案」的。
什麼時候會用到 FTP?
- 架設網站:把你寫好的 HTML、CSS、圖片上傳到虛擬主機
- 學校空間:大學計算機中心通常會給學生一個個人網頁空間,你就是用 FTP 把東西傳上去
- 公司內部:有些企業會架設 FTP 伺服器,讓員工上傳下載大型檔案
常用工具
最常用的軟體叫 FileZilla,免費又好用,介面很直覺,拖拉就能上傳下載。
使用方式很簡單:
- 輸入 FTP 伺服器的位址、帳號、密碼
- 連線成功後,左邊是你的電腦,右邊是遠端伺服器
- 把檔案從左邊拖到右邊,就上傳了
FTP 跟雲端硬碟差在哪?
你可能會想:「我用 Google Drive、Dropbox 不是也能傳檔案嗎?為什麼還要 FTP?」
這是個好問題!兩者的定位其實不太一樣:
| 比較項目 | FTP | 雲端硬碟(Google Drive 等) |
|---|---|---|
| 主要用途 | 把檔案傳到「伺服器」上 | 個人檔案備份、同步、分享 |
| 操作對象 | 通常是工程師、網站管理員 | 一般使用者 |
| 權限控制 | 可以精細設定每個資料夾的讀寫權限 | 權限設定較簡單 |
| 整合性 | 常搭配網站主機、伺服器使用 | 獨立的儲存服務 |
| 介面 | 需要專用軟體(如 FileZilla) | 網頁或 App 就能操作 |
| 自主性 | 可以自己架 FTP 伺服器 | 依賴第三方服務 |
簡單來說
- 雲端硬碟:像是租一個現成的倉庫,方便你放東西、跟朋友分享
- FTP:像是你有一台自己的貨車,可以把東西搬到任何你有權限進入的倉庫
如果你只是要備份照片、分享文件給朋友,用雲端硬碟就夠了。但如果你要「把檔案部署到伺服器上」,像是上傳網站、更新主機內容,FTP 才是正確的工具。
SFTP:加密版的 FTP
跟 HTTPS 的概念一樣,SFTP 就是 FTP 加上加密。
為什麼需要加密?
傳統的 FTP 有個問題:你輸入的帳號密碼、傳輸的檔案內容,都是「明文」在網路上跑的。如果有人在中間攔截,就能看到所有內容。
SFTP 透過 SSH 加密通道傳輸,就算被攔截,對方看到的也只是一堆亂碼。
什麼時候該用 SFTP?
- 傳輸敏感資料(客戶資料、公司機密)
- 連線到正式的生產環境伺服器
- 任何你在乎安全性的場合
現在大部分的主機商、雲端伺服器都支援 SFTP,建議優先使用。FileZilla 也支援 SFTP,設定方式幾乎一樣,只是連線時選擇 SFTP 協議就好。
收發 Email:SMTP 和 POP3
你每天收發 Email,有沒有想過信是怎麼從你的信箱「飛」到對方的信箱的?
其實 Email 的背後有好幾種協議在分工合作,各司其職。
Email 傳輸的三大協議
| 協議 | 全名 | 負責的事 |
|---|---|---|
| SMTP | Simple Mail Transfer Protocol | 寄信 |
| POP3 | Post Office Protocol 3 | 收信(下載到本機) |
| IMAP | Internet Message Access Protocol | 收信(同步在雲端) |
SMTP:負責把信「寄出去」
SMTP 就像郵局的寄件窗口,專門負責把你寫好的信送出去。
寄信的流程是這樣的
- 你在 Gmail 寫好一封信,按下「寄送」
- Gmail 的 SMTP 伺服器收到你的信
- SMTP 伺服器查詢對方的郵件伺服器在哪裡
- 把信送到對方的郵件伺服器
- 對方的伺服器把信存起來,等收件人來拿
SMTP 的特性
- 只負責「送」,不負責「收」
- 預設使用 Port 25(現在很多改用 587 或 465)
- 加密版本叫 SMTPS
POP3:把信「載下來」
POP3 像是你去郵局把信領回家。信件會從伺服器下載到你的電腦或手機,下載完後伺服器上的信預設會被刪除。
POP3 的特性
- 信件下載後存在本機
- 伺服器上的信通常會被移除(可設定保留)
- 適合只用一台裝置收信的人
- 預設使用 Port 110(加密版用 995)
POP3 的問題
如果你有手機、筆電、桌機三台裝置,用 POP3 會很麻煩——因為信下載到手機後,筆電和桌機就看不到了。
IMAP:信件「同步」在雲端
IMAP 解決了 POP3 的問題。它不會把信載下來,而是讓你的裝置跟伺服器「同步」。
IMAP 的特性
- 信件保留在伺服器上
- 所有裝置看到的信件狀態一致(已讀、未讀、資料夾)
- 適合多裝置使用者
- 預設使用 Port 143(加密版用 993)
現在主流是 IMAP
你用的 Gmail、Outlook、Yahoo Mail,背後幾乎都是用 IMAP 在同步。這也是為什麼你在手機上讀過的信,電腦打開也會顯示已讀。
用比喻總結一下
| 協議 | 比喻 |
|---|---|
| SMTP | 郵局寄件窗口——把信寄出去 |
| POP3 | 去郵局領包裹——把信帶回家,郵局就沒了 |
| IMAP | 雲端信箱——信放在郵局,你隨時去看都可以 |
一封信的完整旅程
假設你用 Gmail 寄信給一個用 Yahoo 的朋友:
你 (Gmail)
↓ [SMTP]
Gmail 的 SMTP 伺服器
↓ [SMTP]
Yahoo 的郵件伺服器(信存在這裡)
↓ [IMAP 或 POP3]
你朋友的手機/電腦寄出去用 SMTP,收進來用 IMAP 或 POP3,各司其職。
自己架 Email 伺服器?三思!
如果你想在公司自己架 Email 伺服器,要有心理準備——這水非常深。
技術上要處理的事
- SMTP 伺服器:處理寄信
- IMAP/POP3 伺服器:處理收信
- DNS 設定:MX 記錄要指向你的伺服器
- SSL 憑證:加密傳輸
你會遇到的麻煩事
自架郵件伺服器最大的挑戰不是「能不能寄出去」,而是「對方能不能收到」。
現在的郵件系統有很多防垃圾信機制:
| 機制 | 說明 |
|---|---|
| SPF | 驗證寄信的伺服器是否被授權 |
| DKIM | 用數位簽章驗證信件沒被竄改 |
| DMARC | 告訴收件伺服器如何處理驗證失敗的信 |
如果你沒設定好這些,你的信很可能會:
- 直接進垃圾郵件匣
- 被對方伺服器拒收
- 你的 IP 被列入黑名單
其他頭痛的問題
- 退信(Bounce)怎麼處理?
- 被列入黑名單怎麼申訴解除?
- 怎麼防止別人用你的伺服器發垃圾信?
- 信件備份和災難復原怎麼做?
建議:用現成的服務
除非你有特殊需求(例如法規要求資料不能放國外),不然建議直接用:
- Google Workspace(原 G Suite)
- Microsoft 365
- Zoho Mail
這些服務幫你處理好所有複雜的事,你只要專心收發信就好。每個月幾百塊,省下來的時間和麻煩絕對值得。
即時互動:WebSocket
先搞懂:短連接 vs 長連接
還記得前面說 HTTP 是「一來一回就斷線」的短連接嗎?
WebSocket 完全不同,它是「長連接」——連上之後,通道會一直保持著,雙方可以隨時互傳資料。
用比喻來理解
想像兩個國家要運送貨物:
HTTP(短連接)
每次都要派一艘船出海,送到之後船就回來了。下次要送,再派一艘新的船。
WebSocket(長連接)
兩國之間直接挖一條運河,貨物隨時都可以雙向流通,不用每次都重新出海。
WebSocket 用在哪?
需要「即時」的地方就會用到:
常見應用場景
- 網頁遊戲(玩家動作要馬上同步)
- 線上聊天室(訊息要秒傳)
- 股票報價(價格一直在跳動)
那為什麼不是所有網站都用 WebSocket?
好問題!因為維護這條「運河」是要成本的。
每個連線都會佔用伺服器的一個「接口」,接口數量有限。如果太多人同時連,伺服器就撐不住了。
這就是「分服」的原因
這就是為什麼玩線上遊戲常常聽到:
- 「一服滿了,請換二服」
- 「伺服器爆滿」
因為一台伺服器能承載的長連接數量有限啊!
對於一般的形象網站、官網、部落格,根本不需要這種即時互動,用 HTTP 的短連接就夠了,又省資源。
延伸閱讀:新手入門:WebSocket 是什麼
WSS:加密版 WebSocket
跟前面的邏輯一樣,WSS 就是 WebSocket + 加密,比較安全。
看影片直播:RTMP 和 RTSP
當你看 YouTube 直播或 Twitch 實況,背後用的不是一般的 HTTP,而是專門的串流協議。
兩種協議的分工
- RTMP:常用於直播「推流」(把畫面送出去)
- RTSP:常用於串流「播放」(把畫面拉回來看)
為什麼要用串流協議?
這兩個協議會把影片切成一小段一小段,連續傳送,所以延遲比較低,適合即時影音。
監視器、IP Camera 通常也是用這類協議。
總結:一張表搞定
| 我想要… | 用這個 |
|---|---|
| 瀏覽網頁 | HTTP / HTTPS |
| 上傳下載檔案 | FTP / SFTP |
| 連 PTT | Telnet |
| 遠端管理伺服器 | SSH |
| 寄 Email | SMTP |
| 收 Email | POP3 |
| 做即時聊天、網頁遊戲 | WebSocket / WSS |
| 做直播串流 | RTMP / RTSP |
最後的小建議
給初學者的三個方向
- 先從 HTTP 開始理解,這是最基礎的
- 動手玩玩看,裝個 FileZilla 連 FTP、用 SSH 連遠端主機
- 記得認明「S」,有 S 的版本通常就是有加密的安全版
網路協議聽起來很技術,但其實概念不難。只要搞懂每個協議「是用來幹嘛的」,之後遇到相關問題就不會霧煞煞了!