1. 程式人生 > >《http權威指南》學習筆記

《http權威指南》學習筆記

第一部分 HTTP:WEB的基礎

第一章 HTTP概述

媒體型別:

  • http給每種要通過web傳輸的物件都打上了名為MIME(Multipurpose Internet Mail Extension,多用途因特網郵件擴充套件)型別的資料格式標籤。
  • Web伺服器會為所有HTTP物件資料附加一個MIME型別。當Web瀏覽器從伺服器中取回一個物件時,回去檢視相關的MIME型別,看看它是否知道應該如何處理這個物件。 MIME型別是一種文字標記,表示一種主要的物件型別和一個特定的子型別,中間由斜槓來分隔。 1、HTML格式的文字文件由 text/html 型別來標記 2、普通的ASCII文字文件由 text/plain 型別來標記 3、JPEG版本的圖片為 image/jpeg 型別 4、GIF格式的圖片為 image/gif型別 5、Apple的QuickTime電影為 video/quidktime 型別 6、微軟的PowerPoint演示檔案為 application/vnd.ms-powerpoint 型別

URI

  • 伺服器資源名被稱為統一資源識別符號(Uniform Resource Identifier,URI).URI就像因特網上的郵政地址一樣,在世界範圍內唯一標識並定位資訊資源。 例如一個圖片資源的URI:

當給定了URI,HTTP就可以解析出物件。URI有兩種形式,分別稱為URL和URN。

URL

  • 統一資源定位符(URL)是資源識別符號最常見形式。它描述了一臺特定伺服器上的某資源的特定位置。 URL說明了協議、伺服器和本地資源。如下圖: 在這裡插入圖片描述 URL例項: 在這裡插入圖片描述 大部分的URL都遵循一種標準格式,這種格式包含三個部分:、 ①方案(scheme),說明了訪問資源所使用的協議型別。這部分通常是HTTP協議(http://) ②給出伺服器的因特網地址(
    www.baidu.com
    ) ③其餘部分指定了WEB伺服器上的某個資源(/specials/sky.gif) 現在,幾乎所有的URI都是URL。

URN

  • URI的第二種形式就是URN(統一資源名)。URN是作為特定內容的唯一名稱使用的,與目前的資源所在地無關。使用這些與位置無關的URN,就可以將資源四處搬移。通過URN,還可以用同一個名字通過多種網路訪問協議來訪問資源。 例如:RFC 2141 無論在何處,甚至可以複製到多個地方,都可以用以下URN來命名: urn:ietf:rfc:2141 URN仍處於試驗階段。

事務

  • 一個HTTP事務由一條請求命令和一個響應結果組成。這種通訊是通過名為HTTP報文的格式化資料塊進行的。 方法 HTTP支援幾種不同的請求命令,這些命令被稱為HTTP方法(HTTP method)。 常見的HTTP方法: GET—-從伺服器向客戶的傳送命名資源 PUT—-將來自客戶的的資料儲存到一個命名的伺服器資源中去 DELETE—-從伺服器中刪除命名資源 POST—-將客戶端資料傳送到一個伺服器閘道器應用程式 HEAD—-僅傳送命名資源響應中的HTTP首部

狀態碼

  • 每條HTTP響應報文返回時都會攜帶一個狀態碼。狀態碼是一個三位數字的程式碼,告知客戶端請求是否成功,或者是否需要採取其他動作。 常見狀態碼: 200—-OK,文件返回正確 302—-Redirect,重定向,到其他地方獲取資源 404—-Not Found,無法找到這個資源

