Linux系統——http協議原理

Web服務基礎php

用戶訪問網頁基本流程css

(1)在瀏覽器中輸入域名,系統會查找系統本地的DNS緩存及hosts文件信息,查找是否存在域名對應的IP解析記錄html

(2)DNS解析域名爲IP地址,系統會把瀏覽器的解析請求發送給客戶端本地設置的DNS服務器地址解析,若是LDNSlocal DNS)服務器的本地緩存有對應的解析記錄就會直接返回IP地址給客戶端(若是沒有,則LDNS會負責繼續請求其餘的DNS服務器)前端

(3)對目標進行TCP三次握手nginx

(4)Web服務器發起了一個請求URLweb

(5)服務器響應請求,回覆一個響應包面試

(6)瀏覽器解析響應包出現咱們看到的網頁shell

 

DNS域名解析過程數據庫

(1)去系統本地的DNS緩存中查找域名對應的IP解析記錄編程

(2)若沒有,會向hosts文件信息中查找域名對應的IP解析記錄

(3)若沒有,會去LDNS發起請求查找域名對應的IP解析記錄,LDNS會向LDNS服務器的本地緩存中查找,若沒有,會向LDNS的映像文件/etc/hosts中查找

===============以上爲DNS的遞歸查詢=========================================

===============如下爲DNS的迭代查詢=========================================

(4)LDNS 會從DNS系統的(.)根開始請求該域名(www.baidu.com)的解析,根服務器下面是沒有域名的解析記錄的,可是跟下面有域名對應的頂級域.org的解析記錄,則根會把.org對應的DNS服務器地址返回給LDNS

(5)若沒有,LDNS獲取到baidu.com對應的DNS服務器地址後,會去頂級域服務器請求該域名(www.baidu.com)的解析,baidu.com對應的DNS服務器是該域名(www.baidu.com)受權DNS服務器,會有對應的IP解析記錄

(6)對應的域名DNS服務器會把域名對應的IP解析記錄發給LDNS

(7)LDNS會受到對應的IP解析記錄,並LDNS會把本地域名和IP的對應解析記錄緩存起來,以便下次查找。

 

 

 

 

 

HTTP協議(超文本傳輸協議)

HTTP協議的WWW服務應用默認端口80HTTPS默認443

WWW 萬維網

 

統一資源定位符

URL=域名+URIURI:具體的資源位置,頁面的路徑)

組成:協議類型(protocol)、主機名(hostname)、端口(port)、路徑及文件名(path

一個完整的URL爲一個請求

 

HTTP請求方法

GET  客戶端請求指定資源信息,服務器返回指定資源(讀請求)特色:速度很是快,明文信息,公開不加密(只有消息頭,沒有消息體)

HEAD 只請求響應報文(消息頭和消息體)中的HTTP首部(只看消息體)

POST 將客戶端的數據提交到服務器(寫請求,向網頁服務器寫入內容)特色:加密請求,通常用在用戶註冊

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

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

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

 

消息頭與消息體

消息頭:記錄用戶的屬性及請求信息與響應信息與訪問狀態

消息體:網頁

 

 

 

模擬訪問瀏覽器

# curl

# curl -v www.baidu.com

 

 

 

 

 

 

返回碼

100-199 指定客戶端相應的某些動做

200-299 表示請求成功

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

400-499 指出客戶端出現問題

500-599指出服務端

 

200 OK 操做成功

301 Moved Permanently永久重定向(永久跳轉)

302 Found臨時重定向(臨時跳轉)

304 Not Modified觸發緩存(文檔內容沒有發生改變)

403 Forbidden權限拒絕

404 Not Found找不到網頁

500 Internal Server Error內部服務器錯誤(查找防火牆安全機制被阻擋問題)

502 Bad Gateway網關出現問題(查找路由器問題,追蹤網關)

503 Service Unavailable服務當前不可用(服務器宕機,服務器超載)

504 Gateway Timeout 網關超時

 

 

 

 

 

HTTP資源

媒體類型

Web服務器會把經過過Web傳輸的每一個對象都打上名爲MIME類型(MIME Type)的數據格式標籤。

 

 

URL統一資源定位符

也稱網址

三部分:

(1)協議

(2)主機資源服務器IP地址或域名(端口號)

(3)主機資源的具體地址,如目錄和文件名

其中,第一部分與第二部分之間用://」隔開,第二部分和第三部分用「:/」隔開,第三部分能夠省略

 

 

 

前端語言:HTMLCSSJavaScript

 

靜態網頁資源

用戶直接接觸的客戶端就是前端,

web開發

HTML語言決定了瀏覽器上顯示的具體內容(靜態)

CSS語言決定了內容顯示格式優化(靜態),有座標可以規劃內容顯示位置及圖片的顯示方式

JavaScriptJS)語言(動態)網頁上的shell代碼                                                                                                                                                                                                                                                                                                                                                                                                                             

