0、DNS域名解析:遞歸查詢、迭代查詢
遞歸查詢:客戶端向第一個服務器查詢,給最終結果
迭代查詢:第一個服務器向根查詢
1 、建立連接:接收或拒絕連接請求:三次握手的過程
提高HTTP 連接性能:
持久連接:keep-alive, 長連接,重用TCP 連接,以消除連接和關閉的時延, 以事務個數和時間來決定是否關閉連接
① 串行連接
2 、接收請求:接收客戶端請求報文中對某資源的一次請求的過程,請求報文
單進程I/O 模型: 啟動一個進程處理用戶請求,而且一次只處理一個,多個請求被串行響應,太古老了
多進程I/O 模型 : 並行啟動多個進程, 每個進程響應一個連接請求
復用I/O 結構 :啟動一個進程,同時響應N 個連接請求,連接池
復用的多進程I/O 模型:啟動M個進程,每個進程響應N個連接請求,同時接收M*N 個請求
3 、處理請求
服務器對請求報文進行解析,並獲取請求的資源及請求方法等相關信息 ,根據方法,資源,首部和可選的主體部分對請求進行處理
示例:
GET 、POST 、HEAD 、PUT 、DELETE 、TRACE 、OPTIONS
4 、訪問資源:
服務器獲取請求報文中請求的資源web 服務器,即存放了web 資源的服務器,負責向請求者提供對方請求的靜態資源,或動態運行后生成的資源
例:/var/www/html/images/logo.jpg
http://www.along.com/images/logo.jpg
5、構建響應報文:
一旦Web 服務器識別出了資源,就執行請求方法中描述中的動作,並返回響應報文。響應報文中 ,包含有響應狀態碼、響應首部,如果生成了響應主體的話,還包括響應主體。
1)響應實體:如果事務處理產生了響應主體,就將內容放在響應報文中回送過去。響應報文中通常包括:
描述了響應主體MIME 類型的Content-Type 首部
2)URL 重定向:web 服務構建的響應並非客戶端請求的資源,而是資源另外一個訪問路徑
永久重定向:http://www.360buy.com ---> http://www.jd.com
臨時重定向:http://www.taobao.com ---> https://www.taobao.com
Web 服務器要負責確定響應主體的MIME 類型。有很多配置服務器的方法可以將MIME 類型與資源管理起來
魔法分類(掃描首部信息):Apache web 服務器可以掃描每個資源的內容,並將其與一個已知模式表,首部( 被稱為魔法文件) 進行匹配,以決定每個文件的MIME 類型。這樣做可能比較慢,但很方便,尤其是文件沒有標准擴展名的時候
顯式分類:可以對Web 服務器進行配置,使其不考慮文件的擴展名或內容,強制特定文件或目錄內容擁有某個MIME 類型,例如:php,Apache不識別,強制識別
類型協商: 有些Web 服務器經過配置,可以以多種文檔格式來存儲資源。在這種情況下,可以配置Web 服務器,使其可以通過與用戶的協商來決定使用哪種格式( 及相關的MIME 類型)" 最好"
6 、發送響應報文
Web 服務器通過連接發送數據時也會面臨與接收數據一樣的問題。服務器可能有很多條到各個客戶端的連接, 有些是空閑的,有些在向服務器發送數據,還有一些在向客戶端回送響應數據 。服務器 要記錄連接的狀態,還要特別注意對持久連接的處理。對非持久連接而言,服務器應該在發送了整條報文之后,關閉自己這一端的連接 。對持久連接來說,連接可能仍保持打開狀態,在這種情況下, 服務器要 正確地計算Content-Length 首部,不然客戶端就無法知道響應什么時候結束了
7 、記錄日志
最后 ,當事務結束時,Web 服務器會在日志文件中添加一個條目,來描述已執行的事務
日志類型:下一篇會詳解日志各項格式的意義
訪問日志:現在愈發重要,大數據的時代
錯誤日志:排錯使用
這里只做轉發,方便學習,原地址https://www.cnblogs.com/along21/p/7691234.html
另附一張http服務通信過程: