<menu id="ycqsw"></menu><nav id="ycqsw"><code id="ycqsw"></code></nav>
<dd id="ycqsw"><menu id="ycqsw"></menu></dd>
  • <nav id="ycqsw"></nav>
    <menu id="ycqsw"><strong id="ycqsw"></strong></menu>
    <xmp id="ycqsw"><nav id="ycqsw"></nav>
  • 服務器是干什么的,服務器價位及使用方法


    在前端面試過程中,有一個知識點特別容易被提及,即服務器問題。

    01

    web服務器

    web服務器一般是指網站服務器,它是駐留在互聯網上的一種計算機程序,主要作用是向瀏覽器等web客戶端提供文檔信息。同時,也可以將瀏覽器的文檔信息進行持久化保存。目前來看,市面上主流的web服務器包括以下幾種:

    1、Apache服務器

    你用web服務器,知道它的工作原理嗎?

    圖為Apache服務器logo

    2、Tomcat服務器

    你用web服務器,知道它的工作原理嗎?

    圖為Tomcat服務器logo

    3、Node.js服務器

    你用web服務器,知道它的工作原理嗎?

    圖為Node.js服務器的logo

    上面就是目前幾種比較主流的服務器,當然Node.js作為后起之秀,是最符合前端工程師使用的一款服務器。同樣,這也是大家面試時,經常被問到的一點。

    02

    服務器工作原理

    你用web服務器,知道它的工作原理嗎?

    圖為服務器工作原理

    上面這幅圖,就是一張web服務器的工作原理圖。也許有同學很驚訝,這個圖和之前說過的HTTP請求圖差不多呀!

    其實,在軟件開發與使用過程中,web服務器就等同于HTTP服務器。雖然不同web服務器之間有細節上的不同,但是基礎原理是一樣的。下面,我們就根據上面這幅圖來一一分析:

    Step1:用戶在地址欄輸入一個網址,然后點擊回車鍵;

    Step2:瀏覽器與服務器建立TCP連接;

    Step3:瀏覽器將用戶的事件按照HTTP協議要求的格式打包成數據包,這個過程的本質就是在待發送緩沖區中有這一段HTTP協議格式的字節流;

    Step4:瀏覽器確認服務器可寫,將該數據包推入Internet中,最終,該包被遞交到服務端;

    Step5:服務器在接收到該數據包后,以同樣的格式進行解析,獲取客戶端的意圖;

    Step6:在獲取了客戶端的意圖之后,服務器進行分類處理,或是提供某一文件,或是處理相關數據;

    Step7:將處理結果裝入緩沖區,或者文檔,或是其他內容;

    Step8:服務器將按照HTTP協議格式,將Step7中的數據進行打包;

    Step9:服務器確定對端可寫,將數據包推入Internet,該包經過網絡處理,最終返回至客戶端;

    Step10:客戶端拿到包之后,以HTTP協議格式進行解包,然后解析數據;

    Step11:客戶端處理相關數據,并且展示在頁面之上。

    以上這11步,就是web服務器最基本的工作原理。通過梳理,我們不難發現,這就是一個簡單的網絡通信過程。換句話說,就是一個簡單的發送數據、接收數據、處理數據的過程。更高級的web服務器,無非也就是將上述的三個基礎內容劃分得更加詳細一點而已。

    03

    靜態文件工作原理

    對于web服務器來說,它除了提供一些數據功能之外,另一個主要功能就是提供靜態文件了。

    你用web服務器,知道它的工作原理嗎?

    圖為web服務器實現靜態文件服務

    上圖就是一個以GET請求方式為模板的流程圖,通過對圖的觀察,我們不難發現,整個靜態文件處理過程與之前的動態數據處理基本保持一致,變化之處就在于紅色&藍色標注的位置。

    Step1:當用戶點擊一個網頁鏈接或者需要加載一些靜態資源時(比如css文件、JPEG圖片等)產生;

    Step2:服務程序解包之后,優先判斷其請求方式,確定是GET請求,并且是對該服務器上某一特定資源的請求;

    Step3:服務器需要先確定路徑是否存在,如果路徑真實存在,再確定文件是否可以獲??;

    Step4:確定了該路徑合法、可獲取之后,服務程序將根據該文件類型的不同,進行不同的裝載過程,記錄其類型作為Step8(上文有描述)中HTTP協議中對應的返回類型,并且加入響應頭。

    你用web服務器,知道它的工作原理嗎?

    圖為一個簡易靜態資源傳輸過程

    04

    web服務器數據提交原理

    如果只是網頁瀏覽的功能,是無法真正實現網站功能的。要想更好實現網站功能,那么客戶端與服務端之間,進行數據交互必不可少。什么叫做數據交互呢?比如我們注冊/登錄、資源上傳、遠程指令等等,都可以叫做客戶端與服務器的數據交互。

    你用web服務器,知道它的工作原理嗎?

    圖為客戶端與服務器數據交互示意

    通過觀察上圖,我們可以發現,用戶提交數據時,往往是通過單擊一個功能按鈕來實現。那么單擊這個功能按鈕之后,又做了什么呢?

    首先,程序會將用戶需要提交的數據以POST格式要求進行寫入,并填入服務端需要提交到服務端的可執行程序路徑;

    其次,服務端將參數與CGI進行綁定,復制進程,用管道傳遞參數、接收結果;

    最后,子進程執行CGI,接收父進程傳來的參數,運算并返回結果,父進程將結果裝入靜態模板文件,放入緩沖區。

    05

    動態技術

    通過上述內容的基本描述,我們可以得出一個結論,就是web服務器都是以短連接為主的,并且,獲取到的數據在到達客戶端的時候,一定是靜態不變的。這好像與我們所說的動態數據又有一些出入,這是因為所謂的動態實際上指的是這兩種情況——

    情況一:

    用戶POST提交數據到某個程序,程序根據該數據作為運行參數,得出的結果裝入靜態的模板頁中,返回該靜態頁。但是從用戶的角度來看,同樣一個頁面,完成了一個操作后頁面數據不一樣,就會認為這是動態頁面。

    情況二:

    用戶GET請求一個JavaScript文件,服務端不做任何處理,直接返回該文件,由負責解析該文件的瀏覽器負責執行,在本地刷新頁面。

    用戶POST請求提交數據到服務端,服務端根據提交的數據返回靜態文件,瀏覽器接收執行。

    以上就是Web服務器的工作原理,希望對大家在面試或工作中有所幫助。如果同學們看完以后還有疑惑尚未理清,也可添加下方微信一起探討哦~

    版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

    發表評論

    登錄后才能評論
    国产精品区一区二区免费