天天看點

HTTP服務簡介第1章 HTTP服務介紹第2章 HTTP資源第1章 HTTP服務介紹第2章 HTTP資源

a 進行域名資訊的DNS解析 dig +trace 獲得www.oldboyedu.com  ip位址資訊

b 進行與網站伺服器建立連接配接,tcp三次握手過程

(syn ack SEQ ACK/狀态轉換 closed listen syn_sent  syn_rcvd established )

c 和網站伺服器資料傳輸過程(http協定原理過程-http請求過程) 檢視方法curl -v/wget --debug

d 和網站伺服器資料傳輸過程(http協定原理過程-http響應過程)

e 進行與網站伺服器斷開連接配接,tcp四次揮手過程

(fin ack SEQ ACK/狀态轉換 fin_wait1 fin_wait2 close_wait last_ack time_wait closing )

01. 檢視本地主機緩存和hosts檔案有沒有域名與IP對應記錄

02. 本地主機向local DNS伺服器(網卡上指定配置的DNS伺服器)送出請求(遞歸查詢)

03. LOCAL DNS伺服器接收到用戶端主機請求,查詢本地緩存資訊

04. LOCAL DNS服務向根域名伺服器請求,向頂級域名伺服器請求,向二級域名伺服器請求(疊代查詢)

05. 擷取到域名與IP位址的對應關系,是通過授權DNS服務中擷取得到(得到的資訊稱為A記錄)

LOCAL DNS服務進行緩存A記錄資訊,将A記錄資訊發送給用戶端主機

06. 用戶端主機接收到A記錄資訊,進行本地緩存,根據A記錄中記錄IP位址資訊,進行網絡通路

査看有關DNS資訊方法(windows主機上):

1> 査看windows用戶端本地緩存的DNS解析記錄的指令如下。

c:\>ipconfig /displaydns <-意思是display the contents of the DNS Resolver

(顯示DNS CACHE内容),"/displaydns"前面有空格

2> 清除windows用戶端本地緩存的DNS解析記錄的指令如下。

c:\>ipconfig /flushdns <-意思為Purges the DNS Resolver cache"

(清除DNS CACHE内容),"/displaydns"前面有空格

3> windows系統下hosts域名解析記錄的位置如下。

c:\Windows\system32\drivers\etc\hosts

nscd bind dnsmasq

HTTP協定,全稱HyperText Transfer Protocol,中文名為超文本傳輸協定,是網際網路中最常用的一種網絡協定。 HTTP的重要應用之一是 WWW服務。設計 HTTP協定最初的目的就是提供一種釋出和接收HTML (一種頁面标記語言)頁面的方法。

HTTP協定是網際網路上常用的通信協定之一。它有很多的應用,但最流行的就是用于Web浏覽

器和Web伺服器之間的通信,即WWW應用或稱Web應用。

www ,全稱World Wide Web ,常稱為Web ,中文譯為"網際網路:它是目前網際網路上最受使用者歡迎的資訊服務形式。 HTTP協定的 WWW服務應用的預設端口為80,另外一個加密的WWW服務應用https的預設端口為443,主要用于網銀、支付等和錢相關的業務。當今,HTTP服務、WWW服務、Web服務三者的概念已經混淆了,都是指當下最常見的網站服務應用。

HTTP/1.0 規定浏覽器和伺服器隻保持短暫的連接配接(TCP短連結)

 HTTP/1.1 支援持久連接配接,在一個TCP連接配接上可以傳送多個HTTP請求和響應,減少了建立和關閉連接配接的消耗和時間延遲(TCP長連接配接)

再linux系統中參看封包的方法

curl -v   ---顯示通路域名請求封包與響應封包資訊

curl www.baidu.com  -v

> 表示http請求封包  <表示http的響應封包

wget --debug www.baidu.com

HTTP方法

作用描述

GET

用戶端請求指定資源信悤,伺服器傳回指定資源

HEAD

隻請求響應封包中的 HTTP首部

POST

将用戶端的資料送出到伺服器,例:系統資料庫單

