Logo

新人日誌

首頁關於我部落格

新人日誌

Logo

網站會不定期發佈技術筆記、職場心得相關的內容,歡迎關注本站!

網站
首頁關於我部落格
部落格
分類系列文

© 新人日誌. All rights reserved. 2020-present.

本文為「HTTP 新手村」系列第 2 篇

TCP/IP 應用層協議入門:HTTP、FTP、WebSocket 一次搞懂

最後更新:2025年12月10日基礎概念

你有沒有想過,當你打開網頁、傳檔案、收 Email 的時候,電腦到底是怎麼「溝通」的?

其實網路通訊有一套分層架構,叫做 TCP/IP 模型,從下到上分成四層:

  1. 網路存取層:處理實體線路、網卡這些硬體層面的事
  2. 網際網路層:負責 IP 位址、路由,讓資料知道要送去哪
  3. 傳輸層:確保資料完整送達(TCP)或快速傳輸(UDP)
  4. 應用層:直接面對使用者的服務,像是網頁、Email、檔案傳輸

這篇文章要介紹的,就是最上面那層——應用層的協議。

簡單說,應用層協議就是定義「我們要怎麼用網路做某件事」的規則。瀏覽網頁有瀏覽網頁的規則(HTTP),傳檔案有傳檔案的規則(FTP),收發信有收發信的規則(SMTP、POP3)。

接下來,我會用最白話的方式,帶你認識這些常見的應用層協議。放心,不會太硬!

瀏覽網頁:HTTP 和 HTTPS

HTTP:網頁背後的功臣

每次你在瀏覽器輸入網址、逛網站,背後都是 HTTP 在幫你搬資料。

簡單說,HTTP 就是幫你把網頁從伺服器「搬」到你的電腦上顯示。

它的工作模式很單純

  • 你發一個請求(我要看這個網頁)
  • 伺服器回你一個回應(好,網頁給你)
  • 結束,掰掰

每次都是這樣一來一回,做完就斷線。這種方式叫做「短連接」,等等會跟另一種「長連接」做比較,你就更懂了。

HTTPS:多一個 S,多一層保護

你有沒有注意過,有些網址是 http:// 開頭,有些是 https://?

多的那個 S 代表 Secure(安全),意思是資料有加密過。

打個比方

  • HTTP 像是寄明信片,內容誰都能看
  • HTTPS 像是寄密封信,只有收件人能打開

所以現在只要牽涉到登入、付款、個資,網站都會用 HTTPS。你看到網址旁邊有個小鎖頭,就是 HTTPS 在保護你。

延伸閱讀:HTTP 與 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 還支援「金鑰認證」,這是更安全也更方便的方式。

原理是這樣的:

  1. 你在自己電腦上產生一對金鑰:公鑰和私鑰
  2. 把公鑰放到伺服器上
  3. 之後連線時,伺服器會用公鑰驗證你的私鑰
  4. 驗證通過就直接登入,不用再打密碼

這就像你家大門有一把特殊的鎖,只有你手上的鑰匙能打開。就算別人知道你家地址,沒有鑰匙也進不去。

為什麼 SSH 很重要?

SSH 不只是用來「連進伺服器打指令」,它建立的加密通道還可以讓其他服務搭便車:

  • SFTP:透過 SSH 通道傳檔案(等等會介紹)
  • SCP:用 SSH 複製檔案到遠端
  • SSH Tunnel:把其他流量包在 SSH 裡面傳輸

可以說,只要你會 SSH,很多進階的伺服器操作都會用到它。這也是為什麼我們要先介紹 SSH,後面講 SFTP 時你才知道它背後的原理。

延伸閱讀:SSH 連線是什麼?初學者必看的安全連線工具指南

傳檔案:FTP 和 SFTP

FTP:專門搬檔案的搬運工

如果你需要把檔案傳到遠端的伺服器(比如上傳網站檔案),FTP 就是你的好幫手。

FTP 的全名是 File Transfer Protocol(檔案傳輸協議),顧名思義,它就是專門設計來「搬檔案」的。

什麼時候會用到 FTP?

  • 架設網站:把你寫好的 HTML、CSS、圖片上傳到虛擬主機
  • 學校空間:大學計算機中心通常會給學生一個個人網頁空間,你就是用 FTP 把東西傳上去
  • 公司內部:有些企業會架設 FTP 伺服器,讓員工上傳下載大型檔案

常用工具

最常用的軟體叫 FileZilla,免費又好用,介面很直覺,拖拉就能上傳下載。

使用方式很簡單:

  1. 輸入 FTP 伺服器的位址、帳號、密碼
  2. 連線成功後,左邊是你的電腦,右邊是遠端伺服器
  3. 把檔案從左邊拖到右邊,就上傳了

FTP 跟雲端硬碟差在哪?

你可能會想:「我用 Google Drive、Dropbox 不是也能傳檔案嗎?為什麼還要 FTP?」

這是個好問題!兩者的定位其實不太一樣:

