HTTP筆記一

定義

超文本傳輸協議(HTTP)是一個用於傳輸超媒體文檔(例如 HTML)的應用層協議。

特點

遵循經典的客戶端-服務端模型

無狀態協議,服務器不會在兩個請求之間保留任何數據(狀態)

基於TCP/IP層

​ 客戶端和服務端通過交換各自的消息來交互。由像瀏覽器這樣的客戶端發出的消息叫做 requests,被服務端響應的消息叫做 responses。

用途

傳輸超文本文檔

傳輸圖片、視頻

向服務器發送HTML表單

根據網頁請求,獲取部分web文檔內容更新網頁

HTTP的組件系統

客戶端

user-agent 客戶端通常由瀏覽器來扮演

作爲一個發起請求的實體

客戶端展現網頁的過程

客戶端首先發起一個請求來獲取頁面的HTML文檔,然後解析其中的資源信息發送其它請求,獲取到CSS和執行腳本來渲染頁面佈局,以及一些其它頁面資源(圖片、視頻等)。瀏覽器把這些資源整合在一起,就構成了一個完整的文檔,即網頁。

服務端

來服務並提供給客戶端web文檔。虛擬上理解爲一個機器,實際上可以是很多計算機組成的計算機集羣,或者是大型的數據中心(數萬到數十萬臺機器)。

代理

在瀏覽器和服務器之間有許多計算機和其它設備轉發了HTTP消息。表現在應用層的被稱爲代理。

代理的作用

緩存(可以是公開的也可以是私有的,像瀏覽器的緩存)

過濾

負載均衡

認證

日誌記錄

HTTP的基本性質

HTTP是簡單的

大體上設計的簡單易讀,報文能夠人爲讀懂。

HTTP是可拓展的

在 HTTP/1.0 中出現的 HTTP headers 讓協議擴展變得非常容易。只要服務端和客戶端就新 headers 達成語義一致,新功能就可以被輕鬆加入進來。

HTTP是無狀態,有會話的

HTTP是無狀態的:在同一個連接中,兩個執行成功的請求之間是沒有關係的,使用Cookies可以創建有狀態的會話。

HTTP和連接

HTTP是基於傳輸層的TCP協議,TCP是面向連接的。在每次通信過程中,客戶端會和服務端建立TCP連接。

HTTP流

當客戶端想和服務端進行交互時,過程如下:

1.打開一個TCP連接,被用來發送一條或者多條請求,用來接收響應消息。

2.發送一個HTTP報文

3.讀取服務端響應的報文信息

4.關閉連接或者爲後續請求重用連接

HTTP報文

HTTP請求

一個HTTP的method,經常由一個動詞或者名詞來定義客戶端的行爲。常用的有GET,POST,HEADER,OPTION。

path:獲取資源的路徑

HTTP協議版本號

爲服務端表達其它信息的頭部headers

對於像post這樣的方法,報文的body就包含了發送的信息。

HTTP響應

HTTP協議版本號

一個狀態碼,告訴客戶端請求成功或者失敗,以及失敗的原因。

個狀態信息,這個信息是非權威的狀態碼描述信息,可以由服務端自行設定。

HTTP headers,與請求頭部類似。

可選項,比起請求報文,響應報文中更常見地包含獲取的資源body。

基於HTTP的APIs

基於HTTP的最常用API是 XMLHttpRequest API,可用於在客戶端和服務器之間交換數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章