web 服務基礎

用戶經過網站訪問瀏覽器都發生了什麼

如圖,用戶請求www.joker.com發生php

1. 用戶訪問網站流程框架
2. dns解析原理
3. tcp/ip三次握手過程原理
4. http協議原理(www服務的請求過程),請求報文細節
5. 大規模網站集羣架構細節
6. http協議原理(www服務的響應過程),響應報文細節
7. tcp/ip四次揮手過程原理css

DNS 解析

根服務器 世界13臺html

dns domain name system
主要做用是負責把網站域名解析爲對應的ip地址
1. 從域名到ip的解析過程,叫做A記錄
2. CNSAME別名記錄,這個別名解析功能常被CDN加速服務商應用前端

咱們在訪問www.joker.com這個域名的時候,dns是如何將域名解析成ip的呢java

第一 二步是ldns解析,若是本地沒有緩存nginx

第三步 將從dns系統的.根開始請求www.joker.com域名的解析,根服務器下面是沒有www.joker.com域名解析記錄的,可是根下面有www.joker.com對應的頂級域.com的解析記錄,所以,根會把.com對應的dns服務器地址返回給ldnsweb

第四步 ldns獲取到.com對應的dns服務器地址後,就會去.com服務器請求www.joker.com域名的解析,而.com服務器下面也沒有www.joker.com域名對應的解析記錄,可是有joker.com的解析記錄,所以,.com服務器會把joker.com對應的dns服務器地址返回給ldns數據庫

第五步 ldns獲取到joker.com對應的dns服務器地址後,就會去joker.com服務器請求對www.joker.com域名的解析,joker.com域名對應的dns服務器是該域名的受權dns服務器,這個dns服務器正是企業購買域名時用於管理解析的服務器後端

第六步 joker.com域名,dns服務器會把www.joker.com對應的ip解析記錄發給ldns瀏覽器

第七步 ldns把來自受權dns服務器的與www.joker.com對應的ip解析記錄發給客戶端瀏覽器,而且ldns會在本地把域名和ip的對應解析記錄緩存起來

dns解析命令

