淺談http

HTTP概述

HTTP (HyperText Transfer Protocol,超文本傳輸協議)。 Web是創建在HTTP協議通訊的。html

HTTP 是個應用層協議。HTTP 無需操心網絡通訊的具體細節;它把聯網的細節都
交給了通用、可靠的因特網傳輸協議 TCP/IP。web

TCP 提供了:
• 無差錯的數據傳輸;
• 按序傳輸(數據老是會按照發送的順序到達);
• 未分段的數據流(能夠在任意時刻以任意尺寸將數據發送出去)。算法

HTTP資源

Web 服務器是 Web 資源(Web resource)的宿主。Web 資源是 Web 內容的源頭。
最簡單的 Web 資源就是 Web 服務器文件系統中的靜態文件。這些文件能夠包含
任意內容:文本文件、HTML 文件、微軟的 Word 文件、Adobe 的 Acrobat 文件、
JPEG 圖片文件、AVI 電影文件,或全部其餘你可以想到的格式。瀏覽器

MIME

(Multipurpose Internet Mail Extension,多用途因特網郵件擴展)是爲了解決在不一樣
的電子郵件系統之間搬移報文時存在的問題。MIME 在電子郵件系統中工做得很是
好,所以 HTTP 也採納了它,用它來描述並標記多媒體內容緩存

• HTML 格式的文本文檔由 text/html 類型來標記。
• 普通的 ASCII 文本文檔由 text/plain 類型來標記。
• JPEG 格式的圖片爲 image/jpeg 類型。
• GIF 格式的圖片爲 image/gif 類型。
• Apple 的 QuickTime 電影爲 video/quicktime 類型。
• 微軟的 PowerPoint 演示文件爲 application/vnd.ms-powerpoint 類型安全

URL

服務器資源名被稱爲統一資源標識符(Uniform Resource Identifier,URI)。
URI 就像因特網上的郵政地址同樣,在世界範圍內惟一標識並定位信息資源。服務器

