WEB服務基礎知識

HTTP服務重要原理php

1、客戶端瀏覽器輸入網址,系統首先查找本地hosts文件及local DNS緩存信息=(沒有)=>ISP DNS請求13臺根服務器==>向下一層頂級域名DNS查詢==>找到受權DNS。
  找到後,本地進行緩存一份,並把另外一份發送給客戶端。客戶端經過IP:port發起http請求,web server處理請求,並將結果返回給客戶端
2、DNS做用   DNS,簡單地說,就是Domain Name System,翻成中文就是「域名系統」。.cn .com .org .net .cn .edu等頂級域名
    設置A記錄,域名解析成IP
    設置CNAME別名,此功能一般用於CDN加速
    設置MX郵件記錄,用於搭建郵件服務時使用
    設置PTR,IP解析成域名,郵件服務使用到
  # dig www.baidu.com
  # nslookup www.baidu.com
  # ping www.baidu.com

 

HTTP協議(超文本傳輸協議)css

HyperText Transfer Protocl,其重要應用:WWW服務。起初設計目的是提供發佈和接收HTML頁面的方法。是互聯網上通訊協議方案之一,最流行的是WEB瀏覽器與服務器之間的通訊應用,即WWW應用或Web應用。
  http  默認端口80
  https 默認端口443  網銀、支付
 HTTP 1.0
  在HTTP0.9的基礎上增長了http請求頭、支持更多的請求方法,以及對多媒體對象的處理。
  規定瀏覽器與服務器只保持短暫的鏈接,瀏覽器的每次請求都須要與服務器創建一個TCP鏈接,服務器完成請求處理後當即斷開TCP鏈接,服務器不跟蹤每一個客戶也不記錄過去的請求。
當下主流版本HTTP/1.1
  重點修復HTTP設計中的缺陷,從可擴展性緩存處理帶寬優化持久鏈接host請求頭更多錯誤通知消息傳遞內容協商幾個方面作列相關改進。
  支持持久鏈接,在一個TCP鏈接上能夠傳送多個HTTP請求和響應,減小了創建和關閉鏈接的消耗和延時
  HTTP
1.1中增長Host請求頭字段後,WEB瀏覽器可使用主機頭名來明確表示要訪問服務器上的哪一個WEB站點,實現了在一臺WEB服務器上能夠在同一個IP地址和端口號上使用不一樣的主機名來建立多個虛擬WEB站點。
  HTTP 1.1還提供了與身份認證、狀態管理和Cache緩存等機制相關的請求頭和響應頭。

  

 

生產常見HTTP狀態碼html

crul -I 域名 返回head信息

