1. 程式人生 > >淺談HTTP請求與響應

淺談HTTP請求與響應

tcp 方法 刪除 請求 連接 客戶機 cin tex 文件

HTTP協議用於客戶端和服務器之間的通信,請求訪問的一段是客戶端,提供資源響應的一段是服務器端。

HTTP通信是采用請求應答的方式來進行的,客戶端發出請求,服務器響應。如果沒有客戶端的請求,服務器端是不進行任何響應的。HTTP通信機制是在一次完整的HTTP通信過程中,Web瀏覽器與Web服務器之間將完成下列4個步驟:

(1)建立TCP連接

在HTTP工作開始之前,Web瀏覽器首先要通過網絡與Web服務器建立連接,該連接是通過TCP /IP完成,這是在網絡層進行的。HTTP是比TCP更高層次的應用層協議,根據規則,只有低層協議建立之後才能,才能進行更層協議的連接,因此,首先要建立TCP連接,一般TCP連接的端口號是80。

(2)Web瀏覽器向Web服務器發送請求命令

一旦建立了TCP連接,Web瀏覽器就會向Web服務器發送請求命令,如下所示,其中GET表示請求服務的類型,隨後的字符串/index.html指明了請求訪問的資源對象,也叫做請求URI。最後的HTTP/1.1表示HTTP的版本號。綜合來看,請求報文包括請求方法、請求URI、協議版本、可選的請求首部字段和內容實體。

GET /index.htm HTTP/1.1

Host:hackr.jp

(3)Web服務器應答

客戶機向服務器發出請求後,服務器會客戶機回送應答,如下所示。開頭的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(之後進入網絡隧道)

淺談HTTP請求與響應