大部分 URL 都遵循一種標準格式,這種格式包含三個部分。
• URL 的第一部分被稱爲方案(scheme),說明了訪問資源所使用的協議類型。這
部分一般就是 HTTP 協議(http://)。
• 第二部分給出了服務器的因特網地址(好比,www.joes-hardware.com)。
• 其他部分指定了 Web 服務器上的某個資源(好比,/specials/saw-blade.gif)網絡

HTTP 報文

全部的 HTTP 報文均可以分爲兩類: 請求報文(request message)和響應報文
(response message)。 app

請求報文的格式ide

<method> <request-URL> <version>

<headers>

<entity-body>

GET /test/hi-there.txt HTTP/1.1
Accept: text/*
Host: www.joes-hardware.com

響應報文的格式

<version> <status> <reason-phrase>

<headers>

<entity-body>

HTTP/1.0 200 OK
Content-type: text/plain
Content-length: 19
Hi! I’m a message!

包括如下三個部分

• 起始行
報文的第一行就是起始行,在請求報文中用來講明要作些什麼,在響應報文中說
明出現了什麼狀況。
• 首部字段
起始行後面有零個或多個首部字段。每一個首部字段都包含一個名字和一個值,爲
了便於解析,二者之間用冒號(:)來分隔。首部以一個空行結束。添加一個首
部字段和添加新行同樣簡單。
• 主體
空行以後就是可選的報文主體了,其中包含了全部類型的數據。請求主體中包括
了要發送給 Web 服務器的數據;響應主體中裝載了要返回給客戶端的數據。起
始行和首部都是文本形式且都是結構化的,而主體則不一樣,主體中能夠包含任意
的二進制數據(好比圖片、視頻、音軌、軟件程序)。固然,主體中也能夠包含
文本

HTTP方法

一些常見的HTTP方法

HTTP方法 描  述
GET 從服務器向客戶端發送命名資源
PUT 未來自客戶端的數據存儲到一個命名的服務器資源中去
DELETE 從服務器中刪除命名資源
POST 將客戶端數據發送到一個服務器網關應用程序
HEAD 僅發送命名資源響應中的 HTTP 首部

HTTP狀態碼

狀態碼則用來告訴客戶端,發生了什麼事情。狀態碼位於響應的起始行中。好比,在行 HTTP/1.0 200 OK 中,狀態碼就是 200。

狀態碼分類:

狀態碼分類

常見狀態碼:

100——客戶必須繼續發出請求

101——客戶要求服務器根據請求轉換HTTP協議版本

200——交易成功

201——提示知道新文件的URL

202——接受和處理、但處理未完成

203——返回信息不肯定或不完整

204——請求收到,但返回信息爲空

205——服務器完成了請求,用戶代理必須復位當前已經瀏覽過的文件

206——服務器已經完成了部分用戶的GET請求

300——請求的資源可在多處獲得

301——刪除請求數據

302——在其餘地址發現了請求數據

303——建議客戶訪問其餘URL或訪問方式

304——客戶端已經執行了GET,但文件未變化

305——請求的資源必須從服務器指定的地址獲得

306——前一版本HTTP中使用的代碼,現行版本中再也不使用

307——申明請求的資源臨時性刪除

400——錯誤請求,如語法錯誤

401——請求受權失敗

402——保留有效ChargeTo頭響應

403——請求不容許

404——沒有發現文件、查詢或URl

405——用戶在Request-Line字段定義的方法不容許

406——根據用戶發送的Accept拖,請求資源不可訪問

407——相似401,用戶必須首先在代理服務器上獲得受權

408——客戶端沒有在用戶指定的時間內完成請求

409——對當前資源狀態,請求不能完成

410——服務器上再也不有此資源且無進一步的參考地址

411——服務器拒絕用戶定義的Content-Length屬性請求

412——一個或多個請求頭字段在當前請求中錯誤

413——請求的資源大於服務器容許的大小

414——請求的資源URL長於服務器容許的長度

415——請求資源不支持請求項目格式

416——請求中包含Range請求頭字段,在當前請求資源範圍內沒有range指示值,請求也不包含If-Range請求頭字段

417——服務器不知足請求Expect頭字段指定的指望值,若是是代理服務器,多是下一級服務器不能知足請求

500——服務器產生內部錯誤

501——服務器不支持請求的函數

502——服務器暫時不可用,有時是爲了防止發生系統過載

503——服務器過載或暫停維修

504——關口過載,服務器使用另外一個關口或服務來響應用戶,等待時間設定值較長

505——服務器不支持或拒絕支請求頭中指定的HTTP版本

HTTP的結構組件

在本章的概述中,咱們重點介紹了兩個 Web 應用程序(Web 瀏覽器和 Web 服務器)
是如何相互發送報文來實現基本事務處理的。在因特網上,要與不少 Web 應用程序
進行交互。在本節中,咱們將列出其餘一些比較重要的應用程序,以下所示。
• 代理
位於客戶端和服務器之間的 HTTP 中間實體。
• 緩存
HTTP 的倉庫,使經常使用頁面的副本能夠保存在離客戶端更近的地方。
• 網關
鏈接其餘應用程序的特殊 Web 服務器。
• 隧道
對 HTTP 通訊報文進行盲轉發的特殊代理。
• Agent 代理
發起自動 HTTP 請求的半智能 Web 客戶端。

代理

代理

代理位於客戶端和服務器之間,接收全部客戶端的 HTTP 請求,並
將這些請求轉發給服務器(可能會對請求進行修改以後轉發)。對用戶來講,這些應
用程序就是一個代理,表明用戶訪問服務器。

緩存

緩存

Web 緩存(Web cache)或代理緩存(proxy cache)是一種特殊的 HTTP 代理服務
器,能夠將通過代理傳送的經常使用文檔複製保存起來。下一個請求同一文檔的客戶端
就能夠享受緩存的私有副本所提供的服務了。 客戶端從附近的緩存下載文檔會比從遠程 Web 服務器下載快得多。

網關

隧道

網關(gateway)是一種特殊的服務器,做爲其餘服務器的中間實體使用。一般用於
將 HTTP 流量轉換成其餘的協議。網關接受請求時就好像本身是資源的源端服務器
同樣。客戶端可能並不知道本身正在與一個網關進行通訊。

隧道

隧道

隧道(tunnel)是創建起來以後,就會在兩條鏈接之間對原始數據進行盲轉發的
HTTP 應用程序。HTTP 隧道一般用來在一條或多條 HTTP 鏈接上轉發非 HTTP 數
據,轉發時不會窺探數據。

HTTP 隧道的一種常見用途是經過 HTTP 鏈接承載加密的安全套接字層(SSL,
Secure Sockets Layer)流量,這樣 SSL 流量就能夠穿過只容許 Web 流量經過的防
火牆了。如圖 所示,HTTP/SSL 隧道收到一條 HTTP 請求,要求創建一條到目
的地址和端口的輸出鏈接,而後在 HTTP 信道上經過隧道傳輸加密的 SSL 流量,這
樣就能夠將其盲轉發到目的服務器上去了

Agent 代理

用戶 Agent 代理(或者簡稱爲 Agent 代理)是表明用戶發起 HTTP 請求的客戶端程
序。(也被叫作爬蟲、網絡蜘蛛、web機器人),是一種按照必定的規則,自動地抓取萬維網信息的程序或者腳本。另一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲

HTTPS

HTTPS 是最多見的 HTTP 安全版本。它獲得了很普遍的應用,全部主要的商業瀏覽
器和服務器上都提供 HTTPS。HTTPS 將 HTTP 協議與一組強大的對稱、非對稱和
基於證書的加密技術結合在一塊兒,使得 HTTPS 不只很安全,並且很靈活,很容易
在處於無序狀態的、分散的全球互聯網上進行管理。

https分層

HTTPS = HTTP + SSL(或TLS) + 認證(證書) + 加密(加密算法)

HTTP和HTTPS協議的區別

一、HTTPS協議須要到證書頒發機構(Certificate Authority,簡稱CA)申請證書,通常免費證書不多,須要交費。

二、HTTP是超文本傳輸協議,信息是明文傳輸,HTTPS則是具備安全性的SSL加密傳輸協議。

三、HTTP和HTTPS使用的是徹底不一樣的鏈接方式,使用的端口也不同,前者是80,後者是443。

四、HTTP的鏈接很簡單,是無狀態的。

五、HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比HTTP協議安全。

從上面可看出,HTTPS和HTTP協議相比提供了

· 數據完整性:內容傳輸通過完整性校驗

· 數據隱私性:內容通過對稱加密,每一個鏈接生成一個惟一的加密密鑰

· 身份認證:第三方沒法僞造服務端(客戶端)身份

其中,數據完整性和隱私性由TLS Record Protocol保證,身份認證由TLS Handshaking Protocols實現。

參考博客

相關文章
相關標籤/搜索