#curl
-I -m 10 -o /dev/null -s -w %{http_code} www.baidu.com 取得返回值 -I --head -m --max-time <seconds> Maximum time allowed for the transfer -w/--write-out <format> What to output after completion
   -i/--include       Include protocol headers in the output (H/F)輸出時帶head
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(內部服務器錯誤)(seliux 而又沒有設置規則許可)服務器遇到了意料不到的狀況,不能完成客戶端的請求,這是個籠統的報錯,通常爲服務器的設置或者內部程序問題致使。 - internal error in haproxy => HTTP 500 - A generic error message, given when no more specific message is suitable. 502 - Bad Gateway(壞的網關),通常是網關服務器(代理)請求後端服務時,後端服務沒有按照http協議正確返回結果。(nginx請求php時也會),通常多是後端節點問題 - 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(網關超時),通常是網關服務器請求後端服務時,後端服務沒有在特定的時間內完成服務。(設置了代理向後請求的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. 100-199 用於指定客戶端相應的某些動做 200-299 用於表示請求成功 300-399 用於已經移動的文件而且常被包含在定位頭信息中指定新的地址信息 400-499 用於指出客戶端的錯誤 500-599 用於指出服務器錯誤


HTTP請求方法前端

序號     方法     描述
1 GET         請求指定的頁面信息,並返回實體主體。
2 HEAD       相似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭
3     POST      向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會致使新的資源的創建和/或已有資源的修改。
4 PUT       從客戶端向服務器傳送的數據取代指定的文檔的內容。
5 DELETE     請求服務器刪除指定的頁面。
6     CONNECT     HTTP/1.1協議中預留給可以將鏈接改成管道方式的代理服務器。
7     OPTIONS     容許客戶端查看服務器的性能。
8     TRACE     回顯服務器收到的請求,主要用於測試或診斷。
9     PATCH     實體中包含一個表,表中說明與該URI所表示的原內容的區別。
10 MOVE     請求服務器將指定的頁面移至另外一個網絡地址。
11     COPY     請求服務器將指定的頁面拷貝至另外一個網絡地址。
12     LINK     請求服務器創建連接關係。
13     UNLINK     斷開連接關係。
14     WRAPPED     容許客戶端發送通過封裝的請求。
15     Extension-mothed     在不改動協議的前提下,可增長另外的方法。


HTTP報文(fiddler、http watch能夠獲取到信息的軟件)java

HTTP請求報文Request Message
  一個HTTP請求報文格式由請求行(request line)、請求頭(header)、空行和請求報文主體(get沒有,post纔有)4個部分組成

HTTP協議的請求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。
1、請求行 包括:請求方法URL協議版本 示例:GET /index.html HTTP/1.1 2、請求頭 由關鍵字和值組成,常見以下   Accept:      告訴服務器,客戶端支持的數據類型。 Accept:image/gif,image/jpeg   Accept-Charset:  告訴服務器,客戶端採用的編碼。   Accept-Encoding:  告訴服務器,客戶機支持的數據壓縮格式。   Accept-Language:  告訴服務器,客戶機的語言環境。   Host: 客戶機經過這個頭告訴服務器,想訪問的主機名。   If-Modified-Since: 客戶機經過這個頭告訴服務器,資源的緩存時間。   Referer:        客戶機經過這個頭告訴服務器,它是從哪一個資源來訪問服務器的。(通常用於防盜鏈)   User-Agent:    客戶機經過這個頭告訴服務器,客戶機的軟件環境。   Cookie:     客戶機經過這個頭告訴服務器,能夠向服務器帶數據。   Connection:    客戶機經過這個頭告訴服務器,請求完後是關閉仍是保持連接。   Date:        客戶機經過這個頭告訴服務器,客戶機當前請求時間。 三、空行
四、請求報文主體  GET方法沒有,POST方法纔有

HTTP響應報文Response Message HTTP響應也由四個部分組成,分別是:狀態行(起始行)、響應頭部、空行、響應正文即報文主體。 # curl
-i baidu.com HTTP/1.1 200 OK Date: Sun, 06 Nov 2016 18:03:46 GMT Server: Apache ======================= Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT ETag: "51-47cf7e6ee8400" Accept-Ranges: bytes Content-Length: 81 Cache-Control: max-age=86400 Expires: Mon, 07 Nov 2016 18:03:46 GMT Connection: Keep-Alive Content-Type: text/html 空行 <html> <meta http-equiv="refresh" content="0;url=http://www.baidu.com/"> </html>

HTTP協議原理mysql

當web客戶端向web服務器發送請求報文前,先要經過TCP/IP協議在二者之間創建TCP/IP鏈接,整個過程原理以下
  1、瀏覽器輸入訪問地址
  2、DNS解析
  3、web瀏覽器將端口從url解析,轉換成ip:port
  4、web瀏覽器經過解析後的IP地址及端口號,與web服務器創建tcp鏈接
  5、tcp鏈接後,請求http報文
  6、服務器響應並讀取請求信息,並返回http報文,響應報文內容格式及信息細節(web請求後端細節)
  7、web服務器關閉http鏈接,關閉tcp鏈接,web瀏覽器將內容輸出到屏幕

HTTP資源nginx

媒體類型(MINE)/usr/local/nginx/conf/mime.types
  當web服務器響應HTTP請求時,會爲每一個http對象數據加一個MINE類型。當web瀏覽器獲取到服務器返回的對象時,會去查看相關的MINE類型,進行相應處理

URL介紹(三部分)URL是URI命名機制的一個子集,Uniform Resource Location
  協議http (分隔符://) ip或域名  分隔符/ 資源目錄地址

URI  統一資源標識符(Uniform Resource Identifier,或URI)
  是一個用於標識某一互聯網資源名稱的字符串。(指向一個用戶郵箱地址便是一個URI)


靜態網頁資源web

相對於動態而言的,是指沒有後臺數據庫,不含程序(php jsp asp)和可交互的網頁。 URL固定
開發者編寫什麼,就顯示什麼,一旦完成,基本不會變,更新和維護也比較麻煩
核心特色:
  1、客戶端瀏覽器解析程序,不須要讀取數據庫,性能和效率較高。
  2、擴展名格式
    a、純文本類程序或文件  html html xml shtml js css等。
    b、圖片類文件或數據文檔  jpg、gif、png、bmp、txt、doc、ppt等。
    c、視頻類流媒體文件  mp四、swf、flv、avi、wmv等。
  3、沒有數據庫支持,和用戶交互差,功能實現差。
 其餘特色:url固定、網頁是實實在在保存在服務器上的實體,每一個網頁都是一個獨立文件,內容相對固定、交互性差、網頁程序在用戶瀏覽器解析,效率高
 優勢:性能高體驗好、便於SEO(網站推廣)
 缺點:交互性差、維護麻煩 
有關靜態網頁架構思想:
  高併發訪問量場景,作架構優化,關鍵環節:把動態轉成靜態,不直接請求數據庫和動態服務器,並把靜態內容推送到前端緩存中提供服務,能夠提高用戶體驗,節約服務器和維護成本


動態網頁sql

以asp php aspx jsp .do cgi等爲後綴,通常在網址中常常會有標誌性符號「?,&」,大多數狀況須要數據庫支持
核心特色
  1、程序在服務器端解析,加後端須要數據庫支持,所以訪問效率差些。
  2、後綴通常爲asp php aspx jsp do cgi等
  3、能夠實現更多功能。註冊、登陸、支付
  4、動態網頁並非獨立存在於服務器上的文件,當用戶請求服務器上的動態程序時,服務器解析程序並讀取數據庫返回一個完整的網頁內容。
  5、動態頁中的「?」對搜索引擎的收錄存在必定問題,搜索引擎不會從一個網站的數據庫中訪問所有網頁,或者處於技術方面的考慮,搜索蜘蛛通常不會去抓取網址中的「?」後面的內容,所以採用動態網頁在進行搜索引擎推廣時須要作必定的技術處理(僞靜態技術)才能適應搜索引擎的抓取要求。6、程序在服務器端解析

有關動態網頁架構思想:
  1、靜態效率是通常動態的10-30倍。
  2、效率差,併發能力低,高併發場景中,應儘量轉換成靜態網頁提供服務。
  3、動轉靜也要根據業務需求設計,例如,更新頻繁的網站會產生數據不一致的狀況,即用戶看到的數據不會是最新內容。
  4、動轉靜,高併發網站的必備的架構方案,是高級架構師的職責所在

僞靜態網頁數據庫

經過某些技術(rewrite)把動態url假裝成靜態url,可是用戶訪問的仍是動態網頁,看起來是靜態的,搜索引擎和用戶就會誤認爲靜態網頁。實現過程通常是由運營產品提出需求,開發和運維共同實現。
特色一、從url上,經過rewrite技術,改寫列url,(如地址結尾帶html),有利於搜索引擎抓取,用戶體驗加強。從性能上,僞靜態功能不但沒有提高網站性能,反而下降
做用一、便於搜索引擎二、用戶瀏覽體驗
缺點一、影響性能

僞靜態網頁小結
  1、利用rewrite技術將動態網頁假裝成靜態網頁(URL改寫)   2、便於搜索引擎搜錄提高用戶訪問量及用戶體驗
  3、訪問性能沒有提高,轉換僞靜態還會消耗資源,所以性能反而會降低   4、儘量將動態網頁轉換成真正的靜態頁面
  5、併發量不是很大或者動態更新過於頻繁的時候,用rewrite實現僞靜態也不錯
  6、僞靜態網頁的實現過程,通常是由運營產品提出需求,開發和運維共同實現(discuz bbs wordpress blog)


常見端口及POP3 SMTP IMAP介紹

ftp    21 
ssh    22
smtp   25
mysql  3306
rsync  873
snmp   161
rpc    111
remote desk  3389
http    80
https   443
pop3   110
dns    53
rsyslog  514
imap    143 POP3 110
  全稱「Post Office Protocol3」,即郵局協議的第3個版本,它規定怎樣將我的計算機鏈接到Internet的郵件服務器和下載電子郵件的電子協議。
  它是因特網電子郵件的第一個離線協議標準,POP3容許用戶從服務器上把郵件存儲到本地主機(即本身的計算機)上,同時刪除保存在郵件服務器上的郵件,而POP3服務器則是遵循POP3協議的接收郵件服務器,用來接收電子郵件的。 SMTP 25
  全稱是「Simple Mail Transfer Protocol」,即簡單郵件傳輸協議。它是一組用於從源地址到目的地址傳輸郵件的規範,經過它來控制郵件的中轉方式。
  SMTP 協議屬於 TCP
/IP 協議簇,它幫助每臺計算機在發送或中轉信件時找到下一個目的地。SMTP 服務器就是遵循 SMTP 協議的發送郵件服務器。   SMTP 認證簡單地說就是要求必須在提供了帳戶名和密碼以後才能夠登陸 SMTP 服務器,這就使得那些垃圾郵件的散播者無可乘之機。 增長 SMTP 認證的目的是爲了使用戶避免受到垃圾郵件的侵擾。 IMAP 143
  全稱「Internet Mail Access Protocol」即交互式郵件存取協議,它是跟POP3相似郵件訪問標準協議之一。
  不一樣的是,開啓了IMAP後,您在電子郵件客戶端收取的郵件仍然保留在服務器上,同時在客戶端上的操做都會反饋到服務器上,如:刪除郵件,標記已讀等,服務器上的郵件也會作相應的動做。
  因此不管從瀏覽器登陸郵箱或者客戶端軟件登陸郵箱,看到的郵件以及狀態都是一致的。

網站流量度術語

獨立IP(訪問量)
  即InternetProtocol,是指不一樣的IP地址的計算機訪問網站的被計算的總次數,通常標準爲1天   度量一、分析訪問日誌,ip去重複
2、每一個頁面結尾嵌入js程序代碼(第三方或開發)3、第三方統計谷歌統計GA
PV
-Page View
  用戶打開一次頁面就是一個pv   度量一、訪問日誌,需排除js css及各類圖片日誌信息,只計算html、php等頁面URI
2、js GA
UV
-Unique Visitor
  同一客戶端訪問網站被計算爲一個UV,通常以Cookie技術(多人共用電腦)   度量一、經過HTTP請求報文分析
2、Cookie(客戶端禁止、刪除)

併發鏈接的概念

怎麼理解網站最大併發量?(沒確切說法)
  每秒可以接收的最大用戶請求數?
  每秒可以響應的最大用戶請求數?
  在單位時間內可以處理的最大鏈接數或請求數?
  好比某網站併發,理解爲單位時間(1秒或數秒內),正在處理的鏈接數和正在創建的請求數,加起來共5000

參考
server數50臺  50萬獨立IP/日 150萬PV/日  10000併發級別

當前互聯網主流web服務

經常使用來提供靜態web服務的軟件
  apache 中小型web服務主流
  nginx  大型網站web服務主流
  lighttpd 正在被淘汰的

經常使用來提供動態服務的軟件
  1php(fastcgi)大中小型網站都會用,動態網頁語言php程序的解析容器
    a、配合apache解析動態程序,這裏的php不是Fastcgi守護進程模式,而是mod_php5.so(module)
    b、配合nginx解析動態程序,這裏的php經常使用Fastcgi守護進程模式提供服務
  2tomcat 中小企業動態web服務主流,互聯網java容器主流(jsp,do)
  3resin 大型動態web服務主流,互聯網java容器主流(jsp,do)
  4IIS 微軟Windows下的Web服務軟件(asp,aspx)
相關文章
相關標籤/搜索