http協議及httpd特性詳解

前言

隨著互聯網的迅猛發展和網絡的普及,各類網站層出不窮,網站也成為企業宣傳和實力展現的主要途徑之一,說到網站就不得不說一下web服務了,現在比較流行的web服務還是當屬Apache即httpd。本文將詳解http協議及httpd的特性。

http協議詳解

http協議

http: Hyper Text Transfer Protocol 超文本傳輸協議

傳輸文本:HTML

html: Hyper Text Mark Language 超文本標記語言

html文檔的生成方式

靜態:純html格式文檔

動態:編程語言編寫的程序可輸出html格式的結果

http協議版本

http 0.9: 僅用于傳輸html文檔

http 1.0:引入MIME機制,從而支持多媒體數據;引入keep-alive(持久連接);緩存

http 1.1:更多請求方法,更精細緩存控制;持久連接(persistent)

注意:http協議是無狀態的

http事務:一次請求及對應的響應

CGI:Common Gateway Interface 通用網關接口

http協議報文

請求報文

1.jpg

報文詳解

請求報文主要由請求行、請求頭部和請求數據(實體)組成

①請求行

請求行由請求方法字段、請求資源字段(URL)和協議版本字段組成

http方法:

GET:請求獲取一個資源,需要服務器發送
HEAD:跟GET近似,但其不需要服務響應請求的資源,而返回響應首部
POST:基于HTML表單向服務器提交數據,服務器通常需要存儲此數據(位置:通常為關系型數據庫)
PUT:與GET相反,向服務器發送資源;服務器通常需要存儲此資源(位置:通常為文件系統)
DELETE:刪除URL指向的資源
OPTIONS:探測服務器端對請求的URL所支持使用的請求方法
TRACE:跟一次請求中間所經過的代理服務器、防火墻或網關等
#注意:方法嚴格區分大小寫

資源名稱:URI (Uniform Resource Idnentifier)

URL :描述一個特定服務器上某資源的特定位置

可以是相對路徑,也可以絕對路徑
例如:http://www.scholar.com/download/index.html 
      分為三部分:
      scheme(方案):http://
      服務器:www.scholar.com      特定服務器上的資源:/download/index.html

協議版本:例如HTTP/1.0, HTTP/1.1

②請求頭部

http協議首部:

通用首部

Connection: 定義C/S之間關于請求、響應的有關選項
Connection: keep-alive
Cache-Control: 緩存控制
Via: 顯示了報文經過的中間節點

請求首部

Client-IP:客戶端IP
Host: 請求的主機
Referer: 指明了請求當前資源原始資源的URL
User-Agent: 用戶代理
Accept首部:
Accept: 指明服務器能發送的媒體類型
Accept-Charset: 支持使用的字符集
Accept-Encoding: 支持使用的編碼方式
Accept-Language: 支持使用語言
條件式請求:
Expect: 告訴服務器能夠發送哪些媒體類型
If-Modified-Since: 是否在指定時間內修改過此資源
If-None-Match:如果提供的實體標記與當前文檔的實體標記不符,就獲取此文檔
跟安全相關請求:
Authorization: 客戶端提交給服務器的認證數據,如帳號和密碼
Cookie: 客戶端發送給服務器身份標識

實體首部

Location: 資源的新位置
Allow: 允許對此資源使用的請求方法
內容相關的首部:
Content-Encoding: 支持編碼
Content-Language:支持語言
Content-Length:文本長度
Content-Location:資源所在位置
Content-Type:主體對象類型
Content-Range:在整個資源中此實體表示的字節范圍
緩存相關:
ETag: 實體標簽
Expires: 過期期限
Last-Modified: 上次修改時間

③實體

實體內包含客戶端請求服務器的數據

響應報文

2.jpg

報文詳解

響應報文主要由狀態行、響應頭部和響應數據(實體)組成

①狀態行

狀態行由協議版本字段、狀態碼字段和原因短語字段組成

狀態碼:

1XX:信息性狀態碼
2XX:成功狀態碼
     200:OK,客戶端請求成功
     201:CREATED,請求已被實現
3XX: 重定向類的狀態碼
     301: Moved Permanently, 永久重定向
     302: Found, 臨時重定向,會在響應報文中使用“Location: 新位置”
     304: Not Modified,條件式請求中使用
4XX:客戶端類錯誤
     403:Forbidden,請求被服務器拒絕
     404: Not Found,服務器無法找到請求的URL
     405: Method Not Allowed,不允許使用此方法請求相應的URL
5XX:服務器類的錯誤
     500:Internal Server Error, 服務器內部錯誤
     502:Bad Gateway, 代理服務器從上游服務器收到一條偽響應
     503:Service Unavailable, 服務暫時不可用
     505:HTTP Version Not Supported,服務器不支持

②響應頭部

響應首部

