web service基礎知識
Web服務基礎
用戶訪問網站的基本流程
咱們天天都會用web客戶端上網,瀏覽器就是一個web客戶端,例如谷歌瀏覽器,以及火狐瀏覽器等。 當咱們輸入www.oldboyedu.com/時候,很快就能看到老男孩教育的官網了,這一切看起來很平淡無奇,背後又是什麼道理呢?
普通人能夠不知道,可是我們做爲it開發人員,必須得掌握清楚背後的技術。
下面爲你揭曉用戶訪問網站的基本流程php
- 老男孩教育某python總監,講了一天課感受很累,下了班躺牀上打開他的macbook pro,雙擊瀏覽器,輸入www.pornhub.com網址後,系統首先會查找本地的DNS緩存以及hosts文件信息,肯定是否存在www.pornhub.com域名對應的ip解析記錄,若是有就直接獲取ip進行訪問服務器,第一次請求時,dns緩存是沒有解析記錄的,hosts文件多數是開發臨時測試用
- 若是本地dns緩存和hosts文件都沒有域名解析記錄,系統就會把某python總監訪問的網址解析請求發送給客戶端設置的DNS服務器去解析,也叫作Local DNS,若是LDNS服務器的本地緩存有對應的解析記錄就會直接返回給客戶端IP地址,若是沒有LDNS就會繼續請求其餘的DNS服務器
- LDNS繼續從DNS系統的"."(根)開始請求www.pornhub.com域名的解析,而且根據每一個層級的DNS服務器系統進行系列的查找,最終在DNS網絡上找到www.pornhub.com域名對應的受權DNS服務器。這個受權DNS服務器就是企業(我的)購買域名時用於管理域名解析的服務器,服務器上有對應的域名(IP)解析。
- 此時受權的DNS服務器就會把www.pornhub.com對應的IP解析記錄,例如(1.1.1.1)發送給LDNS
- 此時LDNS會把解析記錄發給瀏覽器,而且緩存域名和IP的解析記錄,便於下一次更快的返回請求
- 瀏覽器得到ip,請求對應的服務器,網站服務器接收到客戶端的請求開始響應處理,將內容返回給瀏覽器,而後某python總監拿出了一盒清風牌抽紙。。。。
圖解dns解析
HTTP協議
Http協議,全稱是HyperText Tansfer Protocol,中文叫超文本傳輸協議,是互聯網最多見的協議。Http最重要的是www(World Wide Web)服務,也叫web服務器,中文叫「萬維網」。 web服務端口默認是80,另一個加密的www服務應用https默認端口是443,主要用於支付,網銀相關業務
版本css
http協議誕生以來有若干個版本,主要是http/1.0 http/1.1 http/1.0規定瀏覽器和服務器只能保持短暫的鏈接,瀏覽器的每次請求都須要和服務器創建一個TCP鏈接,服務器完成請求後即斷開TCP鏈接,服務器不跟蹤每一個連接,也不記錄請求 http/1.1是對HTTP的缺陷進行重點修復,從可擴展性,緩存,帶寬優化,持久鏈接,host頭,錯誤通知等訪問改進。 http/1.1支持長鏈接,增長了更多的請求頭和響應頭信息,例如配置請求頭的Connection的值爲keep-alive,表示請求結果返回後保持鏈接
Http請求方法html
在HTTP通訊中,每一個請求報文都包含一個方法,以告訴web服務器端須要執行哪些操做,這些動做被稱爲HTTP的請求方法
1 GET 請求指定的頁面信息,並返回實體主體。 2 HEAD 相似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭 3 POST 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會致使新的資源的創建和/或已有資源的修改。 4 PUT 從客戶端向服務器傳送的數據取代指定的文檔的內容。 5 DELETE 請求服務器刪除指定的頁面。 6 CONNECT HTTP/1.1協議中預留給可以將鏈接改成管道方式的代理服務器。 7 OPTIONS 容許客戶端查看服務器的性能。 8 TRACE 回顯服務器收到的請求,主要用於測試或診斷。
HTTP狀態碼java
HTTp狀態碼錶示web服務器響應http請求狀態的數字代碼 常見狀態碼以及做用是 1** 信息,服務器收到請求,須要請求者繼續執行操做 2** 成功,操做被成功接收並處理 3** 重定向,須要進一步的操做以完成請求 4** 客戶端錯誤,請求包含語法錯誤或沒法完成請求 5** 服務器錯誤,服務器在處理請求的過程當中發生了錯誤
HTTP狀態碼的命令查看python
curl -I www.oldboyedu.com
Server: OES Date: Sun, 12 Aug 2018 04:18:24 GMT Content-Type: text/html Content-Length: 152 Connection: keep-alive Location: https://www.oldboyedu.com/
Http報文
什麼是HTTP請求報文
HTTP請求由請求行,請求頭部,空行,請求報文主體幾個部分組成
HTTP報文:它是HTTP應用程序之間發送的數據塊。這些數據塊以一些文本形式的元信息開頭,這些信息描述了報文的內容及含義,後面跟着可選的數據部分。這些報文都是在客戶端、服務器和代理之間流動。nginx
請求報文的格式: 起始行: <method> <request-URL> <version> 頭部: <headers> 主體: <entity-body>
GET請求報文示例:web
GET /books/?sex=man&name=Professional HTTP/1.1
Host: www.example.com 主機名 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)Gecko/20050225 Firefox/1.0.1 客戶端類型
Accept-Encoding:gzip,deflate 支持壓縮
Accept-Language:zh-cn 支持語言類型
Connection: Keep-Alive 長連接
請求行數據庫
請求報文第一行,表示客戶端想要什麼 由請求方法 url 協議版本 組成
請求頭部apache
請求頭由 關鍵字 : 值 組成 經過客戶端把請求相關信息告訴服務器
空行後端
請求頭信息以後是一個空行,發送回車和換行符,通知web服務器如下沒有請求頭信息了
請求報文主體
POST / HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1 Content-Type: application/x-www-form-urlencoded Content-Length: 40 Connection: Keep-Alive sex=man&name=Professional
請求體中包含了要發送給web服務器的數據信息,請問報文主體不用於get方法,而是用於post方法。 post方法適用於客戶端填寫表單的場合。
HTTP響應報文
HTTP 響應與 HTTP 請求類似,HTTP響應也由3個部分構成,分別是:
- 狀態行
- 響應頭(Response Header)
- 響應正文
狀態行由協議版本、數字形式的狀態代碼、及相應的狀態描述,各元素之間以空格分隔。
狀態行,用來講明服務器響應客戶端的情況,通常分爲協議版本號,數字狀態碼,狀態狀況
響應頭部 常見響應頭信息 Connection: Keep-Alive Content-Encoding: gzip Content-Type: text/html;charset=utf-8 Date: Mon, 13 Aug 2018 06:06:54 GMT Expires: Mon, 13 Aug 2018 06:06:54 GMT
空白行 通知客戶端空行如下沒有頭部信息了
響應報文主體 主要包含了返回給客戶端的數據,能夠是文本,二進制(圖片,視頻)
HTTP響應例子
HTTP/1.1 200 OK Server:Apache Tomcat/5.0.12 Date:Mon,6Oct2003 13:23:42 GMT Content-Length:112 <html>...
URl介紹
url中文叫「統一資源標識符」,是一個用於標識某一互聯網資源名稱的字符串,在世界範圍內標識定位某一個惟一信息資源。
例如
#訪問一張郭達的照片 http://www.pythonav.cn/man.jpg
url主要用在各類www客戶端和服務器程序上,url能夠用一種統一的格式來描述各類信息資源,包括文件,服務器地址和目錄等
url組成
- 協議
- 主機ip或域名
- 主機資源具體地址
第一部分用"://"隔開,第二部分用"/"符號隔開
靜態網頁資源
在網頁設計中,純HTMl格式的網頁(包含圖片,視頻,JS,CSS等樣式)一般被稱做「靜態網頁」。
靜態網頁是相對於動態網頁而言的,是指沒有後臺數據庫,不包含程序,不可交互的網頁。
靜態網頁的特色 開發人員寫了什麼,顯示就是什麼,一旦編寫完成,就不會有任何改變。靜態網頁通常適用於更新較少的展現型網頁,例如(酒水,傢俱,水果等宣傳頁),是不少中小網站的展現方式。
靜態網頁資源對應文件擴展名爲
- 純文本文件,如.htm .html .xml .js .css
- 圖片或數據文檔,如 .jpg .gif .bmp .txt .ppt
- 視頻類文件 .mp4 .avi .flv 等
靜態網頁重要特性
- 每一個頁面有一個固定的url地址,url地址不含有問號"?"或"&"等符號
- 網頁一經發布到服務器,網頁內容是保存在服務器文件系統上的,每一個網頁都是獨立的一個文件
- 網頁內容固定不變,容易被搜索引擎收錄(優勢)
- 網頁沒有數據庫支撐,在網站製做和維護上工做量很大(缺點)
- 網頁的交互性不好,缺乏程序的功能實現(缺點)
- 客戶端解析網址時,因爲不須要讀取數據庫,所以服務器端能夠接受更高的併發訪問。請求到來時,直接從磁盤上返回數據。(優勢)
舉例(吃火鍋,現成的蔬菜)
有關高併發架構思想
在高併發,高訪問量的場景下作架構優化時,比較關鍵的就是把動態網頁轉化成靜態網頁,而不是直接請求數據庫和動態服務器,而且能夠吧靜態內容推到緩存中,這樣就提高用戶體驗,節約服務器壓力成本。
動態網頁資源
動態網頁是和靜態網頁相對而言的,動態網頁的url後綴通常是.asp .aspx .php .js .cgi
而且動態網頁都有標誌性的符號"? &",後端都有數據庫的支持。
動態網頁地址
添加新隨筆
https://i.cnblogs.com/EditPosts.aspx?opt=1
動態網頁資源特色
- 網頁以數據庫技術爲支撐,大大下降網站維護的工做量
- 動態網頁技術的網站能夠實現更多的功能,如用戶註冊,用戶登陸,投票,用戶管理,博客管理等
- 動態網頁不是獨立存在服務器上的網頁文件,用戶請求動態程序時,服務器解析程序而且可能讀取數據庫返回一個完整的網頁內容
- 搜索引擎(爬蟲)通常不會抓取網址中的「?」後面的內容,所以企業都會作僞靜態技術頁面
舉例(飯店炒菜,現作)
網站流量術語
網站統計通常以數值較大的IP,PV統計,比較好看
IP
IP即Internet Protocol,這裏是指獨立ip數,不一樣的ip地址的計算機訪問網站時被計算的總次數。獨立ip數是網站流量的一個重要指標。通常相同ip地址的客戶端訪問網站頁面一天內只會被計算一次。
這裏的ip指的是是固定的公網ip
PV
pv(Page View)便是頁面瀏覽量,無論客戶端是否是相同,也無論ip是否相同,用戶只要訪問網站頁面就會被計算PV,一次計算一個PV。
pv的度量方法就是客戶端從瀏覽器發出一個web請求(request),服務器接收請求返回一個頁面給客戶端,這樣就產生一個pv。
pv是衡量網站被訪問的一個標準,但並不許確有多少人訪問了網站。
舉例
例如武佩奇去訪問百合網想找一個知心朋友,你以爲他能產生多少PV?
答案多是十幾個到幾十個。一個用戶的訪問PV量和網站的業務成正比的,武佩奇可能點擊18歲左右的女性,28歲左右的女性,也可能點擊18歲的小夥子。。。。所以他訪問的頁面會不少,天然pv也會增多
UV
UV即unique visitor,同一個客戶端(pc或移動端)訪問網站被計算爲一個訪客。 一天內相同的客戶端訪問同一個網站只計一次uv,uv是以cookie等技術爲統計依據,實際統計存在偏差。 一臺計算機可能有多人使用,所以uv也不是最準確的。
併發數
併發數指系統同時能處理的請求數量,也反應了系統的負載能力
響應時間
響應時間是指執行一個請求從開始到最後收到響應數據所花費的整體時間。
QPS
Query Per Second 每秒查詢數 服務器在一秒內處理了多少個請求,顯然數字越大表明服務器的負載越高,處理能力越強。
流量術語講解博客地址:https://fashengba.com/post/web-sites-nouns.html
Web服務軟件
互聯網主流web服務軟件
- Apache
- IIS
- Nginx
- Tengine
- Tomcat
- Lighthttpd
主流web服務軟件說明
- Apache 中小型 web服務器的老大哥
- Nginx 大型網址web服務,其分支Tengine也在飛速發展
- Lighthttpd nginx流行前的一款web軟件
提供動態服務的軟件
- php(fastcgi) 大中小的公司都會使用,動態網頁語言php程序的解析容器,常配合apache解析動態程序
- tomcat 中小企業動態web服務,互聯網java容器主流
- IIS 微軟下的web服務軟件
題目
1.簡述dns系統的解析原理 2.簡述http協議的工做原理 4.請說出狀態碼200,301,403,404,500,504的含義5.請簡述什麼是動態網頁,靜態網頁6.簡述http報文有哪些部分