HTTP請求模型簡介

來源:互聯網
上載者:User

一、串連至Web伺服器
一個用戶端應用(如Web瀏覽器)開啟到Web伺服器的HTTP連接埠的一個通訊端(預設為80)。

例如:http://www.myweb.com:8080/index.html
在Java中,這將等同於代碼:
Soceet socket=new Socket("www.myweb.com",8080);
InputStream in=socket.getInputStream();
OutputStream out=socket.getOutputStream();

二、發送HTTP請求
通過串連,用戶端寫一個ASCII文本請求行,後跟0或多個HTTP頭標,一個空行和實現請求的任意資料。
一個請求由四個部分組成:請求行、要求標頭標、空行和請求資料
1.請求行:請求行由三個標記組成:要求方法、請求URI和HTTP版本,它們用空格分隔。
例如:GET /index.html HTTP/1.1
HTTP規範定義了8種可能的要求方法:
GET            檢索URI中標識資源的一個簡單請求
HEAD            與GET方法相同,伺服器只返回狀態行和頭標,並不返回請求文檔
POST            伺服器接受被寫入用戶端輸出資料流中的資料的請求
PUT            伺服器儲存請求資料作為指定URI新內容的請求
DELETE            伺服器刪除URI中命名的資源的請求
OPTIONS        關於伺服器支援的要求方法資訊的請求
TRACE            Web伺服器反饋Http請求和其頭標的請求
CONNECT        已文檔化但當前未實現的一個方法,預留做隧道處理
2.要求標頭標:由關鍵字/值對組成,每行一對,關鍵字和值用冒號(:)分隔。
要求標頭標通知伺服器有關於用戶端的功能和標識,典型的要求標頭標有:
User-Agent        用戶端廠家和版本
Accept            用戶端可識別的內容類型列表
Content-Length    附加到請求的資料位元組數
3.空行:最後一個要求標頭標之後是一個空行,發送斷行符號符和退行,通知伺服器以下不再有頭標。
4.請求資料:使用POST傳送資料,最常使用的是Content-Type和Content-Length頭標。

三、服務端接受請求並返回HTTP響應
Web伺服器解析請求,定位指定資源。伺服器將資源副本寫至通訊端,在此處由用戶端讀取。
一個響應由四個部分組成;狀態行、回應標頭標、空行、響應資料
1.狀態行:狀態行由三個標記組成:HTTP版本、響應代碼和響應描述。
HTTP版本:向用戶端指明其可理解的最高版本。
響應代碼:3位的數字代碼,指出請求的成功或失敗,如果失敗則指出原因。
響應描述:為響應代碼的可讀性解釋。
例如:HTTP/1.1 200 OK
HTTP響應碼:
1xx:資訊,請求收到,繼續處理
2xx:成功,行為被成功地接受、理解和採納
3xx:重新導向,為了完成請求,必須進一步執行的動作
4xx:用戶端錯誤:
2.回應標頭標:像要求標頭標一樣,它們指出伺服器的功能,標識出響應資料的細節。
3.空行:最後一個回應標頭標之後是一個空行,發送斷行符號符和退行,表明伺服器以下不再有頭標。
4.響應資料:HTML文檔和映像等,也就是HTML本身。

四、伺服器關閉串連,瀏覽器解析響應
1.瀏覽器首先解析狀態行,查看錶明請求是否成功的狀態碼。
2.然後解析每一個回應標頭標,頭標告知以下為若干位元組的HTML。
3.讀取響應資料HTML,根據HTML的文法和語義對其進行格式化,並在瀏覽器視窗中顯示它。
4.一個HTML文檔可能包含其它需要被載入的資源引用,瀏覽器識別這些引用,對其它的資源再進行額外的請求,此過程迴圈多次。

五、無狀態串連
HTTP模型是無狀態的,表明在處理一個請求時,Web伺服器並不記住來自同一用戶端的請求。

六、執行個體
1.瀏覽器發出請求
GET /index.html HTTP/1.1
伺服器返迴響應
HTTP /1.1 200 OK
Date: Apr 11 2006 15:32:08 GMT
Server: Apache/2.0.46(win32)
Content-Length: 119
Content-Type: text/html

