今天我們要講到目前為止所有基礎通訊的總整理,內容包含層級概念、TCP與UDP比較(之前兩個都有講,但沒比較過),握手過程、TLS等。
應用層:直接與使用者或程式互動的協議(HTTP, DNS, SMTP, FTP, TLS在這層製作加密語意)
注意:應用層的「語意」決定安全需求(例如HTTP要處理Cookie、認證)
傳輸層:TCP/UDP(也含現代QUIC在UDP上運行)。負責端到端連線、重傳、順序(TCP)或快速傳送(UDP)
網路層:IP(IPv4/IPv6),負責路由、分片、TTL
連結層:Ethernet、Wi-Fi,處理實體網路上的frame
TCP
特性:三次握手連線、可靠性(ack/重傳)、順序控制(sequence/ack numbers)、流量控制(window)、擁 塞 控制(慢啟動、擴散等)
常見flag:SYN、ACK、FIN、RST、PSH、URG
問題點:若RTT大或丟包多,會觸發重傳與降低throughput(head-of-line blocking)
UDP
特性:無連線、沒有重傳(應用層需處理),延遲低、開銷小
用途:DNS、VoIP、遊戲、QUIC(在UDP上實作可靠層)
建立:
關閉:
目的:機密性(加密)、完整性(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)會被列為不安全
常見方法: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
類型記錄:A(IPv4), AAAA(IPv6), CNAME(別名), MX(郵件), TXT(驗證/DMARC), NS(授權DNS server), SOA(start of authority)
查詢類型:
迴圈查詢(recursive):client向其resolver要完整答案
迭代查詢(iterative):resolver向上級DNS詢問各層(root→TLD→authoritative)
QUIC在UDP上建立傳輸層,且內建加密(類似TLS),目標是降低建立連線的RTT與避免TCP頭堵(head-of-line blocking)
重點:多路復用、0-RTT可能(快握手但有replay風險)、連線遷移(例如切換Wi-Fi到行動網路仍保留連線)
分析工具:新版Wireshark支援QUIC與HTTP/3可以抓UDP封包再以QUIC解碼檢視
以上是我們目前為止學過的網路基礎通訊的總整理,明天我會講我目前為止學習網路安全的心得以及建議