Web服務器遵守的協議:xml協議、json協議等(做用:規範數據包的格式)

 

靜態網頁:

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

 

靜態網頁:Server端經過xml協議及json協議通過JavaScript的循環處理,使用HTML語言及CSS語言將網頁數據傳遞到客戶端

 

 

靜態頁面的特色(圖片、視頻):

1)每一個網頁都有一個固定的URL地址,且URL通常以.html,.html,shtml等常見形式爲後綴,

並且地址中不含郵問號「?」或「&」等特殊符號。

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

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

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

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

6)網頁程序在用戶瀏覽器端解析,如IE瀏覽器,程序解析效率很高,因爲服務端不進行解析,而且不須要讀取數據庫,所以服務器端能夠接受更多的併發訪問。當客戶端向服務器

請求數據時,服務器直接把數據從磁盤文件系統上返回(不作任何解析),待客戶端拿到

數據後,在瀏覽器端解析展示出來(優勢)

 

靜態網頁特色:

(1)不須要數據庫支持

(2)服務器端解析速度快

(3)給服務器端形成壓力小

(4)搜索引擎喜歡收錄靜態網頁,不喜歡收錄動態網頁

(5)因爲靜態網頁是固定不變的,因此維護靜態網頁的數據十分麻煩,須要打開網頁進行逐個修改

 

 

常見靜態網頁語言:htmljscssxmlshtml

 

靜態網頁的架構思想

在高併發,高訪問量的場景下作架構優化,涉及的關鍵環節就是把動態網頁轉成靜態網頁(僞靜態),把不常常用的作成僞靜態存放在硬盤中,注意存活週期,而不直接請求數據庫和動態服務器,而且能夠把靜態內容推送到前端緩存(或CDN)中提供服務,這樣就能夠提高用戶體驗,節約服務器和維護成本。

 

僞靜態網頁的本質是什麼?

把用戶請求的數據解析成靜態文件,放在磁盤和內存中,來下降動態服務器的壓力,節約企業成本,提高用戶體驗(把不常常變得動態網頁編程僞靜態網頁存在內存或者硬盤中)

 

動態網頁:

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

 

動態網頁資源介紹

所謂的動態網頁是與靜態網頁相對而言的,也就是說,動態網頁的URL後綴不

.htm,.html,.shtml,.xml,.js,.css等靜態網頁的常見後綴擴展名形式,而是

.asp,.aspx,.php,.js,.do,.cgi等形式做爲後綴的,而且通常在動態網頁網址中會有標誌性的符

--「?,&」,此外,在大多數狀況下後端都須要有數據庫支持等。

動態網頁資源特色

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

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

3)採用動態網頁技術的網站能夠實現更多的功能,如用戶註冊,用戶登陸,在線調查,投

票,用戶管理,訂單管理,發博文等等

4)動態網頁並非獨立存在於服務器上的網頁文件,當用戶請求服務器上的動態程序時,服

務器解析這些程序並可能讀取數據庫返回一個完整的網頁內容。

5)動態網頁中的「?」在搜索引擎的收錄方面存在必定問題,搜索引擎通常不會從一個網站

的數據庫中訪問所有網頁,或者出於技術等方面的考慮,搜索蜘蛛通常不會去抓去網址

「?」後面的內容,所以在企業經過搜索引擎進行推廣時,須要針對採用動態網頁的網站作

必定的技術處理(僞靜態技術),以便適應搜索因窮的抓取要求。

6)程序在服務器端解析,這至關於顧客點餐,飯店廚師作飯作菜,耗時長,效率低。因爲程

序在服務端解析,所以,會消耗大量的CPU和內存,I/O等資源,而且多數還要讀取數據庫等

服務,所以,其訪問效率遠不如靜態網頁,在服務端解析動態程序的服務常見的有PHP

