新手入門:瞭解WWW服務與HTTP協議1

新手入門:瞭解WWW服務與HTTP協議1

Posted on 2007-04-26 10:48 szw104 閱讀(3) 評論(0)  編輯 收藏 引用 網摘 所屬分類: Web原理
前一篇文章裏,我們介紹了網絡應用和網絡協議的一些基礎知識,現在,讓我們來了解一下WWW服務應用和HTTP網絡協議。

  歷史上,先後問世了多個具有重大社會影響的電子通信技術。第一個這樣的技術是19世紀70年代發明的電話。電話使得不在同一物理位置的兩人得以實時地口頭交流。它對社會有重大的影響——有好的也有壞的。下一個電子通信技術是20世紀20年代及30年代問世的廣播收音機/電視機。廣播收音機/電視機使得人們能收聽收視大量的音頻和視頻信息。它對社會同樣有重大的影響——有好的也有壞的。改變了人們的生活與工作方式的第三個重大通信技術是web。web最吸引用戶的也許是它的隨選(on demand)操作性。用戶只在想要時收到所要的東西。這一點不同於廣播收音機/電視機。廣播收音機/電視機的用戶是在其內容供應商播出內容期間被迫收聽收視。除了隨選操作性,Web還有許多大家喜愛的其他精彩特性。任何個人都可以極其容易地在Web上公佈任何信息;任何人都可能以極低的成本成爲發行人。超鏈接和搜索引擎幫助我們在Web站點的海洋中導航。圖形和動畫刺激着我們的感官。表單、Java小應用程序、Activex控件以及其他許多設備使得我們能與Web頁面和站點交互。Web還越來越普遍地提供存放在因特網中的、可隨選訪問(即點播)的大量音頻和視頻材料的菜單接口。

  HTTP概貌

  Web的應用層協議HTTP是Web的核心。HTTP在Web的客戶程序和服務器程序中得以實現。運行在不同端系統上的客戶程序和服務器程序通過交換HTTP消息彼此交流。HTTP定義這些消息的結構以及客戶和服務器如何交換這些消息。在詳細解釋HTTP之前,我們先來回顧一些web中的術語。

  Web頁面(web page,也稱爲文檔)由多個對象構成。對象(object)僅僅是可由單個URL尋址的文件,例如HTML文件、JPG圖像、GIF圖像、JAVA小應用程序、語音片段等。大多數Web頁面由單個基本HIML文件和若干個所引用的對象構成。例如,如果一個Web頁面包含HTML文本和5個JPEG圖像,那麼它由6個對象構成,即基本H1ML文件加5個圖像。基本HTML文件使用相應的URL來引用本頁面的其他對象。每個URL由存放該對象的服務器主機名和該對象的路徑名兩部分構成。例如,在如下的URL中:

  www.yesky.com/urlpath/picture.qif

  www.yesky.com是一個主機名,/urlpath/picture.qif是一個路徑名。瀏覽器是web的用戶代理,它顯示所請求的Web頁面,並提供大量的導航與配置特性。Web瀏覽器還實現HTTP的客戶端,因此在web上下文中,我們會從進程意義上互換使用“瀏覽器”和“客戶”兩詞。流行的Web瀏覽器有Netscape Communicator,firefox和微軟的IE等。Web服務器存放可由URL尋址的Web對象。web服務器還實現HTTP的服務器端。流行的Web服務器有Apache、微軟的IIS以及Netscape Enterprise Server。Netcraft提供了web服務器的概要剖析[Netcrft 2000]。

  HTTP定義Web客戶(即瀏覽器)如何從web服務器請求Web頁面,以及服務器如何把Web頁面傳送給客戶。下圖展示了這種請求—響應行爲。當用戶請求一個Web頁面(譬如說點擊某個超鏈接)時,瀏覽器把請求該頁面中各個對象的HTTP請求消息發送給服務器。服務器收到請求後,以運送含有這些對象HTTP響應消息作爲響應。到1997年底,基本上所有的瀏覽器和Web服務器軟件都實現了在RFC 1945中定義的HTTP/1.0版本。1998年初,一些Web服務器軟件和瀏覽器軟件開始實現在RFC 2616中定義的HTTP/1.1版本。H1TP/1.1與HTTP/1.0後向兼容;運行1.1版本的web服務器可以與運行1.0版本的瀏覽器“對話”,運行1.1版本的瀏覽器也可以與運行1.0版本的Web服務器“對話”。


圖1 HTTP請求與響應行爲

  HTTP/1.0和HTTP/1.1都把TCP作爲底層的傳輸協議。HTTP客戶首先發起建立與服務器TCP連接。一旦建立連接,瀏覽器進程和服務器進程就可以通過各自的套接字來訪問TCP。如前所述,客戶端套接字是客戶進程和TCP連接之間的“門”,服務器端套接字是服務器進程和同一TCP連接之間的“門”。客戶往自己的套接字發送HTTP請求消息,也從自己的套接字接收HTTP響應消息。類似地,服務器從自己的套接字接收HTTP請求消息,也往自己的套接字發送HTTP響應消息。客戶或服務器一旦把某個消息送入各自的套接字,這個消息就完全落入TCP的控制之中。TCP給HTTP提供一個可靠的數據傳輸服務;這意味着由客戶發出的每個HTTP請求消息最終將無損地到達服務器,由服務器發出的每個HTTP響應消息最終也將無損地到達客戶。我們可從中看到分層網絡體系結構的一個明顯優勢——HTTP不必擔心數據會丟失,也無需關心TCP如何從數據的丟失和錯序中恢復出來的細節。這些是TCP和協議棧中更低協議層的任務。

  TCP還使用一個擁塞控制機制。該機制迫使每個新的TCP連接一開始以相對緩慢的速率傳輸數據,然而只要網絡不擁塞,每個連接可以迅速上升到相對較高的速率。這個慢速傳輸的初始階段稱爲緩啓動(slow start)。

  需要注意的是,在向客戶發送所請求文件的同時,服務器並沒有存儲關於該客戶的任何狀態信息。即便某個客戶在幾秒鐘內再次請求同一個對象,服務器也不會響應說:自己剛剛給它發送了這個對象。相反,服務器重新發送這個對象,因爲它已經徹底忘記早先做過什麼。既然HTTP服務器不維護客戶的狀態信息,我們於是說HTTP是一個無狀態的協議(stateless protocol)。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章