網路通訊協定總覽#

本章彙整應用層常見通訊協定,涵蓋網頁瀏覽、電子郵件、檔案傳輸、遠端管理、名稱解析與時間同步等領域。各協定皆建立於 TCP/IP 傳輸層之上,透過指定的連接埠(Port)提供服務。

各協定預設 Port 一覽#

協定Port傳輸層用途
HTTP80TCP網頁傳輸(明文)
HTTPS443TCP網頁傳輸(加密)
SMTP25 / 587TCP郵件傳送
POP3110TCP郵件接收(下載)
POP3S995TCP郵件接收(加密)
IMAP4143TCP郵件接收(伺服器管理)
IMAPS993TCP郵件接收(加密)
FTP20(資料)/ 21(控制)TCP檔案傳輸
FTPS990TCP檔案傳輸(加密)
SSH22TCP遠端安全連線
DNS53UDP / TCP網域名稱解析
NTP123UDP時間同步

Well-known Ports(0–1023)由 IANA 統一管理。記住核心協定的預設 Port,有助於防火牆規則設定與故障排除。


HTTP / HTTPS 與 SSL / TLS#

HTTP(HyperText Transfer Protocol)#

HTTP 是全球資訊網的基礎協定,採用請求-回應模型(Request-Response Model):客戶端發出請求,伺服器回傳資源。

  • 無狀態(Stateless):每次請求獨立,伺服器不保留先前連線資訊
  • 方法(Method)GET(取得資源)、POST(提交資料)、PUT(更新)、DELETE(刪除)等
  • 狀態碼(Status Code)2xx 成功、3xx 重導向、4xx 客戶端錯誤、5xx 伺服器錯誤
sequenceDiagram
    participant C as Client(瀏覽器)
    participant S as Server(Web 伺服器)
    C->>S: TCP 三方交握(SYN / SYN+ACK / ACK)
    C->>S: HTTP Request(GET /index.html)
    S-->>C: HTTP Response(200 OK + HTML)
    C->>S: HTTP Request(GET /style.css)
    S-->>C: HTTP Response(200 OK + CSS)
    Note over C,S: HTTP/1.1 Keep-Alive 可複用同一 TCP 連線

HTTP 版本演進#

版本特點
HTTP/1.0每次請求建立新 TCP 連線,效率低
HTTP/1.1持續連線(Keep-Alive)、管線化(Pipelining)、Host 標頭
HTTP/2二進位分幀、多工傳輸(Multiplexing)、標頭壓縮、伺服器推送
HTTP/3基於 QUIC(UDP),減少連線建立延遲,改善封包遺失時的效能

HTTPS(HTTP over TLS)#

HTTPS 在 HTTP 與 TCP 之間插入 TLS 加密層,確保傳輸的機密性完整性身分驗證

比較項目HTTPHTTPS
Port80443
加密TLS 加密
憑證不需要需要 SSL/TLS 憑證
URL 前綴http://https://
安全性明文傳輸,易遭竊聽與竄改加密傳輸,防竊聽、防竄改、防冒充

現代瀏覽器對 HTTP 網站標示「不安全」警告。所有涉及使用者資料的網站皆應部署 HTTPS。

SSL / TLS(安全傳輸層協定)#

SSL(Secure Sockets Layer) 為早期加密協定,現已被 TLS(Transport Layer Security) 取代。兩者常被混稱為「SSL/TLS」。

版本演進#

版本狀態說明
SSL 2.0已廢棄存在嚴重安全漏洞
SSL 3.0已廢棄POODLE 攻擊漏洞
TLS 1.0已廢棄相當於 SSL 3.1,已不建議使用
TLS 1.1已廢棄安全性不足,主流瀏覽器已停止支援
TLS 1.2使用中目前廣泛部署的版本
TLS 1.3推薦精簡握手流程(1-RTT)、移除不安全演算法、更高效能

SSL 2.0、SSL 3.0、TLS 1.0 與 TLS 1.1 皆已被 IETF 正式廢棄(RFC 8996)。伺服器應僅啟用 TLS 1.2 以上版本。

TLS 握手流程#

