http協議原理

第1章 http協議原理概念介紹

1.1  http服務重要基礎

1.1.1 用戶訪問網站的過程?

1. 利用DNS協議進行域名解析javascript

第一步:客戶端用戶從瀏覽器裏輸入www.baidu.com網站地址,回車後,系統首先會查找系統本地的DNS緩存及hosts文件信息,查找是否存在www.baidu.com域名對應的IP解析記錄,若是有就直接獲取IP地址,而後去訪問這個IP地址對應域名www.baidu.com的服務器,通常第一次請求時,DNS緩存是沒有解析記錄的,而hosts多在內部臨時測試時使用。php

 

第二步:若是客戶端本地DNS緩存及hosts文件沒有www.baidu.com域名對應的解析記錄,那麼,系統會把瀏覽器的解析請求發送給客戶端本地設置的DNS服務器地址(一般稱此DNSLDNS或首選DNS服務器,即Local DNS)解析,若是LDNS服務器的本地緩存有對應的解析記錄就會直接返回IP地址給客戶端,若是沒有,則LDNS會負責繼續請求其餘的DNS服務器。css

 

第三步:LDNS會從DNS系統的根域(.)開始請求www.baidu.com域名的解析,針對各個層級的DNS服務器系統進行一系列的查找,最終會查找到baidu.com域名對應的受權DNS服務器,而這個受權DNS服務器正是企業購買域名時用於管理域名解析的服務器,這個受權服務器會有www.baidu.com對應的IP解析記錄,若是此時沒有,就表示企業的域名管理人員沒有爲www.baidu.com域名作解析設置,即網站還沒架設好。html

 

第四步:baidu.com域名的受權DNS服務器會把www.baidu.com對應的最終IP解析記錄發給LDNS前端

 

第五步:LDNS把收到的來自受權DNS服務器www.baidu.com對應的IP解析記錄(A記錄)緩存到本地,再發給客戶端,以便下一次更快的返回相同解析請求的記錄,這些緩存記錄在指定的時間(DNS TTL值控制)內不會過時。java

 

第六步:客戶端瀏覽器獲取到了www.etiantian.org的對應IP地址的解析記錄,會先緩存到本地,接下來,瀏覽器會請求得到的IP地址對應的網站服務器linux

2. 創建tcp協議三次握手過程web

3. 客戶端發出訪問網站相應頁面請求(發出http協議請求報文)數據庫

4. 系統架構部署狀況後端

5. 服務端發出響應訪問頁面的請求信息(發出http協議響應報文)

6. 斷開tcp協議四次揮手過程

提示:

上述僅僅是客戶端用戶第一次訪問網站的基本過程,連續訪問後,系統本地和LDNS層級都會有緩存記錄,再訪問時流程就會有些變化,會直接取本地緩存記錄,這樣訪問過程就很快了。在上述整個訪問流程裏,包含了DNS的解析流程以及HTTP協議的通訊原理等重要的技術點。

1.2 HTTP協議簡介

HTTP協議,全稱HyperText Transfer Protocol,中文名爲超文本傳輸協議,是互聯網中最經常使用的一種網絡協議。HTTP的重要應用之一是WWW服務。設計HTTP協議最初目的就是提供一種發佈和接收HTML(一種頁面標記語言)頁面的方法(請求返回)。

HTTP協議是互聯網上經常使用的通訊協議之一。它有不少的應用,但最流行的就是用於Web瀏覽器和Web服務器之間的通訊,即WWW應用或稱Web應用。

WWW,全稱World Wide Web,常稱爲Web,中文譯爲「萬維網」。它是目前互聯網上最受用戶歡迎的信息服務形式。HTTP協議的WWW服務應用的默認端口爲80(端口的概念),另外的一個加密的WWW服務應用https的默認端口爲443,主要用於網銀,支付等和錢相關的業務。當今,HTTP服務,WWW服務,Web服務三者的概念已經混淆了,都是指當下最多見的網站服務應用。

第2章 HTTP協議

2.1 常見的HTTP請求方法

HTTP方法

做用描述

GET

客戶端請求指定資源信息,服務器返回指定資源

HEAD

只請求響應報文中的HTTP首部

POST

將客戶端的數據提交到服務器,例:註冊表單

PUT

