說說web和http以及lamp/lnmp

<span style="font-size: 24px;font-family: 宋體,SimSun">**說說web和http以及lamp/lnmp**</span>

說說web和http以及lamp/lnmp

在這篇文章當中你將看到如下內容:

  • web與http的簡介,網頁的分類

  • 度量網站流量的幾個術語——知道大牛在說什么

  • 關于http你必須知道的

  • web的實現方法—lamp/lnmp

web http 圖解 lamp/lnmp

一、web與http的簡介,網頁的分類

1.1 什么是web
      www,全稱為World Wide web,常常我們將www稱為web,中文翻譯為”萬維網“,他是當今互聯網上最主流的信息服務形式。是他構成了一個個頁面

1.2 什么是http
      http協議,全稱為"HyperText Trafser Protocol" 中文叫做“超文本傳輸協議”,這是當今互聯網上廣泛應用的一種協議。

1.3 http與web的關系

http協議是互聯網上應用最廣泛的協議,它有許多應用,最流行的應用就是web。因此構成一個個五彩繽紛的網頁的是基于http協議的web應用

*http協議的www應用的默認端口是80,基于某些安全性考慮另外的一個加密的www的服務https的默認端口是443*

在現今www、web、http的概念已經漸漸的模糊了,因此我們可以知道的是:網頁稱為web頁面,基于的協議是http,提供網頁服務的是www服務。
   HTTP協議的主要特點

 1.支持客戶/服務器模式。
 2.簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。
 請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯系的類型不同。
 由于HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。
 3.靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
 4.無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,
  并收到客戶的應答后,即斷開連接。采用這種方式可以節省傳輸時間。
 5.無狀態:HTTP協議是無狀態協議。無狀態是指協議對于事務處理沒有記憶能力。
  缺少狀態意味著如果后續處理需要前面的信息,則它必須重傳,
  這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。

1.5 網頁的分類

 **互聯網上五彩繽紛的網頁總的來說可以分為靜態網頁、動態網頁、偽靜態。**

 *靜態網頁:在網站設計中純粹的HTML格式的網頁(可包含圖片、視頻、css樣式等)通常被稱為靜態網頁,
  靜態網頁相對于動態網頁的區別在于沒有后臺數據庫、不含程序(PHP JSP ASP)、不可交互的網頁*
 *動態網頁:所謂的動態網頁與靜態網頁是相對來說的,動態網頁就是后臺有數據庫,可以運行程序,可以和網頁進行交互的頁面。*
 *偽靜態網頁:偽靜態就是通過某些技術把動態網頁偽裝成靜態網頁,但實際上用戶訪問的還是動態網頁,
  只不過用戶看起來這網頁符合靜態網頁特征,用戶及搜索引擎會把它當成靜態網頁*

1.6 各種類型網頁的特點——靜態網頁

 *靜態網頁:靜態網頁的特點是開發者編寫什么它就顯示什么,一旦完成就不會更改,
  因此靜態網頁的維護更新比較麻煩,每個網頁需要單獨手動更新,工作量太大,一般適合傳統的宣傳展示類的網站*
  靜態網頁有幾個特征:
   1.每個頁面都有一個固定的URL地址,該地址以.html .htm .shtml 等常見形式作為后綴,且地址當中不含有“?”或“&“等特殊字符(關于URL后文會提)
   2.網頁內容一旦發布到網站服務器上,每個網頁內容都是保存在服務器上的,換句話說,用戶訪問的靜態網頁其實是服務器上網頁文件的實體。
   3.網頁內容固定不變,易被搜索引擎收入。
   4.因網頁沒有數據庫支持,所以網站制作和維護的工作量較大,當網站信息量很大時,完全依靠靜態網頁非常困難。
   5.網頁交互性幾乎沒有,程序的功能性實現方面有較大的限制。
   6.網頁解析效率高,因為是用戶端瀏覽器解析,占用服務器性能小

