1. 程式人生 > >HTTP服務相關基礎知識詳解

HTTP服務相關基礎知識詳解

gen 註冊表 關閉 return 我們 不同ip地址 跳轉 http請求 mime類型

1 HTTP服務

1.1 IP/PV/UV

UV、PV=1:5關系

UV 每天訪問人數
PV page view 頁面瀏覽量

通過nginx日誌統計UV PV 或通過代碼統計

? IP - internet Protocol

獨立IP,這裏指獨立IP數,獨立IP數是指不同IP地址的計算機訪問網站的被計算的總次數,獨立IP數是衡量網站流量的一個重要指標,一般一天(00:00-24:00)內相同IP地址的客戶端訪問網站頁面只被計算為一次,記錄獨立IP的時間可以為一天或一個月,目前通用的標準一般為一天

? PV-Page View

PV(訪問量),中文翻譯即頁面瀏覽,即頁面瀏覽量或點擊量,

不管客戶端是不是相同,也不管IP是不是相同,用戶每次訪問一個網站頁面(包括子頁面)都會被計算成一個PV,

PV的具體度量方法就是從客戶瀏覽器發出一個對web服務器的請求(request),web服務器接到這個請求後,將該請求對應一個網頁發給瀏覽器,就產生了一個PV,

一個訪問者,PV數可能是若幹,但獨立IP數就是1個,因此,如果對比一個網站獨立IP數和PV數,不難看出,PV數一定大於獨立IP數,

問:如果一個用戶訪問趕集網或58同城,你覺得可能會產生多少PV?
解答:平均可能會10幾個-幾十個PV,一個來訪者訪問網站的PV數多少是和網站提供的業務直接相關的,例如:淘寶,京東,58 智聯等需要大量篩選的,

全球13臺根域名服務器

? UV-Unique Visitor

UV(獨立訪客):即Unique Visitor,同一臺客戶端(PC或移動端)訪問網站被計算為一個訪客,一天(00:00-24:00)內相同的客戶端訪問同一個網站只被計算一次UV,UV一般是以客戶端Cookie等技術作為統計依據,實際統計會有誤差

考慮到一臺客戶端電腦可能會有多人使用情況,因此,UV(獨立訪客)實際上並不一定是獨立的自然人訪問。

1.2 企業網站對PV/IP/UV的度量

IP度量:

  1. 分析所有web服務器的訪問日誌信息,對IP地址段去重後計算,這是IP人員的基本計算手段,
  2. 在網站的每一個頁面結尾,嵌入js等統計程序代碼,當用戶加載網頁後,IP即傳給統計IP的服務器,這種方法一般被第三方統計 公司或者企業內部開發日誌分析程序時使用
  3. 用第三方大家比較信任的統計工具,例如,谷歌的統計GA
    IP的統計方法簡單,易用,因此,成為了多數網站衡量網站流量的重要指標之一

PV的度量:

  1. 分析web服務的訪問日誌(需要排除,js,css,各種圖片的日誌信息),只計算html,php等頁面
  2. 在網站的每一個頁面結尾,嵌入js等統計程序代碼,當用戶加載網頁後,IP即傳給統計IP的服務器,這種方法一般被第三方統計 公司或者企業內部開發日誌分析程序時使用
  3. 用第三方大家比較信任的統計工具,例如,谷歌的統計GA
    IP和PV,也是Linux運維人員要掌握的重點

UV的度量
UV度量一般是開發人員負責度量,市場產品運營

  1. 通過客戶端HTTP請求報文分析
    一個客戶會多次請求網站服務器,每次HTTP請求都會攜帶客戶端自身的大量信息,比如:IP地址,請求發出的時間,瀏覽器的版本,操作系統版本等等,
  2. 多個人共用一個電腦的情況
  3. 通過Cookie鑒別
    當用戶請求時,會發送一個cookie,第二次訪問時,會去驗證cookie是否為同一個,如果是同一個,就視為一個cookie
    舉例說明IP/UV/PV

