日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

http服务详解(1)——一次完整的http服务请求处理过程

發(fā)布時間:2023/12/9 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 http服务详解(1)——一次完整的http服务请求处理过程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言:要熟練掌握一個服務(wù),首先需要非常了解這個服務(wù)的工作過程,這篇就詳細(xì)解釋了http服務(wù)的請求處理過程。

一次完整的http請求處理過程

(1)流程圖

(2)過程詳解

0、DNS域名解析:遞歸查詢、迭代查詢

  遞歸查詢:客戶端向第一個服務(wù)器查詢,給最終結(jié)果

  迭代查詢:第一個服務(wù)器向根查詢

1 、建立連接:接收或拒絕連接請求:三次握手的過程

提高HTTP 連接性能:

  并行連接:通過多條TCP 連接發(fā)起并發(fā)的HTTP 請求

  持久連接:keep-alive, 長連接,重用TCP 連接,以消除連接和關(guān)閉的時延, 以事務(wù)個數(shù)和時間來決定是否關(guān)閉連接

  管道化連接:通過共享TCP 連接發(fā)起并發(fā)的HTTP 請求

  復(fù)用的連接:交替?zhèn)魉驼埱蠛晚憫?yīng)報文(實驗階段,還未實現(xiàn))

① 串行連接

② 并行連接

③ 持久連接

④ 管道化連接

?

2 、接收請求:接收客戶端請求報文中對某資源的一次請求的過程,請求報文

Web 訪問響應(yīng)模型(Web I/O)

  單進(jìn)程I/O 模型啟動一個進(jìn)程處理用戶請求,而且一次只處理一個,多個請求被串行響應(yīng),太古老了

  多進(jìn)程I/O 模型 : 并行啟動多個進(jìn)程, 每個進(jìn)程響應(yīng)一個連接請求

  復(fù)用I/O 結(jié)構(gòu) :啟動一個進(jìn)程,同時響應(yīng)N 個連接請求連接池

    實現(xiàn)方法: 多線程模型和事件驅(qū)動

    多線程模型:一個進(jìn)程生成N個線程,每線程響應(yīng)一個連接請求

    事件驅(qū)動:一個進(jìn)程處理N 個請求,Nginx

      進(jìn)程:比如復(fù)制的工作,項目小組,耗資源

      線程:比如人,輕量級

      一個進(jìn)程必有一個線程,一個進(jìn)程可以有多個線程

  復(fù)用的多進(jìn)程I/O 模型:啟動M個進(jìn)程,每個進(jìn)程響應(yīng)N個連接請求,同時接收M*N 個請求


3 、處理請求

服務(wù)器對請求報文進(jìn)行解析,并獲取請求的資源及請求方法等相關(guān)信息 ,根據(jù)方法,資源,首部和可選的主體部分對請求進(jìn)行處理

  元數(shù)據(jù):請求報文首部

  <method> <URL> <VERSION>

  HEADERS 格式 name:value

  <request body>

示例:

  Host: www.along.com 請求的主機(jī)名稱

  Server: Apache/2.4.7

  HTTP 常用請求方式,Method:

  GET 、POST 、HEAD 、PUT 、DELETE 、TRACE 、OPTIONS

?

4 、訪問資源:

服務(wù)器獲取請求報文中請求的資源web 服務(wù)器,即存放了web 資源的服務(wù)器,負(fù)責(zé)向請求者提供對方請求的靜態(tài)資源,或動態(tài)運(yùn)行后生成的資源

資源放置于本地文件系統(tǒng)特定的路徑:DocRoot 服務(wù)的根

  DocRoot ---> /var/www/html

  例:/var/www/html/images/logo.jpg

  http://www.along.com/images/logo.jpg

web 服務(wù)器資源路徑映射方式:下篇會詳解

  (a) docroot

  (b) alias

  (c) 虛擬主機(jī)docroot

  (d) 用戶家目錄docroot

?

5、構(gòu)建響應(yīng)報文

一旦Web 服務(wù)器識別出了資源,就執(zhí)行請求方法中描述中的動作,并返回響應(yīng)報文。響應(yīng)報文中 ,包含有響應(yīng)狀態(tài)碼、響應(yīng)首部,如果生成了響應(yīng)主體的話,還包括響應(yīng)主體。

1)響應(yīng)實體:如果事務(wù)處理產(chǎn)生了響應(yīng)主體,就將內(nèi)容放在響應(yīng)報文中回送過去。響應(yīng)報文中通常包括:

  描述了響應(yīng)主體MIME 類型的Content-Type 首部

  描述了響應(yīng)主體長度大小的Content-Length

  實際報文的主體內(nèi)容

2)URL 重定向:web 服務(wù)構(gòu)建的響應(yīng)并非客戶端請求的資源,而是資源另外一個訪問路徑

  永久重定向:http://www.360buy.com --->?http://www.jd.com

  臨時重定向:http://www.taobao.com ?--->?https://www.taobao.com

3)MIME 類型:多媒體的郵件擴(kuò)展

Web 服務(wù)器要負(fù)責(zé)確定響應(yīng)主體的MIME 類型。有很多配置服務(wù)器的方法可以將MIME 類型與資源管理起來

  魔法分類(掃描首部信息):Apache web 服務(wù)器可以掃描每個資源的內(nèi)容,并將其與一個已知模式表,首部( 被稱為魔法文件) 進(jìn)行匹配,以決定每個文件的MIME 類型。這樣做可能比較慢,但很方便,尤其是文件沒有標(biāo)準(zhǔn)擴(kuò)展名的時候

  顯式分類:可以對Web 服務(wù)器進(jìn)行配置,使其不考慮文件的擴(kuò)展名或內(nèi)容,強(qiáng)制特定文件或目錄內(nèi)容擁有某個MIME 類型,例如:php,Apache不識別,強(qiáng)制識別

  類型協(xié)商: 有些Web 服務(wù)器經(jīng)過配置,可以以多種文檔格式來存儲資源。在這種情況下,可以配置Web 服務(wù)器,使其可以通過與用戶的協(xié)商來決定使用哪種格式( 及相關(guān)的MIME 類型)" 最好"

?

6 、發(fā)送響應(yīng)報文

Web 服務(wù)器通過連接發(fā)送數(shù)據(jù)時也會面臨與接收數(shù)據(jù)一樣的問題。服務(wù)器可能有很多條到各個客戶端的連接, 有些是空閑的,有些在向服務(wù)器發(fā)送數(shù)據(jù),還有一些在向客戶端回送響應(yīng)數(shù)據(jù) 。服務(wù)器 要記錄連接的狀態(tài),還要特別注意對持久連接的處理。對非持久連接而言,服務(wù)器應(yīng)該在發(fā)送了整條報文之后,關(guān)閉自己這一端的連接 。對持久連接來說,連接可能仍保持打開狀態(tài),在這種情況下, 服務(wù)器要 正確地計算Content-Length 首部,不然客戶端就無法知道響應(yīng)什么時候結(jié)束了

?

7 、記錄日志

最后 ,當(dāng)事務(wù)結(jié)束時,Web 服務(wù)器會在日志文件中添加一個條目,來描述已執(zhí)行的事務(wù)

日志類型:下一篇會詳解日志各項格式的意義

  訪問日志:現(xiàn)在愈發(fā)重要,大數(shù)據(jù)的時代

  錯誤日志:排錯使用

?

另附一張http服務(wù)通信過程:

?

下篇更精彩,盡情期待~

轉(zhuǎn)載于:https://www.cnblogs.com/along21/p/7691234.html

總結(jié)

以上是生活随笔為你收集整理的http服务详解(1)——一次完整的http服务请求处理过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。