HTTP原理

第1章 HTTP服務介紹

1.1 用戶訪問網站流程

01. 進行域名信息的DNS解析javascript

l  查看本地主機緩存和hosts文件有沒有域名與IP對應記錄php

l  本地主機向 local DNS 服務器(網卡上指定配置的DNS服務器)發出請求css

l  LDNS服務器接收到客戶端主機請求,查詢本地緩存信息html

l  LDNS服務向跟域名服務器請求,向頂級域名服務器請求,向二級域名服務器請求(迭代查詢)前端

l  獲取到域名與IP地址的對應關係,是經過受權DNS服務中獲取獲得(獲得的信息稱爲A記錄)java

 LDNS服務進行緩存A記錄信息,將A記錄信息發送給客戶端主機nginx

l  客戶端主機接收到A記錄信息,進行本地緩存,根據A記錄中記錄IP地址信息,進行網絡訪問web

 

02. 進行與網站服務器創建鏈接,tcp三次握手過程 (syn ack SEQ ACK/狀態轉換 closed listen  syn_set  syn_rcvd  established)面試

03. 和網站服務器數據傳輸過程(http協議原理過程-http請求過程)正則表達式

04. 和網站服務器數據傳輸過程(http協議原理過程-http響應過程)

05. 進行與網站服務器斷開鏈接,tcp四次揮手過程(fin ack SEQ ACK/狀態轉換 fin_wait1  fin_wait2  close_wait  last_ack time_wait  closing)

1.2 HTTP常見的狀態碼

狀態代碼

詳細描述說明

200- OK

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

301- Moved Permanently

永久跳轉,所請求的網頁將永久跳轉到被設定的新位置

例如: 從etiantian .org 跳轉到www.etiantian .org

403- Forbidden

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

Nginx 403 forbidden 多種緣由及故障模擬重現
http://oldbov.bloq.51cto.com/2561410/1633952
apache 服務Forbidden 403 問題精彩總結
http://oldbqv.bloq.51cto.com/2561410/581383

404- Not Found

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

500- Internal Server Error

內部服務器錯誤,服務器遇到了意料不到的狀況,不能完成客戶的請求。

這是一個較爲籠統的報錯,通常爲服務器的設置或內部程序問題致使。
例如:SELinux 開啓,而又沒有爲HTTP 設置規則許可,客戶端訪問就是500

502- Bad Gateway (重點)

壞的網關,通常是代理服務器請求後端服務時,後端服務不可用或沒有完成響應網關服務器。這一般爲反向代理服務器下面的節點出問題所致。
反向代理服務器沒法與後面的web服務節點服務器創建聯繫

503- Service Unavailable

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

504- Gateway Timeout

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

 

1.3 取狀態碼的方法

[root@web01 ~]# curl -I -s -w "%{http_code}\n" -o /dev/null  www.baidu.com
200

1.4  HTTP協議狀態碼介紹

curl -v www.oldboyedu.org   ---能夠獲取狀態碼信息
  ********************************************************************
  擴展命令說明:經過curl命令只獲取狀態碼信息
  curl -I www.etiantian.org|awk 'NR==1{print $2}'
  curl -I -s  www.etiantian.org |awk 'NR==1{print $2}'
  curl -I -s -w %{http_code}  www.etiantian.org
  curl -I -s -w %{http_code} -o /dev/null www.etiantian.org
  curl -I -s -w "%{http_code}\n" -o /dev/null www.etiantian.org
  curl -s -w "%{http_code}\n" -o /dev/null www.etiantian.org
  curl -I -s www.etiantian.org|head -1
          curl -I 10.0.0.7 2>/dev/null|head -1
          

1.5 HTTP經常使用的請求方法

HTTP方法

做用描述

GET

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

HEAD

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

POST

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

PUT

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

DELETE

請求服務器刪除Request-URI 所表示的資源。

MOVE

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

 



第2章 HTTP資

2.1媒體資源 -MIME

web服務能夠處理的資源類型,根據擴展名進行識別(html css mp4)