<HTML>
<HEAD>
<LINK REL="stylesheet" HREF="index.css">
</HEAD>
<BODY>
<IMG SRC="image/logo.png">
</BODY>
</HTML>

2.瀏覽器發出請求
GET /index.css HTTP/1.1
伺服器返迴響應
HTTP /1.1 200 OK
Date: Apr 11 2006 15:32:08 GMT
Server: Apache/2.0.46(win32)
Connection: Keep-alive, close
Content-Length: 70
Content-Type: text/plane

h3{
    font-size:20px;
    font-weight:bold;
    color:#005A9C;
}

3.瀏覽器發出請求
GET image/logo.png HTTP/1.1
伺服器返迴響應
HTTP /1.1 200 OK
Date: Apr 11 2006 15:32:08 GMT
Server: Apache/2.0.46(win32)
Connection: Keep-alive, close
Content-Length: 1280
Content-Type: text/plane

{Binary image data follows}

(附錄)
1.HTTP規範:Internet工程制定組織(IETF)發布的RFC指定Internet標準,這些RFC被Internet研究發展機構廣泛接受。因為它們是標準文檔,故一般用正規語言編寫,如立法文標一樣。
2.RFC:RFC一旦被提出,就被編號且不會再改變,當一個標準被修改時,則給出一個新的RFC。作為標準,RFC在Internet上被廣泛採用。
3.HTTP的幾個重要RFC:
    RFC1945    HTTP 1.0 描述
    RFC2068    HTTP 1.1 初步描述
    RFC2616    HTTP 1.1 標準
4.資源標識符URI(Uniform Resource Identifter,URI)

http協議

Internet的基本協議是TCP/IP協議,例如:FTP,Http等是建立在TCP/IP協議之上的應用程式層協議,www伺服器使用的主要協議是HTTP協議(超文字傳輸通訊協定 (HTTP)),http協議支援的服務不限於www。
        http協議的特點:支援客戶/伺服器模式,無串連,無狀態。
        運作方式是基於請求/響應範式。內部操作過程為:
1,建立串連,客戶與伺服器是一個相對的概念。www伺服器運行時,一直在TCP80連接埠(www的預設連接埠)監聽,等待串連的出現。串連的建立是通過申請通訊端(Socket)實現的。客戶開啟一個通訊端並把它約束在一個連接埠上,如果成功,就相當於建立了一個虛擬檔案。相當於對虛擬檔案的操作。
2,發送請求,開啟一個串連後,客戶機把請求訊息送到伺服器的停留連接埠上,完成提出請求動作。
請求的格式為:
  請求訊息 =  請求行(通用資訊|要求標頭|實體頭) CRLF[實體內容]
  請求 行   =   方法 請求URL HTTP版本號碼 CRLF
  方  法    =   GET|HEAD|POST|擴充方法
  U R  L   =   協議名稱+宿主名+目錄與檔案名稱
HEAD——要求伺服器尋找某對象的元資訊,而不是對象本身。
POST——從客戶機向伺服器傳送資料,在要求伺服器和CGI做進一步處理時會用到POST方法。POST主要用於發送HTML文本中FORM的內容,讓CGI程式處理。
  一個請求的例子為:
  GET http://networking.zju.edu.cn/zju/index.htm HTTP/1.0
  頭資訊又稱為元資訊,即資訊的資訊,利用元資訊可以實現有條件的請求或應答 。
  要求標頭——告訴伺服器怎樣解釋本次請求,主要包括使用者可以接受的資料類型、壓縮方法和語言等。
  實體頭——實體資訊類型、長度、壓縮方法、最後一次修改時間、資料有效期間等。
  實體    ——請求或應答對象本身。
3,發送響應,伺服器在處理完客戶的請求之後,要向客戶機發送響應訊息。
  HTTP/1.0的響應訊息格式:
  響應訊息   =     狀態行(通用資訊頭|回應標頭|實體頭) CRLF 〔實體內容〕
  狀 態 行    =      HTTP版本號碼 狀態代碼 原因敘述
回應標頭的資訊包括:服務程式名,通知客戶請求的URL需要認證,請求的資源何時能使用。
4.關閉串連:客戶和伺服器雙方都可以通過關閉通訊端來結束TCP/IP對話。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.