從客戶端向服務器傳送的數據取代指定的文檔內容

DELETE

請求服務器刪除Request-URI所標識的資源

MOVE

請求服務器將制定的頁面移至另外一個網絡地址

2.2 HTTP狀態碼

2.2.1 HTTP狀態碼介紹

HTTP狀態碼(HTTP Status Code)是用來表示Web服務器響應http請求狀態的數字代碼。每當Web客戶端向Web服務器發送一個HTTP請求時,Web服務器都會返回一個狀態響應代碼。這個狀態碼是一個三位數字代碼,做用是告知Web客戶端這次的請求是否成功,或者是否要採起其餘的動做方

2.2.2 HTTP協議1.1版本中的狀態

HTTP協議1.1版本中的狀態能夠分爲五大類,以下表:

狀態碼範圍

做用描述

100-199

用於指定客戶端相應的某些動做

200-299

用於表示請求成功

300-399

用於已經移動的文件而且常被包含在定位頭信息中指定新的地址信息

400-499

用於指出客戶端的錯誤

500-599

用於指出服務器端的錯誤

提示:http響應的狀態碼種類不少,可是在實際工做場景中,常常遇到的狀態碼卻很少,我把生產場 景常見 的重要狀態碼及對應的做用整理爲下表。

2.2.3 生產環境常見的狀態碼 

生產場景常見的狀態及其對應的做用

狀態代碼

詳細描述說明

200OK

服務器成功返回網頁,這是成功的http請求,返回的標準狀態碼

301-Moved Permanently

永久跳轉,全部請求的網頁將永久跳轉到被設定的新的位置,例如:從baidu.com跳轉到www.baidu.com

403-Forbidden

禁止訪問,這個請求是合法的,可是服務器端由於匹配了預先設置的規則而拒絕響應客戶端的請求,此類問題通常爲服務器或服務權限配置不當所致。

404-Not Found

服務器找不到客戶端請求的指定頁面,多是客戶端請求了服務器上不存在的資源致使

500-Internal Server Error

內部服務器錯誤,服務器遇到了意料不到的狀況,不能完成客戶的請求。這是一個較爲籠統地報錯,通常爲服務器的設置或者內部程序問題致使。例如SElinux開啓,而又沒有爲http設置規則許可,客戶端訪問就是500

502-Bad Gateway

壞的網關,通常是代理服務器請求後端服務時,後端服務不可用或沒有完成響應網關服務器。通常爲反向代理服務器下面的節點出問題致使。

503-Service Unavailable

服務當前不可用,可能由於服務器超載或停機維護致使,或者是反向代理服務器後面沒有能夠提供服務的節點

504-Gateway Timeout

網關超時,通常是網關代理服務器請求後端服務時,後端服務沒有在特定的時間內完成處理請求,通常是服務器過載致使沒有在指定的時間內返回數據給前端代理服務器。

2.3 HTTP響應報文介紹

2.3.1 請求報文結構

報文格式

報文信息

請求行

①. 請求的方法(get方法沒有請求主體內容 post方法會有請求主體信息)

②. 請求的數據信息(默認請求index.html首頁文件)