互聯網上的數據有不少不一樣的類型,Web 服務器會把經過Web傳輸的每一個對象都打上MIME 類型(即MIME type) 的數據格式標籤。最初設計MIME (Multipurpose Internet Mail Extension,多用途因特網郵件擴展)是爲了解決在不一樣的電子郵件系統之間搬移報文時存在的問題。MIME 在電子郵件系統中工做得很是好。後來,HTTP 也支持了這個功能,用它來描述數據並標記不一樣的數據內容類型。
  當Web 服務器響應HTTP 請求時,會爲每個HTTP 對象數據加一個MIME 類型,當Web 瀏覽器獲取到服務器返回的對象時,會去查看相關的MIME 類型,並進行相應處理。
  MIME 類型存在與HTTP 響應報文的響應頭部信息裏,它是一種文本標記,表示一種主要的對象類型和一個特定的子類型,中間由一條斜槓來分割。

2.2 URL / URI

url:URL,全稱爲Uniform Resource Location,中文翻譯爲統一資源定位符

uri:URI,全稱爲Uniform Resource Identifier,中文翻譯爲統一資源標識符

http://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/

http://reg.jd.com                                --- 稱爲url

/reg/person?ReturnUrl=https%3A//www.jd.com/       --- 稱爲uri

說明:nginx軟件識別url和uri的方式和上面說明一致

2.3 http資源中靜態頁面與動態頁面知識

       01. 靜態頁面介紹

           · 以html html shtml結尾,網址裏面通常沒有?&

            等特殊符號,便於被搜索引擎收錄(靜態有優點)

           · 網頁的內容,由客戶端瀏覽器解析。服務器只須要根據請求,發送數據,網頁內容便可(靜態有優點)

           · 網頁內容固定不變,容易被搜索引擎收錄

           · 很難有交互,一問一答   

        02. 動態頁面介紹

· 以asp、.aspx、.php、.js、.do、.cgi結尾,網址裏面通常會有?&等特殊符號,不便於被搜索引擎收錄

           · 服務器端解析請求;

           · 須要讀取數據庫,性能和效率下降

           · 後端擁有數據庫支持,和用戶的交互性提高,功能實現方式增多。(能夠實現交互功能,動態優點) 

              03. 僞靜態頁面介紹

                將動態頁面轉換爲靜態頁面的方式(rewrite 正則表達式)

           將動態頁面內容轉換爲靜態頁面,去掉動態頁面uri中的? &字符,假裝成靜態頁面uri信息

           動態轉靜態(開發來配合完成)

2.4 僞靜態網頁小結

l  利用rewrite 技術將動態網頁假裝成靜態網頁(URL 地址改寫)

l  便於搜索引擎搜錄,提高用戶訪問量及用戶體驗。

l  訪問性能沒有提高,而且轉換成僞靜態會消耗資源,所以性能反而會降低。

l  儘量地將動態網頁轉換成真正的靜態頁面。

l  併發量不是很大或動態更新過於頻繁時,用rewrite 實現僞靜態也是不錯的。

l  僞靜態網頁的實現過程,通常由產品運營提出需求,開發和運維共同實現。

 

2.5 網站流量度量語

①   . 獨立IP數度量值

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

        在一個局域網內多個主機進行訪問相同的網站地址時,獨立IP數記爲多少?

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

    ②. 頁面瀏覽次數PV

        頁面瀏覽量或點擊量  

    ③. 獨立訪客數UV

        根據http請求報文:瀏覽器版本,OS

        根據http響應報文:cookie(id)       

       

2.6 擴展知識:cookie和session區別

           01. cookie介紹說明

 · cookie 存放在瀏覽器緩存中---瀏覽器進行查看(谷歌)

   【設置裏面】---【顯示高級設置】---【隱私設置】---【內容設置】---【全部cookie和內容設置】

             PS:cookie的格式信息是由開發人員進行定義,因此不一樣的網站所生成的cookie信息內容不太一致

              · cookie 數據存放在客戶的瀏覽器上

 · cookie 不是很安全,別人能夠分析存放在本地的COOKIE並進行COOKIE欺騙

              · cookie 不佔用服務器端資源,提高了服務器性能

 · cookie 保存的數據不能超過4K,不少瀏覽器都限制一個站點最多保存20個cookie。

           02. session介紹說明

           · session 存放在服務器的內存中      

                · session 數據放在服務器上

           · session 從數據庫的安全應用方面會更安全些

           · session 會在必定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能

           建議性說明:

           將登錄信息等重要信息存放爲SESSION

      其餘信息若是須要保留,能夠放在COOKIE中

