HTTP基礎知識

HTTP的定義

HTTP就是超文本傳輸協議(Hypertext Transfer Protocol),主要架構在TCP/IP之上的應用層,負責處理在Web上面客戶端(Client)和伺服端(Server)的之間的數據交換。在這裡,客戶端能發出一或多個請求(Request)給給伺服端, 而伺服端則會負責監聽(listen)與接受(accept)/拒絕(reject),對這些請求作出一或多個的回應(Ressponse)。

HTTP的組件

![]https://mdn.mozillademos.org/files/13679/Client-server-chain.png

除了客戶端和伺服端,他們之間也會有不同的代理proxies,也有着不一樣的作用。

客戶端(User Agent)

  • 就是任何能夠讓用戶發起請求的一方。
  • 例子瀏覽器,它會負責送出HTTP请求,並進一步解析HTTP返回的消息,以向用户提供明確的響應。
  • 除了瀏覽器,還有:命令列工具、爬蟲(Web crawler)、手機 APP、各種通訊設備、家電用品等等。

伺服端(Server)

Web Server可以服務並提供客戶端所請求的文檔。Server只是虛擬意義上代表一個機器:它可以是共享負載(負載均衡)的一組伺服器組成的計算機集群,也可以是一種複雜的軟件,通過向其他計算機(如緩存,資料庫伺服器,電子商務伺服器 …)發起請求來獲取部分或全部資源。

Server 不一定是一台機器,但一個機器上可以裝載的眾多Servers。

代理

代理位於客戶端和伺服器之間,接收所有客戶端的HTTP請求,並把這些請求轉發給伺服器(可能會對請求進行修改之後轉發)。對用戶來說,這些應用程序就是一個代理,代表用戶訪問伺服器。代理的主要作用有過濾、屏蔽等.

  • 緩存(Caching):緩存某種意義上來說也是一種代理伺服器。它主要使用代表伺服器對客戶端進行響應。發送預先緩存好的資源的副本。這樣會加快事務響應速度、同時也會減少伺服器的負載、減輕帶寬等問題。
  • 過濾(filtering):像反病毒掃描,家長控制等等。
  • 負載均衡(load balancing):讓服務器服務不同的請求。
  • 認證(authentication):對不同資源進行權限管理,僅讓特定的用戶進行訪問。而基本的認證功能可以直接通過HTTP提供,使用Authenticate相似的頭部即可,或用HTTP Cookies來設置指定的會話。
  • 日誌記錄(logging):允許存儲歷史訊息
  • 開放同源限制:為了防止網絡窺聽和其他私隱洩漏,瀏覽器強制對Web網站做了分割限制。只有來自於相同來源的網頁才能夠獲取網站的全部訊息。這樣的限制有時反而成了負擔,HTTP可以通過修改頭部來開放這樣的限制,因此Web文檔可以是由不同域下的訊息拼接成的(某些情況下,這樣做還有安全因素考慮)。
  • 會話:使用HTTP Cookies允許你用一個服務端的狀態發起請求,這就創建了會話。雖然基本的HTTP是無狀態協議。這很有用,不僅是因為這能應用到像購物車這樣的電商業務上,更是因為這使得任何網站都能輕鬆為用戶訂製展示內容了。
0%