PUT

用從用戶端向伺服器傳送的資料取代指定的文檔内容。

DELETE

請求伺服器删除 Request-URI所表示的資源。

MOVE

請求伺服器将指定的頁面移至另一個網絡位址。

HTTP服務簡介第1章 HTTP服務介紹第2章 HTTP資源第1章 HTTP服務介紹第2章 HTTP資源

請求頭内容

說明

Host

接受請求的伺服器位址,可以是IP:端口号,也可以是域名

User-Agent

發送請求的應用程式名稱

Connection

指定與連接配接相關的屬性,如Connection:Keep-Alive

Accept-Charset

通知服務端可以發送的編碼格式

Accept-Encoding

通知服務端可以發送的資料壓縮格式

HTTP服務簡介第1章 HTTP服務介紹第2章 HTTP資源第1章 HTTP服務介紹第2章 HTTP資源

響應頭

Server

伺服器應用程式軟體的名稱和版本

Content-Type

響應正文的類型(是圖檔還是二進制字元串)

Content-Length

響應正文長度

Content-Charset

響應正文使用的編碼

Content-Encoding

響應正文使用的資料壓縮格式

Content-Language

響應正文使用的語言

HTTP狀态碼(HTTP Status Code )是用來表示Web伺服器響應HTTP請求狀态的數字代碼。每當Web用戶端向Web伺服器發送一個HTTP請求時,Web伺服器都會傳回一個狀态響應代碼。這個狀态碼是一個三位數字代碼,作用是告知Web用戶端此次請求是否成功,或者是否要采取其他的動作方式。

curl -v www.oldboyedu.org   ---可以擷取狀态碼資訊

********************************************************************

擴充指令說明:通過curl指令隻擷取狀态碼資訊

curl -I www.etiantian.org|awk 'NR==1{print $2}'

curl -I -s  www.etiantian.org |awk 'NR==1{print $2}' 

curl -I -s -w %{http_code}  www.etiantian.org

curl -I -s -w %{http_code} -o /dev/null www.etiantian.org

curl -I -s -w "%{http_code}\n" -o /dev/null www.etiantian.org

curl -s -w "%{http_code}\n" -o /dev/null www.etiantian.org

curl -I -s www.etiantian.org|head -1

curl -I 10.0.0.7 2>/dev/null|head -1

狀态碼範圍

100 - 199

用于指定用戶端相應的某些動作

200 - 299

用于表示請求成功

300 - 399

用于己經移動的檔案,并且常被包含在定位頭資訊中指定新的位址系資訊

400 - 499

用于指出用戶端的錯誤

500 - 599

用于指出服務端的錯誤

代碼

代碼說明

301 Moved Permanently(永久跳轉)

請求的網頁已永久跳轉到新位置

403 Forbidden(禁止通路)

伺服器拒絕請求

404 - Not Found,

伺服器找不到請求的頁面

500

内部伺服器錯誤

502

壞的網關,一般是網關伺服器請求後端服務時,後端服務沒有按照http協定正确傳回結果

503 - Service Unavailable

(服務目前不可用)

可能因為超載或停機維護

504 - Gateway Timeout

(網關逾時)

一般是網關伺服器請求後端服務時,後端服務沒有在特定的時間内完成服務。

網際網路上的資料有很多不同的類型,Web伺服器會把通過Web傳輸的每個對象都打上MIME類

型(即MIME type)的資料格式标簽。最初設計MIME(Multipurpose Internet Mall Extension,多用途網際網路郵件擴充)是為了解決在不同的電子郵件系統之間搬移封包時存在的問題.MIME在電子郵件系統中工作得非常好。後來,HTTP也支援了這個功能,用它來描述資料并标記不同的資料内容類型。

當Web伺服器響應HTTP谪求時,會為每一個HTTP對象資料加一個MIME類型,當Web浏覽器擷取到伺服器傳回的對象時,會去査看相關的MIME類型,并進行相應處理。