sequenceDiagram
    participant C as Client
    participant S as Server
    C->>S: ClientHello(支援的 TLS 版本、加密套件列表、亂數)
    S-->>C: ServerHello(選定 TLS 版本、加密套件、亂數)
    S-->>C: Certificate(伺服器憑證,含公鑰)
    S-->>C: ServerHelloDone
    C->>C: 驗證憑證(CA 信任鏈)
    C->>S: ClientKeyExchange(以公鑰加密預主密鑰)
    C->>S: ChangeCipherSpec(切換至加密模式)
    C->>S: Finished(加密驗證訊息)
    S-->>C: ChangeCipherSpec
    S-->>C: Finished
    Note over C,S: 雙方以對稱金鑰進行加密通訊

TLS 核心機制#

機制說明
非對稱加密(Asymmetric Encryption)握手階段用於安全交換金鑰(如 RSA、ECDHE)
對稱加密(Symmetric Encryption)資料傳輸階段使用,效能遠高於非對稱加密(如 AES)
數位憑證(Digital Certificate)由 CA(Certificate Authority)簽發,驗證伺服器身分
訊息驗證碼(MAC)確保資料在傳輸過程中未被竄改
TLS 1.3 與 TLS 1.2 的主要差異
  • 握手簡化:TLS 1.3 將握手從 2-RTT 縮減為 1-RTT,並支援 0-RTT 重連
  • 移除不安全演算法:淘汰 RSA 金鑰交換、RC4、3DES、SHA-1 等
  • 僅保留 AEAD 加密模式:如 AES-GCM、ChaCha20-Poly1305
  • 前向保密(Forward Secrecy):強制使用 ECDHE 或 DHE,即使私鑰洩漏也無法解密過去的通訊

電子郵件協定:SMTP / POP3 / IMAP4#

電子郵件系統由傳送接收兩個階段組成,分別使用不同協定。

郵件收發架構#

sequenceDiagram
    participant A as 寄件者(MUA)
    participant MS as 寄件 SMTP 伺服器
    participant MR as 收件 SMTP 伺服器
    participant B as 收件者(MUA)
    A->>MS: SMTP(提交郵件)
    MS->>MR: SMTP(轉送郵件)
    MR-->>MR: 儲存至信箱
    B->>MR: POP3 或 IMAP4(取得郵件)
    MR-->>B: 回傳郵件內容

SMTP(Simple Mail Transfer Protocol)#

項目說明
功能負責郵件的傳送與轉送(MUA -> MTA -> MTA)
Port25(伺服器間轉送)、587(用戶端提交,搭配認證)
特性純文字協定,指令以文字形式交換
延伸ESMTP(Extended SMTP)支援 STARTTLS 加密與認證機制(SMTP AUTH)

Port 25 常被 ISP 封鎖以防範垃圾郵件(OP25B, Outbound Port 25 Blocking)。用戶端寄信應使用 Port 587 搭配 SMTP AUTH。

POP3 vs IMAP4#

比較項目POP3IMAP4
全名Post Office Protocol v3Internet Message Access Protocol v4
Port110(明文)/ 995(SSL)143(明文)/ 993(SSL)
運作方式將郵件下載至本機,預設從伺服器刪除郵件保留於伺服器,本機僅快取
多裝置同步不適合(各裝置各自下載)適合(所有裝置看到一致的信箱狀態)
離線閱讀下載後可離線閱讀需先快取,否則需連線
伺服器儲存空間需求低(郵件已移至本機)需求高(所有郵件保留於伺服器)
適用場景單一裝置、儲存空間有限的伺服器多裝置存取、需統一管理郵件

現代郵件使用以 IMAP4 為主流,配合大容量雲端儲存,可在手機、筆電與網頁信箱間無縫同步。


FTP(File Transfer Protocol)#

FTP 用於在客戶端與伺服器之間進行檔案傳輸,使用兩條獨立的 TCP 連線。

雙通道架構#

通道Port用途
控制通道(Control Channel)21傳送指令與回應(登入、目錄操作、傳輸模式設定)
資料通道(Data Channel)20(主動模式)實際檔案與目錄清單的傳輸

主動模式 vs 被動模式#

比較項目主動模式(Active)被動模式(Passive)
資料連線發起方伺服器主動連線至客戶端客戶端主動連線至伺服器
伺服器資料 Port20(固定)隨機高位 Port(由伺服器指定)
防火牆相容性差(客戶端防火牆可能阻擋伺服器的連入)佳(客戶端主動發起,較易穿越 NAT/防火牆)
常見使用情境內部網路、無 NAT 環境網際網路環境、NAT 後方的客戶端