1.7 各種類型網頁的特點——動態網頁

 *動態網頁:動態網頁后綴名以.asp .php .aspx .js等形式,且一般在網址中有標志性的符號——“?”和“&”,
  而且大多數時候后面都有數據庫支持*  
  動態網頁有如下特征:

   1.網頁一般以數據庫技術為基礎,大大降低了網站維護的工作量

   2.可以實現更多的功能,如用戶注冊、用戶登錄、在線調查、投票、用戶管理、訂單管理、發表博文等(可以與網頁進行交互)

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

   4.動態網頁一般不會被搜索引擎收錄,因此當需要對網站進行搜索引擎推廣時,就需要對動態網頁進行處理了,這時偽靜態技術應運而生。

1.8 各種類型網頁的特點——偽靜態網頁
     偽靜態:偽靜態就是通過某些技術把動態網頁偽裝成靜態網頁,但實際上用戶訪問的還是動態網頁,只不過用戶看起來這網頁符合靜態網頁特征,用戶及搜索引擎會把它當成靜態網頁* 簡而言之當用戶打開URL后綴名以.html等結尾的網站時,還能進行登錄注冊等行為的就是偽靜態網頁

 偽靜態網頁有如下特征:

  1.偽靜態表面上看是靜態網頁,后綴名也是靜態網頁的.html之類的,但是這是由動態網頁通過技術手段(rewrite)實現的URL地址重寫.
    改寫后的URL地址規范、美觀,因此容易被搜索引擎收入,當一個網站需要搜索引擎推廣時非常重要。
  2.其本質還是動態網頁,從性能上來看偽靜態性能并沒有提升,反而有所下降,因為從動態網頁轉換成靜態也會消耗資源。

1.9 各種類型網頁特點——小結

  靜態網頁:
    執行效率高,占用服務器資源少易于被搜索引擎收入(優點)
    功能簡單,無法執行程序,無法與網頁進行交互,沒有數據庫的支持,許多功能無法實現,更新與維護較為困難(缺點)
  動態網頁:
    與網頁交互性好,能實現許多功能,有數據庫的支持,更新維護比較容易。(優點)
    執行效率較低,占用服務器資源較多,mysql對文件的I/O操作是網站最大的瓶頸之一。(缺點)
    不易被搜索引擎收入,通過搜索引擎推廣存在困難(缺點)       
  偽靜態網頁:
    有動態網頁的優點,且更容易被搜索引擎收入(優點)
    執行效率較低,因為從動態網頁轉換成靜態也需要占用服務器性能,因此占用服務器資源最多。

二、衡量web性能的幾個術語——知道大牛在說什么

2.1 前言

往往運維界的大牛開講座時,往往會這么說我運維的網站架構能承受多少PV,多少IP,多少UV,多少并發。吾等小白不禁蒙圈。求吾等小白的心理陰影面積。

很多面試官往往會問你們運維的系統能承受多少PV,UV,IP,并發?

 如果你不知道這些什么意思,你就咸魚了

他到底在說什么,這些表示什么意思?

2.2 什么是IP、PV、UV、并發?

IP:ip(獨立IP),即Internet Protocol,指獨立的ip數,
    即不同的IP地址的計算機訪問網站時被記錄的數。
    該值是衡量網站流量的一個重要指標。記錄該值得時間可以是一天或者一月,目前常用的標準是一天。
    一般相同IP用戶一天之內訪問該網站只會被記錄一次

PV:PV(訪問量)即Page View,中文翻譯為頁面瀏覽,即頁面瀏覽量或者單擊量。
    該值不管訪問的客戶端是否相同,也不管IP是否獨立,用戶只要訪問網站頁面就會計入PV,一次記一個PV。
UV:UV(獨立訪客),Unipue Visitor。
  同一客戶端(pc或者移動端)訪問網站,記為一個UV。
  一天之內相同的客戶端訪問相同的網站只記錄一個UV
