web service基礎知識

来源:https://www.cnblogs.com/zbj666/archive/2020/01/11/12179956.html
-Advertisement-
Play Games

web service基礎知識 Web服務基礎 用戶訪問網站的基本流程 我們每天都會用web客戶端上網,瀏覽器就是一個web客戶端,例如谷歌瀏覽器,以及火狐瀏覽器等。 當我們輸入www.oldboyedu.com/時候,很快就能看到老男孩教育的官網了,這一切看起來很平淡無奇,背後又是什麼道理呢?普通 ...


 

web service基礎知識

 

Web服務基礎

用戶訪問網站的基本流程

我們每天都會用web客戶端上網,瀏覽器就是一個web客戶端,例如谷歌瀏覽器,以及火狐瀏覽器等。
當我們輸入www.oldboyedu.com/時候,很快就能看到老男孩教育的官網了,這一切看起來很平淡無奇,背後又是什麼道理呢?
普通人可以不知道,但是咱們作為it開發人員,必須得掌握清楚背後的技術。

下麵為你揭曉用戶訪問網站的基本流程

  1. 老男孩教育某python總監,講了一天課感覺很累,下了班躺床上打開他的macbook pro,雙擊瀏覽器,輸入www.pornhub.com網址後,系統首先會查找本地的DNS緩存以及hosts文件信息,確定是否存在www.pornhub.com功能變數名稱對應的ip解析記錄,如果有就直接獲取ip進行訪問伺服器,第一次請求時,dns緩存是沒有解析記錄的,hosts文件多數是開發臨時測試用
  2. 如果本地dns緩存和hosts文件都沒有功能變數名稱解析記錄,系統就會把某python總監訪問的網址解析請求發送給客戶端設置的DNS伺服器去解析,也叫做Local DNS,如果LDNS伺服器的本地緩存有對應的解析記錄就會直接返回給客戶端IP地址,如果沒有LDNS就會繼續請求其他的DNS伺服器
  3. LDNS繼續從DNS系統的"."(根)開始請求www.pornhub.com功能變數名稱的解析,並且根據每個層級的DNS伺服器系統進行系列的查找,最終在DNS網路上找到www.pornhub.com功能變數名稱對應的授權DNS伺服器。這個授權DNS伺服器就是企業(個人)購買功能變數名稱時用於管理功能變數名稱解析的伺服器,伺服器上有對應的功能變數名稱(IP)解析。
  4. 此時授權的DNS伺服器就會把www.pornhub.com對應的IP解析記錄,例如(1.1.1.1)發送給LDNS
  5. 此時LDNS會把解析記錄發給瀏覽器,並且緩存功能變數名稱和IP的解析記錄,便於下一次更快的返回請求
  6. 瀏覽器獲得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組成

  1. 協議  
  2. 主機ip或功能變數名稱
  3. 主機資源具體地址

第一部分用"://"隔開,第二部分用"/"符號隔開

靜態網頁資源

在網頁設計中,純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

動態網頁資源特點

  1. 網頁以資料庫技術為支撐,大大降低網站維護的工作量
  2. 動態網頁技術的網站可以實現更多的功能,如用戶註冊,用戶登錄,投票,用戶管理,博客管理等
  3. 動態網頁不是獨立存在伺服器上的網頁文件,用戶請求動態程式時,伺服器解析程式並且可能讀取資料庫返回一個完整的網頁內容
  4. 搜索引擎(爬蟲)一般不會抓取網址中的“?”後面的內容,因此企業都會做偽靜態技術頁面

舉例(飯店炒菜,現做)

網站流量術語

網站統計一般以數值較大的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服務軟體

  1. Apache
  2. IIS
  3. Nginx
  4. Tengine
  5. Tomcat
  6. 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報文有哪些部分

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.創建泛型哈希表,然後加入元素 Dictionary<string,string> openWith=new Dictionary<string, string>(); openWith.Add("txt","notepad.exe"); openWith.Add("bmp","paint.exe ...
  • 在MVC中寫API時,沒有收到參數如何解決? 通過jQuery.POST測試成功。後來又通過F12發送,發現始終無法收到參數。 註:我的介面接收參數是一個類對象,沒有寫[FromBody]) [HttpPost] public MyResultInfo Index(MyParamInfo para) ...
  • name為自定義節點的名稱,type為自定義節點解析文件的命名空間和自定義節處理程式的類名 1. 在<configSections>節點中註冊你所要定義的節點名稱及用於處理該節點的配置節處理程式。代碼如下: <configSections> <section name="dbFactory" typ ...
  • 一. Docker安裝 Docker 要求版本Docker 18.09.0+以上 安裝地址:https://www.runoob.com/docker/windows-docker-install.html 1.操作系統win10系統,在啟用或關閉Windows功能中,開啟hyper-v 2.安裝後 ...
  • using System; namespace runoob { class MyClass { static void Main(string[] args) { MyClass1 myClass = new MyClass1(); myClass.Dialog(); } } class MyCl ...
  • 引言 .net core 3.1 是微軟LTS長期3年支持版本,正式發佈於2019 12 03,並且在windows平臺上支持了Winfrom跟WPF桌面應用。本文將介紹使用 vs 2019 開發 Windows Forms 桌面應用程式。 開發 Windows Forms 程式 首先,打開 vs ...
  • saltstack高效運維 salt介紹 saltstack是由thomas Hatch於2011年創建的一個開源項目,設計初衷是為了實現一個快速的遠程執行系統。 salt強大嗎 系統管理員日常會進行大量的重覆性操作,例如安裝軟體,修改配置文件,創建用戶,批量執行命令等等。如果主機數量龐大,單靠人工 ...
  • nginx入門與實戰 網站服務 想必我們大多數人都是通過訪問網站而開始接觸互聯網的吧。我們平時訪問的網站服務 就是 Web 網路服務,一般是指允許用戶通過瀏覽器訪問到互聯網中各種資源的服務。 Web 網路服務是一種被動訪問的服務程式,即只有接收到互聯網中其他主機發出的 請求後才會響應,最終用於提供服 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...