FTP 以明文傳輸帳號密碼與檔案內容。在安全性要求高的環境中,應改用 FTPS(FTP over TLS)或 SFTP(SSH File Transfer Protocol,基於 SSH)。

FTP 指令範例
  • USER:指定使用者名稱
  • PASS:指定密碼
  • LIST:列出目錄內容
  • RETR:下載檔案
  • STOR:上傳檔案
  • PASV:切換至被動模式
  • QUIT:結束連線

SSH(Secure Shell)#

SSH 提供加密的遠端連線,取代早期明文傳輸的 Telnet 與 rlogin。

核心功能#

功能說明
遠端命令列操作安全登入遠端主機執行指令
Port 轉送(Port Forwarding / SSH Tunnel)透過加密通道轉送任意 TCP 連線
SFTP / SCP基於 SSH 的安全檔案傳輸

SSH 認證方式#

方式說明安全性
密碼認證輸入使用者帳號與密碼較低(易受暴力破解)
公鑰認證將公鑰部署至伺服器,以私鑰進行驗證較高(推薦方式)

建議停用 SSH 密碼認證,僅使用公鑰認證,並變更預設 Port(22)以降低自動化攻擊風險。

SSH 連線流程#

sequenceDiagram
    participant C as Client
    participant S as Server
    C->>S: TCP 連線(Port 22)
    C->>S: 協商 SSH 版本與加密演算法
    S-->>C: 伺服器公鑰(Host Key)
    C->>C: 驗證 Host Key(首次連線需確認指紋)
    C->>S: 金鑰交換(建立對稱加密通道)
    Note over C,S: 加密通道建立完成
    C->>S: 使用者認證(密碼或公鑰)
    S-->>C: 認證成功,開啟 Session

DNS(Domain Name System)#

DNS 將人類可讀的網域名稱(如 www.example.com)轉換為 IP 位址(如 93.184.216.34),是網際網路運作的基礎設施。

DNS 階層結構#

DNS 採用樹狀階層式架構,由根往下依序為:

層級名稱範例
1根網域(Root).,全球共 13 組根名稱伺服器
2頂級網域(TLD).com.org.jp.tw
3二級網域(Second-Level Domain)example.com
4子網域(Subdomain)www.example.commail.example.com

DNS 查詢流程#

sequenceDiagram
    participant C as Client
    participant R as 遞迴解析器(Recursive Resolver)
    participant Root as 根名稱伺服器
    participant TLD as TLD 伺服器(.com)
    participant Auth as 權威伺服器(example.com)
    C->>R: 查詢 www.example.com
    R->>R: 檢查快取(Cache)
    Note over R: 快取未命中
    R->>Root: 查詢 www.example.com
    Root-->>R: 回傳 .com TLD 伺服器位址
    R->>TLD: 查詢 www.example.com
    TLD-->>R: 回傳 example.com 權威伺服器位址
    R->>Auth: 查詢 www.example.com
    Auth-->>R: 回傳 A 記錄(93.184.216.34)
    R-->>C: www.example.com = 93.184.216.34
    Note over R: 將結果存入快取(依 TTL)

常見 DNS 記錄類型#

記錄類型用途
A網域名稱對應 IPv4 位址
AAAA網域名稱對應 IPv6 位址
CNAME網域別名,指向另一個網域名稱
MX指定處理該網域郵件的伺服器
NS指定該網域的權威名稱伺服器
TXT存放文字資訊(常用於 SPF、DKIM、DMARC 郵件驗證)
PTR反向查詢,由 IP 位址查網域名稱
SOA記錄該 Zone 的管理資訊與序號

DNS 查詢預設使用 UDP(Port 53),回應超過 512 位元組或進行區域傳送(Zone Transfer)時改用 TCP。

DNS 快取與 TTL
  • TTL(Time to Live):每筆 DNS 記錄附帶的存活時間,遞迴解析器依此決定快取保留時長
  • 快取的好處:減少重複查詢、降低根與權威伺服器負載、加快解析速度
  • 快取的風險:DNS 記錄異動後,舊快取在 TTL 到期前仍會被使用,導致短暫的解析不一致
  • 建議:進行 DNS 變更前先調低 TTL,待變更生效並確認無誤後再調回正常值

NTP(Network Time Protocol)#

NTP 用於在網路中同步各裝置的系統時鐘,確保時間一致性。