一個網吧裏,有10個人都進入了www.jd.com,假設每個人平均訪問了5個頁面,但這個網絡對外出口公網IP是1個,對於www.jd.com來說,只會計算1個獨立IP訪問,PV數就是10/人*5個頁面=50PV UV是指獨立人,UV=10個(但UV不是絕對的,存在一臺多人用的現象)

1.3 HTTP/1.1與HTTP/1.0的區別
http://zhongliang.blog.51cto.com/4507905/1916191

1.4 HTTP方法 作用描述

GET 客戶端請求指定資源信息,服務器返回指定資源
HEAD 只請求響應報文中的HTTP首部
POST 將客戶端的數據提交到服務器,例,註冊表單
PUT 從客戶端向服務器傳送文件
DELETE 請求服務器刪除指定資源
MOVE 請求服務器將指定頁面移至另一個網絡地址

1.5 HTTP 常見錯誤代碼
測試:curl -I baidu.com

100-199 用於指定客戶端相應的某些動作
200-299 用於表示請求成功
300-399 用於已經移動的文件並且常被包含在定位頭信息中指定新的地址信息
400-499 用於指出客戶端的錯誤
500-599 用於指出服務器錯誤

生產環境常見的HTTP狀態碼列表(List of HTTP status codes)為:
說明:求精不求多,有舍才有得 不一樣的思維不一樣的精彩。《老男孩linux實戰培訓》也是這個原則。
200 - OK,服務器成功返回網頁

  • Standard response for successful HTTP requests.
    301 - Moved Permanently(永久跳轉),請求的網頁已永久跳轉到新位置。
  • This and all future requests should be directed to the given.
    403 - Forbidden(禁止訪問),服務器拒絕請求,這個請求是合法的,但是服務器端因為匹配了預先設置的規則而拒絕響應客戶端的請求,此類問題一般為服務器權限配置不當所致
  • forbidden request (matches a deny filter) => HTTP 403
  • The request was a legal request, but the server is refusing to respond to it.
    404 - Not Found,服務器找不到請求的頁面。可能是客戶端請求了服務器不存在的資源導致
  • The requested resource could not be found but may be available again in the future.
    500 - Internal Server Error(內部服務器錯誤)服務器遇到了意料不到的情況,不能完成客戶的請求,這是一個比較籠統的報錯,一般為服務器的設置或者內部程序問題導致 selinux未關閉,又未配置規則,
  • internal error in haproxy => HTTP 500
  • A generic error message, given when no more specific message is suitable.
    502 - Bad Gateway(壞的網關),一般是網關服務器請求後端服務時,後端服務沒有按照http協議正確返回結果。一般為代理服務器下面的節點出問題導致 例如:LVS轉發請求到Nginx,Nginx當機或不響應,php服務沒有啟動,就返回502
  • the server returned an invalid or incomplete response => HTTP 502
  • The server was acting as a gateway or proxy and received an invalid response from the upstream server.
    503 - Service Unavailable(服務當前不可用),一般是網關代理服務器請求後端服務時,可能因為超載或停機維護。或後代理服務器後端沒有提供服務的節點
  • no server was available to handle the request => HTTP 503
  • The server is currently unavailable (because it is overloaded or down for maintenance).
    504 - Gateway Timeout(網關超時),一般是網關服務器請求後端服務時,後端服務沒有在特定的時間內完成服務。一般是服務器過載導致沒有在指定的時間內返回數據給代理服務器
  • the server failed to reply in time => HTTP 504
  • The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.

1.6 並發連接

什麽是並發?怎麽理解並發呢?

A:網站服務器每秒能夠接收的最大用戶請求數
B:網站服務器每秒能夠響應的最大用戶請求數
C:網站服務器在單位時間內能夠處理的最大連接數

正確理解是 正在接收的請求數+正在處理的請求數

