瀏覽器、中間件和服務器的關系
一次完整的http請求包括三次握手與四次揮手的過程。(http是基於tcp協議的)
1、 打開瀏覽器,地址欄輸入:www.cnblogs.com;
2、 開始進行域名解析
瀏覽器自身搜dns緩存 搜blog.csdn.net有沒有緩存 看看有沒有過期,如果過期就這個結束;
搜索操作系統 自身的dns緩存;
讀取本地的host文件;
瀏覽器發起一個dns的一個系統調用
3、 瀏覽器獲得域名對應的ip地址后 發起http三次握手
4、 tcp/ip 鏈接建立起來后,瀏覽器就可以向服務器發送http 請求 。
5、 服務器端接受到請求,根據路徑參數,經過后端的一些處理之后,把處理后的一個結果數據返回給瀏覽器,如果是一個完整的網頁,就是把完整的html頁面代碼返回給瀏覽器。
6、 瀏覽器拿到html頁面代碼,解析和渲染頁面,里面的 js、css圖片資源都需要經過上面的步驟。
7、 瀏覽器拿到資源對頁面進行渲染,最終把一個完整的頁面呈現給用戶。
一個網站源碼的執行是無法直接在服務上執行的,需要一個“中間軟件”來協調源碼和服務器之間的關系,讓服務器能夠間接的執行源碼。
一、服務器的定義
服務器指的是一個管理資源並為用戶提供服務的計算機,通常分為文件服務器、數據庫服務器和應用程序服務器。運行以上軟件的計算機或計算機系統也被稱為服務器。
二、中間件
中間件是服務器上負責解析http請求的一組應用程序,負責接收並解析http請求數據包,在服務器上找到數據包所請求的文件后,將其返回給客戶端,如果http數據包所請求的是一個動態腳本文件,如php等,中間件就要靠CGI與腳本語言解析軟件進行交互,處理好動態腳本文件后,再將處理后的文件其返回給瀏覽器。
說白了,中間件就是服務器上web端口(通常為80端口)的一個翻譯官,負責告訴服務器用戶要請求哪些文件,如果用戶請求的是一個靜態的html頁面,就直接在服務器上找到對應文件並將其交給用戶瀏覽器,如果用戶請求的是一個動態頁面如php,asp等,中間件在找到該文件后,將其交給對應的腳本語言解析程序,腳本語言解析程序將文件解析成html后,再把解析過的文件發送給瀏覽器。
所以,瀏覽器本身並不能渲染解析動態腳本文件,以php為例,瀏覽器解析的.php文件,實際上是經服務器php程序解析后的html文件。
再者,如果服務器上沒有安裝中間件,那么服務器就不能理解用戶發來的http數據包是什么意思,當然也就無法對http請求包進行正確的響應。
三、Web服務器
web服務器就是安裝了中間件的服務器。