web service基礎知識 Web服務基礎 用戶訪問網站的基本流程 我們每天都會用web客戶端上網,瀏覽器就是一個web客戶端,例如谷歌瀏覽器,以及火狐瀏覽器等。 當我們輸入www.oldboyedu.com/時候,很快就能看到老男孩教育的官網了,這一切看起來很平淡無奇,背後又是什麼道理呢?普通 ...
web service基礎知識
Web服務基礎
用戶訪問網站的基本流程
我們每天都會用web客戶端上網,瀏覽器就是一個web客戶端,例如谷歌瀏覽器,以及火狐瀏覽器等。 當我們輸入www.oldboyedu.com/時候,很快就能看到老男孩教育的官網了,這一切看起來很平淡無奇,背後又是什麼道理呢?
普通人可以不知道,但是咱們作為it開發人員,必須得掌握清楚背後的技術。
下麵為你揭曉用戶訪問網站的基本流程
- 老男孩教育某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,主要用於支付,網銀相關業務
版本
http協議誕生以來有若幹個版本,主要是http/1.0 http/1.1 http/1.0規定瀏覽器和伺服器只能保持短暫的連接,瀏覽器的每次請求都需要和伺服器建立一個TCP連接,伺服器完成請求後即斷開TCP連接,伺服器不跟蹤每個鏈接,也不記錄請求 http/1.1是對HTTP的缺陷進行重點修複,從可擴展性,緩存,帶寬優化,持久連接,host頭,錯誤通知等訪問改進。 http/1.1支持長連接,增加了更多的請求頭和響應頭信息,例如配置請求頭的Connection的值為keep-alive,表示請求結果返回後保持連接
Http請求方法
在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狀態碼
HTTp狀態碼表示web伺服器響應http請求狀態的數字代碼 常見狀態碼以及作用是 1** 信息,伺服器收到請求,需要請求者繼續執行操作 2** 成功,操作被成功接收並處理 3** 重定向,需要進一步的操作以完成請求 4** 客戶端錯誤,請求包含語法錯誤或無法完成請求 5** 伺服器錯誤,伺服器在處理請求的過程中發生了錯誤
HTTP狀態碼的命令查看
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應用程式之間發送的數據塊。這些數據塊以一些文本形式的元信息開頭,這些信息描述了報文的內容及含義,後面跟著可選的數據部分。這些報文都是在客戶端、伺服器和代理之間流動。
請求報文的格式: 起始行: <method> <request-URL> <version> 頭部: <headers> 主體: <entity-body>
GET請求報文示例:
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 協議版本 組成
請求頭部
請求頭由 關鍵字 : 值 組成 通過客戶端把請求相關信息告訴伺服器
空行
請求頭信息之後是一個空行,發送回車和換行符,通知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報文有哪些部分