2.7 有關網站度量Linux 企業運維的常見面試題

2.7.1 常見的面試題以下:

1) 請問你如何理解網站併發?

2) 大家公司網站訪問量是多少? 是怎麼計算的?

必定要理解IP、PV、併發量這3 個點的知識,在回答時纔能有的放矢,這三個點的多少決定面試時說多大的架構,對於沒有經驗的新手不能在介紹有幾萬PV 的同時描述數十臺的集羣架構,這樣就尷尬了。

2.7.2 關於網站訪問指標的計算,能夠考慮:

l  運維部門的日誌分析

l  開發在頁面嵌入的JS 程序(用於統計、收集、分析)。

l  運營市場經過第三方公司提供的工具進行統計,例如GA統計

2.8 IP PV UV 統計度量的方法

2.8.1 IP統計度量的方法

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

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

[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信息

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

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

2.8.2 PV統計度量的方法

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

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

[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   

2.8.3 UV統計度量的方法

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

· 經過Cookie信息鑑別統計

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

· 網頁信息統計軟件-piwik

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

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

 · ELK軟件介紹說明

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

2.9 網站併發鏈接說明

01. 如何理解網站併發的概念

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

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

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

                    ss -lntup|grep 80

                         netstat -lntup|grep 80                

    02. 網站併發概念舉例說明

        · 飯店吃飯/酒店住宿舉例

        · 高速公路通車舉例說明  

03. 網站併發統計計算方法

           netstat -an|grep -i 「est」|wc -l

             ss -ant|grep -ic est

        nginx web服務中相應的軟件模塊進行統計

01. 網站併發相關面試題解答

第3章 www服務(web)

全部的協議,都是爲軟件提供服務的

利用http協議的軟件,稱爲www服務軟件或者web服務軟件

3.1 web服務軟件分類:

01. 靜態解析web服務軟件

Apache:這是中小型Web服務的主流,Web服務器中的老大哥。

Nginx:大型網站Web服務的主流,曾經Web服務器中的初生牛犢,現已長大。

Nginx的分支Tengine(http://tengine.taobao.org/)目前也在飛速發展。

Lighttpd:這是一個不溫不火的優秀Web軟件,社區不活躍,靜態解析效率很高。 在Nginx流行前,它是大併發靜態業務的首選,國內百度貼吧、豆瓣等衆多網站都有Lighttpd奮鬥的身影。

02. 動態解析web服務軟件

PHP(FastCGI):大中小型網站都會使用,動態網頁語言PHP程序的解析容器。它可配合Apache解析動態程序,不過,這裏的PHP不是FastCGI守護進程模式,而是mod_php5.so(module)。也可配合Nginx解析動態程序,此時的PHP經常使用FastCGI守護進程模式提供服務。

 Tomcat:中小企業動態Web服務主流,互聯網Java容器主流(如jsp、do)。

 Resin:大型動態Web服務主流,互聯網Java容器主流(如jsp、do)。

  IIS(Internet information services):微軟windows下的Web服務軟件(如asp、aspx)

3.2 web服務軟件官方資料整合:

apache: http://www.apache.org/

  nginx:  http://www.nginx.org/

  Resin:  http://www.caucho.com/download

           http://caucho.com/resin-3.1/doc/

           http://caucho.com/resin/doc/install-apache.xtp

  Tomcat: http://tomcat.apache.org/whichversion.html

     http://tomcat.apache.org

   PHP:   http://php.net

 

第4章 本章重點知識總結

用戶訪訪問網站基本流程

DNS系統解析原理

HTTP協議通訊原理,包含HTTP協議、請求報文、響應報文、狀態碼等相關知識;

動態、靜態概念特色及假裝靜態技術

動態轉靜態web優化方案

IP、PV、UV的概念個區別

併發概念理解

瞭解經常使用www服務軟件特色,如apache、nginx、php(fastcgi)、tomcat、resin等。

相關文章
相關標籤/搜索