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 10:12
下一篇 2015-04-13 19:26

相關推薦

  • Week6 Vim編輯器使用指南及練習

    vim編輯器 vim模式: 模式轉換.png 編輯–>輸入: i: 在當前光標所在字符的前面,轉為輸入模式; a: 在當前光標所在字符的后面,轉為輸入模式; o: 在當前光標所在行的下方,新建一行,并轉為輸入模式; I:在當前光標所在行的行首,轉換為輸入模式 A:在當前光標所在行的行尾,轉換為輸入模式 O:在當前光標所在行的上方,新建一行,…

    Linux干貨 2017-02-17
  • Linux權限管理練習

    1、當用戶xiaoming對/testdir 目錄無執行權限時,意味著無法做哪些操作? 無法cd切換進入此目錄,無法創建文件,無法刪除文件,無法查看里面文件的內容,只能ls列出目錄下的內容 2、當用戶xiaoqiang對/testdir 目錄無讀權限時,意味著無法做哪些操作? 無法ls查看目錄下的內容 3、當用戶wangcai 對/testdir 目錄無寫權…

    Linux干貨 2016-08-05
  • 馬哥教育網絡19期+第十五周課程練習

    1、總結sed和awk的詳細用法;   a).sed命令 sed可以實現grep的大部分功能,而且還可以查找替換 [root@localhost ~]# sed '10'p -n 1.txt [root@localhost ~]# sed &#039…

    Linux干貨 2016-08-22
  • find 詳解

    find 命令基本用法:         find pathname [opotions] [-print | -exec | -ok …] 1、find 基本參數:         pa…

    Linux干貨 2016-12-26
  • Linux簡介和基礎

    一、系統和硬件 無論是Linux、OS X、Windows操作系統,他們都是由以下部分組成(分層結構): 最底層:硬件 底層之上:將硬件的接口抽象成為系統調用(kernel) 再之上:庫 再此之上為:應用程序 程序的運行可以有兩種方式: 1、開機自動啟動運行 2、用戶通過交互式接口登陸或者連接系統上去,來手動運行程序 二、終端: 1、物理終端:我們可以將顯示…

    Linux干貨 2017-09-02
  • 使用sudo對用戶進行權限管理

    使用sudo對用戶進行權限管理 因為root用戶權限太大,一般在實際應用的時候 ,為了避免造成錯誤泛濫和找不到責任人都需要對使用服務器人員進行權限分配,除了系統管理員外,其他人禁止使用root,但可以通過sudo命令,給自己提權。同時通過日志審計進行監控操作,操作如下: 1.禁止普通用戶使用su命令到root # usermod -g wheel user0…

    Linux干貨 2017-03-26
欧美性久久久久