說說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:
UV :
PV :
一次PV建立的過程:
并發:
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連接過程
總之請看圖:
(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)結構如圖所示:
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.aspx3.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:從服務器上刪除一份文檔 (非常危險,大部分服務器禁止了該方法)
當然不是所有服務器都支持上述方法,有些服務器還支持擴展的方法。
首部、 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協議與其他協議的關系如圖:
總結如下:
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工作流程
參考文獻:
《HTTP權威指南 第5版》
原創文章,作者:Net17_desperado,如若轉載,請注明出處:http://www.www58058.com/16666
對實驗很有幫助,再加上原理就更好了
0802+簡單明了,通俗易懂,不錯,點個贊?。?!
0802+簡單明了,通俗易懂,解釋很詳細!對我幫助很大!不錯!不錯
@sky138170:回復在原始博客下是無效評論哦,要評論在《馬哥教育首屆IT技術博客大賽–復審階段》帖子下才有效哦!