dig hosts nslookup 須要安裝 yum install bind-utils
[root@Poppy ~]# dig +trace www.joker.com ; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> +trace www.joker.com ;; global options: +cmd . 170865 IN NS l.root-servers.net. . 170865 IN NS f.root-servers.net. . 170865 IN NS j.root-servers.net. . 170865 IN NS a.root-servers.net. . 170865 IN NS m.root-servers.net. . 170865 IN NS h.root-servers.net. . 170865 IN NS i.root-servers.net. . 170865 IN NS k.root-servers.net. . 170865 IN NS d.root-servers.net. . 170865 IN NS g.root-servers.net. . 170865 IN NS c.root-servers.net. . 170865 IN NS e.root-servers.net. . 170865 IN NS b.root-servers.net. . 491827 IN RRSIG NS 8 0 518400 20180703170000 20180620160000 39570 . AWoVbG/68+WWYALHuMhz2e4r9QJf2+uSy6FOBLqHSdpof+KbuoCH/W/U sQgM5za3F0fxC/at9VwTTq32tmIuwl8v5/V5YaLa24zijdpJRmPoI3UT yp5DiUM0kj+qHhKHR7f17Mrptaoa1Ld1GkZgUQzgZvb7UftiznOM+l3U m8sOOcL5EKKqQ5VtTfLn2WUPZDp8weKzG55EF7tNCpnoNJORDl4H/tmA K23umiyYPBiHqxcIZ1PDRUrFwJuNUX4+iJPg4a1lAjUp5MjFG6DQzHpr NA+KR7Xb0FAWU9FiFF9ZqyYT7oKR2qwIu26zEd6hCYKWFEUdJgSbAsc4 W+m5Tw== ;; Received 525 bytes from 100.100.2.136#53(100.100.2.136) in 42 ms org. 172800 IN NS a0.org.afilias-nst.info. org. 172800 IN NS a2.org.afilias-nst.info. org. 172800 IN NS b0.org.afilias-nst.org. org. 172800 IN NS b2.org.afilias-nst.org. org. 172800 IN NS c0.org.afilias-nst.info. org. 172800 IN NS d0.org.afilias-nst.org. org. 86400 IN DS 9795 7 1 364DFAB3DAF254CAB477B5675B10766DDAA24982 org. 86400 IN DS 9795 7 2 3922B31B6F3A4EA92B19EB7B52120F031FD8E05FF0B03BAFCF9F891B FE7FF8E5 org. 86400 IN RRSIG DS 8 1 86400 20180703170000 20180620160000 39570 . mzYJcAKpBCaXKvZ7zTmxuaiNGNf2jE9fcpyubQ2hU+vf+/fVLLWxElZQ 9xtfShyEKoHuZFgf6e505Lfj9lYCRjwgx3Yx8hfuuwr5L6XY1ECkK5rT pt4StQZngAVxAaDD8LgZcoj+OxXzYGWGEhwhA0kkneV7IRn0v0rmEwVD z0GYU5aARfE1K8DRVfoIkC1IkmSVdswrO0P5YVKLSMqxgq/ObRxJPuGj 2awBxlV25LHFDZ2CsYQhjOyn/UGLy/h+iObXNv/9+4UjzxZMfboubYFG OM4np9/5eoNwe+P3hWW4F1ZeM2XpjWAMyuce/Guu25BQ3CpiQtAaI2p8 pj/Oaw== ;; Received 825 bytes from 192.5.5.241#53(f.root-servers.net) in 4 ms etiantian.org. 86400 IN NS dns.bizcn.com. etiantian.org. 86400 IN NS dns.cnmsn.net. h9p7u7tr2u91d0v0ljs9l1gidnp90u3h.org. 86400 IN NSEC3 1 1 1 D399EAAB H9PARR669T6U8O1GSG9E1LMITK4DEM0T NS SOA RRSIG DNSKEY NSEC3PARAM h9p7u7tr2u91d0v0ljs9l1gidnp90u3h.org. 86400 IN RRSIG NSEC3 7 2 86400 20180712072331 20180621062331 1862 org. YcZkCUWooAgsPB98ndrbreyBNCYc35I4DaDaq8UQ2ssPE00HkCMytXSm cgnS7gQjhDexaVZJDvN8/Ph5vTh6vv1eS3bhsWOrl9P0xfMSqXCfahxW SORWfSzTQJBP/GCBWNJrs/PN5lFrL1S/Ys65ke42S4mO64sHa6EWdep0 /vk= hjkvc91ahlsun5l5aaae2u87gu5h41f0.org. 86400 IN NSEC3 1 1 1 D399EAAB HJL9RDF6TES68LJ3OTVU3RJIH7VDPLIN A RRSIG hjkvc91ahlsun5l5aaae2u87gu5h41f0.org. 86400 IN RRSIG NSEC3 7 2 86400 20180708152845 20180617142845 1862 org. C8lCzdaeLN58pjb9LJjLGwr6ZGKDT6n47vTmYy7T5CfsRkiE1U+DcZ+2 Brame+3ugR+L1C9LSJhwTwLSrmNUwIBqYIhBnGOXttNaAowkMHbcPwET ekB7MFn5JrkGEheQPwp+2F9J4/KSBN/dITewKxigArtlrLsk0uF+WbPY UZU= ;; Received 593 bytes from 199.249.112.1#53(a2.org.afilias-nst.info) in 276 ms www.joker.com. 600 IN A 42.62.5.158 etiantian.org. 600 IN NS dns.cnmsn.net. etiantian.org. 600 IN NS dns.bizcn.com. ;; Received 116 bytes from 180.163.194.139#53(dns.bizcn.com) in 51 ms [root@Poppy ~]# nslookup www.joker.com Server: 100.100.2.136 Address: 100.100.2.136#53 Non-authoritative answer: Name: www.joker.com Address: 1.1.1.1

HTTP 協議

http協議,hypertext transfer protocol,超文本傳輸協議,是互聯網中最經常使用的一種網絡協議。http的重要應用之一是www服務。

www,全稱爲world wide web,常稱爲web,萬維網,目前互聯網上最受用戶歡迎的信息服務形式 

ssh nfs rsync
客戶端和服務端 c/s架構,局域網內部用

http協議www應用
瀏覽器和服務端 b/s,廣域網用

HTTP 協議版本

1.0版本比0.9版本的基礎上增長了http請求頭,可支持更多的請求方法,而且能對多媒體對象進行處理。使得包含生動圖片的web頁面和交互式表格成爲可能,而正是這些頁面和表格促使互聯網被人們普遍地接受。規定瀏覽器與服務器只保持短暫的連接,瀏覽器的每次請求都須要與服務器創建一個tcp連接,服務器完成請求處理後即斷開tcp連接
1.1版本修復http設計的缺陷,從擴展性,緩存處理,帶寬優化,持久連接,host頭,錯誤通知,消息傳輸,內容協商等多個方面都作了相關改進。目前,1.1版本是互諒網的主流版本
1.1 版本支持持久連接,在一個tcp連接上能夠傳送多個http請求和響應,減小了創建和關閉連接的消耗和時間延遲
1.1 版本增長了更多的請求頭和響應頭信息,用以加強http功能
1.1 提供了身份認證,狀態管理和cache緩存等機制相關的請求頭和響應頭

