http 協議是以 ascii 碼傳輸,建立在 tcp/ip 協議之上的應用層規範。規範把 http 請求分為三個部分:狀態行、請求頭、訊息主體。類似於下面這樣:
http 定義了與伺服器互動的不同方法,最基本的方法有4種,分別是get,post,put,delete。url全稱是資源描述符,我們可以這樣認為:乙個url位址,它用於描述乙個網路上的資源,而 http 中的get,post,put,delete就對應著對這個資源的查,增,改,刪4個操作。
http 響應與 http 請求相似,http響應也由3個部分構成,分別是:
狀態行由協議版本、數字形式的狀態**、及相應的狀態描述,各元素之間以空格分隔。
常見的狀態碼有如下幾種:
下面是乙個http響應的例子:
我們知道 http 協議採用「請求-應答」模式,當使用普通模式,即非 keep-alive 模式時,每個請求/應答客戶和伺服器都要新建乙個連線,完成之後立即斷開連線(http 協議為無連線的協議);當使用 keep-alive 模式(又稱持久連線、連線重用)時,keep-alive 功能使客戶端到伺服器端的連線持續有效,當出現對伺服器的後繼請求時,keep-alive 功能避免了建立或者重新建立連線。
在 http 1.0 版本中,並沒有官方的標準來規定 keep-alive 如何工作,因此實際上它是被附加到 http 1.0協議上,如果客戶端瀏覽器支援 keep-alive ,那麼就在http請求頭中新增乙個字段 connection: keep-alive,當伺服器收到附帶有 connection: keep-alive 的請求時,它也會在響應頭中新增乙個同樣的字段來使用 keep-alive 。這樣一來,客戶端和伺服器之間的http連線就會被保持,不會斷開(超過 keep-alive 規定的時間,意外斷電等情況除外),當客戶端傳送另外乙個請求時,就使用這條已經建立的連線。
在 http 1.1 版本中,預設情況下所有連線都被保持,如果加入 「connection: close」 才關閉。目前大部分瀏覽器都使用 http 1.1 協議,也就是說預設都會發起 keep-alive 的連線請求了,所以是否能完成乙個完整的 keep-alive 連線就看伺服器設定情況。
由於 http 1.0 沒有官方的 keep-alive 規範,並且也已經基本被淘汰,以下討論均是針對 http 1.1 標準中的 keep-alive 展開的。
注意:
判斷傳輸資料是否達到了content-length 指示的大小;
動態生成的檔案沒有 content-length ,它是分塊傳輸(chunked),這時候就要根據 chunked編碼來判斷,chunked 編碼的資料在最後有乙個空 chunked 塊,表明本次傳輸資料結束。
網路協議 HTTP協議簡介
http的作用 http hyper text transfer protocol 超文字傳輸協議,是基於應用層 tcp ip參考模型 的通訊規範 是從web伺服器傳輸超文字到客戶端的傳輸協議,無狀態的傳輸協議 不僅能夠保證正確 快速 高效的傳輸超文字文件,而且可以確定資源載入順序等。http是不儲...
HTTP協議簡介
現在web發展如火如荼,web開發人員也越來越多,但有幾個對支援web的http協議有了解呢?底層協議基礎不紮實,高層應用是很難做到極致的。帶著好奇心,開始學習吧!http hypertext transfer protocol 即超文字傳輸協議,是瀏覽器和伺服器之間互相通訊的一種約定,通過網際網路...
HTTP協議 簡介
全稱為超文字傳輸協議 hypertext transfer protocol 設計之初是為了將超文字標記語言 html 文件從web伺服器傳送到客戶端的瀏覽器。現在http的作用已不侷限於html的傳輸。url url示例 解釋 scheme 指定低層使用的協議 例如 http,https,ftp ...