a 進行域名信息的DNS解析 dig +trace 得到www.oldboyedu.com ip地址信息 b 進行與網站服務器創建鏈接,tcp三次握手過程 (syn ack SEQ ACK/狀態轉換 closed listen syn_sent syn_rcvd established ) c 和網站服務器數據傳輸過程(http協議原理過程-http請求過程) 查看方法curl -v/wget --debug d 和網站服務器數據傳輸過程(http協議原理過程-http響應過程) e 進行與網站服務器斷開鏈接,tcp四次揮手過程 (fin ack SEQ ACK/狀態轉換 fin_wait1 fin_wait2 close_wait last_ack time_wait closing )
01. 查看本地主機緩存和hosts文件有沒有域名與IP對應記錄 02. 本地主機向local DNS服務器(網卡上指定配置的DNS服務器)發出請求(遞歸查詢) 03. LOCAL DNS服務器接收到客戶端主機請求,查詢本地緩存信息 04. LOCAL DNS服務向根域名服務器請求,向頂級域名服務器請求,向二級域名服務器請求(迭代查詢) 05. 獲取到域名與IP地址的對應關係,是經過受權DNS服務中獲取獲得(獲得的信息稱爲A記錄) LOCAL DNS服務進行緩存A記錄信息,將A記錄信息發送給客戶端主機 06. 客戶端主機接收到A記錄信息,進行本地緩存,根據A記錄中記錄IP地址信息,進行網絡訪問
査看有關DNS信息方法(windows主機上):php
1> 査看windows客戶端本地緩存的DNS解析記錄的命令以下。css
c:\>ipconfig /displaydns <-意思是display the contents of the DNS Resolver (顯示DNS CACHE內容),"/displaydns"前面有空格
2> 清除windows客戶端本地緩存的DNS解析記錄的命令以下。html
c:\>ipconfig /flushdns <-意思爲Purges the DNS Resolver cache" (清除DNS CACHE內容),"/displaydns"前面有空格
3> windows系統下hosts域名解析記錄的位置以下。前端
c:\Windows\system32\drivers\etc\hosts
nscd bind dnsmasq
關於BIND服務的使用能夠參照:http://www.cnblogs.com/clsn/p/8424274.htmllinux
HTTP協議,全稱HyperText Transfer Protocol,中文名爲超文本傳輸協議,是互聯網中最經常使用的一種網絡協議。 HTTP的重要應用之一是 WWW服務。設計 HTTP協議最初的目的就是提供一種發佈和接收HTML (一種頁面標記語言)頁面的方法。nginx
HTTP協議是互聯網上經常使用的通訊協議之一。它有不少的應用,但最流行的就是用於Web瀏覽web
器和Web服務器之間的通訊,即WWW應用或稱Web應用。面試
www ,全稱World Wide Web ,常稱爲Web ,中文譯爲"萬維網:它是目前互聯網上最受用戶歡迎的信息服務形式。 HTTP協議的 WWW服務應用的默認端口爲80,另一個加密的WWW服務應用https的默認端口爲443,主要用於網銀、支付等和錢相關的業務。當今,HTTP服務、WWW服務、Web服務三者的概念已經混淆了,都是指當下最多見的網站服務應用。正則表達式
HTTP/1.0 規定瀏覽器和服務器只保持短暫的鏈接(TCP短連接)數據庫
HTTP/1.1 支持持久鏈接,在一個TCP鏈接上能夠傳送多個HTTP請求和響應,減小了創建和關閉鏈接的消耗和時間延遲(TCP長鏈接)
再linux系統中參看報文的方法
curl -v ---顯示訪問域名請求報文與響應報文信息
curl www.baidu.com -v
> 表示http請求報文 <表示http的響應報文
wget --debug www.baidu.com
HTTP方法 |
做用描述 |
GET |
客戶端請求指定資源信悤,服務器返回指定資源 |
HEAD |
只請求響應報文中的 HTTP首部 |
POST |
將客戶端的數據提交到服務器,例:註冊表單 |
PUT |
用從客戶端向服務器傳送的數據取代指定的文檔內容。 |
DELETE |
請求服務器刪除 Request-URI所表示的資源。 |
MOVE |
請求服務器將指定的頁面移至另外一個網絡地址。 |
HTTP請求報文格式 |
||
請求報文格式 |
報文信息 |
說明 |
請求行 |
GET / HTTP/1.1 |
請求的起始行(請求什麼信息;協議版本) |
請求頭 |
User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 Host: www.baidu.com Accept: */* |
請求的頭部信息(客戶端有關信息說明) |
空行 |
|
空行信息(隔離上下文,說明請求結束) |
請求報文主體 |
|
請求主體內容(只有POST 方法能夠提交主體) |
請求頭內容 |
說明 |
Host |
接受請求的服務器地址,能夠是IP:端口號,也能夠是域名 |
User-Agent |
發送請求的應用程序名稱 |
Connection |
指定與鏈接相關的屬性,如Connection:Keep-Alive |
Accept-Charset |
通知服務端能夠發送的編碼格式 |
Accept-Encoding |
通知服務端能夠發送的數據壓縮格式 |
HTTP響應報文格式 |
||
請求報文格式 |
報文信息 |
說明 |
起始行(響應行) |
HTTP/1.1 200 OK |
響應的起始行(響應狀態碼 狀態信息) |
響應頭部 |
Server: bfe/1.0.8.18 Date: Mon, 23 Oct 2017 02:50:36 GMT Content-Type: text/html Content-Length: 2381 Last-Modified: Mon, 23 Jan 2017 13:27:32 GMT Connection: Keep-Alive ETag: "588604c4-94d" Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform Pragma: no-cache Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/ Accept-Ranges: bytes |
響應的頭部信息(服務器有關信息介紹) |
空行 |
|
空行信息(隔離上下文,說明響應頭部結束) |
響應報文主體 |
<!DOCTYPE html> …… |
響應主體的內容(請求後進行響應的返回的內容 信息) |
響應頭 |
說明 |
Server |
服務器應用程序軟件的名稱和版本 |
Content-Type |
響應正文的類型(是圖片仍是二進制字符串) |
Content-Length |
響應正文長度 |
Content-Charset |
響應正文使用的編碼 |
Content-Encoding |
響應正文使用的數據壓縮格式 |
Content-Language |
響應正文使用的語言 |
HTTP狀態碼(HTTP Status Code )是用來表示Web服務器響應HTTP請求狀態的數字代碼。每當Web客戶端向Web服務器發送一個HTTP請求時,Web服務器都會返回一個狀態響應代碼。這個狀態碼是一個三位數字代碼,做用是告知Web客戶端這次請求是否成功,或者是否要採起其餘的動做方式。
curl -v www.oldboyedu.org ---能夠獲取狀態碼信息
******************************************************************** 擴展命令說明:經過curl命令只獲取狀態碼信息 curl -I www.nmtui.com|awk 'NR==1{print $2}' curl -I -s www.nmtui.com |awk 'NR==1{print $2}' curl -I -s -w %{http_code} www.nmtui.com curl -I -s -w %{http_code} -o /dev/null www.nmtui.com curl -I -s -w "%{http_code}\n" -o /dev/null www.nmtui.com curl -s -w "%{http_code}\n" -o /dev/null www.nmtui.com curl -I -s www.nmtui.com|head -1 curl -I 10.0.0.7 2>/dev/null|head -1 ********************************************************************
狀態碼範圍 |
做用描述 |
100 - 199 |
用於指定客戶端相應的某些動做 |
200 - 299 |
用於表示請求成功 |
300 - 399 |
用於己經移動的文件,而且常被包含在定位頭信息中指定新的地址系信息 |
400 - 499 |
用於指出客戶端的錯誤 |
500 - 599 |
用於指出服務端的錯誤 |
代碼 |
代碼說明 |
301 Moved Permanently(永久跳轉) |
請求的網頁已永久跳轉到新位置 |
403 Forbidden(禁止訪問) |
服務器拒絕請求 |
404 - Not Found, |
服務器找不到請求的頁面 |
500 |
內部服務器錯誤 |
502 |
壞的網關,通常是網關服務器請求後端服務時,後端服務沒有按照http協議正確返回結果 |
503 - Service Unavailable (服務當前不可用) |
可能由於超載或停機維護 |
504 - Gateway Timeout (網關超時) |
通常是網關服務器請求後端服務時,後端服務沒有在特定的時間內完成服務。 |
互聯網上的數據有不少不一樣的類型,Web服務器會把經過Web傳輸的每一個對象都打上MIME類型(即MIME type)的數據格式標籤。最初設計MIME(Multipurpose Internet Mall Extension,多用途因特網郵件擴展)是爲了解決在不一樣的電子郵件系統之間搬移報文時存在的問題.MIME在電子郵件系統中工做得很是好。後來,HTTP也支持了這個功能,用它來描述數據並標記不一樣的數據內容類型。
當Web服務器響應HTTP謫求時,會爲每個HTTP對象數據加一個MIME類型,當Web瀏覽器獲取到服務器返回的對象時,會去査看相關的MIME類型,並進行相應處理。
MIME類型存在與HTTP響應報文的響應頭部信患裏,它是一種文本標記,表示一種主要的對象類型和一個特定的子類型,中間由一條斜槓來分割。
web服務能夠處理的資源類型,根據擴展名進行識別(html css mp4)
url:URL,全稱爲Uniform Resource Location,中文翻譯爲統一資源定位符
uri:URI,全稱爲Uniform Resource Identifier,中文翻譯爲統一資源標識符
URN:統一資源名稱 (Uniform Resource Name, URN),是URI兩種形式之一。
QPS: 每秒鐘處理完請求的次數;注意這裏是處理完。具體是指發出請求到服務器處理完成功返回結果。能夠理解在server中有個counter,每處理一個請求加1,1秒後counter=QPS。 TPS:每秒鐘處理完的事務次數,通常TPS是對整個系統來說的。一個應用系統1s能完成多少事務處理,一個事務在分佈式處理中,可能會對應多個請求,對於衡量單個接口服務的處理能力,用QPS比較多。 併發量:系統能同時處理的請求數 RT:響應時間,處理一次請求所須要的平均處理時間 計算關係: QPS = 併發量 / 平均響應時間 併發量 = QPS * 平均響應時間
例如
網址: 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的方式和上面說明一致
靜態網頁資源
動態網頁資源
僞靜態網頁資源
請求響應信息,發給客戶端進行處理,由瀏覽器進行解析,顯示的頁面稱爲靜態頁面
在網站設計中,純粹HTML格式的網頁(能夠包含圖片、視頻JS (前端功能實現)、CSS (樣式)等)一般被稱爲"靜態網頁"
靜態頁面資源特徵
01. 處理文件類型:如.html、jpg、.gif、.mp四、.swf、.avi、.wmv、.flv等-
02. 地址中不含有問號"?"或&等特殊符號。
03. 保存在網站服務器文件系統上的,是實實在在保存在服務器上的文件實體
04. 網頁內容是固定不變的,所以,容易被搜索引擎收錄
05. 網頁頁面交互性交差,由於不能與數據庫配合
06. 網頁程序在用戶瀏覽器端解析,當客戶端向服務器請求數據時,服務器會直接從磁盤文件系統上返回數據(不作任何解析)
優點:
01. 訪問的效率比較高
02. 網頁內容是固定不變的,所以,容易被搜索引擎收錄
03. 網頁程序在用戶瀏覽器端解析,當客戶端向服務器請求數據時,服務器會直接從磁盤文件系統上返回數據(不作任何解析)
劣勢:
01. 網頁頁面交互性交差,由於不能與數據庫配合
02. 保存在網站服務器文件系統上的,是實實在在保存在服務器上的文件實體
所謂的動態網頁是與靜態網頁相對而言的,也就是說,動態網頁的URL後綴不是.html .htm、.xml、.shtml、.js css 等靜態網頁的常見擴展名形式,而是.asp、.aspx、.php、.js、.do、.cgi等形式
請求響應信息,發給屎務端進行處理,由服務端處理完成,將信息返回給客戶端,生成的頁面稱爲動態頁面
動態網頁資源特色
01. 網覓擴展名後綴常見爲:.asp、.aspx、.php、.js、.do、.cgi
02. 網頁頁面交互性強,能夠與數據庫配合
03. 地址中含有問號"?"或 & 等特殊符號
04. 不便於被搜索引擎收錄
優點:
01.客戶端與服務端交互能力強
劣勢:
01.訪問的效率比較低
02.不便於被搜索引擎收錄
將動態頁面假裝成靜態頁面,便於被搜索引擎收錄
將動態頁面轉換爲靜態頁面的方式(rewrite 正則表達式)
將動態頁面內容轉換爲靜態頁面,去掉動態頁面uri地址中的? &字符,假裝成靜態頁面uri信息
動態轉靜態(開發來配合完成)
獨立IP數是指不一樣IP地址的計算機訪問網站時被計算的總次數
在一個局域網內多個主機進行訪問相同的網站地址時,獨立IP數記爲多少?
通常一天內(00:00-24:00)相同IP地址的客戶端訪問網站頁面只會被計一次
記錄獨立IP的時間可爲一天或一個月,目前通用的標準爲"一天"。
頁面瀏覽量或點擊量
根據http請求報文:瀏覽器版本,OS
根據http響應報文:cookie(id)
cookie(id) 將服務端的信息保存到客戶端
session 將客戶端信息保存到服務器
cookie 存放在瀏覽器緩存中---瀏覽器進行查看(谷歌)
【設置裏面】---【顯示高級設置】---【隱私設置】---【內容設置】---【全部cookie和內容設置】
PS:cookie的格式信息是由開發人員進行定義,因此不一樣的網站所生成的cookie信息內容不太一致
cookie 數據存放在客戶的瀏覽器上
cookie 不是很安全,別人能夠分析存放在本地的COOKIE並進行COOKIE欺騙
cookie 不佔用服務器端資源,提高了服務器性能
cookie 保存的數據不能超過4K,不少瀏覽器都限制一個站點最多保存20個cookie。
session 存放在服務器的內存中
session 數據放在服務器上
session 從數據庫的安全應用方面會更安全些
session 會在必定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能
將登錄信息等重要信息存放爲SESSION
其餘信息若是須要保留,能夠放在COOKIE中
1)利用awk或者相應統計命令,進行分析訪問日誌信息進行統計
2)在網站訪問頁面中嵌入統計程序代碼(頁面結尾處),只有所有網頁加載完畢後,才進行數據統計
[root@tx ~]# curl -s www.nmtui.com|grep "hm.baidu" --color -C5 </script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?9aa800f882f575237396648643111698"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <script src="https://s95.cnzz.com/z_stat.php?id=1261663735&web_id=1261663735" language="JavaScript"></script>
說明:利用hm.baidu.com在頁面curl時會出現,利用百度進行統計PV IP信息
利用第三方公認的統計工具進行統計,例如:百度統計工具 hm.baidu.com
經過客戶端HTTP請求報文分析
經過Cookie信息鑑別統計
網頁信息統計軟件-piwik pwiki統計工具:(https://piwik.org/) pwiki演示頁面:https://piwik.org/demo
ELK軟件介紹說明 http://blog.oldboyedu.com/elk/
A種理解:網站服務器每秒可以接收的最大用戶請求數。
B種理解:網站服務器每秒可以響應的最大用戶請求數。
C種理解:網站服務器在單位時間內可以處理的最大鏈接數。(推薦)
ss -lntup|grep 80 netstat -lntup|grep 80
飯店吃飯/酒店住宿舉例
咱們去餐館吃飯(如圖6-6所示),餐館裏一共有10張卓,每張桌最多坐4我的同時吃飯,那麼按通常人的理解,這個餐館可以接收的併發吃飯人數爲10M ,即40個併發,其實這裏就沒有考慮時間問題,1秒併發能夠是40個,10分鐘內併發也是40個。由於這裏還有一個因素,就是每一個人吃飯時長的問題,若是平均每一個人10分鐘吃完,那麼能夠說10分鐘內,這個餐館的併發爲40個,而不是每秒鐘併發40個,由於,第一秒能夠是40我的同時進來,可是第二秒就無人可進了(滿員了),若是說10分鐘併發是40個,下一個10分鐘仍是40個,第三個10分鐘還能夠是40個。即網站服務器在單位時間內可以處理的最大鏈接數。
高速公路通車舉例說明
高速公路每一個方向都有兩條車道,那麼,同一時刻併發的車輛爲兩輛,而且併發能夠永遠爲2 ,若是按秒計算,每秒的併發可能就有十幾輛,這個例子和餐館不一樣,由於高速路處理併發不須要處理時間。可是對於Web服務器來說,是須要花費時間處理請求的,這個請求多是1秒或數秒,所以說,併發不該該只是用戶訪問的請求數,而應是服務器同時處理的併發數,而且單位時間不必定是1秒,多是一個鏈接處理週期內的鏈接數。
netstat -an|grep -i 「est」|wc -l ss -ant|grep -ic est
說明: 在 nginx web服務中相應的軟件模塊進行統計
例如:某網站的併發是5000。意味着單位時間內(理解爲1秒或數秒內),正在處理的鏈接數,正在創建的鏈接數,加起來一共是5000個。
下面是國外學者對網站併發數的計算公式及參考說明:
Request Per Second + Simultaneous Browser connections + Thinking Time = Concurrent User
其中:
Concurrent User 表示網併發用戶總數一
Request Per Second[RPS]表示每秒請求數(吞吐量
Simultaneous Browser connections[SBC]表示併發瀏覽鏈接數。
Thinking Time表示平均用戶思考時間。
常見的面試題以下:
1)請問你如何理解網站併發?
2)大家公司網站訪問量是多少?是怎麼計算的?
—定要理解IP、PV、併發量這3個點的知識,在回答時纔能有的放矢,這三個點的多少決定面試時說多大的架構,對於沒有經驗的新手不能在介紹有幾萬PV的同時描述數十臺的集羣架構,這樣就尷尬了。
關於網站訪問指標的計算,能夠考慮:
運維部門的日誌分析。
開發在頁面嵌入的JS程序(用於統計、收集、分析)。
運營市場經過第三方公司提供的工具進行統計,例如GA統計。
網站 |
獨立IP萬/曰 |
PV數萬/日 |
網站併發級別 |
機器數量 |
www.51cto.com |
582'000 |
1'338,600 |
10000 |
數十臺 |
www.ganji.com |
1’734'000 |
13,872,000 |
10000-30000 |
幾百臺 |
www.58.com |
1398'000 |
22,927,200 |
10000-30000 |
幾百臺 |
www.weibo.com |
30’180'000 |
166'593’600 |
幾十萬 |
千臺 |
www.taobao.com |
46,620'000 |
489,510,000 |
幾十萬~百萬 |
萬臺 |
www.jd.com |
6'08'000 |
98,949,600 |
數萬 |
千臺 |
www.163.com |
10'320'000 |
79,154,000 |
十萬 |
千臺 |
www.suning.com |
623,250 |
3,365,550 |
10000-30000 |
百臺 |
全部的協議,都是爲軟件提供服務的
利用HTTP協議的軟件,稱爲www服務軟件或者web服務軟件
Apache:這是中小型Web服務的主流,Web服務器中的老大哥。
Nginx:大型網站Web服務的主流,曾經Web服務器中的初生牛犢,現已長大。
Nginx的分支Tengine(http://tengine.taobao.org/)目前也在飛速發展。
Lighttpd:這是一個不溫不火的優秀Web軟件,社區不活躍,靜態解析效率很高。
在Nginx流行前,它是大併發靜態業務的首選,
國內百度貼吧、豆瓣等衆多網站都有Lighttpd奮鬥的身影。
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)
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