MIME類型存在與HTTP響應封包的響應頭部信患裡,它是一種文本标記,表示一種主要的對象類型和一個特定的子類型,中間由一條斜杠來分割。

web服務可以處理的資源類型,根據擴充名進行識别(html css mp4)

  url:URL,全稱為Uniform Resource Location,中文翻譯為統一資源定位符

  uri:URI,全稱為Uniform Resource Identifier,中文翻譯為統一資源辨別符

例如

網址:  http://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/

  http://reg.jd.com                                 --- 稱為url

  /reg/person?ReturnUrl=https%3A//www.jd.com/       --- 稱為uri

說明:nginx軟體識别url和uri的方式和上面說明一緻

靜态網頁資源

動态網頁資源

僞靜态網頁資源

請求響應資訊,發給用戶端進行處理,由浏覽器進行解析,顯示的頁面稱為靜态頁面

在網站設計中,純粹HTML格式的網頁(可以包含圖檔、視訊JS (前端功能實作)、CSS (樣式)等)通常被稱為"靜态網頁"

靜态頁面資源特征

01. 處理檔案類型:如.html、jpg、.gif、.mp4、.swf、.avi、.wmv、.flv等-

02. 位址中不含有問号"?"或&等特殊符号。

03. 儲存在網站伺服器檔案系統上的,是實實在在儲存在伺服器上的檔案實體

04. 網頁内容是固定不變的,是以,容易被搜尋引擎收錄

05. 網頁頁面互動性交差,因為不能與資料庫配合

06. 網頁程式在使用者浏覽器端解析,當用戶端向伺服器請求資料時,伺服器會直接從磁盤檔案系統上傳回資料(不做任何解析)

優勢:

01. 通路的效率比較高

02. 網頁内容是固定不變的,是以,容易被搜尋引擎收錄

03. 網頁程式在使用者浏覽器端解析,當用戶端向伺服器請求資料時,伺服器會直接從磁盤檔案系統上傳回資料(不做任何解析)

劣勢:

01. 網頁頁面互動性交差,因為不能與資料庫配合

02. 儲存在網站伺服器檔案系統上的,是實實在在儲存在伺服器上的檔案實體

所謂的動态網頁是與靜态網頁相對而言的,也就是說,動态網頁的URL字尾不是.html .htm、.xml、.shtml、.js css 等靜态網頁的常見擴充名形式,而是.asp、.aspx、.php、.js、.do、.cgi等形式

請求響應資訊,發給屎務端進行處理,由服務端處理完成,将資訊傳回給用戶端,生成的頁面稱為動态頁面

動态網頁資源特點

01. 網覓擴充名字尾常見為:.asp、.aspx、.php、.js、.do、.cgi

02. 網頁頁面互動性強,可以與資料庫配合

03. 位址中含有問号"?"或 & 等特殊符号

04. 不便于被搜尋引擎收錄

01.用戶端與服務端互動能力強

01.通路的效率比較低

04.不便于被搜尋引擎收錄

将動态頁面僞裝成靜态頁面,便于被搜尋引擎收錄

将動态頁面轉換為靜态頁面的方式(rewrite 正規表達式)

将動态頁面内容轉換為靜态頁面,去掉動态頁面uri位址中的? &字元,僞裝成靜态頁面uri資訊

動态轉靜态(開發來配合完成)

獨立IP數是指不同IP位址的計算機通路網站時被計算的總次數

在一個區域網路内多個主機進行通路相同的網站位址時,獨立IP數記為多少?

一般一天内(00:00-24:00)相同IP位址的用戶端通路網站頁面隻會被計一次

記錄獨立IP的時間可為一天或一個月,目前通用的标準為"一天"。

頁面浏覽量或點選量

根據http請求封包:浏覽器版本,OS

根據http響應封包:cookie(id)    

cookie(id) 将服務端的資訊儲存到用戶端

session       将用戶端資訊儲存到伺服器

     cookie 存放在浏覽器緩存中---浏覽器進行檢視(谷歌)