核心概念#

  • Port:UDP 123
  • 精度:在區域網路中可達毫秒級同步
  • 階層(Stratum)
    層級說明
    Stratum 0原子鐘、GPS 等高精度時間源(參考時鐘)
    Stratum 1直接連接 Stratum 0 的 NTP 伺服器
    Stratum 2從 Stratum 1 同步的伺服器,依此遞推
    Stratum 16表示未同步

時間同步對日誌分析、憑證驗證、分散式系統一致性至關重要。若各伺服器時鐘不一致,可能導致認證失敗、事件關聯錯誤等問題。


HTTP Proxy(代理伺服器)#

HTTP Proxy 作為客戶端與目標伺服器之間的中介,代替客戶端發送請求並回傳結果。

代理類型#

類型說明
正向代理(Forward Proxy)客戶端主動設定,代理代為存取外部資源;常用於企業內部網路控管
反向代理(Reverse Proxy)部署於伺服器前端,客戶端無需感知;常用於負載平衡、快取、SSL 終端
透明代理(Transparent Proxy)客戶端無需設定,由網路設備自動導向;常用於 ISP 或企業閘道

主要功能#

功能說明
快取(Cache)暫存常用資源,減少對源伺服器的請求,加快回應速度
存取控制(Access Control)過濾特定網站或內容(URL Filtering)
匿名性隱藏客戶端真實 IP 位址
日誌記錄(Logging)記錄使用者的存取行為,供稽核與分析

反向代理(如 Nginx、HAProxy)在現代 Web 架構中幾乎是標準配置,可同時處理 SSL 終端、負載平衡與靜態資源快取。


REST API#

REST(Representational State Transfer)是一種軟體架構風格,定義了客戶端與伺服器之間透過 HTTP 進行資源操作的設計原則。

REST 核心原則#

原則說明
資源導向(Resource-Oriented)每個資源以唯一的 URI 識別(如 /users/123
統一介面(Uniform Interface)使用標準 HTTP 方法操作資源
無狀態(Stateless)每次請求包含所有必要資訊,伺服器不保留 Session 狀態
表述(Representation)資源可以不同格式表述(JSON、XML 等)

HTTP 方法與 CRUD 對應#

HTTP 方法CRUD 操作範例說明
GETReadGET /users/123取得指定資源,不產生副作用
POSTCreatePOST /users建立新資源
PUTUpdatePUT /users/123完整替換指定資源
PATCHPartial UpdatePATCH /users/123部分更新指定資源
DELETEDeleteDELETE /users/123刪除指定資源

HTTP 狀態碼分類#

範圍類別常見範例
2xx成功200 OK201 Created204 No Content
3xx重導向301 Moved Permanently304 Not Modified
4xx客戶端錯誤400 Bad Request401 Unauthorized403 Forbidden404 Not Found
5xx伺服器錯誤500 Internal Server Error502 Bad Gateway503 Service Unavailable

REST 並非正式的協定或標準,而是一組架構約束。遵循 REST 原則設計的 API 稱為 RESTful API。實際開發中常搭配 OpenAPI(Swagger)規範進行 API 文件化。

REST API 認證常見方式
  • API Key:將金鑰置於 Header 或 Query Parameter,實作簡單但安全性較低
  • Bearer Token(OAuth 2.0):透過 Authorization: Bearer <token> 傳遞存取權杖,適用於第三方授權
  • JWT(JSON Web Token):自包含的權杖格式,伺服器無需查詢資料庫即可驗證,適合微服務架構
  • mTLS(Mutual TLS):雙向憑證驗證,適用於服務間(Service-to-Service)通訊

本章重點整理#

領域協定核心概念
網頁傳輸HTTP / HTTPS請求-回應模型、TLS 加密、HTTP/2 多工傳輸
加密傳輸SSL / TLS非對稱加密握手、對稱加密傳輸、數位憑證、前向保密
郵件傳送SMTPMUA -> MTA 轉送鏈、Port 587 + AUTH
郵件接收POP3 / IMAP4POP3 下載至本機、IMAP4 保留於伺服器同步
檔案傳輸FTP雙通道架構、主動/被動模式、明文風險
遠端管理SSH加密連線、公鑰認證、Port 轉送
名稱解析DNS階層式架構、遞迴查詢、快取與 TTL
時間同步NTPStratum 階層、UDP 傳輸
代理服務HTTP Proxy正向/反向/透明代理、快取、存取控制
API 設計REST API資源導向、HTTP 方法對應 CRUD、無狀態