Http協議學習筆記

2021-07-22 14:50:15 字數 3032 閱讀 4604

accept

客戶端用accept首部來通知伺服器可以接受哪些**型別,

其首部欄位的值是客戶端可以使用的**型別列表。

accept-charset 首部用來通知伺服器,瀏覽器可以接受哪些字符集

accept-encoding 用來告知伺服器它可以接受哪些編碼方式

accept-language 用來告知伺服器它可以接受哪些語言

accept-ranges 用來告訴瀏覽器對指定資源的哪個範圍具有訪問許可權

響應首部

age 告訴接收端響應已產生了多長時間

http報文

由三部分組成

起始行首部主體

起始行和首部之間由\r\n分隔

起始行請求起始行包括

方法請求url(表示對那個資源執行方法) 版本

方法:

get:從伺服器獲取乙份文件

head: 只從伺服器獲取文件的首部,該方法可以在不獲取資源的情況下了解資源的情況,伺服器可以通過狀態碼

檢視資源的狀態

post: 向伺服器傳送需要處理的資料,表單資料

put:將請求的主體(內容)部分儲存在伺服器上,一般是使用者建立的web頁面,然後通過put將頁面傳送到伺服器上,然後進行發布。如果指定的url已經存在,則會替換url

trace: 對可能經過**伺服器傳送到伺服器上的報文

進行追蹤,即客戶端傳送了乙個請求時,這個請求可能要穿過**伺服器到伺服器。而該方法允許客戶端檢視最終的報文變成什麼樣子了,而伺服器會返回一條trace響應

options:該方法請求伺服器,返回伺服器支援的方法

delete:從伺服器上刪除乙份文件,但是該方法可以在不通知客戶端的情況下被伺服器撤銷

擴充套件方法:

lock 允許使用者鎖定資源

mkcol: 允許使用者建立資源

copy: 複製資源

move: 移動資源

響應起始行包括

版本狀態碼

原因短語

狀態碼:

100  continue 說明收到了請求的初始部分,請客戶端繼續

200  ok

201 created 建立資源

202 accepted 請求已經被接受

204 no content 有首部和狀態行,但是沒有主體

300 multiple choices 多重選擇

301 moved permanebtly  請求的url已被移除時使用

401  需要輸入使用者名稱和密碼

404 沒找到

首部可以有0個或者多個首部,每個首部包含著乙個名字

和乙個:號

然後是乙個空格

後跟值,最後以\r\n結尾

首部分為通用首部

請求首部

響應首部

實體首部

擴充套件首部

通用首部:

date: 日期首部

via:報文經過的中間節點

cache-control:用於隨報文傳送快取指示

實體首部

content-type:說明主體的內容是什麼

content-length說明主體有多大

請求首部:

host:接受請求的主機名+埠號

accept 接受什麼**型別

accept-encoding 接受哪些編碼

accept-language 可以識別哪些語言

client-ip 客戶端的ip

ua-color 客戶端顯示器資訊

ua-cpu  客戶端cpu資訊

ua-os  作業系統資訊

ua-pixels 客戶端畫素資訊

user-agent: 傳送請求的應用程式名稱

響應首部

allow:伺服器支援的方法

server 伺服器資訊

內容體所有的報文都可以分為請求報文和響應報文

客戶端與continue

如果客戶端願意在傳送實體之前等待100continue響應

,當接受了伺服器的響應,客戶端就要傳送乙個攜帶了值為100 continue的expect請求首部。

如果客戶端沒有傳送實體,就不應該傳送100continue的expect請求首部。

如果伺服器收到了一條值為100continue的expect首部的請求,那麼伺服器會用continue相應或一條錯誤碼

tcp流是分段的,由ip分組**,而http就是這個協議棧的頂層,而https就是在http和tcp之間插入了ssl密碼加密層

http要傳送一條報文時,會以流的形式將報文資料通過tcp連線通道進行傳輸,tcp接到資料後,會將資料砍成小的資料塊,並將這些小資料塊封裝在ip分組中

tcp有乙個資料流介面,應用程式可以通過它將任意長度的資料放入tcp棧中,即使一次只傳送乙個位元組也可以,但是tcp資料段中至少有40位元組的標記和首部,所以如果tcp棧中包含了大量少量資料的分組,會大大降低網路的效能

而解決這個問題的辦法是nagle演算法,其目的是在傳送資料之前,將大量資料繫結在一起,以提高網路效能,該演算法優先傳送全尺寸的資料段,只有當其他分組都被確認後,nagle演算法才允許傳送非全尺寸的分組,如果其他分組仍在傳輸過程中,會將正在傳送的資料快取起來,只有當掛起分組被確認,或者快取中累計了足夠傳送乙個全尺寸分組的資料時,才會將快取的資料傳送出去。

序列連線:

瀏覽器可以先完整地請求原始的html頁面,然後請求第乙個嵌入物件,然後請求第二個嵌入物件 ,但這樣會很慢

並行連線: http允許客戶端開啟多條連線,並行地執行多個http事物,即頁面中的每個嵌入物件都有自己的連線,

但不總是快,受寬頻的大小影響,如果寬頻小,多個連線就會競爭寬頻,而且過多的連線。會使伺服器的效能下降,一般情況下,瀏覽器是4個並行鏈結。

web伺服器建立

(1)建立連線

(2)接受請求

(3)處理請求

(4)訪問資源

(5)構建響應

(6)傳送響應

(7)記錄事務處理過程 -- 將已完成事務有關的內容記錄在乙個日誌檔案中。

HTTP學習筆記 HTTP協議

tcp ip協議按層次分為四層 應用層,傳輸層,網路層,資料鏈路層。該層決定了向使用者提 用服務時通訊的活動。如ftp和dns服務等。傳輸層有兩個性質不同的協議 tcp和udp協議。網路層的作用就是計算機之間通過網路裝置進行傳輸時,選擇一條傳輸路線。用來處理連線網路的硬體部分,硬體上的範疇均在該層的...

http協議學習筆記

http 協議是建立在 tcp ip協議基礎上 http 協議全稱 超文字傳輸協議 http 協議1.0 1.1版本 目前通用的是1.1版本 http1.0 稱為短連線 http1.1 稱為長連線.所謂長,和短指的是 持續時間的 長連線 1.1 30s 短連線是傳送完資料就斷掉 基本結構 get t...

HTTP協議學習筆記

http協議 1.面試題 聊一下http協議 協議的完整通訊過程 2.通訊過程 1 請求 2 響應 3.http請求的方法 1 get 2 post 4.ios中傳送get post請求的手段 1 nsurlconnection 傳送乙個同步請求 nsdata sendsynchronousrequ...