【設定裡面】---【顯示進階設定】---【隐私設定】---【内容設定】---【所有cookie和内容設定】

     PS:cookie的格式資訊是由開發人員進行定義,是以不同的網站所生成的cookie資訊内容不太一緻

     cookie 資料存放在客戶的浏覽器上

     cookie 不是很安全,别人可以分析存放在本地的COOKIE并進行COOKIE欺騙

     cookie 不占用伺服器端資源,提升了伺服器性能

     cookie 儲存的資料不能超過4K,很多浏覽器都限制一個站點最多儲存20個cookie。

     session 存放在伺服器的記憶體中

     session 資料放在伺服器上

     session 從資料庫的安全應用方面會更安全些

     session 會在一定時間内儲存在伺服器上。當通路增多,會比較占用你伺服器的性能

将登陸資訊等重要資訊存放為SESSION

其他資訊如果需要保留,可以放在COOKIE中

1)利用awk或者相應統計指令,進行分析通路日志資訊進行統計

2)在網站通路頁面中嵌入統計程式代碼(頁面結尾處),隻有全部網頁加載完畢後,才進行資料統計

[root@tx ~]# curl -s  www.oldboyedu.com|grep "hm.baidu" --color -C5

    </script>

    <script>

       var _hmt = _hmt || [];

       (function() {

         var hm = document.createElement("script");

         hm.src = "https://hm.baidu.com/hm.js?9aa800f882f575237396648643111698";

         var s = document.getElementsByTagName("script")[0];

         s.parentNode.insertBefore(hm, s);

       })();

    <script src="https://s95.cnzz.com/z_stat.php?id=1261663735&web_id=1261663735" language="JavaScript"></script>

說明:利用hm.baidu.com在頁面curl時會出現,利用百度進行統計PV IP資訊

利用第三方公認的統計工具進行統計,例如:百度統計工具 hm.baidu.com

通過用戶端HTTP請求封包分析

通過Cookie資訊鑒别統計

網頁資訊統計軟體-piwik

         pwiki統計工具:(https://piwik.org/)

         pwiki示範頁面:https://piwik.org/demo

       ELK軟體介紹說明

         http://blog.oldboyedu.com/elk/

 A種了解:網站伺服器每秒能夠接收的最大使用者請求數。

 B種了解:網站伺服器每秒能夠響應的最大使用者請求數。

C種了解:網站伺服器在機關時間内能夠處理的最大連接配接數。(推薦)

ss -lntup|grep 80

       netstat -lntup|grep 80                

飯店吃飯/酒店住宿舉例

我們去餐館吃飯(如圖6-6所示),餐館裡一共有10張卓,每張桌最多坐4個人同時吃飯,那麼按一般人的了解,這個餐館能夠接收的并發吃飯人數為10M ,即40個并發,其實這裡就沒有考慮時間問題,1秒并發可以是40個,10分鐘内并發也是40個。因為這裡還有一個因素,就是每個人吃飯時長的問題,如果平均每個人10分鐘吃完,那麼可以說10分鐘内,這個餐館的并發為40個,而不是每秒鐘并發40個,因為,第一秒可以是40個人同時進來,但是第二秒就無人可進了(滿員了),如果說10分鐘并發是40個,下一個10分鐘還是40個,第三個10分鐘還可以是40個。即網站伺服器在機關時間内能夠處理的最大連接配接數。

高速公路通車舉例說明

高速公路每個方向都有兩條車道,那麼,同一時刻并發的車輛為兩輛,并且并發可以永遠為2 ,如果按秒計算,每秒的并發可能就有十幾輛,這個例子和餐館不同,因為高速路處理并發不需要處理時間。但是對于Web伺服器來講,是需要花費時間處理請求的,這個請求可能是1秒或數秒,是以說,并發不應該隻是使用者通路的請求數,而應是伺服器同時處理的并發數,并且機關時間不一定是1秒,可能是一個連接配接處理周期内的連接配接數。

 netstat -an|grep -i “est”|wc -l

ss -ant|grep -ic est

說明: 在 nginx web服務中相應的軟體子產品進行統計

例如:某網站的并發是5000。意味着機關時間内(了解為1秒或數秒内),正在處理的連接配接數,正在建立的連接配接數,加起來一共是5000個。

下面是國外學者對網站并發數的計算公式及參考說明:

Request Per Second + Simultaneous Browser connections + Thinking Time = Concurrent User

其中:

  Concurrent User 表示網并發使用者總數一

  Request Per Second[RPS]表示每秒請求數(吞吐量

  Simultaneous Browser connections[SBC]表示并發浏覽連接配接數。

  Thinking Time表示平均使用者思考時間。

常見的面試題如下:

1)請問你如何了解網站并發?

2)你們公司網站通路量是多少?是怎麼計算的?