并發:指網絡服務器在單位時間內能夠處理的最大連接數

? 2.3 圖解IP、PV、UV、并發

IP:

說說web和http以及lamp/lnmp

UV :

說說web和http以及lamp/lnmp

PV :

說說web和http以及lamp/lnmp

一次PV建立的過程:

說說web和http以及lamp/lnmp

并發:
說說web和http以及lamp/lnmp

2.4 IP、PV、UV的度量

IP:

 (1)分析所有web服務器日志信息,對訪問IP進行去重后計數。
 (2)在網站的所有頁面結尾嵌入統計程序代碼.
 (3)用大家信任的第三方工具,如谷歌的GA

PV:

 (1)在網站的所有頁面結尾嵌入統計程序代碼.
 (2)用大家信任的第三方工具,如谷歌的GA

UV:

   (1)通過客戶端的http請求報文分析
   (2)通過Cookie鑒別

三、關于http你必須知道的

3.1 什么是HTTP?

 HTTP(HyperText Trasfer Protocol 超文本傳輸協議);
 HTTP是被web服務使用的一種規范,該規范完成從客戶端到服務器端的一系列運作流程加以規范。當今世界上的web頁面均是建立在該協議之上的

3.2一次完整的HTTP連接過程
    總之請看圖:

說說web和http以及lamp/lnmp

    (1) 建立或處理連接:接收請求或拒絕請求
    (2) 接收請求:接收來自于網絡的請求報文中對某資源的一次請求的過程;

       在這里我們提出 并發訪問響應模型(Web I/O)這一概念:
        單進程I/O結構:啟動一個進程處理用戶請求,而且一次只處理一個;多個請求被串行響應;
        多進程I/O結構:并行啟動多個進程,每個進程響應一個請求;
         復用I/O結構:一個進程響應n個請求;
        多線程模型:一個進程生成N個線程,每個線程響應一個用戶請求;
        事件驅動:event-driven
        復用的多進程I/O結構:啟動多個(m)進程,每個進程響應n個請求;


    (3) 處理請求:對請求報文進行解析,并獲取請求的資源及請求方法等相關信息

        請求報文首部是一種元數據
        請求報文首部是這樣的:
            <method> <URL> <VERSION>
            Host: www.magedu.com   請求的主機名稱
            Connection:

    (4) 訪問資源:獲取請求報文中請求的資源

        web服務器,即存放了web資源的服務器,負責向請求者提供對方請求的靜態資源,
         或動態運行后生成的資源;這些資源放置于本地文件系統某路徑下,此路徑通常稱為DocRoot

        web服務器資源路徑映射方式:
            (a) docroot
            (b) alias
            (c) 虛擬主機docroot
            (d) 用戶家目錄docroot

      (5) 構建響應報文

        在響應報文中有一項重要的參數——資源的MIME類型:它標識了web頁面的數千種資源,使瀏覽器知道如何處理這些資源。
        

        URL重定向:web服務構建的響應并非客戶端請求的資源,而是資源另外一個訪問路徑;

      (6) 發送響應報文


      (7) 記錄日志

并發訪問響應模型(Web I/O)結構如圖所示:
說說web和http以及lamp/lnmp

3.3  URI和URL

     URI:URI是Uniform Resource Identifier 的縮寫,其意為統一資源標識符。

     URL:URL是Uniform Resource Locator 的縮寫,其意為統一資源定位符,是URI的子集

3.3.1 URL介紹
  URL由以下部分組成:
    (1)協議,表明采用的協議,如http
    (2)服務器域名或IP地址 如www.qidian.com
    (3)主機資源的具體地址 如 Default.aspx
    (4)第一部分和第二部分用“://”符號隔開,第二部分和第三部分用“/”隔開。第一部分和第二部分不可省略,第三部分可以省略。
    (5)列舉的完整URL為:
http://www.qidian.com/Default.aspx

