HTTP 協議
-
定義:HTTP (Hypertext Transfer Protocol) 是一種基於「請求-回應」模型的應用層協議,用於在 World Wide Web (就是 網址的 www)上傳輸資訊。
-
版本:HTTP/1.0、HTTP/1.1 和 HTTP/2 是常見的版本。同樣的也有 HTTP/3 ,它基於 QUIC 協議。
QUIC提供幾乎等同於TCP連接的可靠性,但它可以大大的減少延遲。它主要透過兩個理解HTTP流量的行為來實現這一點。
-
HTTP 與 HTTPS:HTTPS 是安全版本的 HTTP,它使用 SSL/TLS 協議加密資料。
-
請求方法:如 GET(獲取資源)、POST(提交數據)、PUT(更新資源)等。
-
狀態碼:例如 200(OK)、404(Not Found)、500(Internal Server Error)等。
HTTP 請求和回應結構
-
請求行:例如
GET /index.html HTTP/1.1
,表示使用 GET 方法獲取 /index.html
資源,並使用 HTTP/1.1 版本。
-
頭部(Headers):包含資訊如
User-Agent
(用戶代理)、Accept
(可接受的媒體類型)等。
-
消息主體:在某些請求(如 POST 請求)中包含提交的數據。
Web 應用結構
-
前端(Client Side):
-
靜態資源:例如 HTML、CSS、JavaScript 檔案。
-
動態交互:如 AJAX 請求、WebSockets 通訊。
-
後端(Server Side):
-
伺服器:如 Apache、Nginx、Node.js。
-
應用程式:例如使用 PHP、Python、Ruby、Java 等語言寫成。
-
數據庫:如 MySQL、PostgreSQL、MongoDB。
-
中間件(Middleware):功能如路由、身份驗證、日誌記錄等。
伺服器和客戶端的交互
-
連接建立:通常使用 TCP 三次握手。
-
數據交換:客戶端發送 HTTP 請求,伺服器回應。
-
連接終止:可由任一方終止,通常使用 TCP 四次握手。
Session 和 Cookie
-
Cookie:
- 用於保存用戶設定或識別用戶
- 以明碼方式傳送
- 不會因為瀏覽器的關閉,而消失
-
Session:
- 存在server端
- 用來保存用戶狀態的資訊,常與 Cookie 結合使用
- 主要是記錄在 web server 上的使用者訊息
參考資料
https://developer.mozilla.org/zh-TW/docs/Web/HTTP/Status
https://www.cloudflare.com/zh-tw/learning/ddos/glossary/hypertext-transfer-protocol-http/
https://ithelp.ithome.com.tw/articles/10187212