擎,Java容器(tomcat,resin,jboss,weblogic

有關動態網頁的架構思想

通常來講,靜態網頁的性能效率是動態網頁的1030倍。且動態網站效率不好,併發能力

也很低,在高併發場景中,應儘量轉換成靜態網頁提供服務。動態轉靜態幾乎是全部高

併發網站必備的架構方案思路,也是高級架構師的職責所在。

此外,動態轉靜態也要根據業務需求設計,例如,對於更新頻繁的網站若是設計很差就可

能會產生數據不一致的狀況,即用戶看到的數據不是網站最新的內容,而是靜態的內容

 

 

 

 

 

 

 

Tomcat Java代碼的Web服務器

前端緩存:

數據庫緩存:MySQL讀取內存中的數據

吞吐量:數據庫讀寫速度

存儲服務器:分佈式

Web節點層的數據由生產者模型寫入消息隊列(分佈式),由MySQL數據庫按需取走(不會超過上限)

Web節點:

Nginx+PHP (前端語言、後端語言)

Nginx+tomcat Java語言)

前端語言對後端語言沒有直接關係,只是數據傳遞的方式

負載均衡層:

nginx反向代理

LVS

前端緩存層:解決存儲服務器問題

Nginx前端緩存,圖片和視頻到Nginx前端緩存內存中讀取數據,下降存儲服務器的存儲壓力

Squid

Vanish

 

LAMPLinux+Apache+MySQL+PHP

LNMPLinux+Nginx+MySQL+PHP):PC端訪問網頁,經過負載均衡層經過nginx反向代理

傳輸到Web節點,使用Nginx+PHP語言,在傳輸到MySQL數據庫查找數據。

 

 

併發:同一時間內服務器進入數據傳輸狀態(establish)的;網站服務器在單位時間內可以處理的最大鏈接數

 

併發IP數:同一時間段內服務器進入數據傳輸狀態(establish)的平均數

 

吞吐量:I/O讀寫速度(針對存儲)查看方式:dd;每秒處理用戶的請求數(Web服務器),查看方式:status取其中的請求數據

測試磁盤的存儲性能

連續的讀寫向磁盤中寫入大的文件

dd if=/dev/zero of=/tmp/test01.bin bs=1K count=10000

 

QPSQuery Per Second)每秒查詢率

每秒查詢率QPS是用於衡量一個特定的查詢服務器在規定時間內所處理流量多少的標準。運維工做中,DNS系統以及數據庫等服務的查詢性能常常用每秒查詢率來衡量。

 

IOPSInput/Output Operations Per Second

IOPS即每秒進行讀寫(I/O)操做的次數,多用於數據庫等場合,衡量隨機訪問的性能。存儲端的IOPS性能和主機端的I/O是不一樣的,IOPS是指存儲每秒可接受多少次主機發出的訪問,主機的一次I/O須要屢次訪問存儲才能夠完成。例如,主機寫入一個最小的數據塊,也要通過「發送寫入請求,寫入數據,收到寫入確認」等三個步驟,也就是3個存儲訪問。

 

Jemter壓力測試軟件

 

查看企業當天的網站的訪問量

1)獨立IP數:比真實用戶訪問數偏小(nginx切割,去返回碼,對第一列ip去重sortuniquewc -l

國內幾乎全部的公司都是採用局域網共享上網的,即經過路由器NAT地址轉換上網,每一個計算機在局域網內的私有IP是不一樣的,可是在外網上,就必須都要由路由器把每一個私網地址轉換成了路由器接口的固定公網IP(多IP映射暫不考慮),因此說,對於網站來講一天內多個相同公司的IP的客戶端訪問計算爲一個獨立IP

 

2PV訪問量:一個頁面記做一PV訪問量,大於真實用戶量 (在URL取正確返回碼,去除靜態資源,把全部單獨訪問的圖片視頻去掉,無需去重);點擊量

 

3UV獨立訪客:計算cookiecookie存活時間爲一天,,同一臺客戶端(PC或移動端)訪問網站被計算爲一個訪客。一天(00:00-24:00)內相同的客戶端訪問同一個網站只計算一次UVUV通常是以客戶端Cookie等技術做爲統計依據的,實際統計會有偏差

 

 

常見面試題以下:

請問大家的網站併發是多少?

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

必定要理解IPPV,併發量這3個點的知識,在回答時纔能有的放失,這三個點的多少決

定面試時說多大的架構,對於沒有經驗的新手不能在說有幾萬的PV時,還說數十臺的集

羣架構,這樣就烏龍了。

運維部分日誌分析

開發在頁面嵌入JS程序統計收集,分析

運營市場經過第三方公司提供的工具程序統計,例如:GA統計

相關文章
相關標籤/搜索