HTTP協議用於客戶端和服務器之間的通訊,請求訪問的一段是客戶端,提供資源響應的一段是服務器端。html
HTTP通訊是採用請求應答的方式來進行的,客戶端發出請求,服務器響應。若是沒有客戶端的請求,服務器端是不進行任何響應的。HTTP通訊機制是在一次完整的HTTP通訊過程當中,Web瀏覽器與Web服務器之間將完成下列4個步驟:瀏覽器
(1)創建TCP鏈接服務器
在HTTP工做開始以前,Web瀏覽器首先要經過網絡與Web服務器創建鏈接,該鏈接是經過TCP /IP完成,這是在網絡層進行的。HTTP是比TCP更高層次的應用層協議,根據規則,只有低層協議創建以後才能,才能進行更層協議的鏈接,所以,首先要創建TCP鏈接,通常TCP鏈接的端口號是80。網絡
(2)Web瀏覽器向Web服務器發送請求命令spa
一旦創建了TCP鏈接,Web瀏覽器就會向Web服務器發送請求命令,以下所示,其中GET表示請求服務的類型,隨後的字符串/index.html指明瞭請求訪問的資源對象,也叫作請求URI。最後的HTTP/1.1表示HTTP的版本號。綜合來看,請求報文包括請求方法、請求URI、協議版本、可選的請求首部字段和內容實體。代理
GET /index.htm HTTP/1.1htm
Host:hackr.jp對象
(3)Web服務器應答ci
客戶機向服務器發出請求後,服務器會客戶機回送應答,以下所示。開頭的HTTP/1.1表示服務器對應的版本號,接下來的200 OK表示請求處理的處理結果的狀態碼和緣由短語。接下來是響應首部字段。資源
HTTP/1.1 200 OK
Date:Tue ,10 July 2016 08:33:16 GMT
Content-Length:362
Conten-Type:text/html
<html>
……
(4)Web服務器關閉TCP鏈接
通常狀況下,一旦Web服務器向瀏覽器發送了請求數據,它就要關閉TCP鏈接,而後若是瀏覽器或者服務器在其頭信息加入了這行代碼
Connection:keep-alive
TCP鏈接在發送後將仍然保持打開狀態,因而,瀏覽器能夠繼續經過相同的鏈接發送請求。保持鏈接節省了爲每一個請求創建新鏈接所需的時間,還節約了網絡帶寬。
在HTTP的請求服務類型主要有如下八種:
GET:獲取資源
GET方法用來請求訪問已經被URI識別的資源,具體的請求與響應的例子以下:
請求 |
GET /indexhtml HTTP/1.1 Host:www.hackr.jp |
響應 |
返回index.html的頁面資源 |
POST:傳輸實體主體,具體的請求響應例子以下:
請求 |
POST /submit.cgi HTTP/1.1 Host:www.hackr.jp Content-Length:1560(1560字節的數據) |
響應 |
返回submit.cgi接收數據的處理結果 |
PUT:傳輸文件,具體的請求響應例子以下:
請求 |
PUT /example.html HTTP/1.1 Host:www.hackr.jp Content-type:text/html Content-Length:1560(1560字節的數據) |
響應 |
返回狀態碼 |
HEAD:得到保溫首部
請求 |
HEAD /indexhtml HTTP/1.1 Host:www.hackr.jp |
響應 |
返回index.html有關的響應首部 |
DELETE:刪除文件
請求 |
DELETE /example.html HTTP/1.1 Host:www.hackr.jp |
響應 |
返回狀態碼 |
OPTIONS:詢問支持的方法
請求 |
OPTIONS* HTTP/1.1 Host:www.hackr.jp |
響應 |
HTTP/1.1 200 OK Allow:GET,POST,HEAD,OPTIONS (返回服務器支持的方法) |
TRACE:追蹤路徑
請求 |
TRACE HTTP/1.1 Host:www.hackr.jp Max-Forwards:2 |
響應 |
HTTP/1.1 200 OK Content-type:message/http Content-Length:1024
TRACE HTTP/1.1 Host:www.hackr.jp Max-Forwards:2 |
CONNECT:要求用隧道協議連接代理
請求 |
CONNECT proxy.hackr.jp:8080 HTTP/1.1 Host:proxy.hackr.jp |
響應 |
HTTP/1.1 200 OK(以後進入網絡隧道) |