咱們天天都會用web客戶端上網,瀏覽器就是一個web客戶端,例如谷歌瀏覽器,以及火狐瀏覽器等。 當咱們輸入www.oldboyedu.com/時候,很快就能看到老男孩教育的官網了,這一切看起來很平淡無奇,背後又是什麼道理呢?
普通人能夠不知道,可是我們做爲it開發人員,必須得掌握清楚背後的技術。
下面超哥爲你揭曉用戶訪問網站的基本流程php
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應用程序之間發送的數據塊。這些數據塊以一些文本形式的元信息開頭,這些信息描述了報文的內容及含義,後面跟着可選的數據部分。這些報文都是在客戶端、服務器和代理之間流動。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響應也由3個部分構成,分別是:
狀態行由協議版本、數字形式的狀態代碼、及相應的狀態描述,各元素之間以空格分隔。
狀態行,用來講明服務器響應客戶端的情況,通常分爲協議版本號,數字狀態碼,狀態狀況
響應頭部 常見響應頭信息 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中文叫「統一資源標識符」,是一個用於標識某一互聯網資源名稱的字符串,在世界範圍內標識定位某一個惟一信息資源。
例如
#訪問一張郭達的照片
http://www.pythonav.cn/man.jpg
url主要用在各類www客戶端和服務器程序上,url能夠用一種統一的格式來描述各類信息資源,包括文件,服務器地址和目錄等
第一部分用"://"隔開,第二部分用"/"符號隔開
在網頁設計中,純HTMl格式的網頁(包含圖片,視頻,JS,CSS等樣式)一般被稱做「靜態網頁」。
靜態網頁是相對於動態網頁而言的,是指沒有後臺數據庫,不包含程序,不可交互的網頁。
靜態網頁的特色
開發人員寫了什麼,顯示就是什麼,一旦編寫完成,就不會有任何改變。靜態網頁通常適用於更新較少的展現型網頁,例如(酒水,傢俱,水果等宣傳頁),是不少中小網站的展現方式。
靜態網頁資源對應文件擴展名爲
靜態網頁重要特性
舉例(吃火鍋,現成的蔬菜)
在高併發,高訪問量的場景下作架構優化時,比較關鍵的就是把動態網頁轉化成靜態網頁,而不是直接請求數據庫和動態服務器,而且能夠吧靜態內容推到緩存中,這樣就提高用戶體驗,節約服務器壓力成本。
動態網頁是和靜態網頁相對而言的,動態網頁的url後綴通常是.asp .aspx .php .js .cgi
而且動態網頁都有標誌性的符號"? &",後端都有數據庫的支持。
動態網頁地址
添加新隨筆
https://i.cnblogs.com/EditPosts.aspx?opt=1
動態網頁資源特色
舉例(飯店炒菜,現作)
網站統計通常以數值較大的IP,PV統計,比較好看
IP即Internet Protocol,這裏是指獨立ip數,不一樣的ip地址的計算機訪問網站時被計算的總次數。獨立ip數是網站流量的一個重要指標。通常相同ip地址的客戶端訪問網站頁面一天內只會被計算一次。
這裏的ip指的是是固定的公網ip
pv(Page View)便是頁面瀏覽量,無論客戶端是否是相同,也無論ip是否相同,用戶只要訪問網站頁面就會被計算PV,一次計算一個PV。
pv的度量方法就是客戶端從瀏覽器發出一個web請求(request),服務器接收請求返回一個頁面給客戶端,這樣就產生一個pv。
pv是衡量網站被訪問的一個標準,但並不許確有多少人訪問了網站。
舉例
例如武佩奇去訪問百合網想找一個知心朋友,你以爲他能產生多少PV?
答案多是十幾個到幾十個。一個用戶的訪問PV量和網站的業務成正比的,武佩奇可能點擊18歲左右的女性,28歲左右的女性,也可能點擊18歲的小夥子。。。。所以他訪問的頁面會不少,天然pv也會增多
UV即unique visitor,同一個客戶端(pc或移動端)訪問網站被計算爲一個訪客。
一天內相同的客戶端訪問同一個網站只計一次uv,uv是以cookie等技術爲統計依據,實際統計存在偏差。
一臺計算機可能有多人使用,所以uv也不是最準確的。
併發數指系統同時能處理的請求數量,也反應了系統的負載能力
響應時間是指執行一個請求從開始到最後收到響應數據所花費的整體時間。
QPS
Query Per Second
每秒查詢數
服務器在一秒內處理了多少個請求,顯然數字越大表明服務器的負載越高,處理能力越強。
流量術語講解博客地址:https://fashengba.com/post/web-sites-nouns.html
互聯網主流web服務軟件
主流web服務軟件說明
提供動態服務的軟件
題目
1.簡述dns系統的解析原理 2.簡述http協議的工做原理 4.請說出狀態碼200,301,403,404,500,504的含義5.請簡述什麼是動態網頁,靜態網頁6.簡述http報文有哪些部分