學習之http協議

2022-08-30 10:39:11 字數 1605 閱讀 3075

http協議:超文字傳輸協議,構建於 tcp/ip 協議之上,是乙個應用層協議,預設埠號是 80,是無連線無狀態的。

http 協議是以 ascii 碼傳輸,建立在 tcp/ip 協議之上的應用層規範。規範把 http 請求分為三個部分:狀態行、請求頭、訊息主體。

http 定義了與伺服器互動的不同方法,最基本的方法有4種,分別是getpostputdelete

1.get 可提交的資料量受到url長度的限制,get 可提交的資料量受到url長度的限制,

2.post 表示可能修改變伺服器上的資源的請求,  post 提交的資料必須在 body 部分中,但是協議中沒有規定資料使用哪種編碼方式或者資料格式, 服務端通常是根據請求頭(headers)中的 content-type 欄位來獲知請求中的訊息主體是用何種方式編碼

http響應也由3個部分構成,分別是:狀態行響應頭(response header)響應正文

304 not modifyif-modified-since伺服器沒有更新,客戶端只要使用本地快取即可

http 協議採用「請求-應答」模式,當使用普通模式,即非 keep-alive 模式時,每個請求/應答客戶和伺服器都要新建乙個連線,完成之後立即斷開連線(http 協議為無連線的協議);

keep-alive 簡單說就是保持當前的tcp連線,避免了重新建立連線

http 長連線不可能一直保持,例如keep-alive: timeout=5, max=100,表示這個tcp通道可以保持5秒,max=100,表示這個長連線最多接收100次請求就斷開

使用長連線之後,客戶端、服務端怎麼知道本次傳輸結束呢?兩部分:1. 判斷傳輸資料是否達到了content-length 指示的大小;2. 動態生成的檔案沒有 content-length ,它是分塊傳輸(chunked),這時候就要根據 chunked 編碼來判斷,chunked 編碼的資料在最後有乙個空 chunked 塊,表明本次傳輸資料結束

ransfer-encoding 是乙個用來標示 http 報文傳輸格式的頭部值。儘管這個取值理論上可以有很多,但是當前的 http 規範裡實際上只定義了一種傳輸取值——chunked

如果乙個http訊息(請求訊息或應答訊息)的transfer-encoding訊息頭的值為chunked,那麼,訊息體由數量未定的塊組成,並以最後乙個大小為0的塊為結束

chunked 和 multipart 兩個名詞在意義上有類似的地方,不過在 http 協議當中這兩個概念則不是乙個類別的。multipart 是一種 content-type,標示 http 報文內容的型別,而 chunked 是一種傳輸格式,標示報頭將以何種方式進行傳輸

chunked 的優勢在於,伺服器端可以邊生成內容邊傳送,無需事先生成全部的內容。http/2 不支援 transfer-encoding: chunked,因為 http/2 有自己的 streaming 傳輸方式(source:mdn - transfer-encoding)

http協議是基於字元(ascii)的,當content-type項為text/xml,則內容是文字格式;當二進位制格式時,content-type項為image/gif,就是了

HTTP學習之 HTTP協議

前後端資料互動基於http協議 包括 客戶端 和 服務端 兩個實體 客戶端傳送請求給服務端,服務端返回響應給客戶端 在http中的資料稱為資源,可以是html文件 文字 資源是通過url進行定位的,當客戶端需要訪問伺服器端資源時,首先需要知道資源的url url的組成部分有 協議,主機,埠號,路徑,...

Http協議學習之筆記整理

http協議 hypertext transfer protocol,超文字傳輸協議 是網際網路上應用最為廣泛的一種網路傳輸協議,所有的www檔案都必須遵守這個標準。http是乙個基於tcp ip通訊協議來傳遞資料 html 檔案,檔案,查詢結果等 http是基於客戶端 服務端 c s 的架構模型,...

HTTP學習筆記之協議分析

http hyper text transfer protocol 超文字傳輸協議 http 是基於c s方式,通過乙個可靠鏈結來交換客戶終端和伺服器端 資訊,是乙個無狀態的請求 響應協議 1.1客戶端?http客戶端是使用者,同時也是乙個應用程式,常是web瀏覽器或其他客戶端。瀏覽器作為http客...