【Android】HTTP協議的經典講解

來源:互聯網
上載者:User

原帖地址:http://blog.sina.com.cn/s/blog_62f987620100neph.html
【Android】HTTP協議的經典講解

 (2010-12-23 17:08:22)轉載

標籤: 

android

 

http

 

macrocheng

 

get

 

post

 

put

 

head

 

delete

 

traceconnect

 

options
分類: Android
一、什麼是HTTP協議 HTTP協議是一種應用程式層協議,HTTP是HyperText Transfer Protocol(超文字傳輸通訊協定 (HTTP))的英文縮寫。HTTP可以通過傳輸層的TCP協議在用戶端和伺服器之間傳輸資料。HTTP協議主要用於Web瀏覽器和Web伺服器之間的資料交換。我們在使用IE或Firefox瀏覽網頁或下載Web資源時,通過在地址欄中輸入http://host:port/path,開頭的4個字母http就相當於通知瀏覽器使用HTTP協議來和host所確定的伺服器進行通訊。HTTP協議誕生於上世紀90年代初;第一個被廣泛使用的版本是HTTP0.9。這個最初的版本非常簡陋,它只向伺服器發送一個非常簡單的請求,而伺服器也會返回一個很簡單的響應以及相應的HTML文本。在隨後的HTTP1.0中,增加了很多在HTTP0.9中沒有的特性,如增加了資源重定位,大量的狀態響應碼等。在最新的HTTP1.1中,對HTTP1.0做了更進一步的改進,除了增加了一些要求方法外,最大的改進就是可以使HTTP保持串連狀態。這對於一些頻繁傳輸資料的應用是非常有益的。由於HTTP協議已經達到了它的目標,因此,負責制定規範的W3C已經停止了對HTTP的改進(和HTTP相關的協議或擴充並未停止),所以,HTTP1.1將是HTTP協議的最後一個版本。無論你是從事網路程式開發,還是Web開發,或是網站的維護人員;都必須對HTTP協議有一個比較深入的瞭解。因此,HTTP協議不僅是Internet上應用最為廣泛的協議,也是應用協議家族中比較簡單的一種入門級協議;而且所有的Web伺服器無一例外地都支援HTTP協議。這也充分地說明,對於那些開發網路程式,尤其是開發各種類型的Web伺服器的開發人員,透徹地掌握HTTP協議將對你所開發的基於HTTP協議的系統產生直接的影響。由於本文的目的並不是講解HTTP協議,因此,只討論了HTTP協議的主要部分,如果讀者對HTTP協議感性趣,並想深入瞭解HTTP協議,請查看RFC2616或通過www.w3c.org來瞭解HTTP協議的詳情。二、HTTP的工作方式 HTTP協議採用了請求/響應的工作方式。基於HTTP1.0協議的用戶端在每次向伺服器發出請求後,伺服器就會向用戶端返迴響應訊息(包括請求是否正確以及所請求的資料),在確認用戶端已經收到響應訊息後,服務端就會關閉網路連接(其實是關閉TCP串連)。在這個資料轉送過程中,並不儲存任何曆史資訊和狀態資訊,因此,HTTP協議也被認為是無狀態的協議,圖1描繪了HTTP1.0協議的通訊過程。

圖1  HTTP1.0協議的通訊過程在HTTP1.0協議中,當Web瀏覽器發出請求時,就意味著一個請求/響應會話已經開始。在請求、響應結束後,伺服器就會立刻關閉這個串連。這種會話方式雖然簡便,但它會帶來另外一個問題。如果用戶端瀏覽器訪問的某個HTML或其他類型的Web頁中包含有其他的Web資源,如JavaScript檔案、影像檔、CSS檔案等;當瀏覽器每遇到這樣一個Web資源,就會建立一個HTTP會話。如果這樣的資源很多的話,就會加重伺服器的負擔,同時也會影響用戶端瀏覽器載入HTML等Web資源的效率。在對上述的缺陷進行改進和完善後,HTTP1.1協議進入了我們的視線。HTTP1.1和HTTP1.0相比較而言,最大的區別就是增加了持久串連支援。當用戶端使用HTTP1.1協議串連到伺服器後,伺服器就將關閉用戶端串連的主動權交還給用戶端;也就是說,在用戶端向伺服器發送一個請求並接收以一個響應後,只要不調用Socket類的close方法關閉網路連接,就可以繼續向伺服器發送HTTP請求。當HTML中含有其他的Web資源時,瀏覽器就可以使用同一個網路連接向下載這些資源,這樣就可以大大減輕伺服器的壓力。圖2示範了這一過程。圖2  HTTP1.1協議的通訊過程HTTP1.1除了支援持久串連外,還將HTTP1.0的要求方法從原來的三個(GET、POST和HEAD)擴充到了八個(OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT)。而且還增加了很多請求和響應欄位,如上述的持久串連的欄位Connection。這個欄位有兩個值,Close和Keep-Alive。如果使用Connection:Close,則關閉HTTP1.1的持久串連的功能,要開啟HTTP1.1的持久串連的功能,必須使用Connection:Keep-Alive,或者不加Connection欄位(因為HTTP1.1在預設情況下就是持久串連的)。除了這些,還提供了身份認證、狀態管理和緩衝(Cache)等相關的要求標頭和回應標頭。

相關文章

聯繫我們

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