HTTP協議及HTTP包

來源:互聯網
上載者:User

標籤:style   http   io   color   os   使用   sp   strong   檔案   

HTTP協議用於在Internet上發送和接收訊息。HTTP協議是一種請求-應答式的協議 ——用戶端發送一個請求,伺服器返回該請求的應答,所有的請求與應答都是HTTP包。HTTP協議使用可靠的TCP串連,預設連接埠是80。HTTP的第一 個版本是HTTP/0.9,後來發展到了HTTP/1.0,現在最新的版本是HTTP/1.1。HTTP/1.1由RFC 2616 定義。

在HTTP 中,Client/Server之間的會話總是由用戶端通過建立串連和發送HTTP請求包初始化,伺服器不會主動聯絡用戶端或要求與用戶端建立串連。瀏覽 器和伺服器都可以隨時中斷串連,例如,在瀏覽網頁時你可以隨時點擊"停止"按鈕中斷當前的檔案下載過程,關閉與Web伺服器的HTTP串連。

1 HTTP請求包
HTTP請求包(GET、POST等要求方法)由三個部分構成,分別是:方法-URI-協議/版本,要求標頭,請求本文。下面是一個HTTP請求包(GET)的例子:

GET /index.jsp HTTP/1.1
Accept-Language: zh-cn
Connection: Keep-Alive
Host: 192.168.0.106
Content-Length: 37

userName=new_andy&password=new_andy


請求包的第一行是方法-URI-協議/版本:
GET就是要求方法,根據HTTP標準,HTTP請求可以使用多種要求方法。HTTP 1.1支援七種要求方法:GET、POST、HEAD、OPTIONS、PUT、delete和TRACE等,常用的為要求方法是GET和POST。

/index.jsp表示URI。URI指定了要訪問的網路資源。
HTTP/1.1是協議和協議的版本。
最 後一行userName=new_andy&password=new_andy為本文,本文與HTTP頭部有一個空行(\r\n)分隔。這裡需 要說明的一點,其中Content-Length說明本文的長度,有的本文長度沒有在頭部說明,只是標明Transfer-Encoding: chunked。關於chunked類型的長度計算方法,見RFC 1626。
請求包的頭部還會包含許多有關用戶端環境和請求本文的有用資訊,這裡不再描述。

2 HTTP應答包
和HTTP請求包相似,由三個部分構成,分別是:協議-狀態碼-描述,應答頭,應答本文。下面是一個HTTP應答的例子:

HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Date: Mon, 3 Jan 2005 13:13:33 GMT
Content-Type: text/html
Last-Modified: Mon, 11 Jan 2004 13:23:42 GMT
Content-Length: 90

<html>
<head>
<title>解讀HTTP包樣本</title></head><body>
Hello WORLD!
</body>
</html>


HTTP應答包的第一行類似於HTTP請求的第一行,表示所用的協議是HTTP 1.1,伺服器處理請求的狀態代碼200。
應答頭也和要求標頭一樣包含許多有用的資訊,例如伺服器類型、日期時間、內容類型和長度等。應答的本文就是伺服器返回的HTML頁面。應答頭和本文之間也用CRLF分隔。

 

wiki中的解釋

超文字傳輸通訊協定 (HTTP)(HTTPHyperText Transfer Protocol)是互連網上應用最為廣泛的一種網路傳輸協議。所有的WWW檔案都必須遵守這個標準。設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法。

概述

HTTP的發展是全球資訊網協會和Internet工作小組合作的結果,在一系列的RFC發布中確定了最終版本,其中最著名的是RFC 2616。在RFC 2616中定義了HTTP/1.1這個今天普遍使用的版本。

HTTP是一個用於在用戶端和伺服器間請求和應答的協議。一個HTTP的用戶端,諸如一個web瀏覽器,通過建立一個到遠程主機特殊連接埠(預設連接埠為80)的串連,初始化一個請求。一個HTTP伺服器通過監聽特殊連接埠等待用戶端發送一個請求序列, 就像“GET / HTTP/1.1”(用來請求網頁伺服器的預設頁面),有選擇的接收像email一樣的MIME消 息,此訊息中包含了大量用來描述請求各個方面的資訊頭序列,響應一個選擇的保留資料主體。接收到一個請求序列後(如果要的話,還有訊息),伺服器會發回一 個應答訊息,諸如“200 OK”,同時發回一個它自己的訊息,此訊息的主體可能是被請求的檔案、錯誤訊息或者其他的一些資訊。

HTTP不同於其他基於TCP的協議,諸如FTP。 在HTTP中,一旦一個特殊的請求(或者請求的相關序列)完成,串連通常被中斷。這個設計使得對於當前頁面有規則串連到另一台伺服器頁面的全球資訊網來說, HTTP是完美的。當持久串連的缺乏成為保持使用者狀態的必需選擇的方法時,對網頁設計者來說,會偶然產生一些問題。而大部分這些方法包括了對“cookies”的使用。

這裡有一個HTTP的安全版本稱為HTTPS,HTTPS支援任何的密碼編譯演算法,只要此密碼編譯演算法能被頁面雙方所理解。

HTTP(和HTTPS)由唯一資源定位器或者簡稱URLs定位。創造這種地址定位的文法為了HTML的連結。

例子

下面是一個HTTP用戶端與伺服器之間會話的例子,運行於www.google.com,連接埠80

用戶端請求:

GET / HTTP/1.1
Host:www.google.com

(緊跟著一個換行,通過敲入斷行符號實現)

伺服器應答:

HTTP/1.1 200 OK
Content-Length: 3059
Server: GWS/2.0
Date: Sat, 11 Jan 2003 02:44:04 GMT
Content-Type: text/html
Cache-control: private
Set-Cookie: PREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCQiqy
X9j; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com
Connection: keep-alive

(緊跟著一個空行,並且由HTML格式的文本組成了Google的首頁)

在HTTP1.0中,用戶端發送一個請求至伺服器,伺服器發送一個應答至用戶端。之後,串連將被釋放。另一方面,HTTP1.1支援持久串連。這使 得用戶端可以發送請求並且接收應答,然後迅速的發送另一個請求和接收另一個應答。因為多個額外的請求,TCP串連並沒有被釋放,而每個請求中關於TCP的 負載相對較少。同時,在得到上一個請求的應答之前發送多個請求(通常是兩個)也成為可能。這個技術被稱為“流水線”。

HTTP協議及HTTP包

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.