什么是web服務器?
在Mosaic瀏覽器(通常被認為是第一個圖形化的web瀏覽器)和超鏈接內容的初期,演變出了“web服務器”的新概念,它通過HTTP協議來提供靜態頁面內容和圖片服務。在那個時候,大多數內容都是靜態的,并且HTTP 1.0只是一種傳送文件的方式。但在不久后web服務器提供了CGI功能。這意味著我們可以為每個web請求啟動一個進程來產生動態內容。現在,HTTP協議已經很成熟了并且web服務器變得更加復雜,擁有了像緩存、安全和session管理這些附加功能。隨著技術的進一步成熟,我們從Kiva和NetDynamics學會了公司專屬的基于Java的服務器端技術。這些技術最終全都融入到我們今天依然在大多數應用開發里使用的JSP中。
首先我們暫時不考慮HTTP協議的各種請求方式,我們先跟著**(Web服務器工作原理總體描述01)這張圖,將一次Web服務的工作流程過一遍,我們假設以瀏覽器作為客戶端
(1) 用戶做出了一個操作,可以是填寫網址敲回車,可以是點擊鏈接,可以是點擊按鍵等,接著瀏覽器獲取了該事件。
(2) 瀏覽器與對端服務程序建立TCP連接。
(3) 瀏覽器將用戶的事件按照HTTP協議格式**打包成一個數據包,其實質就是在待發送緩沖區中的一段有著HTTP協議格式的字節流。
(4) 瀏覽器確認對端可寫,并將該數據包推入Internet,該包經過網絡最終遞交到對端服務程序。
(5) 服務端程序拿到該數據包后,同樣以HTTP協議格式解包,然后解析客戶端的意圖。
(6) 得知客戶端意圖后,進行分類處理,或是提供某種文件、或是處理數據。
(7) 將結果裝入緩沖區,或是HTML文件、或是一張圖片等。
(8) 按照HTTP協議格式將(7)中的數據打包
(9) 服務器確認對端可寫,并將該數據包推入Internet,該包經過網絡最終遞交到客戶端。
(10) 瀏覽器拿到包后,以HTTP協議格式解包,然后解析數據,假設是HTML文件。
(11) 瀏覽器將HTML文件展示在頁面
以上為Web服務器工作基本原理。其實不難發現,這僅僅只是一個簡單的網絡通信。我們應該深信,作為一個服務器,其根本的工作無非有三個
接收數據 2. 發送數據 3. 數據處理
而Web服務器的本質就是 接收數據 ? HTTP解析 ? 邏輯處理 ? HTTP封包 ? 發送數據
高級的服務器無非就是將這三個部分更加細致的設計了。
原文:https://blog.csdn.net/qq_36359022/article/details/81666221?