從萌新的角度理解Http協(xié)議(一)之交互流程

HTTP協(xié)議,是構(gòu)建Web世界的基石技術(shù),HTTP協(xié)議應(yīng)是軟件開發(fā)者必備的知識(shí)儲(chǔ)備。本文是介紹HTTP協(xié)議的入門級(jí)文章。 通過在瀏覽器輸入網(wǎng)址這個(gè)簡(jiǎn)單的案例來介紹Http協(xié)議的交互流程。文本介紹交互流程包括兩個(gè)方面:

  • 客戶端和服務(wù)端的交互

    1. HTTP半雙工通信
    2. HTTP無狀態(tài)特性
  • HTTP協(xié)議和其他協(xié)議之間的交互(DNS,TCP,IP等)

    用戶在瀏覽器輸入網(wǎng)址到瀏覽器顯示網(wǎng)址內(nèi)容的這一過程中,介紹HTTP協(xié)議是如何配合其他協(xié)議完成整個(gè)通信流程。

一丶HTTP協(xié)議中客戶端和服務(wù)端之間的交互

瀏覽器與目標(biāo)服務(wù)器之間的交互

繪制上圖的主要目的,是為了解釋HTTP協(xié)議交互中的兩個(gè)特點(diǎn):

  1. 基于請(qǐng)求-響應(yīng)形式的半雙工通信

    半雙工通信是指,雙方均可以相互發(fā)送數(shù)據(jù),但是不能同時(shí)發(fā)送數(shù)據(jù)。HTTP協(xié)議的通信流程就是典型的半雙工通信。比如,當(dāng)我們?cè)跒g覽器中輸入某個(gè)域名后,將想目標(biāo)服務(wù)器發(fā)送請(qǐng)求報(bào)文。目標(biāo)服務(wù)器收到請(qǐng)求報(bào)文之后,將送回響應(yīng)報(bào)文。不存在瀏覽器和服務(wù)器同時(shí)發(fā)送數(shù)據(jù)的情況。

  2. HTTP協(xié)議的無狀態(tài)特性

    HTTP協(xié)議的無狀態(tài)性是HTTP協(xié)議簡(jiǎn)潔輕便的一種體現(xiàn)。HTTP協(xié)議的無狀態(tài)性體現(xiàn)在如下兩點(diǎn):

    • 服務(wù)端同時(shí)接收到多個(gè)HTTP請(qǐng)求時(shí),其認(rèn)為每個(gè)HTTP請(qǐng)求都是相等的,其不能從HTTP請(qǐng)求中識(shí)別出不同的用戶。

    • 同一個(gè)用戶對(duì)相同服務(wù)器發(fā)送的HTTP請(qǐng)求之間并不任何關(guān)系,更不具備任何記憶功能。此時(shí)發(fā)送的HTTP請(qǐng)求和前一時(shí)刻發(fā)送的HTTP請(qǐng)求是相互獨(dú)立的。

二丶HTTP協(xié)議與其他協(xié)議之間的交互

HTTP協(xié)議是TCP/IP協(xié)議棧的一部分,按照TCP/IP協(xié)議分層理念,其位于應(yīng)用層。一個(gè)完整的通信流程必然是由許多協(xié)議相互配合完成。本節(jié)將介紹HTTP協(xié)議是如何配合其他協(xié)議完瀏覽器發(fā)出請(qǐng)求到獲取響應(yīng)的通信過程

image

  1. DNS域名解析過程
    DNS是域名解析系統(tǒng),域名解析系統(tǒng)的只要目的就是完成域名地址到IP地址的轉(zhuǎn)換。此處引用一張圖來介紹DNS域名解析過程(圖片來源)。

    image

    結(jié)合上圖,以www.baidu.com這個(gè)域名為例。在瀏覽器中輸入該域名后,會(huì)經(jīng)過如下域名解析過程。

    • 從本機(jī)的host文件中檢查域名和IP地址的映射。host文件默認(rèn)保留了
      localhost->127.0.0.1這個(gè)映射關(guān)系
    • host文件中不存在解析關(guān)系時(shí),檢查瀏覽器是否存在解析緩存,若命中則使用解析緩存,否則將解析請(qǐng)求轉(zhuǎn)發(fā)給local DNS(local DNS是服務(wù)局部區(qū)域的域名解析服務(wù)器).
    • local DNS先檢查自身是否存在該域名解析緩存,若命中返回解析結(jié)果。否則將解析請(qǐng)求轉(zhuǎn)發(fā)給ROOT DNS(根域名服務(wù)器)。
    • 根域名服務(wù)器,檢查到請(qǐng)求解析的域名是www.baidu.com。那么返回解析頂級(jí)域名baidu.com的gTLD域名服務(wù)器地址。
    • localDNS接收到根域名返回的gTLD域名服務(wù)器地址后,將解析請(qǐng)求再次轉(zhuǎn)發(fā)給該域名服務(wù)器
    • gTLD域名服務(wù)器接收到www.baidu.com的域名請(qǐng)求后,返回二級(jí)域名www.baidu.com對(duì)應(yīng)的Name DNS服務(wù)器地址。
    • local DNS收到來自gTLD的響應(yīng)后,再次將域名解析結(jié)果傳遞給Name DNS服務(wù)器。
    • Name DNS服務(wù)器收到www.baidu.com的域名解析請(qǐng)求后,發(fā)現(xiàn)正屬于自身所管轄的解析范圍。所以查找域名和IP地址映射關(guān)系,將解析結(jié)果返local DNS。
    • local DNS收到解析結(jié)構(gòu)后,緩存該解析結(jié)果。下次遇見相同的解析請(qǐng)求時(shí)。直接使用緩存結(jié)果即可。
  2. 協(xié)議封包/解包過程的過程
    本文中將HTTP封包,TCP封包,IP封裝以及對(duì)應(yīng)的解包的過程統(tǒng)稱為協(xié)議封包和解包過程。其一般過程如下:


    封包和解包的過程
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 第一章 好學(xué)生 壞學(xué)生 “聽好了,我再強(qiáng)調(diào)一遍,濃硫酸稀釋不能水入酸……” “哈~欠…” 又是無聊的化...
    醉人的煙啊閱讀 565評(píng)論 0 0
  • 我們應(yīng)該對(duì)自己的生命負(fù)責(zé),在有限的生命去享受生命帶給我們的,做做自己想做的事,去通過努力讓自己過到自己想過的生活
    青鑫鑫閱讀 326評(píng)論 0 0
  • 一旦放松起來,有時(shí)候躺在床上,蘇楣會(huì)不由自主地感覺身體好像開始陷入了床墊。對(duì)沒錯(cuò),是陷入,沒有別的動(dòng)詞更能形容這個(gè)...
    SherlockZeng閱讀 453評(píng)論 0 2