HTTP 請求方法

http通訊中,每一個http請求報文都包含一個方法。用以告訴web服務器端須要執行哪些具體的動做

HTTP 狀態碼

狀態碼介紹

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

http響應的狀態碼種類不少,常見的狀態碼以下

http狀態碼的命令行查看

[root@Poppy ~]# curl -I www.baidu.com
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: Keep-Alive
Content-Length: 277
Content-Type: text/html
Date: Thu, 21 Jun 2018 14:34:21 GMT
Etag: "575e1f72-115"
Last-Modified: Mon, 13 Jun 2016 02:50:26 GMT
Pragma: no-cache
Server: bfe/1.0.8.18

HTTP 報文

http報文中有不少行內容,這些行字段都是由一些ascii碼組成 ,分爲請求報文和響應報文

請求報文
由請求行,請求頭部,空行和請求報文主體組成

(1)請求行是請求報文的第一行,用來講明客戶端想要作什麼。內容由請求方法字段,url字段和http協議版本字段組成,它們之間用空格分開

(2)請求頭部由關鍵字/值對組成,每行一對

最經常使用的請求頭是content-type和content-length

(3) 空行

經過發送回車和換行符,通知web服務器空行如下不會有請求頭部信息了

(4)請求報文主體

get請求不會有請求報文主體,psot請求才會有請求報文主體

響應報文

由起始行,響應頭部,空行和響應報文主體這幾個部分組成

(1) 起始行,響應報文的起始行也叫狀態行,用來講明服務器響應客戶端請求的情況。通常啊爲協議及版本號,數字狀態碼,狀態狀況。例如: http/1.1 200 OK

(2) 響應頭部,和請求報文相似,起始行的後面通常有若干個頭部字段每一個頭部字段都包含一個字和一個值,倆者之間用冒號分隔。

(3) 空行,經過發送回車和換行符,通知客戶端空行下文無頭部信息了

(4) 響應報文主體,壯哉了要返回給web客戶端的數據。這些數據能夠是文件,二進制,等

web客戶端發送一條http請求報文,請求http://www.joker.com/index.html資源,請求報文的起始行中有一個get命令,資源名稱爲index.html。使用http1.1協議,因爲請求的方法是get,所以請求報文不須要有請求主體。

web服務器收到請求後,返回一條http響應報文。這條響應報文中包含了http的版本號http1.1成功的狀態碼200,狀態描述ok,以及若干響應頭部字段,在全部這些內容以後跟着包含了所請求資源的響應主體。content-lenght響應主體的長度,content-type文檔的mime類

HTTP 協議原理

http協議屬於osi模型中的第七層應用層協議,重要的應用就是www服務應用。以http協議進行通訊時,須要有客戶端和服務器端,在web客戶端向web服務器端發送請求報文以前,先要經過tcp/ip協議在web客戶端和服務器之間創建一個tcp/ip鏈接

  1. 終端客戶在web瀏覽器地址輸入訪文http://www.joker.com/index.html
  2. web瀏覽器請求dns服務器把域名www.joker.com轉換成web服務器的ip地址
  3. web瀏覽器將端口從訪問地址(URL)中解析出來
  4. web瀏覽器經過解析後的ip地址及端口與web服務器之間創建一條tcp鏈接
  5. 創建tcp鏈接後,web瀏覽器向web服務器發送一條http請求報文
  6. web服務器響應並讀取瀏覽器的請求信息,而後返回一條http響應報文
  7. web服務器關閉http鏈接,關閉tcp鏈接,web瀏覽器顯示訪問的網站內容到屏幕上 

HTTP 資源

媒體資源 

當web服務器響應http請求時,回味每個http對象數據加一個mime類型。當web瀏覽器後去到服務器返回的對象時,會去查看相關的mime類型,並進行響應處理。

mime類型存在於http響應報文的響應頭部信息裏,它是一種文本標記

咱們能夠在nginx的配置文件conf目錄下,查看它支持的媒體類型

[root@Poppy conf]# cat mime.types

