iT邦幫忙

2025 iThome 鐵人賽

DAY 29
0
Security

Izumi從零開始的30日WEB馬拉松系列 第 29

Day-29 基礎通訊總複習

  • 分享至 

  • xImage
  •  

今天我們要講到目前為止所有基礎通訊的總整理,內容包含層級概念、TCP與UDP比較(之前兩個都有講,但沒比較過),握手過程、TLS等。

1.層級概念

  • 應用層:直接與使用者或程式互動的協議(HTTP, DNS, SMTP, FTP, TLS在這層製作加密語意)
    注意:應用層的「語意」決定安全需求(例如HTTP要處理Cookie、認證)

  • 傳輸層:TCP/UDP(也含現代QUIC在UDP上運行)。負責端到端連線、重傳、順序(TCP)或快速傳送(UDP)

  • 網路層:IP(IPv4/IPv6),負責路由、分片、TTL

  • 連結層:Ethernet、Wi-Fi,處理實體網路上的frame

2.TCP對比UDP

  • TCP
    特性:三次握手連線、可靠性(ack/重傳)、順序控制(sequence/ack numbers)、流量控制(window)、擁 塞 控制(慢啟動、擴散等)

    常見flag:SYN、ACK、FIN、RST、PSH、URG

    問題點:若RTT大或丟包多,會觸發重傳與降低throughput(head-of-line blocking)

  • UDP
    特性:無連線、沒有重傳(應用層需處理),延遲低、開銷小

    用途:DNS、VoIP、遊戲、QUIC(在UDP上實作可靠層)

3.TCP三次握手與四次斷開

建立:

  1. SYN(Synchronize):由Client提供初始序號(Seq),告知伺服器連線要求
  2. SYN-ACK(Synchronize+Acknowledge):Server提供它的序號並確認來自Client的序號
  3. ACK(Acknowledge):Client確認來自Server的序號

關閉:

  1. A->B:FIN(A表示要結束傳輸)
  2. B->A:ACK(B確認收到結束請求)
  3. B->A:FIN(B也要結束傳輸)
  4. A->B:ACK(A確認B的結束)

4.TLS

  • 目的:機密性(加密)、完整性(MAC/AEAD)、驗證(憑證/CA)

  • TLS 1.2 vs 1.3 差異:
    1.2:ClientHello → ServerHello → Certificate → ServerKeyExchange → ClientKeyExchange → ChangeCipherSpec → Finished(較多 RTT)
    1.3:設計精簡、將keyexchange與協商合併、預共享鍵與0-RTT支援(更快,但需注意0-RTT replay風險)

  • Key exchange常見方式:ECDHE(ephemeral,提供前向保密)、RSA(舊、有弱點)

  • 密碼套件(cipher suite):含加密演算法(AES-GCM, ChaCha20-Poly1305)、金鑰交換(ECDHE)與簽章演算法(RSA/ECDSA)

  • 常見問題:
    憑證過期(browser error)
    支援舊版 TLS(1.0/1.1)或弱 cipher(RC4)會被列為不安全

5.HTTP

  • 常見方法:GET(讀取)、POST(建立/送資料)、PUT(更新/替換)、PATCH(部分更新)、DELETE。

  • 重要狀態碼:200 OK、301/302 redirect、400 client error、401 unauthorized、403 forbidden、404 not found、500 server error、503 service unavailable

  • 重要headers:
    Request:Host, User-Agent, Accept, Content-Type, Authorization, Cookie
    Response: Content-Type, Set-Cookie, Cache-Control, Strict-Transport-Security, Content- Security-Policy, X-Frame-Options

  • HTTP/2與HTTP/3:HTTP/2多路復用避免每個資源開新TCP連線;HTTP/3 基於 QUIC(UDP)進一步降低延遲並支持連線遷移。

  • 偵錯技巧:
    若500:看application logs、nginx error.log
    若cookie行為異常:檢查Set-Cookie是否有HttpOnly/Secure/SameSite
    若CORS問題:看response header是否有Access-Control-Allow-Origin

6.DNS

  • 類型記錄:A(IPv4), AAAA(IPv6), CNAME(別名), MX(郵件), TXT(驗證/DMARC), NS(授權DNS server), SOA(start of authority)

  • 查詢類型:
    迴圈查詢(recursive):client向其resolver要完整答案
    迭代查詢(iterative):resolver向上級DNS詢問各層(root→TLD→authoritative)

7.QUIC

  • QUIC在UDP上建立傳輸層,且內建加密(類似TLS),目標是降低建立連線的RTT與避免TCP頭堵(head-of-line blocking)

  • 重點:多路復用、0-RTT可能(快握手但有replay風險)、連線遷移(例如切換Wi-Fi到行動網路仍保留連線)

  • 分析工具:新版Wireshark支援QUIC與HTTP/3可以抓UDP封包再以QUIC解碼檢視

今日小結

以上是我們目前為止學過的網路基礎通訊的總整理,明天我會講我目前為止學習網路安全的心得以及建議


上一篇
Day28-建立基本防禦環境
下一篇
Day30- 30天的Web學習心得
系列文
Izumi從零開始的30日WEB馬拉松30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言