文章目錄
1.www萬維網
(1)什麼是萬維網?
萬維網(World Wide Web, WWW)是一個資料空間,在這個空間中:
一樣有用的事物稱爲一樣“資源”,並由一個全域“統一資源定位符”(URL)標識。
這些資源通過超文本傳輸協議(HTTP)傳送給使用者,通過單擊鏈接來獲取資源。
- 萬維網使用鏈接的方法能讓用戶非常方便地從因特網上的一個站點訪問另一個站點,從而主動地按需獲取豐富的信息。
- 超文本標記語言(HyperText Markup Language,HTML)使得萬維網頁面的設計者可以很方便地用一個超鏈接從本頁面的某處鏈接到因特網上的任何一個萬維網頁面,並能夠在自己的計算機屏幕上顯示這些頁面。
(2)萬維網的組成
萬維網的內核部分是由三個標準構成的:
- 1)
統一資源定位符(URL)
。 負責標識萬維網上的各種文檔,並使每個文檔在整個萬維網的範圍內具有唯一的標識符URL。 - 2)
超文本傳輸協議(HTTP)
。 一個應用層協議,它使用TCP連接進行可靠的傳輸,HTTP是萬維網客戶程序和服務器程序之間交互所必須嚴格遵守的協議。 - 3)
超文本標記語言(HTML)
。 一種文檔結構的標記語言,它使用一些約定的標記對頁面上的各種信息(包括文字、聲音、圖像、視頻等)、格式進行描述。
(3)URL—統一資源定位符
- URL是對可以從因特網上得到的資源的位置和訪問方法的一種簡潔表示。URL相當於一個文件名在網絡範圍的擴展。
- URL的一般形式是: <協議>://<主機>:<端口>/<路徑>。
常見的<協議>有http、ftp 等;
< (主機>是存放資源的主機在因特網中的域名,也可以是IP地址;
<端口>和<路徑>有時可以省略。 在URL中不區分大小寫。
(3)萬維網工作流程
- 萬維網以
客戶/服務器
方式工作。 瀏覽器
是在用戶計算機上的萬維網客戶程序
,而萬維網文檔所駐留的計算機
則運行服務器程序
,這臺計算機稱萬維網服務器
。- 客戶程序向服務器程序發出請求,服務器程序向客戶程序送回客戶所要的文檔。工作流程如下:
① Web 用戶使用瀏覽器(指定URL)與Web服務器建立連接,併發送瀏覽請求。
② Web服務器把URL轉換爲文件路徑,並返回信息給Web瀏覽器。
③ 通信完成,關閉連接。
2.HTTP—超文本傳輸協議
- HTTP定義了瀏覽器(萬維網客戶進程)怎樣向萬維網服務器請求萬維網文檔,以及服務器怎樣把文檔傳送給瀏覽器。
- 從層次的角度看,HTTP是面向事務的(Transaction-oriented) 應用層
協議,它規定了在瀏覽器和服務器之間的請求和響應的格式與規則,是萬維網上能夠可靠地交換文件(包括文本、聲音、圖像等各種多媒體文件)的重要基礎。
(1)HTTP操作過程
- 在瀏覽器和服務器之間的請求與響應的交互,必須遵循規定的格式和規則,這些格式和規則就是HTTP。
- 因此HTTP有兩類報文:
請求報文
(從Web客戶端向Web服務器發送服務請求)
響應報文
(從Web服務器對Web客戶端請求的回答)。
-
從協議執行過程來說,瀏覽器要訪問WWW服務器時,首先要完成對www服務器的
域名解析
。 -
一旦獲得了服務器的IP地址,
瀏覽器
就通過TCP向服務器發送連接建立請求
。萬維網的大致工作過程如圖所示
-
每個萬維網站點都有一個服務器進程,它不斷地監聽TCP的端口
80
(默認),當監聽到連接請求後便與瀏覽器建立連接
。 -
TCP連接建立後, 瀏覽器就向服務器發送請求
獲取某個Web頁面的HTTP請求
。 -
服務器收到HTTP請求後,將
構建所請求Web頁的必需信息
,並通過HTTP響應返回給瀏覽器。 -
瀏覽器再將信息進行
解釋
, .然後將Web頁顯示
給用戶。 -
最後,TCP連接
釋放
。
用戶單擊鼠標後所發生的事件按順序如下(以訪問清華大學的網站爲例):
1)瀏覽器分析鏈接指向頁面的URL (http://www.tsinghua edu.cn /chn/index.htm)。
2)瀏覽器向DNS請求解析www.tsinghua.edu.cn的IP地址。
3)域名系統DNS解析出清華大學服務器的IP地址。
4)瀏覽器與該服務器建立TCP連接(默認端口號爲80)。
5)瀏覽器發出HTTP請求: GET /chn/index.htm.
6)服務器通過HTTP響應把文件index.htm 發送給瀏覽器。
7) TCP連接釋放。
8)瀏覽器解釋文件index.htm,並將Web頁顯示給用戶。
(2)HTTP特點
HTTP是無狀態的。
也就是說,同一個客戶第二次訪問同一個服務器上的頁面時,服務器的響應與第一次被訪問時的相同。
因爲服務器並不記得曾經訪問過的這個客戶,也不記得爲該客戶曾經服務過多少次。
HTTP的無狀態特性簡化了服務器的設計,使服務器更容易支持大量併發的HTTP請求。
在實際應用中,通常使用
Cookie 加數據庫的方式來跟蹤用戶的活動
(如記錄用戶最近瀏覽的商品等)。
Cookie 是一個存儲在用戶主機中的文本文件,裏面含有一-串“識別碼”,如“123456”,用於Web服務識別用戶。
Web服務器根據Cookie就能從數據庫中查詢到該用戶的活動記錄,進而執行一些個性化的工作,如根據用戶之前瀏覽過的商品向其推薦新產品等。
HTTP採用TCP作爲運輸層協議,保證了數據的可靠傳輸
。
HTTP不必考慮數據在傳輸過程中被丟棄後又怎樣被重傳。
但是,HTTP本身是無連接的
。也就是說,雖然HTTP使用了TCP連接,但通信的雙方在交換HTTP報文之前不需要先建立HTTP連接
。
HTTP既可以使用非持久連接,也可以使用持久連接(HTTP/1.1支持)。
- 對於
非持久連接
,每個網頁元素對象(如JPEG圖形、Flash 等)的傳輸都需要單獨建立一個TCP連接
,如圖6.12所示(第三次握手的報文段中捎帶了客戶對萬維網文檔的請求)。
也就是說,請求一個萬維網文檔所需的時間是該文檔的傳輸時間
(與文檔大小成正比)加上兩倍往返時間RTT
(一個RTT用於TCP連接,另一個RTT用於請求和接收文檔)。
持久連接
,是指萬維網服務器在發送響應後仍然保持這條連接,使同一個客戶和服務器可以繼續在這條連接上傳送後續的HTTP請求與響應報文,如圖6.13所示。持久連接
又分爲非流水線
和流水線
兩種方式。
對於非流水線
方式,客戶在收到前一個響應後才能發出下一個請求;
HTTP/1.1 的默認方式是使用流水線
的持久連接。這種情況下,客戶每遇到一個對象引用就立即發出一個請求,因而客戶可以逐個地連續發出對各個引用對象的請求。如果所有的請求和響應都是連續發送的,那麼所有引用的對象共計經歷1個RTT延遲,而不是像非流水線方式那樣,每個引用都必須有1個RTT延遲。
(3)HTTP報文結構
- HTTP是面向文本的(Text-Oriented), 因此報文中的每個字段都是一一些ASCII碼串,並且每個字段的長度都是不確定的。有兩類HTTP報文:
●請求報文: 從客戶向服務器發送的請求報文
●響應報文: 從服務器到客戶的回答 - HTTP請求報文和響應報文都由三個部分組成。
這兩種報文格式的區別是開始行不同。 開始行:用於區分是請求報文還是響應報文。
在請求報文
中的開始行稱爲請求行
;
響應報文中
的開始行稱爲狀態行
;
開始行的三個字段之間都以空格分隔,最後的“CR"和“LF”
分別代表“回車”和“換行”
。
請求報文的“請求行”有三個內容:方法、請求資源的URL及HTTP的版本
-
其中,
“方法”是對所請求對象進行的操作
,這些方法實際上也就是一些命令。HTTP請求報文中常用的幾個方法:
-
首部行
:用來說明瀏覽器、服務器或報文主體的一些信息。
首部可有幾行,但可不使用。
在每個首部行都有首部字段名和它的值,每行在結束的地方都要有“回車”和"換行”。
整個首部結束時,還有一空行將首部行和後面的實體主體分開。 -
實體主體
:在請求報文中一般不用這個字段,而在響應報文中也可能沒有這個字段。
(4)WireShark捕獲HTTP報文實例
- 請求報文
- 響應報文