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...