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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

HTTP请求流程

發(fā)布時(shí)間:2023/12/15 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTP请求流程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

hhtp請求流程

首先http是一個(gè)應(yīng)用層的協(xié)議,在這個(gè)層的協(xié)議,只是一種通訊規(guī)范,也就是因?yàn)殡p方要進(jìn)行通訊,大家要事先約定一個(gè)規(guī)范。

http請求與響應(yīng)的步驟如下:

  • URL解析、域名解析
    輸入U(xiǎn)RL的時(shí)候,首先瀏覽器會去請求DNS服務(wù)器,通過DNS獲取相應(yīng)的域名對應(yīng)的IP。如果url里不包含端口號,則會使用協(xié)議的默認(rèn)端口號。

    瀏覽器根據(jù)訪問的域名找到其IP地址。DNS查找過程如下:

    1)瀏覽器緩存:瀏覽器會緩存DNS記錄一段時(shí)間。 但操作系統(tǒng)沒有告訴瀏覽器儲存DNS記錄的時(shí)間,這樣不同瀏覽器會儲存?zhèn)€自固定的一個(gè)時(shí)間(2分鐘到30分鐘不等)。

    2)系統(tǒng)緩存:如果在瀏覽器緩存里沒有找到需要的域名,瀏覽器會做一個(gè)系統(tǒng)調(diào)用(windows里是gethostbyname),這樣便可獲得系統(tǒng)緩存中的記錄。

    3)路由器緩存:如果系統(tǒng)緩存也沒找到需要的域名,則會向路由器發(fā)送查詢請求,它一般會有自己的DNS緩存。

    4)ISP DNS緩存:如果依然沒找到需要的域名,則最后要查的就是ISP緩存DNS的服務(wù)器。在這里一般都能找到相應(yīng)的緩存記錄。

  • 產(chǎn)生請求數(shù)據(jù)

    根據(jù)返回的IP和URL解析得到的參數(shù),結(jié)合應(yīng)用層的協(xié)議,確定發(fā)送的數(shù)據(jù)內(nèi)容,將這些數(shù)據(jù)放到一個(gè)緩沖區(qū)內(nèi),然后形成了應(yīng)用層的報(bào)文data。

    此時(shí),將應(yīng)用層的報(bào)文data發(fā)送到傳輸層。經(jīng)過傳輸層處理,如報(bào)文打上了傳輸頭的包頭(主要包含端口號,以及tcp的各種信息),得到tcp的數(shù)據(jù)傳送單位segment。

  • 建立網(wǎng)絡(luò)連接并發(fā)送請求包

    拿到域名對應(yīng)的IP地址之后,User-Agent(一般是指瀏覽器)會以一個(gè)隨機(jī)端口(1024< 端口 < 65535)向服務(wù)器的WEB程序(常用的有httpd,nginx等)80端口發(fā)起TCP的連接請求。

    采用ip地址+協(xié)議+端口號唯一標(biāo)示網(wǎng)絡(luò)中的一個(gè)進(jìn)程,利用socket進(jìn)行通信。基于socket進(jìn)行TCP三次握手,建立TCP連接。然后瀏覽器發(fā)起了http的請求。

    將傳輸層的數(shù)據(jù)段送到網(wǎng)絡(luò)層,在網(wǎng)絡(luò)層被打包,這樣封裝上了網(wǎng)絡(luò)層的包頭,包頭內(nèi)部含有源及目的的ip地址,該層數(shù)據(jù)發(fā)送單位被稱為packet。網(wǎng)絡(luò)層開始負(fù)責(zé)將這樣的數(shù)據(jù)包在網(wǎng)絡(luò)上傳輸,如何穿過路由器,最終到達(dá)目的地址。

  • 返回響應(yīng)數(shù)據(jù)

  • 瀏覽器解析html代碼,并請求html代碼中的資源(如js、css、圖片等)

  • 瀏覽器對頁面進(jìn)行渲染呈現(xiàn)給用戶

  • 斷開網(wǎng)絡(luò)連接

    若connection 模式為close,則服務(wù)器主動關(guān)閉TCP 連接,客戶端被動關(guān)閉連接,釋放TCP 連接;若connection 模式為keepalive,則該連接會保持一段時(shí)間,在該時(shí)間內(nèi)可以繼續(xù)接收請求;