Request Per Sencond+Simultaneous Browser connections+Thinking Time=Concurrent User
Concurrent User 表示網站並發用戶總數
Request Per Sencond [RPS] 表示每秒請求數(吞吐量)
Simultaneous Browser connections [SBC] 表示並發瀏覽連接數
Thinking Time 表示平均用戶思考時間

1.7 面試題 DNS解析原理 http通信原理

面試1:十大原理之一,DNS解析原理

1、當我們在瀏覽器中輸入www.qq.com域名,操作系統會先檢查自己本地的hosts文件是否有這個網址映射關系,如果有,就先調用這個IP地址映射,完成域名解析。
2、如果hosts裏沒有這個域名的映射,則查找本地DNS解析器緩存,是否有這個網址映射關系,如果有,直接返回,完成域名解析。
3、如果hosts與本地DNS解析器緩存都沒有相應的網址映射關系,首先會找TCP/ip參數中設置的首選DNS服務器,在此我們叫它本地DNS服務器,此服務器收到查詢時,如果要查詢的域名,包含在本地配置區域資源中,則返回解析結果給客戶機,完成域名解析,此解析具有權威性。
4、如果要查詢的域名,不由本地DNS服務器區域解析,但該服務器已緩存了此網址映射關系,則調用這個IP地址映射,完成域名解析,此解析不具有權威性。
5、如果本地DNS服務器本地區域文件與緩存解析都失效,則根據本地DNS服務器的設置(是否設置轉發器)進行查詢,如果未用轉發模式,本地DNS就把請求發至13臺根DNS,根DNS服務器收到請求後會判斷這個域名(.com)是誰來授權管理,並會返回一個負責該頂級域名服務器的一個IP。本地DNS服務器收到IP信息後,將會聯系負責.com域的這臺服務器。這臺負責.com域的服務器收到請求後,如果自己無法解析,它就會找一個管理.com域的下一級DNS服務器地址(qq.com)給本地DNS服務器。當本地DNS服務器收到這個地址後,就會找qq.com域服務器,重復上面的動作,進行查詢,直至找到www.qq.com主機。
6、如果用的是轉發模式,此DNS服務器就會把請求轉發至上一級DNS服務器,由上一級服務器進行解析,上一級服務器如果不能解析,或找根DNS或把轉請求轉至上上級,以此循環。不管是本地DNS服務器用是是轉發,還是根提示,最後都是把結果返回給本地DNS服務器,由此DNS服務器再返回給客戶機。

從客戶端到本地DNS服務器是屬於遞歸查詢,而DNS服務器之間就是的交互查詢就是叠代查詢。

面試2: 十大原理之一,HTTP協議通信原理

次HTTP操作稱為一個事務,其工作過程可分為四步:
1)首先客戶機與服務器需要建立連接。只要單擊某個超級鏈接,HTTP的工作開始。
2)建立連接後,客戶機發送一個請求給服務器,請求方式的格式為:統一資源標識符(URL)、協議版本號,後邊是MIME信息包括請求修飾符、客戶機信息和可能的內容。
3)服務器接到請求後,給予相應的響應信息,其格式為一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,後邊是MIME信息包括服務器信息、實體信息和可能的內容。
4)客戶端接收服務器所返回的信息通過瀏覽器顯示在用戶的顯示屏上,然後客戶機與服務器斷開連接。
如果在以上過程中的某一步出現錯誤,那麽產生錯誤的信息將返回到客戶端,有顯示屏輸出。對於用戶來說,這些過程是由HTTP自己完成的,用戶只要用鼠標點擊,等待信息顯示就可以

面試3: 十大原理之一,TCP三次握手和四次揮手

10臺服務器, 100多萬PV 3000多並發 IP 20-30W

面試題:

  1. 請問你如何理解並發
  2. 你們公司網站訪問量是多少? 怎麽計算的?
    IP,PV並發量3個點為,這三個點的多少決定面試時說多大的架構,不能幾萬PV,還說數十臺的集群架構,
    訪問量的計算
    a. 運維部分日誌分析
    b. 開發在頁面嵌入jsp程序統計
    c. 第三方谷歌 GA統計