3.4 MIME

   MIME:互聯網上有數千種不同的數據類型,HTTP會給每種通過web傳輸的對象都打上了名為MIME type的數據格式標簽。
   web服務器會為所有的HTTP對象附加一個MIME類型,當瀏覽器從服務器取回一個對象時會去查看下相關的MIME類型,看看瀏覽器是否知道如何處理該對象。
   幸運的是,大多數瀏覽器知道如何處理幾百種常見的MIME對象類型。

3.4.1MIME 類型

    MIME類型是一種文本標記,表示一種主要的對象類型和一個特定的子類型,中間由一條斜杠來分割。
    格式:major/minor
    HTML格式的檔: text/htm文本文l
    普通的ASCII文檔:text/plain
    JPEG格式的圖片:image/jpeg
    GIF格式的圖片:image/gif

3.5 報文

 HTTP報文是在HTTP應用程序之間發送的數據塊。這些數據塊以元信息開頭,這些信息描述了了報文的內容及含義,后面跟可選的數據部分。
 這些報文由以下內容組成:
        (1)起始行:對報文進行描述
        (2)首部:包含屬性
        (3)主體:包含數據的(可選)
  所有HTTP報文可以分為兩類——請求報文(request message)、響應報文(response message):
  請求報文會向web服務器請求一個動作;響應報文會將請求的結果返回客戶端

3.5.1 報文的格式

這是請求報文的格式示例:

 <method> <request-URL> <version> <headers>   entity-body

這是響應報文的格式:

 <version> <status-code> <reason-phrase> <headers>   entity-body

可見二者只有起始行的語法有所不同

下面是對各部分的簡單描述

   方法(method):客戶端希望服務器對資源執行的動作。
   請求URL(request-URL):請求的URL
   版本(version):報文使用的HTTP格式,其格式看起來是這樣的:
        HTTP/<major>.<minor>
   其中主要版本號(major)和次要版本號(minor)都是整數。
   狀態碼(status-code):這三位數字表示了請求過程中發生的情況
   原因短語(reason-phrase):數字狀態碼的可讀版本,對前面狀態碼做出解釋的短語
   首部(headers):表示服務器端或客戶端需處理的請求或響應的內容及屬性
   在首部和報文主體(entity-body)之間的空行:首部是有一個空行結束的表示了首部列表的結束和主體部分的開始。
   主體部分(entity-body):應被發送的數據(可選)

方法
     在HTTP報文中方法(method)表示了客戶端希望服務器對資源執行的動作。

在HTTP支持下列方法(method)以及擴展方法:
   GET:從服務器獲取文檔
   HEAD:只從服務器獲取響應報文的首部
   POST:向服務器發送需要處理的數據
   PUT:將請求的主體部分存儲在服務器上
   TRACE:對可能經過代理服務器傳送到服務器上的報文進行追蹤
   OPTIONS:決定可以在服務器上執行那些方法
   DELETE:從服務器上刪除一份文檔 (非常危險,大部分服務器禁止了該方法)
  當然不是所有服務器都支持上述方法,有些服務器還支持擴展的方法。

說說web和http以及lamp/lnmp

首部、 headers

HTTP首部字段向請求和響應報文中添加了一些附加信息。本質上來說,它們只是一些名/值對的列表,。
 HTTP首部分成
 通用首部:既可以出現在請求報文中,也可以出現在響應報文中。
 請求首部:請求首部是在請求報文中有意義的首部。用于說明是誰或什么在發送請求,
 請求源自何處,或者客戶端的喜好及能力。服務器可以根據請求首部給出的客戶端的信息,試著為客戶端提供更好的響應。
 響應首部:為客戶端提供信息。
 實體首部:針對請求報文和響應報文的實體部分使用的首部。

通用首部