HTTP請求格式和返回格式

  • 請求格式

    HTTP請求格式主要有四部分組成,分別是:請求行、請求頭、空行、消息體,每部分內(nèi)容占一行

    1
    2
    3
    4
    5
    6
    <request-line>
    <general-headers>
    <request-headers>
    <entity-headers>
    <empty-line> // (用于分割請求頭和消息體)
    [<message-body>]
    • 請求行中包含的請求方法:

      1
      2
      3
      4
      5
      GET: 完整請求一個(gè)資源 (常用)
      HEAD: 僅請求響應(yīng)首部
      POST:提交表單 (常用)
      PUT: 上傳
      DELETE:刪除
  • 響應(yīng)格式

    為了告知瀏覽器,Web服務(wù)器首先傳送一些HTTP頭信息,然后傳送具體內(nèi)容(即HTTP體信息),HTTP頭信息和HTTP體信息之間用一個(gè)空行分開

    HTTP響應(yīng)格式
    服務(wù)器接收處理完請求后返回一個(gè)HTTP相應(yīng)消息給客戶端。HTTP響應(yīng)消息的格式包括:狀態(tài)行、響應(yīng)頭、空行、消息體。每部分內(nèi)容占一行。

    1
    2
    3
    4
    5
    6
    <status-line>
    <general-headers>
    <response-headers>
    <entity-headers>
    <empty-line>
    [<message-body>]
常用的HTTP頭信息有([一個(gè)http請求的詳細(xì)過程](https://www.jianshu.com/p/aa97810e5fa4)):① HTTP 1.0 200 OK  這是Web服務(wù)器應(yīng)答的第一行,列出服務(wù)器正在運(yùn)行的HTTP版本號和應(yīng)答代碼。代碼"200 OK"表示請求完成。② MIME_Version:1.0 它指示MIME類型的版本。③ content_type:類型 這個(gè)頭信息非常重要,它指示HTTP體信息的MIME類型。如:content_type:text/html指示傳送的數(shù)據(jù)是HTML文檔。④ content_length:長度值 它指示HTTP體信息的長度(字節(jié))。

Socket

WEB Server都是基于Socket編程,又稱之為網(wǎng)絡(luò)編程,網(wǎng)絡(luò)協(xié)議通過一個(gè)叫做socket的對象抽象出來,socket可以建立網(wǎng)絡(luò)連接,讀數(shù)據(jù),寫數(shù)據(jù)。socket模塊定義了一些常量參數(shù),用來指定socket的的地址族、socket的類型、以及支持的TCP/IP協(xié)議。

利用ip地址+協(xié)議+端口號唯一標(biāo)示網(wǎng)絡(luò)中的進(jìn)程,然后利用socket進(jìn)行通信。

socket是在應(yīng)用層和傳輸層之間的一個(gè)抽象層,它把TCP/IP層復(fù)雜的操作抽象為幾個(gè)簡單的接口供應(yīng)用層調(diào)用已實(shí)現(xiàn)進(jìn)程在網(wǎng)絡(luò)中通信。

通常傳輸層的服務(wù)通過系統(tǒng)調(diào)用的方式提供,以socket的方式。對于客戶端,要想建立一個(gè)socket連接,需要調(diào)用這樣一些函數(shù)socket() bind() connect(),然后就可以通過send()進(jìn)行數(shù)據(jù)發(fā)送。

參考:

  • 一次完整的HTTP請求過程
  • 一個(gè)http請求的詳細(xì)過程
  • TCP與SOCKET的三次握手的對應(yīng)關(guān)系
  • 三次握手 四次握手 與socket函數(shù)的關(guān)系
  • http請求與響應(yīng)全過程
  • 寫給那些讓我糊里糊涂的HTTP、TCP、UDP、Socket
  • 總結(jié)

    以上是生活随笔為你收集整理的HTTP请求流程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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