types {
    text/html                             html htm shtml;
    text/css                              css;
    text/xml                              xml;
    image/gif                             gif;
    image/jpeg                            jpeg jpg;

URL 介紹

Uniform Resource Location. 統一資源定位符,也被稱爲網頁地址,是因特網上標註的資源惟一地址。是internet上用來描述信息資源的字符串,主要用在各類www客戶端和服務器程序上。

URL 的格式由下列三部分組成

  1. 協議,例如http
  2. 主機資源服務器ip地址或域名,例如www.joker.com
  3. 主機資源的具體地址,如目錄和文件名,例如joker/index.html

URL說明

URI 介紹

Uniform Resource Identifier.統一 資源標識符,是一個用於標識某一互聯網資源名稱的字符串。這個字符串在世界範圍內惟一標識並定位某一個信息資源

URI說明與URL說明同樣,可是URI能夠指向郵箱

URL是URI命名機制的一個子集

靜態網頁資源

介紹:

純粹的HTML格式的網頁,包含圖片,視頻,js,css等一般被稱爲「靜態網頁」,靜態網頁是相對於動態網頁而言的,指沒有後臺數據庫,不含程序,如php,jsp,asp,不可交互的網頁

特色:

開發者編寫的是什麼,它顯示的就是什麼。靜態網頁維護和更新相對比較麻煩,每一個不一樣的網頁都須要單獨編輯更新,因此,靜態網頁適用於更新較少的宣傳展現型網站

常見擴展名爲:

  • 純文件類程序或文件,如htm,html,xml,js,css
  • 圖片文件或者數據文檔,如jpg,gif,png,bmp,ppt,doc,txt
  • 視頻類流媒體文件,如mp4,swf,avi,wmv,flv

幾個重要的特徵:

  1. 每一個頁面都有一個固定的url地址,且url通常以htm,html,等常見形式爲後綴,並且地址中不包含有問好?或&等特殊符號
  2. 網頁內容一經發布到網站服務器上,不管是否有用戶訪問,每一個網頁的內容都是保存在網站服務器文件系統上的,也就是說,靜態網頁實實在在保存在服務器上的文件實體,每一個網頁都是一個獨立的文件
  3. 網頁內容是固定不變的,所以,容易被搜索引擎收錄(優勢)
  4. 網站製做和維護方面的工做量較大,當網站信息量很大時,徹底依靠靜態網頁比較困難(缺點)
  5. 網頁的交互性差,程序的功能實現方面有較大的限制(缺點)
  6. 網頁程序在用戶瀏覽器解析,解析率很高,因爲服務器端不進行解析,而且不須要讀取數據庫,所以服務器端能夠接受更多的併發訪問。客戶端向服務器請求數據時,服務器會直接從磁盤文件系統上返回數據,不作任何解析,待客戶端拿到數據後,在瀏覽器端解析並展示出來(優勢) 

靜態網頁語言:

常見的靜態語言有html,js,css,xml等

核心特色:

  1. 客戶瀏覽器端解析程序
  2. 不須要讀取數據庫,性能和效率很高
  3. 後端沒有數據庫支持,和用戶的交互性差,功能實現不好

靜態網頁的架構思想

在高併發,高訪問量的場景下作架構優化,涉及的關鍵環節就是把動態網頁轉成靜態網頁,而不是直接請求數據庫和動態服務器,而且能夠把靜態內容推送到前端緩存中提供服務,可提高用戶體檢,節約服務器和維護成本

動態網頁資源

介紹:

動態網頁是與靜態網頁相對而言的,動態網頁的URL後綴不是.htm,html,xml,js,css等靜態網頁的常見擴展名形式,而是.asp,.aspx,.php,js,do,cgi等形式的,而且通常在動態網頁網址中會有標誌性的符號--"?","&",此外,還須要後端數據庫支持

特色:

  1. 網頁擴展名後綴常爲 asp,aspx,php,jsp,do
  2. 網頁通常以數據庫技術爲基礎,大大下降了網站維護的工做量
  3. 採用動態網頁技術的網站能夠實現更多的功能,如用戶註冊,用戶登陸,在線調查,投票,用戶管理,訂單管理,發博文
  4. 動態網頁並非獨立存在於服務器上的網頁文件,當用戶請求服務器上的動態程序時,服務器解析這些程序並可能經過讀取數據庫來返回一個完整的網頁內容
  5. 動態網頁中的「?」在搜索引擎的收錄方面存在必定的問題,搜索引擎通常不會從一個網站的數據庫中訪問所有網頁,或者出於技術等方面的考慮,搜索引擎通常不會抓取網址中「?」後面的內容,所以在企業經過搜索引擎進行推廣時,須要針對採用動態網頁的網站作必定的技術處理(僞靜態技術),以便適應搜索引擎的抓取要求

程序在服務器端解析,會消耗大量的cpu和內存,i/o等資源,而且多數還要提供讀取數據庫等服務,所以,其訪問效率遠不如靜態網頁,在服務器端解析動態程序的服務常見有php,java容器

動態網頁的架構思想

靜態網頁的性能效率是動態網頁的10-30倍,且動態網站效率不好,併發能力也很低,在高併發場景中,應儘量轉換成靜態網頁提供服務。動態轉靜態幾乎是全部高併發網站必備的架構方案思路

僞靜態網頁

僞靜態就是經過某些技術把動態網頁的URL地址假裝成靜態網頁URL地址,但實質上用戶訪問的仍是動態網頁,只不過看起來符合靜態網頁地址特徵,所以,用戶及搜索引擎會誤覺得是靜態網頁

特色:

從網站的RUL地址看,僞靜態表面上看起來是靜態內容,但這實際上是經過rewrite規則實現的URL地址重寫。改寫後的URL地址規範,美觀,有利於搜索引擎抓取,以及提高用戶訪問體驗。

做用:

把動態網頁URL改寫成靜態網頁的URL,雖然消除了動態網頁中的參數,可是並不須要生成任何網頁,僅僅是改變了網頁地址路徑。這樣作的主要目的是,一是讓搜索引擎收錄網站內容,讓更多的用戶訪問企業網站內容,二是提高用戶訪問體驗,動態地址帶特殊符號等的URL看起來也不如靜態網頁地址舒服

小結:

  • 利用rewrite技術將動態網頁假裝成靜態網頁
  • 便於嗖嗖引擎搜尋,提高用戶訪問量及用戶體驗
  • 訪問性能沒有提高,而且轉換成僞靜態會消耗資源,所以性能反而會降低
  • 儘量的將動態網頁轉換成真正的靜態頁面

網站流量度量術語

ip

獨立ip,即Internet Protocol,獨立ip數是指不一樣的IP地址的計算機訪問網站時被計的總次數。

公司,學校,家裏通常都是nat上網,屬於一個獨立ip,可是若是是ADSL撥號上網,撥號了三次,每次都訪問網站,那麼計做三次訪問,由於ip每次不同,都是獨立的

pv

訪問量,即Page View,頁面流浪,無論客戶端是否是相同,也無論ip是否是相同,用戶只要訪問網站頁面就會被計算pv,一次頁面計一個pv

pv的具體度量方法是從客戶端瀏覽器發出一個對web服務器的請求,web服務器接到這個請求後,將該請求對應的網頁發送給瀏覽器,這樣就產生了一個pv。只要這個該請求對應的網頁發送給了瀏覽器,不管這個頁面是否徹底打開,都會被計數,通常爲了防止用戶快速刷pv,不少網站會把pv的統計程序放在頁面的最下面

用pv衡量網站時,pv數反映出來的是瀏覽某網站的頁面數量,沒刷新一次頁面也算一次pv。所以能夠說pv數與來訪用戶的數量成正比,但pv數並非真正的頁面來訪者數量,而是網站被訪問的頁面數量。由於一個來訪者可能產生多個pv

uv

獨立訪客,即Unique Visitor,同一個客戶端訪問網站被計爲一個訪客。一天內相同的客戶端訪問同一個網站只計一次uv。uv通常是以cookie等計數做爲統計數據的

併發連接 

所謂的併發就是單位時間內,服務器可以同時處理的最大鏈接數,由於有的請求1秒結束,有的請求可能10秒才結束,所以,網站併發不是客戶端每秒的併發請求數,而是服務器在一段時間內能夠處理的最大鏈接數,這個鏈接既包含正在創立的鏈接,也包含已經創建的鏈接。

咱們去餐館吃飯,餐館一共有10張桌子,每張桌最多坐4我的同時吃飯,通常來講,這個餐館可以接收的併發吃飯人數爲10*4,即40個併發,這裏就是沒有考慮時間問題,1秒併發能夠是40個,20分鐘也能夠是40個,由於第一秒能夠是40我的同時進來,可是第二秒就無人可進了,滿員了,若是說10分鐘併發是40個,下一個10分鐘仍是40個,第三個10分鐘還能夠是40個

其餘服務併發鏈接

QPS Query Per Second,每秒查詢率

用於衡量一個特定的查詢服務器在規定時間內所處理流量多少的標準,DNS系統及數據庫等服務的查詢性能常常用QPS來衡量

IOPS Input/Output Operations Per Second,每秒進行讀寫(i/o)操做次數

多用於數據庫,衡量隨機訪問性能。存儲端的IOPS性能和主機端的i/o是不一樣的,IOPS是指存儲每秒可接受多少次主機發出的訪問,主機的一次i/o須要多少次訪問存儲才能夠完成。例如,主機寫入一個最小的數據塊,也要通過發送寫入請求,寫入數據,收到寫入確認三個步驟,也就是3個存儲端訪問

相關文章
相關標籤/搜索