③. 請求http協議版本

    tcp協議分爲長鏈接(http1.1)和短鏈接(http1.0

請求頭部

客戶端有關信息說明

空行

空白內容

請求報文主體

get方法沒有請求主體內容 post方法會有請求主體信息

image.png 

2.3.2 響應報文結構

報文格式

報文信息

起始行

①. HTTP協議版本信息

②. 響應的狀態碼信息(請求成功狀態碼 200

③. 響應狀態碼說明信息

響應頭部

服務端有關信息說明

空行

空白內容

響應報文主體

通常爲html css js 等等代碼信息

image.png 

查看請求報文與響應報文詳細結構信息方法:(2種方法)

1. curl -v www.baidu.com    --- 利用curl命令進行網站訪問

                       -v      --- 詳細顯示請求報文結構和響應報文結構信息

2. wget --debug www.baidu.com

第3章 HTTP資源

3.1 媒體資源類型

3.1.1 url

 URL,全稱Uniform Resource Location,中文翻譯爲統一資源定位符,也被稱爲網頁地址(網址)。如同在網絡上的門牌,它是因特網上標準的資源惟一地址。通俗地說,URLInternet上用來描述信息資源的字符串,主要用在各類WWW客戶端和服務器程序上。採用URL能夠用一種統一的格式來描述各類信息資源,包括文件,服務器的地址和目錄等。嚴格的說,每一個URL都是一個URI,它標識一個互聯網資源,並指定對其進行操做或取得該資源的方法。

3.1.2 uri

URI,全稱Uniform Resource Identifier,中文翻譯爲統一資源標識符,是一個用於標識某一互聯網資源名稱的字符串。這個字符串在世界範圍內惟一標識並定位某一個信息資源。互聯網上每一個可用的數據資源,如HTML,圖片,視頻等皆經過統一資源標識符進行定位。

3.1.3 urluri區分

例:channel.jd.com/women.html

    channel.jd.com / women.html    

 url部分         uri部分

3.2 靜態網頁資源

3.2.1 靜態網頁資源介紹

在網站設計中,純粹HTML格式的網頁(能夠包含圖片,視頻,JS(前端功能實現),CSS(樣式)等)一般被稱爲「靜態網頁」,早期的網站大多都是靜態的。靜態網頁是相對於動態網頁而言的,是指沒有後臺數據庫,不含程序(如phpjspasp)。

3.2.2 靜態資源特色

每一個網頁都有一個固定的URL地址,且URL通常以.html,.html,shtml等常見形式爲後綴,並且地址中不含郵問號「&」等特殊符號。

純文本類程序或文件,如.html.htm.xml.shtml.js.css等;

圖片類文件或數據文檔,如.jpg.gif.png.bmp.txt.doc.ppt等;

視頻類流媒體文件,如.mp4.swf.avi.wmv.flv等。

網頁內容一經發布到網站服務器上,不管是否有用戶訪問,每一個網頁的內容都是保存在網站服務器文件系統上的,也就是說,靜態網頁是實實在在保存在服務器上的文件實體,每一個網頁都是一個獨立的文件。

網頁內容是固定不變的,所以,容易被搜索引擎收錄(容易被用戶找到)(優勢)

網頁沒有數據庫支持,在網站製做和維護方面工做量較大,所以當網站信息量很大時徹底依靠靜態網頁製做的方式比較困難(缺點)

網頁的交互性較差,在程序功能實現方面有較大的限制(缺點)

網頁程序在用戶瀏覽器端解析,如IE瀏覽器,程序解析效率很高,因爲服務端不進行解析,而且不須要讀取數據庫,所以服務器端能夠接受更多的併發訪問。當客戶端向服務器請求數據時,服務器直接把數據從磁盤文件系統上返回(不作任何解析),待客戶端拿到數據後,在瀏覽器端解析展示出來(優勢)

總結:

1. 程序在客戶瀏覽器端解析,不讀取後端數據庫,所以性能和效率很高。

2. 由於後端沒有數據庫支持,因此和用戶的交互性較差,功能實現也不多

3.3 動態網頁資源

3.3.1 動態網頁資源介紹

所謂的動態網頁是與靜態網頁相對而言的,也就是說,動態網頁的URL後綴不是.htm,.html,.shtml,.xml,.js,.css等靜態網頁的常見後綴擴展名形式,而是以.asp,.aspx,.php,.js,.do,.cgi等形式做爲後綴的,而且通常在動態網頁網址中會有標誌性的符號--「?,&」,此外,在大多數狀況下後端都須要有數據庫支持等。

3.3.2 動態資源特色

網頁擴展名後綴常見爲:.asp,.aspx,.php,.jsp,.do,cgi

網頁通常以數據庫技術爲基礎,大大下降了網站維護的工做量

採用動態網頁技術的網站能夠實現更多的功能,如用戶註冊,用戶登陸,在線調查,投票,用戶管理,訂單管理,發博文等等

動態網頁並不是獨立存在於服務器上的網頁文件,當用戶請求服務器上的動態程序時,服務器解析這些程序並可能讀取數據庫返回一個完整的網頁內容。

動態網頁中的「?」在搜索引擎的收錄方面存在必定問題,搜索引擎通常不會從一個網站的數據庫中訪問所有網頁,或者出於技術等方面的考慮,搜索蜘蛛通常不會去抓去網址中「?」後面的內容,所以在企業經過搜索引擎進行推廣時,須要針對採用動態網頁的網站作必定的技術處理(僞靜態技術),以便適應搜索因窮的抓取要求。(動態網頁資源不便於被搜索引擎收錄

程序在服務器端解析,這至關於顧客點餐,飯店廚師作飯作菜,耗時長,效率低。因爲程序在服務端解析,所以,會消耗大量的CPU和內存,I/O等資源,而且多數還要讀取數據庫等服務,所以,其訪問效率遠不如靜態網頁,在服務端解析動態程序的服務常見的有PHP引擎,Java容器(tomcat,resin,jboss,weblogic

3.4 僞靜態網頁

取長補短(僞靜態資源實質是動態資源)

 

第4章 網絡訪問統計方法

4.1 IP

1.  IP(獨立IP),即Internet Protocol,這裏指獨立IP數,

2.  獨立IP數是指不一樣IP地址的計算機訪問網站時被計的總次數

3.  通常一天內(00:00-24:00)相同IP地址的客戶端訪問網站頁面只會被計一次

   

1. 利用awk或者相應統計命令,進行分析訪問日誌信息進行統計

2. 在網站訪問頁面中嵌入統計程序代碼(頁面結尾處),只有所有網頁加載完畢後,才進行數據統計

 [root@m01 ~]# curl -s  www.oldboyedu.com|grep "hm.baidu" --color

         <script type="text/javascript">

   var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://"); document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F9aa800f882f575237396648643111698' type='text/javascript'%3E%3C/script%3E"))

 </script>

     說明:利用hm.baidu.com在頁面curl時會出現,利用百度進行統計PV IP信息

3. 利用第三方公認的統計工具進行統計

例如:百度統計工具 hm.baidu.com

4.2 PV

1.   PV(訪問量)即Page View,中文翻譯爲頁面瀏覽,

2.   即頁面瀏覽量或點擊量,無論客戶端是否是相同,也無論IP是否是相同,

3.   用戶只要訪問網站頁面就會被計算PV,一次計一個PV

1. 利用awk或者相應統計命令,進行分析訪問日誌信息進行統計

2. 在網站訪問頁面中嵌入統計程序代碼(頁面結尾處),只有所有網頁加載完畢後,才進行數據統計

 [root@m01 ~]# curl -s  www.oldboyedu.com|grep "hm.baidu" --color

         <script type="text/javascript">

   var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://"); document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F9aa800f882f575237396648643111698' type='text/javascript'%3E%3C/script%3E"))

 </script>

     說明:利用hm.baidu.com在頁面curl時會出現,利用百度進行統計PV IP信息

4. 利用第三方公認的統計工具進行統計

   例如:百度統計工具 hm.baidu.com

4.3 UV

1.   UV(獨立訪客)即Unique Visitor,同一個客戶端(PC或移動端)訪問網站被計爲一個訪客。

2.   一天(0000-24:00)內相同的客戶端訪問同一個網站只計一次UV

3.   UV通常是以客戶端Cookie等技術做爲統計依據

  

   cookie:根據用戶信息,爲用戶設定一個身份標識。(保存在客戶端本地)(一把鑰匙)

   session:記錄用戶信息,用戶狀況。保存在服務端本地(配置一把鎖)


   · 經過客戶端HTTP請求報文分析

   · 經過Cookie信息鑑別統計

 

   工做中經常使用的統計工具

   · 網頁信息統計軟件-piwik

         pwiki統計工具:(https://piwik.org/

         pwiki演示頁面:https://piwik.org/demo

       · ELK軟件介紹說明

         http://blog.oldboyedu.com/elk/

 

4.4 併發鏈接

       A種理解:網站服務器每秒可以接收的最大用戶請求數。

       B種理解:網站服務器每秒可以響應的最大用戶請求數。

       C種理解:網站服務器在單位時間內可以處理的最大鏈接數。


   下面是國外學者對網站併發數的計算公式及參考說明:

       Request Per Second + Simultaneous Browser connections + Thinking Time =        Concurrent User

       其中:

   Concurrent User表示網站併發用戶總數

   Request Per Second[RPS]表示每秒請求數(吞吐量)

   Simultaneous Browser connections[SBC]表示併發瀏覽鏈接數。

   Thinking Time表示平均用戶思考時間。

相關文章
相關標籤/搜索