—定要了解IP、PV、并發量這3個點的知識,在回答時才能有的放矢,這三個點的多少決定面試時說多大的架構,對于沒有經驗的新手不能在介紹有幾萬PV的同時描述數十台的叢集架構,這樣就尴尬了。

關于網站通路名額的計算,可以考慮:

運維部門的日志分析。

開發在頁面嵌入的JS程式(用于統計、收集、分析)。

營運市場通過第三方公司提供的工具進行統計,例如GA統計。

網站

獨立IP萬/曰

PV數萬/日

網站并發級别

機器數量

www.51cto.com

582'000

1'338,600

10000

數十台

www.ganji.com

1’734'000

13,872,000

10000-30000

幾百台

www.58.com

1398'000

22,927,200

www.weibo.com

30’180'000

166'593’600

幾十萬

千台

www.taobao.com

46,620'000

489,510,000

幾十萬~百萬

萬台

www.jd.com

6'08'000

98,949,600

數萬

www.163.com

10'320'000

79,154,000

十萬

www.suning.com

623,250

3,365,550

百台

所有的協定,都是為軟體提供服務的

利用HTTP協定的軟體,稱為www服務軟體或者web服務軟體

    Apache:這是中小型Web服務的主流,Web伺服器中的老大哥。

  Nginx:大型網站Web服務的主流,曾經Web伺服器中的初生牛犢,現已長大。

            Nginx的分支Tengine(http://tengine.taobao.org/)目前也在飛速發展。

    Lighttpd:這是一個不溫不火的優秀Web軟體,社群不活躍,靜态解析效率很高。

在Nginx流行前,它是大并發靜态業務的首選,

國内百度貼吧、豆瓣等衆多網站都有Lighttpd奮鬥的身影。

 PHP(FastCGI):大中小型網站都會使用,動态網頁語言PHP程式的解析容器。它可配合Apache解析動态程式,

不過,這裡的PHP不是FastCGI守護程序模式,而是mod_php5.so(module)。也可配合Nginx解析動态程式,此時的PHP常用FastCGI守護程序模式提供服務。

  Tomcat:中小企業動态Web服務主流,網際網路Java容器主流(如jsp、do)。

  Resin:大型動态Web服務主流,網際網路Java容器主流(如jsp、do)。

  IIS(Internet information services):微軟windows下的Web服務軟體(如asp、aspx)

 apache:http://www.apache.org/

 nginx: http://www.nginx.org/

 Resin: http://www.caucho.com/download

http://caucho.com/resin-3.1/doc/

http://caucho.com/resin/doc/install-apache.xtp

 Tomcat:http://tomcat.apache.org/whichversion.html

http://tomcat.apache.org

 PHP: http://php.net

HTTP請求封包格式

請求封包格式

封包資訊

請求行

GET / HTTP/1.1

請求的起始行(請求什麼資訊;協定版本)

請求頭

User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2

Host: www.baidu.com

Accept: */*

請求的頭部資訊(用戶端有關資訊說明)

空行

空行資訊(隔離上下文,說明請求結束)

請求封包主體

請求主體内容(隻有POST 方法可以送出主體)

HTTP服務簡介第1章 HTTP服務介紹第2章 HTTP資源第1章 HTTP服務介紹第2章 HTTP資源