HTTP學習記錄

2022-07-13 02:15:11 字數 3424 閱讀 6534

title: http學習記錄

toc: true

date: 2018-09-21 20:40:48

http協議,hypertext transfer protocol,超文字傳輸協議,是網際網路上應用最為 廣泛的一種網路傳輸協議。

已過時,只接受get一種請求方法,沒有在通訊中指定版本號,且不支援請求頭。

因為這個版本不支援post方法,因此客戶端無法向伺服器傳遞太多資訊。

第乙個在通訊中指定版本號的版本,至今仍被廣泛採用,特別是在**伺服器中。

當前版本,預設採用持久連線,並能很好地配合**伺服器工作。

支援以管道方式同時傳送多個請求,以便降低線路負載,提高傳輸速度。

spdy (發音為"speedy") ,是乙個由 google 主導的研究專案發明的http替代協議。spdy一開始主要關注降低延遲,採用了tcp通道,但是使用了不同的協議來達到此目的。

簡稱為h2(基於tls/1.2或以上版本的加密連線)或h2c(非加密連線)。

http/1.1相較於http/1.0的主要區別

http/2與http/1.1比較

http/2 相比 http/1.1 的修改並不會破壞現有程式的工作,但是新的程式可以藉由新特性得到更好的速度。

http/2 保留了 http/1.1 的大部分語義,例如請求方法、狀態碼乃至uri和絕大多數http頭部字段一致。

但是 http/2 採用了新的方法來編碼、傳輸客戶端/伺服器間的資料。

http/1.1與spdy的區別

其與http/1.1相比,spdy主要的改變有:

http/2與spdy的比較

http/2的開發基於spdy進行躍進式改進。在諸多修改中,最顯著的改進在於,http/2使用了乙份經過定製的壓縮演算法,基於霍夫曼編碼,以此替代了spdy的動態流壓縮演算法,以避免對協議的oracle攻擊——這一類攻擊以crime為代表。此外,http/2禁用了諸多加密套件,以保證基於tls的連線的前向安全。

基於tcp/ip通訊協議傳遞資料。

http協議工作在客戶端-服務端架構(c/s)上,瀏覽器作為http客戶端通過url向http服務端即web伺服器傳送所有請求。

web伺服器有apache伺服器、iis(internet informatica services)伺服器等。

web伺服器根據接收到的請求,向客戶端傳送響應資訊。

http預設埠號為80,我們也可以改為8080或者其他埠。

http使用統一資源識別符號(uniform resource identifiers, uri)定位網際網路上的資源。

http是:

http協議通訊流程:

web瀏覽器<=http協議=>http伺服器<=>cgi(通用閘道器介面)應用程式<=>資料庫

其中cgi:

是web 伺服器執行時外部程式的規範,按cgi 編寫的程式可以擴充套件伺服器功能。cgi 應用程式能與瀏覽器進行互動,還可通過資料庫api 與資料庫伺服器等外部資料來源進行通訊,從資料庫伺服器中獲取資料。格式化為html文件後,傳送給瀏覽器,也可以將從瀏覽器獲得的資料放到資料庫中。

用於http協議互動的資訊稱為http報文。請求端(客戶端)的http報文稱為請求報文,響應端(伺服器端)的叫響應報文.

http報文本身是由多行(用cr+lf作為換行符)資料構成的字串文字。

http報文大致可分為報文首部和報文主體,兩者由最初出現的空行(cr+lf)來劃分。

通常並不一定要有報文主體。

報文首部

伺服器端或客戶端需處理的請求或響應的內容及內容

請求報文的報文首部由請求行、請求首部字段、通用首部字段、實體首部字段、其他組成

響應報文的報文首部由狀態行、響應首部字段、通用首部字段、實體首部字段、其他組成

cr+lf

cr,carriage return,回車符,16進製制0x0d

lf,line feed,換行符,16進製制0x0a

報文主體

應被傳送的資料

(參考自紅寶書)

雖然不同瀏覽器實際傳送的頭部資訊會有所不同,但下邊這些基本上是所有瀏覽器都會傳送的:

注意,這些欄位名是乙個字母都不應有區別的,一旦有區別,那它就不是首部字段。

根據http標準,http請求可以使用多種請求方法。

http1.0定義了三種請求方法: get, post 和 head方法。

http1.1新增了五種請求方法:options, put, delete, trace 和 connect 方法。

get

get方法請求指定的頁面資訊. 使用get的請求應該只被用於獲取資料.

head

head方法請求乙個與get請求的響應相同的響應,但沒有響應體.

post

post方法用於向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案)。資料被包含在請求體中。post請求可能會導致新的資源的建立和/或已有資源的修改。

put

put方法從客戶端向伺服器傳送的資料取代指定的文件的內容。

delete

delete方法刪除指定的資源。

connect

http/1.1協議中預留給能夠將連線改為管道方式的**伺服器。

options

詢問支援的方法,查詢請求uri指定的資源支援的方法。

trace

回顯伺服器收到的請求,查詢傳送出去的請求是怎樣被加工/修改的,主要用於測試或診斷(因為從**伺服器路由中轉時請求可能被篡改)。不常用。

patch

patch方法用於對資源進行部分修改。(put為對資源進行整體覆蓋)

常見狀態碼:

content-type: text/html; charset=utf-8

實體首部字段,表示實體主體的**型別。

字段值採用type/subtype形式賦值。

w3c的教程的學習筆記,過兩天再啃一下mdn和《**http》,還要再複習一下計網,很多都忘了...

emmmw3c有的是錯的...使用網路教程需謹慎....

關於http/2.0以及spdy等均來自維基百科。

這裡只是重新回憶一下什麼是http,還是要看文件!啃《**http》!複習計網!

HTTP學習記錄

日誌 160815 get與post 二者都是明文傳輸 http請求格式 request line http請求行 headers http請求訊息報頭 blank line 回車換行 request body http請求正文 http響應格式 status line http響應狀態行 head...

Http學習記錄

目錄http 超文字傳輸協議 是乙個簡單的請求 響應協議,它通常執行在tcp之上。https 安全的 security 請求行reuquest url 請求位址 request method get get方法 post方法 status code 200 ok 狀態碼 200 remote add...

HTTP協議學習記錄

http協議 hyper text transfer protocol 超文字傳輸協議 從伺服器傳輸超文字到本地瀏覽器的傳送協議 基於tcp ip通訊協議來傳輸資料 屬於應用層物件導向的協議 特點 1.簡單快速 只需要傳送請求方法和路徑 請求方法有get post head 2.靈活 允許傳輸任意型...