比較項目FTP雲端硬碟(Google Drive 等)
主要用途把檔案傳到「伺服器」上個人檔案備份、同步、分享
操作對象通常是工程師、網站管理員一般使用者
權限控制可以精細設定每個資料夾的讀寫權限權限設定較簡單
整合性常搭配網站主機、伺服器使用獨立的儲存服務
介面需要專用軟體(如 FileZilla)網頁或 App 就能操作
自主性可以自己架 FTP 伺服器依賴第三方服務
FTP把檔案傳到「伺服器」上
雲端硬碟(Google Drive 等)個人檔案備份、同步、分享
FTP通常是工程師、網站管理員
雲端硬碟(Google Drive 等)一般使用者
FTP可以精細設定每個資料夾的讀寫權限
雲端硬碟(Google Drive 等)權限設定較簡單
FTP常搭配網站主機、伺服器使用
雲端硬碟(Google Drive 等)獨立的儲存服務
FTP需要專用軟體(如 FileZilla)
雲端硬碟(Google Drive 等)網頁或 App 就能操作
FTP可以自己架 FTP 伺服器
雲端硬碟(Google Drive 等)依賴第三方服務

簡單來說

  • 雲端硬碟:像是租一個現成的倉庫,方便你放東西、跟朋友分享
  • FTP:像是你有一台自己的貨車,可以把東西搬到任何你有權限進入的倉庫

如果你只是要備份照片、分享文件給朋友,用雲端硬碟就夠了。但如果你要「把檔案部署到伺服器上」,像是上傳網站、更新主機內容,FTP 才是正確的工具。

SFTP:加密版的 FTP

跟 HTTPS 的概念一樣,SFTP 就是 FTP 加上加密。

為什麼需要加密?

傳統的 FTP 有個問題:你輸入的帳號密碼、傳輸的檔案內容,都是「明文」在網路上跑的。如果有人在中間攔截,就能看到所有內容。

SFTP 透過 SSH 加密通道傳輸,就算被攔截,對方看到的也只是一堆亂碼。

什麼時候該用 SFTP?

  • 傳輸敏感資料(客戶資料、公司機密)
  • 連線到正式的生產環境伺服器
  • 任何你在乎安全性的場合

現在大部分的主機商、雲端伺服器都支援 SFTP,建議優先使用。FileZilla 也支援 SFTP,設定方式幾乎一樣,只是連線時選擇 SFTP 協議就好。

收發 Email:SMTP 和 POP3

你每天收發 Email,有沒有想過信是怎麼從你的信箱「飛」到對方的信箱的?

其實 Email 的背後有好幾種協議在分工合作,各司其職。

Email 傳輸的三大協議

協議全名負責的事
SMTPSimple Mail Transfer Protocol寄信
POP3Post Office Protocol 3收信(下載到本機)
IMAPInternet Message Access Protocol收信(同步在雲端)
全名Simple Mail Transfer Protocol
負責的事寄信
全名Post Office Protocol 3
負責的事收信(下載到本機)
全名Internet Message Access Protocol
負責的事收信(同步在雲端)

SMTP:負責把信「寄出去」

SMTP 就像郵局的寄件窗口,專門負責把你寫好的信送出去。

寄信的流程是這樣的

  1. 你在 Gmail 寫好一封信,按下「寄送」
  2. Gmail 的 SMTP 伺服器收到你的信
  3. SMTP 伺服器查詢對方的郵件伺服器在哪裡
  4. 把信送到對方的郵件伺服器
  5. 對方的伺服器把信存起來,等收件人來拿

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
連 PTTTelnet
遠端管理伺服器SSH
寄 EmailSMTP
收 EmailPOP3
做即時聊天、網頁遊戲WebSocket / WSS
做直播串流RTMP / RTSP
用這個HTTP / HTTPS
用這個FTP / SFTP
用這個Telnet
用這個SSH
用這個SMTP
用這個POP3
用這個WebSocket / WSS
用這個RTMP / RTSP

最後的小建議

給初學者的三個方向

  1. 先從 HTTP 開始理解,這是最基礎的
  2. 動手玩玩看,裝個 FileZilla 連 FTP、用 SSH 連遠端主機
  3. 記得認明「S」,有 S 的版本通常就是有加密的安全版

網路協議聽起來很技術,但其實概念不難。只要搞懂每個協議「是用來幹嘛的」,之後遇到相關問題就不會霧煞煞了!

上一篇瀏覽器輸入網址後發生什麼事?完整請求流程圖解
下一篇搞懂 HTTP:寫給完全新手的白話指南
目前還沒有留言,成為第一個留言的人吧!

發表留言

留言將在審核後顯示。

基礎概念

目錄

  • 瀏覽網頁:HTTP 和 HTTPS
  • HTTP:網頁背後的功臣
  • HTTPS:多一個 S,多一層保護
  • 遠端連線:Telnet 和 SSH
  • Telnet:老派但還活著
  • SSH:工程師的日常工具
  • 傳檔案:FTP 和 SFTP
  • FTP:專門搬檔案的搬運工
  • SFTP:加密版的 FTP
  • 收發 Email:SMTP 和 POP3
  • Email 傳輸的三大協議
  • SMTP:負責把信「寄出去」
  • POP3:把信「載下來」
  • IMAP:信件「同步」在雲端
  • 用比喻總結一下
  • 一封信的完整旅程
  • 自己架 Email 伺服器?三思!
  • 即時互動:WebSocket
  • 先搞懂:短連接 vs 長連接
  • 用比喻來理解
  • WebSocket 用在哪?
  • 那為什麼不是所有網站都用 WebSocket?
  • WSS:加密版 WebSocket
  • 看影片直播:RTMP 和 RTSP
  • 總結:一張表搞定
  • 最後的小建議