WEB頁面中可以包含多個物件

  • 一個WEB頁面是一組資源的集合。web瀏覽器會發布一系列HTTP事務來獲取並顯示一個包含了豐富資源的頁面。 在這裡插入圖片描述 報文
  • HTTP報文是由一行一行的簡單字串組成。它是純文字,並非二進位制程式碼。 HTTP報文包含以下三個部分: 1、起始行 報文的第一行,在請求報文中用來說明要做些什麼。在響應報文中說明出現了什麼情況。 2、首部欄位 起始行後面有零個或者多個首部欄位。每個欄位都包含一個名字和一個值,為了便於解析,兩者之間用冒號(:)分隔。首部以一個空行結束。 3、主體 空行之後就是可選的報文主體了,其中包含了所有型別的資料。請求主體中包括了要傳送個web伺服器的資料;響應主體中裝載了要返回給客戶端的資料。起始行和首部都是文字形式且都是結構化的,而主體則不同,主體可以包含任意的二進位制資料和文字。 在這裡插入圖片描述 連線 TCP/IP HTTP是個應用層協議,聯網的細節都交給了TCP/IP協議。 TCP提供: 無差錯的資料傳輸;按序傳輸;未分段的資料流(可以在任意時刻以任意尺寸將資料傳送出去) 連線、IP地址及埠號 在HTTP客戶端向伺服器傳送報文之前,需要用網際協議(Internet Protocol,IP)地址和埠號在客戶端與伺服器之間建立一條TCP/IP 連線。 在這裡插入圖片描述

協議版本

  • HTTP/0.9 HTTP的1991原型版本。僅支援GET方法,不支援多媒體內容的MIME型別、各種HTTP首部,或者版本號。 HTTP/1.0 1.0是第一個得到廣泛使用的HTTP版本。HTTP/1.0添加了版本號、各種HTTP首部、一些額外的方法以及對多媒體物件的處理。 HTTP/1.0+ 由很多流行的web客戶端和伺服器向HTTP中新增各種特性,包括keep-alive連線、虛擬主機支援、以及代理連線支援等,稱為非官方的事實標準。這種的HTTP擴充套件版本通常稱為HTTP/1.0+ HTTP/1.1 這個版本重點關注的是校正HTTP設計中的結構性缺陷,明確語義,引入重要的效能優化措施,並刪除一些不好的特性。它還包含了對20世紀90年代末正在發展中的更復雜的WEB應用程式和部署方式的支援。它也是當前使用的版本。 HTTP-NG(HTTP/2.0) 是HTTP/1.1後繼結構的原型建議,它重點關注的是效能的大幅優化以及更強大的服務邏輯遠端執行框架。它的研究工作終止於1998年。

WEB的結構元件 代理 代理位於客戶端和伺服器之間,接收所有客戶端的HTTP請求,並將這些請求轉發給伺服器(可能會對請求進行修改之後轉發)。 快取 WEB快取(cache)或代理快取是一種特殊的HTTP代理伺服器,可將經過代理傳送的常用文件複製儲存起來。下一個請求同一文件的客戶端就可以享受快取的私有副本所提供的服務了。 閘道器 閘道器(gateway)是一種特殊的伺服器,作為其他伺服器的中間實體使用。通常用於將HTTP流量轉換成其他的協議。閘道器接受請求時就好像自己是資源的源端伺服器一樣,客戶端可能並不知道自己在與一個閘道器進行通訊。 在這裡插入圖片描述 隧道

隧道(tunnel)是建立起來之後,就會在兩條連線之間對原始資料進行盲轉發的HTTP應用程式。通常用來在一條或多條HTTP連線上轉發非HTTP資料,轉發時不會窺探資料。 HTTP隧道一種常見用途是通過HTTP連線承載加密的安全套接字層(SSL,Secure Sockets Layer)流量。這樣SSL流量就可以穿過只允許WEB流量通過的防火牆了。 在這裡插入圖片描述 Agent代理

  • Agent代理是代表使用者發起HTTP請求的客戶端程式。所有釋出WEB請求的應用程式都是HTTP Agent代理。web瀏覽器。 在這裡插入圖片描述

第二章 URL與資源

瀏覽因特網資源

  • URL 可以通過HTTP之外的其他協議來訪問資源。它們可以指向因特網上的任意資源。比如個人郵箱賬戶。或者其他協議FTP、或者從流視訊伺服器下載電影 rtsp://www.xxxx.com:554/cto_video

URL的語法

  • 大多數URL方案的URL語法都建立在這個由9部分構成的通用格式上: : // : @ : / ; ? # 在這裡插入圖片描述

-----第二十九頁-------