一、用戶訪問網站的流程圖
二、DNS解析的流程圖
三、用戶訪問網站的基本流程原理闡述
① 用戶在瀏覽器中輸入請求的地址回車
② 先找本地的緩存和Hosts文件,有解析的對應IP直接返回個客戶端IP地址
③ 本地和hosts都沒有找網卡配置的LDNS緩存,有解析的對應IP直接返回個客戶端IP地址
④ LDNS緩存沒有找DNS服務器(包括根域,頂級域),有解析的對應IP直接返回個客戶端IP地址
⑤ 客戶端拿到IP請求網站服務器這里面包含(TCP連接三次捂手,http請求連接)
⑥ 網站服務器返回內容給客戶端這里面包含(http響應報文,TCP四次揮手)
四、DNS解析的原理闡述
① 用戶在瀏覽器中輸入請求的地址回車
② 先找本地的緩存和Hosts文件,有解析的對應IP直接返回個客戶端IP地址
③ 本地和hosts都沒有找網卡配置的LDNS緩存,有解析的對應IP直接返回個客戶端IP地址
④ LDNS緩存沒有 找DNS根服務器(13台,根服務器會有自己的調度算法應答,根服務器沒有整個域名的解析結記錄,只有頂級域的域名org/com等)
⑤ 因為根服務器沒有整個域名解析的記錄只有頂級域的,所有他會告訴LDNS去找頂級域 .org的服務器,這樣LDNS就拿到了org的地址
⑥ 因為客戶要的是整個的域名解析地址,所以還要請求頂級域的下一級的服務器,頂級域會把下一級的DNS服務器地址給LDNS
⑦ LDNS會拿着這個地址請求 zhujingzhi域名的授權DNS,這個DNS域名服務商做好解析的服務器(這台服務器上肯定有設置好的www的解析記錄,不然是不能訪問的)
⑧ LDNS會拿到這個解析的IP返回給客戶端,並且會在本地緩存寫入一份,客戶端也會在本地的緩存存一份
五、什么是HTTP協議與WWW服務
① HTTP協議,全稱HyperText Transfer Protocol,中文名字叫超文本傳輸協議,是互聯網中最常用的一種網絡協議。它有很多的應用,但是最流行的就是用於Web瀏覽器和Web服務器之間的通訊,即WWW應用或Web應用
② WWW,全稱World Wide Web,常稱為Web,中文名字萬維網,它是目前互聯網最受歡迎的信息服務形式。HTTP協議的WWW服務應用默認的端口是80,另外還有一個加密的WWW服務應用https 默認端口是443,主要用於和錢有關的業務
PS:http協議的www應用是B/S架構(瀏覽器和服務端通訊,擅長廣域網) ssh、rsync等都是C/S架構的(客戶端和服務端通訊,擅長局域網)
六、HTTP協議的請求方法
在每個HTTP通訊中,每個HTTP請求報文都會包含一個請求的方法,告訴服務端要做什么操作
常用的HTTP請求方法
HTTP方法 | 作用描述 |
GET | 客戶端請求指定資源信息,服務器返回指定資源 |
HEAD | 只請求響應報文中的HTTP首部 |
POST | 將客戶端的數據提交到服務器 |
PUT | 從客戶端向服務器傳送的數據取代指定的文檔內容 |
DELETE | 請求服務器刪除Request-URL所標識的資源 |
MOVE | 請求服務器將指定的頁面移至另一個網絡地址 |
七、HTTP協議的狀態碼
HTTP狀態碼(HTTP Status Code)是用來表示Web服務器響應http請求狀態的數字代碼
不同范圍的狀態碼及作用
狀態碼范圍 | 作用描述 |
100-199 | 用於指定客戶端相應的某些動作 |
200-299 | 用於表示請求成功 |
300-399 | 用於已經移動的文件並且常被包含在定位頭信息中指定新的地址信息 |
400-499 | 用於指出客戶端的錯誤 |
500-599 | 用於指出服務端的錯誤 |
生產環境常用狀態碼及作用
狀態代碼 | 詳細描述說明 |
200 - OK | 服務器成功返回網頁 |
301 - Moved Permanently | 永久跳轉,所有請求的網頁將永久跳轉到被設定好的新位置 |
403 - Forbidden | 禁止訪問,這個請求是合法的,但是服務器做了設置沒有權限訪問該網頁 |
404 - Not Found | 服務器找不到客戶端請求的指定頁面,可能是客戶端請求的資源缺失導致的 |
500 - Internal Server Error | 內部服務器錯誤,服務器遇到了意料不到的錯誤,不能完成客戶端請求 |
502 - Bad Gateway | 壞的網關,一般是代理服務器請求后端服務時,后端服務不可用,一般為反向代理服務器下面的節點導致的問題 |
503 - Server Unavailable | 服務當前不可用,因為服務器超載或者停機維護,或者反向代理服務器后面沒有可以提供服務的節點 |
504 - Gateway TimeOut | 網關超時,一般是網關代理服務器請求后端服務時,后端服務沒有在特定的時間內完成處理 |
八、HTTP報文(數據包)請求報文和響應報文
① 請求報文(Request Message)
HTTP請求報文是由請求行,請求的頭部(header)、空行和請求報文主體幾部分組成
HTTP請求報文內部說明
報文格式 | 報文信息 |
請求行 | 請求方法和URL協議版本(GET /index.html HTTP/1.1) |
請求頭 | 字段名1:值1(Accept-Language:zh-cn) |
空行 | 空白無內容(表示請求頭部的信息結束了) |
請求報文主體 | GET方法沒有請求報文主體,Post方法才有 |
② 響應報文(Reponse Message)
HTTP響應報文是由起始行、響應頭部(header)、空行和響應報文主體幾部分組成,和HTTP請求報文類似
HTTP響應報文內部說明
報文格式 | 報文信息 |
起始行 | 協議及版本號 數字狀態碼 狀態信息(HTTP/1.1 200 OK) |
響應頭部 | 字段1:值1(Content-Length:78) |
空行 | 空白無內容(表示請求頭部的信息結束了) |
響應報文主體 | <html> <head><title>zhujingzhi</title></head> <body> I am zhujingzhi </body> </html> |
請求報文和響應報文應答原理圖
九、HTTP協議請求的具體工作流程
① 客戶在瀏覽器輸入要訪問的地址
② Web瀏覽器請求DNS服務器把域名解析成IP(這個就是DNS的解析原理)
③ Web瀏覽器將端口號 80 從訪問地址中解析出來
④ Web瀏覽器通過解析后的IP和端口與Web服務器之間建立一條TCP連接(TCP3次捂手)
⑤ 建立TCP連接后,Web瀏覽器向Web服務器發送一條HTTP請求報文
⑥ Web服務器響應並讀取瀏覽器的請求信息,然后返回一條HTTP的響應報文
⑦ Web服務器關閉http連接,關閉TCP連接(TCP四次揮手),web瀏覽器顯示內容
十、靜態網頁
核心特點
① 程序在客戶端瀏覽器解析,不需要讀取后端的數據庫,因此性能和效率很高
② 因為沒有后端數據庫的支持,所以和用戶的交互性較差,能實現的功能很少
③ 網頁內容不變,容易被搜索引擎收錄
④ 在URL中一般不會出現“?”和“&”符號
靜態網頁的架構思想
在高並發,高訪問量的場景下做架構優化,涉及的關鍵環節就是把動態網頁轉換成靜態網頁,而不直接請求數據庫和動態服務器,並且可以把靜態內容推送到前端緩存或者CDN中提供服務,這樣就可以提升用戶的體驗,節約服務器和維護成本。
十一、動態網頁
核心特點
① 在URL中一定會出現“?”和“&”符號,因為有這些符號所以不容易被搜索引擎收錄(這就是關於搜索引擎的蜘蛛原理了)
② 網頁一般以數據庫技術為基礎,大大降低了網站的維護工作
③ 用戶交互性好,實現的功能比較多 如:注冊、登錄等
④ 程序在服務端解析,因此,會消耗大量的CPU和內存、I/O資源,並且多數還要讀取數據庫服務
動態網頁的架構思想
一般來說,靜態網頁的性能效率是動態網頁的10~30倍,且動態網頁的效率很差,並發能力較低,在高並發場景中,應盡可能的轉換成靜態網頁,動靜轉換幾乎是所以高並發網站必備的架構思想,此外動態轉靜態也要根據業務需求設計,例如,對於更新頻繁的網站如果設計不好,就有可能會產生數據不一致的情況,即用戶看到的不是最新的內容,而是靜態的內容
十二、偽靜態網頁
偽靜態就是通過某些技術(如:rewrite)把動態網頁的URL地址偽裝成靜態的URL地址,實際上還是動態網頁
核心特點
① 利用rewrite技術將動態網頁偽裝成靜態網頁
② 便於搜索引擎的錄入,提升用戶的體驗
③ 訪問性能沒有提升,並且轉換靜態會消耗資源,因此性能會下降
④ 盡可能的將動態轉換為靜態
⑤ 並發量不是很大或者動態更新過於頻繁的時候,用rewrite實現偽靜態也是不錯的
⑥ 偽靜態實現的過程一般是由產品提出需求,開完運維共同完成
十三、網站訪問流量的度量之IP訪問量
IP(獨立的IP)即Internet Protocol ,這里指的是獨立的IP數,獨立的IP數是指不同IP地址的計算機訪問網站時被計算的總次數,獨立IP數是衡量網站流量的一個重要的指標,一般一天內相同IP地址的客戶端訪問網站頁面只被計算一次,記錄獨立IP的時間可以為一天也可以是一個月,目前的標准是一天。
一個局域網的所有客戶端去訪問一個網站,那這個網站記錄的就是一個IP,為什么會這樣呢?原因就是因為公司采用的是局域網共享上網的,即通過路由器NAT地址轉換上網,每個計算機在局域網都有不一樣的IP地址,但是在外網上,就必須都要由路由器把每個私網地址轉換成路由器接口的固定公網IP。(可以使用防護牆映射多個IP)
計算機通過ADSL撥號上網,每次重撥號都會換一個IP地址進行訪問
十四、網站訪問流量的度量之PV訪問量
PV(Page View) 中文名:網頁瀏覽,即頁面的瀏覽量或者點擊量,不管客戶端是不是相同,IP是不是相同,用戶的每次訪問都會被記入一個PV,具體的方法就是客戶端發送請求,服務端處理請求給客戶端返回即一個PV(打開頁面即PV,有可能強制刷新頁面也會記入一個PV)
十五、網站訪問流量的度量之UV訪問量
UV(Unique Visitor) 即獨立訪客,同一台客戶端(PC或者移動端)訪問網站被計算為一個訪客,一天內相同的客戶端訪問同一個網站只計算一次UV UV一般是以客戶端的Cookie等技術作為統計數據的,實際上統計會有誤差。
考慮到一台客戶端可能會有多個人使用,因此UV實際上並不是一定是獨立的自然人訪問。
十六、怎么對網站IP\PV\UV進行計算
IP的計算
① 分析web服務器的訪問日志,對相同的IP進行去重,這個不是很准確
② 在web網站末尾嵌入JS等統計的代碼,網站全部打開,IP傳給統計IP的服務器,這種方法一般被第三方的統計公司或者內部開發日志分析程序時使用
③ 使用統計工具,谷歌的統計(GA)
PV的計算
① 分析Web服務的訪問日志(需要排除js、css及各種圖片的日志信息),只計算HTML PHP等頁面的數量
② 在web網站末尾嵌入JS等統計的代碼,網站全部打開,訪問數量傳給統計PV的服務器,這種方法一般被第三方的統計公司或者內部開發日志分析程序時使用
③ 使用統計工具,谷歌的統計(GA)
UV的計算
① 通過客戶端的HTTP的請求報文分析(分析客戶端報文的相同信息,不是很准確的方法)
② 通過Cookie鑒別(這個方法也有問題,就是為了安全,客戶端關閉的Cookie功能,那么這個方法就不准確了)
上面的方法只能得打近似的UV ,而不是准確的數量
PS:UV的計算相對於IP和PV來說 不但麻煩,而且要開發比較復雜的程序才能得到想要的結果,一般企業市場及運營人員可能比較關注UV的數量
十七、並發連接
什么是並發連接,並發連接就是網站服務器在單位時間內能夠處理的最大連接數(1秒鍾正在處理的連接,正在關閉的連接,正在建立的連接的總和)