以下是各通用首部字段的含義:
  首部字段名  說明
 CacheControl    該字段控制緩存的行為
 Connection  允許客戶端和服務器指定與請求/響應連接有關的選項
 Date    報文創建時間
 Progma  報文指令
 Trailer     報文末端的首部一覽
 Transfer-Encoding   指定報文主體的傳輸編碼方式
 Upgrade     升級為其它協議
 Via     代理服務器的相關信息
 Warning     錯誤通知

請求首部

以下是各請求首部字段的含義
 Accept  用戶代理可處理的媒體類型
 Accept-Charset  優先的字符集
 Content-Encoding    優先的內容編碼
 Content-Language    優先的語言
 Authorization   Web認證信息
 Expect  期待服務器的特定行為
 From    用戶的電子郵箱地址
 Host    請求資源所在服務器
 If-Match    比較實體標記(ETag)
 If-Modified-Since   比較資源的更新時間
 If-None-Match   比較實體標記(與If-Match相反)
 If-Range    資源未更新時發送實體Byte的范圍請求
 If-Unmodified-Since     比較資源的更新時間(與If-Modified-Since相反)
 Max-Forwards    最大傳輸逐跳數
 Proxy-Authorization     代理服務器要求客戶端的認證信息
 Range   實體的字節范圍請求
 Referer     對請求中URI的原始獲取方
 TE  傳輸編碼的優先級
 User-Agent  HTTP客戶端程序的信息

響應首部

以下是各響應首部字段的含義:
 Accept-Ranges   是否接受字節范圍請求
 Age     推算資源創建經過時間
 Etag    資源的匹配信息
 Location    令客戶端重定向至指定URI
 Proxy-Authenticate  代理服務器對客戶端的認證信息
 Retry-After     對再次發起請求的時機要求
 Server  HTTP服務器的安裝信息
 Vary    代理服務器緩存的管理信息
 WWW-Authenticate    服務器對客戶端的認證信息

實體首部

以下是個實體首部字段的含義
 Allow   資源可支持的HTTP方法
 Content-Encoding    實體主體適用的編碼方式
 Content-Language    實體主體的自然語言
 Content-Length  實體主體的大小
 Content-Location    替代對應資源的URI
 Content-MD5     實體主體的報文摘要
 Content-Range   實體主體的位置范圍
 Content-Type    實體主體的媒體類型
 Expires     實體主體過期的日期時間
 Last-Modified   資源的最后修改日期時間
 狀態碼

 HTTP用3位狀態碼表示HTTP連接過程中發生的情況,后面跟原因短語

100—199——信息性狀態碼

 100:continue 說明收到了請求的初始部分,請客戶端繼續。
 101:Switching Protocols 說明服務器正在根據客戶端的指定,將協議切換成Update首部所列的協議

200—299——成功狀態碼

200:OK 請求沒問題,實體的主體部分包含了所請求的資源
201:Created 用于創建服務器對象的請求(比如PUT方法)。響應的實體主體部分中包含了請求的資源
202:Accepted 請求已被接受,但服務器還未對其執行任何動作。
203:Non-Authoriative Information 實體首部包含的信息不是來自于源端服務器,而是來自資源的一份副本。
204:No Content 響應報文中包含若干首部和一個狀態行,但沒有實體的主體部分。

300—399——重定向狀態碼

300:Multiple Choices 客戶端請求一個實際指向多個資源的URL時會返回這個狀態碼。
301:Moved Permanently 在請求的URL已被移除時使用-永久重定向,表示請求的資源已被分配新的URL,以后應使用該URL
302:Found 與301類似;但是客戶端使用了首部給出的URL來臨時定位的資源
303:See Other 告知客戶端應該用另一個URl來獲取資源。

400—499——客戶端錯誤狀態碼

400:Bad Request 用于告知客戶端它發送了一個錯誤的請求
403:Forbidden 請求被服務器拒絕
404:Not Found 說明服務器無法找到所請求的URL

500—599——服務器錯誤狀態碼

