熱點推薦:
您现在的位置: 電腦知識網 >> 操作系統 >> Windows服務器 >> 正文

新手入門:了解WWW服務與HTTP協議(圖)

2013-11-11 22:56:11  來源: Windows服務器 

  在前一篇文章裡我們介紹了網絡應用和網絡協議的一些基礎知識現在讓我們來了解一下WWW服務應用和HTTP網絡協議
  
  歷史上先後問世了多個具有重大社會影響的電子通信技術第一個這樣的技術是世紀年代發明的電話電話使得不在同一物理位置的兩人得以實時地口頭交流它對社會有重大的影響——有好的也有壞的下一個電子通信技術是世紀年代及年代問世的廣播收音機/電視機廣播收音機/電視機使得人們能收聽收視大量的音頻和視頻信息它對社會同樣有重大的影響——有好的也有壞的改變了人們的生活與工作方式的第三個重大通信技術是webweb最吸引用戶的也許是它的隨選(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文本和個JPEG圖像那麼它由個對象構成即基本HML文件加個圖像基本HTML文件使用相應的URL來引用本頁面的其他對象每個URL由存放該對象的服務器主機名和該對象的路徑名兩部分構成例如在如下的URL中:
  
  /urlpath/pictureqif
  
  是一個主機名/urlpath/pictureqif是一個路徑名浏覽器是web的用戶代理它顯示所請求的Web頁面並提供大量的導航與配置特性Web浏覽器還實現HTTP的客戶端因此在web上下文中我們會從進程意義上互換使用浏覽器客戶兩詞流行的Web浏覽器有Netscape Communicatorfirefox和微軟的IE等Web服務器存放可由URL尋址的Web對象web服務器還實現HTTP的服務器端流行的Web服務器有Apache微軟的IIS以及Netscape Enterprise ServerNetcraft提供了web服務器的概要剖析[Netcrft ]
  
  HTTP定義Web客戶(即浏覽器)如何從web服務器請求Web頁面以及服務器如何把Web頁面傳送給客戶下圖展示了這種請求—響應行為當用戶請求一個Web頁面(譬如說點擊某個超鏈接)時浏覽器把請求該頁面中各個對象的HTTP請求消息發送給服務器服務器收到請求後以運送含有這些對象HTTP響應消息作為響應年底基本上所有的浏覽器和Web服務器軟件都實現了在RFC 中定義的HTTP/版本年初一些Web服務器軟件和浏覽器軟件開始實現在RFC 中定義的HTTP/版本HTP/與HTTP/後向兼容;運行版本的web服務器可以與運行版本的浏覽器對話運行版本的浏覽器也可以與運行版本的Web服務器對話
  
 
  圖 HTTP請求與響應行為

  
  HTTP/和HTTP/都把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)
  
  非持久連接和持久連接
  
  HTTP既可以使用非持久連接(nonpersistent connection)也可以使用持久連接(persistent connection)HTTP/使用非持久連接HTTP/默認使用持久連接
  
  非持久連接
  
  讓我們查看一下非持久連接情況下從服務器到客戶傳送一個Web頁面的步驟假設該貝面由個基本HTML文件和個JPEG圖像構成而且所有這些對象都存放在同一台服務器主機中 再假設該基本HTML文件的URL為:/somepath/l
  
  下面是具體步騾:
  
  HTTP客戶初始化一個與服務器主機中的HTTP服務器的TCP連接HTTP服務器使用默認端口號監聽來自HTTP客戶的連接建立請求
  
  HTTP客戶經由與TCP連接相關聯的本地套接字發出—個HTTP請求消息這個消息中包含路徑名/somepath/l
  
  HTTP服務器經由與TCP連接相關聯的本地套接字接收這個請求消息再從服務器主機的內存或硬盤中取出對象/somepath/l經由同一個套接字發出包含該對象的響應消息
  
  HTTP服務器告知TCP關閉這個TCP連接(不過TCP要到客戶收到剛才這個響應消息之後才會真正終止這個連接)
  
  HTTP客戶經由同一個套接字接收這個響應消息TCP連接隨後終止該消息標明所封裝的對象是一個HTML文件客戶從中取出這個文件加以分析後發現其中有個JPEG對象的引用
  
  給每一個引用到的JPEG對象重復步騾
  
  浏覽器在接收web頁面的同時把它顯示給用戶不同的浏覽器可能會以略有不同的方式解釋(也就是向用戶顯示)同一個web頁面HTTP與客戶如何解釋Web頁面沒有任何關系其規范([RFC ]和[RFC I)僅僅定義HTTP客戶程序和服務器程序之間的通信協議
  
  上述步驟之所以稱為使用非持久連接原因是每次服務器發出一個對象後相應的TCP連接就被關閉也就是說每個連接都沒有持續到可用於傳送其他對象每個TCP連接只用於傳輸一個請求消息和一個響應消息就上述例子而言用戶每請求一次那個web頁面就產生個TCP連接
  
  在上述步騾中我們有意不說清客戶是通過個串行的TCP連接先後取得所有JPEG對象還是通過並行的TCP連接同時取得其中某些JPEG對象實際上現今的浏覽器允許用戶通過配置來控制並行連接的程度大多數浏覽器默認可以打開個並行的TCP連接每個連接處理一個請求—響應事務用戶要是喜歡可以把最大並行連接數設為l那樣的話這個連接是串行地建立的我們將在第章看到使用並行連接可以縮短響應時間
  
  繼續介紹之前先估算一下從客戶請求基本HTML文件到它收到該文件所經歷的時間為此我們定義往返時間(round trip time簡稱RTT)它是一個小分組從客戶主機游動到服務器主機再返回客戶主機所花的時間RTT包括分組傳播延遲在中間路由器和交換機土的分組排隊延遲以及分組處理延遲下面考慮用戶點擊某個超鏈接時會發生什麼用戶的點擊導致浏覽器發起建立一個與Web服務器的TCP連接;這裡涉及·—次三次握手過程——首先是客戶向服務器發送一個小的冗余消息接著是服務器向客戶確認並響應以一個小的TCP消息最後是客戶向服務器回確認三次握手過程的前兩次結束時流逝的時間為個RTT此時客戶把HTTP請求消息發送到TCP連接中客戶接著把三次握手過程最後一次中的確認捎帶在包含這個消息的數據分節中發送以去服務器收到來自TCP連接的請求消息後把相應的HTML文件發送到TCP連接中服務器接著把對早先收到的客戶請求的確認捎帶在包含該HTML文件的數據分節中發送出去這個HTTP請求順應交互也花去個RTT時間因此總的響應時間粗略地算是個RTT加上服務器發送這個HTMI文件的時間
  
  持久連接
  
  非持久連接有些缺點首先客戶得為每個待請求的對象建立並維護一個新的連接對於每個這樣的連接TCP得在客戶端和服務器端分配TCP緩沖區並維持TCP變量對於有可能同時為來自數百個不同客戶的請求提供服務的web服務器來說這會嚴重增加其負擔其次如前所述每個對象都有個RTT的響應延長——一個RTT用於建立TCP連接另—個RTT用於請求和接收對象最後每個對象都遭受TCP緩啟
From:http://tw.wingwit.com/Article/os/fwq/201311/10280.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.