http概述(http權威指南第一章)

HTTP概述

在這一章我們可以看到如下內容 :
- web客戶端魚服務器是如何通信的
- 資源來自何方
- web事物是怎樣工作的
- HTTP通信所使用的報文格式
- 底層TCP網絡傳輸
- 不同的HTTP協議變體
- 因特網上安裝的大量HTTP架構組件中的一部分
1. HTTP-因特網的多媒體信使
HTTP使用的是可靠的數據傳輸協議,即使數據來自地球的另一端,它也能夠確保數據在傳輸的過程中不會被損壞或產生混亂,無需擔心HTTP通信會在傳輸過程中中國年被破壞,複製後產生畸變
2. web客戶端和服務器
客戶端向服務器發送HTTP請求,服務器會在HTTP響應中會送所請求的數據,http客戶端和http服務器共同構成萬維網的基本組件
瀏覽一個頁面時(http://www.oreilly.com/index.html),瀏覽器會向服務器(www.oreilly.com)發送一條http請求,服務器會去尋找所期望的對象(/index.html),如果成功,就將對象,對象類型,對象長隊以及其他一些信息放在http相應中發送給客戶端
3. 資源
web服務器就是web資源的宿主,web資源是web內容的源頭。最簡單的web資源就是web服務器文件系統中的靜態文件,這些文件包含人以內容:文本文件,html文件,微軟的word文件,adobe的acrobat文件,jpeg圖片文件,avi電影文件等。
但是資源不一定非得是靜態文件,資源還可以是根據需要生成內容的軟件程序
- 媒體類型
http給每種要通過web傳輸的對象都打上名爲MIME類型的數據格式標籤。當web瀏覽器從服務器中取回一個對象是,會去查看相關的MIME類型,看看它是否知道應該如何處理這個對象。
MIME類型是一種文本標記,表示爲(主要的對象類型/特定的子類型),比如:
- HTML格式的文本文檔:text/html
- 普通的ASCII文本文檔:text/plain
- jpeg格式的圖片:image/jpeg
- gif格式的圖片:image/gif
- Apple的QuickTime電影:video/quicktime
- 微軟的PowerPoint演示文件:application/vnd.ms-powerpoint
常見的MIME類型有數百個
- URI 統一資源標識符
每個web服務器資源都有一個名字,被稱爲URI(Uniform Resource Identifier).它就像郵政地址一樣,在世界範圍內唯一標示並定位信息資源。給定了URI,http就可以解析出對象,URI有兩種形式:URL和URN
- URL 統一資源定位符
URL表述了一臺特定服務器上某資源的特定位置
大部分URL都遵循一種標準格式,包括三個部分:
- 方案(scheme),說明了訪問資源所使用的協議類型(http://)
- 服務器的因特網地址(www.baidu.com)
- 其餘部分指定web服務器上的某個資源
現在幾乎所有的URI都是URL
- URN 統一資源名
座位特定內容的唯一名稱使用,與目前的資源所在地無關,可以將資源四處搬移,URN仍然處於試驗階段,並未大範圍使用
4. 事務
一個http事務包括一個請求命令和一個相應結果,這種通信通過名爲http報文的格式化數據塊進行的
- 方法
http支持集中不同的請求命令,被稱爲http方法。每條請求報文都包含一個方法,這個方法告訴服務器執行什麼動作(獲取一個web頁面,運行一個網關程序,刪除一個文件),以下是5中常見的方法:
1. GET:從服務器向客戶端發送命名資源
2. PUT:將來自客戶端的數據存儲到一個命名的服務器資源中
3. DELETE:從服務器刪除命名資源
4. POST:將客戶端數據發送到一個服務器網關應用程序
5. HEAD:僅發送命名資源相應中的http首部
- 狀態碼
每條http響應報文返回時都會攜帶一個狀態碼,由三位數字組成,告訴客戶端請求是否成功,或者是否需要採取其他動作,下面是常見的狀態碼:
1. 200:OK,文檔正確返回
2. 302:Redirect(重定向),到其他地方去獲取資源
3. 404:Not Found(沒找到),無法找到這個資源
- web頁面中可包含多個對象
一個web頁面的獲取可能需要多個http事務,比如一個事務獲取描述頁面佈局的html”框架”,其他的事務分別獲取嵌入式圖片,圖像面板,java小程序等。一個web頁面通常不是單個資源,而是一組資源的集合,可能分佈在不同的服務器上
5. 報文
http報文都是純文本,不是二進制代碼,包括請求報文和相應報文,http報文包括以下三部分:
- 起始行
報文第一行就是起始行,在請求報文中用來說明要做些什麼,在相應報文中說明出現了什麼情況
- 首部字段
起始行後面有零個或多個首部字段,每個首部字段包含(名字:值),以一個空行結束
- 主體
空行之後就是可選的報文主體了,其中包含了所有類型的數據。請求主體中包括了要發送個web服務器的數據,相應主體中國年裝載了要返回給客戶端的數據。主體中可以包含任意二進制數據(比如圖片,視頻,音軌,軟件程序)
6. 連接
報文是如何通過傳輸控制協議(TCP)連接從一個地方搬移到另一個地方
- TCP/IP
http是應用層協議,無需操心網絡通信的具體細節,把聯網的細節都交給了通用,可靠的因特網傳輸協議TCP/IP
TCP提供了:
- 無差錯的數據傳輸
- 按序傳輸
- 未分段的數據流(以任意尺寸將數據發送出去)

  • 連接,IP地址及端口號
    在http客戶端向服務器發送報文之前,需要用ip地址和端口號在客戶端和服務器之間建立一條TCP連接。步驟如下:
    a. 瀏覽器從URL中國年解析出服務器主機名
    b. 瀏覽器將服務器主機名轉換爲服務器IP地址(DNS服務器)
    c. 瀏覽器將服務器端口號(如果有的話)從URL中解析出來
    d. 瀏覽器建立一條與web服務器的tcp連接
    e. 瀏覽器向服務器發送一條http請求報文
    f. 服務器向瀏覽器回送一條http響應報文
    g. 關閉連接,瀏覽器顯示文檔
    1. 協議版本
  • http/0.9
  • http/1.0
  • http/1.0+
  • http/1.1
  • http/2.0
    1. web的結構組件
  • 代理
    http代理服務器是web安全,應用集成以及性能優化的重要組成模塊。
    代理位於客戶端與服務器之間,接收所有客戶端的http請求,並將這些請求轉發給服務器(可能會對請求進行修改後轉發)
  • 緩存
    web緩存或代理緩存是一種特殊的http代理服務器,可以將經過代理傳送的常用文檔複製保存起來,客戶端從附近的緩存下載文檔比遠程服務器下載快得多
  • 網關
    網關是一種特殊的服務器,作爲其他服務器的中間實體使用,通常用於將http流量轉換成其他的協議
  • 隧道
    隧道是建立以後,就會在兩條連接之間對原始數據進行盲轉發的http應用程序。http隧道通常用來在一條或多條http連接上轉發菲http數據
  • Agent代理
    用戶Agent代理是代表用戶發起http請求的客戶端程序。所有發佈web請求的應用程序都是httpAgent代理,不僅僅包括web瀏覽器,還有其他類型
    發起自動http請求的半智能web客戶端
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章