目錄
一. 定義
1. Web:World Wide Web, 其內容以頁面的形式表現。
- 超文本(Hypertext):一個頁面指向另一個頁面。用戶單擊一個鏈接就可以來到該鏈接所指向的頁面。
- 超媒體(Hypermedia):超文本和多媒體的結合。用戶可以在頁面激活一段聲音,顯示一個圖形,甚至播放一段視頻。
- 超文本傳輸協議(HTTP) :Web瀏覽器向一個或多個Web服務器發送請求,服務器以頁面的內容作爲響應。這裏的“請求-響應”協議,即HTTP協議基於文本協議,運行於TCP之上。
2. 瀏覽器:顯示頁面的程序。
3. 統一資源定位符(URL,Uniform Resource Locator):用類標識每個頁面。包含三部分:協議,域名,路徑。如:
http(協議)://www.cs.washington.edu(域名)/index.html(頁面的路徑)
4. Web的體系結構
(圖片來源自Andrew S.Tanenbaum與David J.Wetherall的《計算機網絡(第五版)》)
圖中Web瀏覽器向三個服務器(youtube.com, www.cs.washington.edu, google-analytics.com)發送請求,從而獲得了兩個頁面。來自不同服務器的內容集成在一起通過瀏覽器顯示。www.cs.washington.edu服務器提供了主頁面,youtube.com服務器提供了一段嵌入的視頻,google-analytics.com服務器沒有提供任何用戶可見的內容,但它追蹤訪問網站的用戶。
二. 網絡結構模式
1. C/S(Client/Server)
- 客戶端/服務器端架構,典型的兩層結構。
- 客戶端:一個或多個在用戶電腦上運行的程序。
- 服務器端
1. 數據庫服務器端:客戶端通過數據庫連接訪問服務器端的數據
2. Socket服務器端:服務器端的程序通過Socket與客戶端的程序通信
2. B/S(Browser/Server)-這裏主要介紹該模式
- 瀏覽器/服務器架構,三層結構
- Browser客戶端 :負責處理顯示邏輯
- Web服務器 :負責處理事務邏輯
- 數據庫服務器
(圖片來源於:http://www.ltesting.net/html/84/n-141684.html)
三. 客戶端-瀏覽器Browser
1. 一個瀏覽器是一個應用程序,負責將用戶選擇的web資源呈現出來。
2. 瀏覽器的組成
主要組件:
- 用戶界面 - 包括地址欄、後退/前進按鈕、書籤目錄等
- 瀏覽器引擎 (Browser engine)- 用來查詢及操作渲染引擎的接口
- 渲染引擎 (Rendering engine)- 瀏覽器的內核,負責將網頁代碼轉化成可見的頁面
- 網絡 - 完成網絡調用
- UI後端 - 用來繪製類似組合選擇框及對話框等基本組件,底層使用操作系統的用戶接口
- JS解析器 - 用來解釋執行JS代碼
- 數據存儲 - 瀏覽器在用戶磁盤中保存類似於Cookie的各種數據。HTML5定義了一種輕量級的客戶端存儲技術Web Database技術
3. 當用戶點擊一個超鏈接時,瀏覽器執行的系列步驟
(1)瀏覽器確定URL
(2)瀏覽器請求DNS查詢www.cs.washington.edu服務器的IP地址
(3)DNS返回128.208.3.88
(4)瀏覽器與128.208.3.88機器的80端口建立一個TCP連接(80端口是HTTP協議的默認端口)
(5)瀏覽器發送HTTP報文,請求/index.html頁面
(6)www.cs.washington.edu服務器向瀏覽器響應頁面,如發送文件/index.html
(7)若該頁面包括需要顯示的URL,瀏覽器通過相同的處理過程獲取其他URL。該例子中,URL包括多個取自www.cs.washington.edu的內嵌圖像,一段取自youtube.com的內嵌視頻和一個取自google-analytics.com的腳本。
(8)瀏覽器渲染顯示頁面/index.html
(9)若短期內沒有向同一個服務器發送其他請求,釋放TCP連接。
四. Web服務器端
1. Web服務器的工作流程
- 接受來自瀏覽器的TCP連接請求
- 獲取頁面的路徑,即被請求文件的名字
- 從磁盤中讀取文件
- 將文件內容響應給瀏覽器
- 釋放該TCP連接
2. 爲了解決文件訪問瓶頸,減少讀磁盤的操作,會在內存中維護一個緩存,保存着n個最近使用過的文件或者內容。服務器從磁盤讀取文件前,首先檢查緩存。
3. 爲了解決一次只能服務一個請求的問題,將服務器設計成多線程(multithreaded)模式。
(圖片來源自Andrew S.Tanenbaum與David J.Wetherall的《計算機網絡(第五版)》)
多線程服務器由一個前端模塊和一個處理模塊組成。前端模塊接收所有入境請求; k+1個線程全部屬於同一個進程,所有處理模塊(線程)都可以訪問當前進程地址空間中的緩存。
五. Cookie
- 小甜餅Cookie,一小段文本信息,由瀏覽器存儲在客戶機磁盤Cookie目錄下
- Cookie只是字符串,最多4KB,不是可執行程序,因而不存在病毒得以實際運行從而造成損害
六. HTTP協議
1. HTTP簡介
- HTTP協議(Hyper Text Transfer Protocol超文本傳輸協議),用於從萬維網(WWW:World Wide Web)服務器傳輸超文本到本地瀏覽器。
- 應用層協議,請求-響應協議,運行在TCP之上。
- HTTP默認端口號爲80。瀏覽器通常與服務器的80端口建立TCP連接。
- 無連接:每次連接只處理一個請求。服務器處理完客戶端的請求,並收到客戶端的應答後,即斷開連接。節省傳輸時間。
- 無狀態:對事務處理沒有記憶能力,若後續處理需要前面的信息,則必須重傳。
2. HTTP方法
方法 | 描述 |
GET | 請求服務器發送頁面(完成查詢操作) |
HEAD | 請求一個Web頁面的消息頭 |
POST |
向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。 (完成增刪改操作) |
PUT | 向服務器寫入一個Web頁面 |
DELETE | 刪除頁面 |
TRACE | 回顯服務器收到的請求,用於測試或診斷 |
CONNECT | 通過代理連接 |
OPTIONS | 一個頁面的查詢選項 |
3. 各種協議與HTTP協議的關係
(來源於《圖解HTTP》)
七. TCP/IP通信傳輸流
(來源於《圖解HTTP》)