動態web服務請求流程

客戶端發送請求--》httpd得到請求--->httpd解析請求的格式(html,css)-->請求相應php解析--》php解析程序執行完畢--DB數據庫,返回結果html給httpd--httpd把數據返回給客戶端---瀏覽器接到返回結果,根據HTML繪出界面展示出來

  1. 什麽是靜態資源,作用及優缺點?
    URL固定,後綴HTML,HTM ,服務器存放的文件,
    特點:無數據庫交互
    優: 性能高體驗好,快速
    缺:交互差,維護麻煩

  2. 什麽是動態資源,作用及優缺點?
    有數據庫支持,內容豐富,後綴php,jsp.do,asp aspx
    特點;
    優:1.交互性好,2 維護簡單
    缺:1.性能差(服務器端解析) 2.URL變化不利於搜索

  3. 什麽是偽靜態? 作用及優缺點?
    動態URL偽裝成靜態,rewrite規則模塊支持
    優:方便收錄,提升用戶瀏覽體驗
    缺:不會提升網站性能,會微降性能 維護復雜

  4. 什麽是URL,RUI,MIME類型

  5. 網站訪問的基本流程
    註:網盤資源有圖解

  6. 什麽是http狀態碼?

1.8 HTTP資源類型:

  1. 媒體MIME類型

1.9 URI介紹

Uniform Resource Identifier 統一資源標識符
URL是URI的子集

URL格式(URI)
http://www.baidu.com/index.html
協議 分隔符 域名或IP 資源具體地址

第一部份是協議,例http:
第二部分是主機資源服務器IP或域名,例:www.baidu.com
第三部分是主機資源的具體地址,如目錄或文件名 oldboy/index.html

靜態網頁類型

1.純文本類程序或文件 html htm xml shtml js css
2.圖片類型文件或數據文檔 jpg gif png bmp txt doc ppt
3.視頻類流媒體文件 mp4 swf avi wmv flv

1.10 當前主流互聯網web服務軟件

  1. IIS 微軟
  2. apache 中小型靜態web服務主流,web服務器中的老大哥
  3. nginx 大型新興靜態web服務主流,
  4. lighttpd 靜態web服務,慢慢淘汰
  5. tomcat 中小型企業動態web服務,互聯網java容器主流
  6. resin 大型動態web服務,互聯網java容器主流
    7 php fcgi php程序的解析容器
    a. 配合apache php不是守護進程,而是mod_php5.so(module)模塊
    b. 配合nginx,lighttpd php是守護進程模式

1.11 robots協議 網絡爬蟲

Robots協議(也稱為爬蟲協議、機器人協議等)的全稱是“網絡爬蟲排除標準”(Robots Exclusion Protocol),網站通過Robots協議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取

robots的好處?
設置可以或禁止各種搜索引擎訪問的資源

缺點: 暴漏目錄結構

http://www.baidu.com/robots.txt
User-agent: Baiduspider
Disallow: /baidu
Disallow: /s?
Disallow: /ulink?
Disallow: /link?

User-agent: Googlebot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?

可以查看常見的一些rebots列表

例1. 禁止所有搜索引擎訪問網站的任何部分
User-agent: *
Disallow: /

例2. 允許所有的robot訪問 (或者也可以建一個空文件 “/robots.txt” file)
User-agent: *
Allow: /

例3. 禁止某個搜索引擎的訪問
User-agent: BadBot
Disallow: /

在這個例子中,該網站有三個目錄對搜索引擎的訪問做了限制,即搜索引擎不會訪問這三個目錄。
User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /~joe/

針對不同瀏覽器設置
User-agent: Googlebot
Disallow: /
User-agent: Googlebot-Mobile
Allow:

Allow: /*?$ 一行將允許包含任何以 ? 結尾的網址(具體而言,它將允許包含所有以您的域名開頭、後接任意字符串,然後是問號 (?),問號之後沒有任何字符的網址)。

HTTP服務相關基礎知識詳解