500:Internal Server Error 服務器內部錯誤
501:Not Implemented 客戶端發起的請求超出服務器的能力范圍
502:Bad Gateway 錯誤網關;無效網關
503:Service Unavailable 服務器暫時不可用
504:Gateway Timeout 網關響應超時。

3.6 HTTP協議與其他協議的關系

HTTP協議與其他協議的關系如圖:
說說web和http以及lamp/lnmp

 總結如下:
            1、與HTTP協議相關的協議有DNS協議、TCP/IP協議。
            2、DNS協議負責將請求的域名解析成域名對應的IP地址。
            3、HTTP協議負責生成報文。
            4、TCP協議負責將報文按照順序分割或重組
            5、IP協議負責找到地方IP地址并將報文發送過去。

四、web的實現方法-lamp/lnmp

lamp/lnmp是當今linux系統下兩套比較成熟得web服務環境解決方案
l:代表linux,表示方案的載體是linux系統
a:代表apache httpd 代表·了老牌的靜態web服務軟件,穩定而強大,市場占有率高。
n:代表nginx 代表了新興的靜態web服務軟件,輕量而強大,市場占有率上升迅猛。
m:代表mysql 或mariadb,開源數據庫,為網頁提供數據容器。
p:php,用來解析PHP動態頁面請求

lamp/lnmp工作流程
說說web和http以及lamp/lnmp

參考文獻:
      《HTTP權威指南 第5版》

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

(0)
Net17_desperadoNet17_desperado
上一篇 2016-05-26 10:52
下一篇 2016-05-28 20:32

相關推薦

  • python裝飾器1

    簡單介紹裝飾器(注意格式)

    Linux干貨 2017-10-22
  • ftp服務器介紹與配置

    一、 ftp服務,File Transfer Protocal 文件傳輸協議      1. ftp基于tcp協議,C/S架構          Server: wu-ftpd, proftpd ,pureftp,vsf…

    Linux干貨 2015-06-21
  • Linux Cluster講解

    什么是集群     集群是一組的、通過高速的計算機,它們構成了一個組,并以單一系統的模式加以管理。一個客戶與集群相互作用時,集群像是一個獨立的服務器。集群配置是用于提高可用性和可縮放性。     和傳統的高性能計算機技術相比,集群技術可以利用各檔次的服務器作為節點,系統…

    Linux干貨 2016-11-07
  • sed用戶小結

    sed是一個很好的文件處理工具,本身是一個管道命令,主要是以行為單位進行處理,可以將數據行進行替換、刪除、新增、選取等特定工作,下面先了解一下sed的用法sed命令行格式為:         sed [-nefri] ‘command’ 輸入文本  …

    Linux干貨 2016-08-12
  • grep命令和find命令的練習

    1、顯示系統上root、Fedora、或user1用戶的默認shell [root@localhost ~]# grep -E “^(root|fedora|user1)\>” /etc/passwd | cut -d: -f1,7 root:/bin/bash fedora:/bin/bash user1:/bin/bash 2、找出/etc/rc.…

    Linux干貨 2017-07-30
  • 文本處理

    cat,tac,rev,more,less,head,tail,cut,wc,sort,uniq,grep,
    正則表達式,擴展正則表達式

    2018-03-13

評論列表(4條)

  • sky138170
    sky138170 2016-06-13 14:22

    對實驗很有幫助,再加上原理就更好了

  • wangquan8628
    wangquan8628 2016-06-13 14:25

    0802+簡單明了,通俗易懂,不錯,點個贊?。?!

  • sky138170
    sky138170 2016-06-13 14:36

    0802+簡單明了,通俗易懂,解釋很詳細!對我幫助很大!不錯!不錯

    • xxrenzhe
      xxrenzhe 2016-06-13 14:58

      @sky138170回復在原始博客下是無效評論哦,要評論在《馬哥教育首屆IT技術博客大賽–復審階段》帖子下才有效哦!

欧美性久久久久