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主機上):
1> 査看windows用戶端本地緩存的DNS解析記錄的指令如下。
c:\>ipconfig /displaydns <-意思是display the contents of the DNS Resolver
(顯示DNS CACHE内容),"/displaydns"前面有空格
2> 清除windows用戶端本地緩存的DNS解析記錄的指令如下。
c:\>ipconfig /flushdns <-意思為Purges the DNS Resolver cache"
(清除DNS CACHE内容),"/displaydns"前面有空格
3> windows系統下hosts域名解析記錄的位置如下。
c:\Windows\system32\drivers\etc\hosts
nscd bind dnsmasq
HTTP協定,全稱HyperText Transfer Protocol,中文名為超文本傳輸協定,是網際網路中最常用的一種網絡協定。 HTTP的重要應用之一是 WWW服務。設計 HTTP協定最初的目的就是提供一種釋出和接收HTML (一種頁面标記語言)頁面的方法。
HTTP協定是網際網路上常用的通信協定之一。它有很多的應用,但最流行的就是用于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
請求伺服器将指定的頁面移至另一個網絡位址。

請求頭内容
說明
Host
接受請求的伺服器位址,可以是IP:端口号,也可以是域名
User-Agent
發送請求的應用程式名稱
Connection
指定與連接配接相關的屬性,如Connection:Keep-Alive
Accept-Charset
通知服務端可以發送的編碼格式
Accept-Encoding
通知服務端可以發送的資料壓縮格式
響應頭
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.etiantian.org|awk 'NR==1{print $2}'
curl -I -s www.etiantian.org |awk 'NR==1{print $2}'
curl -I -s -w %{http_code} www.etiantian.org
curl -I -s -w %{http_code} -o /dev/null www.etiantian.org
curl -I -s -w "%{http_code}\n" -o /dev/null www.etiantian.org
curl -s -w "%{http_code}\n" -o /dev/null www.etiantian.org
curl -I -s www.etiantian.org|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,中文翻譯為統一資源辨別符
例如
網址: 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、.mp4、.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.通路的效率比較低
04.不便于被搜尋引擎收錄
将動态頁面僞裝成靜态頁面,便于被搜尋引擎收錄
将動态頁面轉換為靜态頁面的方式(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.oldboyedu.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 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
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
百台
所有的協定,都是為軟體提供服務的
利用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
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 方法可以送出主體)