Date:消息產生的時間
Age: 響應持續時間
Server: 向客戶端說明自己的程序名稱和版本
ETage:不透明驗證者
Location:URL備用的位置
Content-Length:實體的長度
Content-Tyep:實體的媒體類型
協商首部:
ary: 首部列表,服務器會根據列表中的內容挑一個最適用的版本發送給客戶端
Accept-Ranges: 對當前資源來講,服務器所能夠接受的范圍類型
跟安全相關:
WWW-Authentication:質詢,即要求客戶提供帳號和密碼
Set-Cookie:服務器端在某客戶端第一次請求時發送令牌

③實體

實體內包含客戶端請求的數據,根據解析請求報文內的請求數據,將客戶端請求的數據打包,通過響應報文發送給客戶端,如果請求出現錯誤,則顯示報文內的錯誤代碼及原因。

資源請求過程及服務器結構

一次Web資源請求的具體過程(服務器的角度):

    建立連接
    接收請求
    處理請求
    訪問資源
    構建響應
    發送響應
    記錄日志

3.png

web服務器的I/O結構:

單進程模型:串行

多進程模型:每個進程響應一個用戶請求實現并發的效果

復用的I/O機制:一個進程生成多個線程,每個線程響應一個用戶請求

復用的I/O機制:多個線程,每個線程響應多個用戶請求;

httpd特性詳解

httpd特性

高度模塊化:core + modules

DSO: Dynamic Shared Object

MPM:Multipath Processing Module

MPM包含:
prefork: 每個進程響應一個用戶請求,預先生成多個空閑進程;
worker: 啟動多個進程,每個進程生成多個線程,每個線程響應一個用戶請求;
event: 啟動多個線程,每個線程響應N個請求;

httpd功能特性

豐富用戶認證:基本認證和摘要認證

CGI:原生支持perl CGI

虛擬主機:基于端口、IP、主機名

反向代理:負載均衡

用戶站點:用戶可在家目錄創建站點

路徑別名:alias

支持第三方模塊

The end

好了,http協議及httpd特性就說到這里了。下文將講解虛擬主機和基于用戶訪問控制及SSL實現https等配置,有興趣可以繼續關注呦。以上僅為個人學習整理,如有錯漏,大神勿噴~~~

原創文章,作者:書生,如若轉載,請注明出處:http://www.www58058.com/3145

(0)
書生書生
上一篇 2015-04-13
下一篇 2015-04-13

相關推薦

  • 文本處理工具sed的使用以及Vim的使用技巧詳解

    一、什么是sed     sed的英文全稱是Stream EDitor,叫行編輯器。     sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容…

    Linux干貨 2016-08-11
  • Linux的常見文件類型

      在linux中,文件的類型和權限通常以【-rwxr-xr-x】來表示,文件以第一個字符來表示不同的文件類型,具體如下。   – :普通文件;顏色為灰白色   d :目錄文件;顏色為藍色   b :塊設備文件;顏色為黃色   c :字符設備文件;顏色為黃色   p :管道文件;顏色為綠…

    Linux干貨 2016-10-20
  • 用戶與用戶組相關的配置文件與命令總結

    Linux 中用戶與用戶組相關的配置文件與命令總結 用戶與用戶組 UID、GID 名稱解析與解析庫(passwd、group、shadow、gshadow) 用戶信息庫/etc/passwd 用戶密碼信息/etc/shadow 組的信息庫/etc/group 組的密碼信息/etc/gshadow 用戶管理命令 用戶組管理命令 用戶與用戶組 Linux是一種多…

    2016-10-23
  • 行編輯器sed

    行編輯器sed   Sed,grep,awk命令被稱為文本編輯三劍客,目前學習了grep命令,sed命令 自我覺得sed命令更強大,排名第一,grep暫居第二,awk沒學不太清楚。   這次的博客寫一下剛學習的sed命令,grep命令是全局搜索剪切,sed命令則是逐行進行處理,它一次處理一行內容。Sed命令有兩個空間,…

    2017-08-26
  • 機器學習排序

     從使用的數據類型,以及相關的機器學習技術的觀點來看,互聯網搜索經歷了三代的發展歷程。        第一代技術,將互聯網網頁看作文本,主要采用傳統信息檢索的方法。        第二代技術,利用互聯網的超文本結構,有效…

    Linux干貨 2015-12-15
  • 從Code Review 談如何做技術

    (這篇文章緣由我的微博,我想多說一些,有些雜亂,想到哪寫到哪) 這兩天,在微博上表達了一下Code Review的重要性。因為翻看了阿里內部的Review Board上的記錄,從上面發現Code Review做得好的是一些比較偏技術的團隊,而偏業務的技術團隊基本上沒有看到Code Review的記錄。當然,這并不能說沒有記錄他們就沒有做Code Review…

    Linux干貨 2016-08-15
欧美性久久久久