關(guān)于HTTP協(xié)議的一些整理

1.0、簡(jiǎn)介我們?nèi)粘I钪薪?jīng)常會(huì)使用瀏覽器訪問Web站點(diǎn),但是大家有思考過在這個(gè)過程中到底發(fā)生了什么嗎?為什么我們" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營(yíng)銷資訊 > 建站知識(shí) > 2019-08-02-HTTP協(xié)議詳解

2019-08-02-HTTP協(xié)議詳解

時(shí)間:2023-01-30 13:52:01 | 來源:建站知識(shí)

時(shí)間:2023-01-30 13:52:01 來源:建站知識(shí)




title: HTTP協(xié)議詳解 date: 2019-08-02 12:49:20 tags: [HTTP] toc: true


關(guān)于HTTP協(xié)議的一些整理

1.0、簡(jiǎn)介

我們?nèi)粘I钪薪?jīng)常會(huì)使用瀏覽器訪問Web站點(diǎn),但是大家有思考過在這個(gè)過程中到底發(fā)生了什么嗎?為什么我們?cè)跒g覽器地址欄上面輸入要訪問的URL后就可以訪問到Web頁面呢?

其實(shí)當(dāng)我們?cè)跒g覽器地址欄上輸入要訪問的URL后,瀏覽器會(huì)分析出URL上面的域名,然后通過DNS服務(wù)器查詢出域名映射的IP地址,瀏覽器根據(jù)查詢到的IP地址與Web服務(wù)器進(jìn)行通信,而通信的協(xié)議就是HTTP協(xié)議。

我們可以把這個(gè)過程類比成一個(gè)電話對(duì)話的過程。當(dāng)我們要打電話給某個(gè)人,首先要知道對(duì)方的電話號(hào)碼,然后進(jìn)行撥號(hào)。打通電話后我們會(huì)進(jìn)行對(duì)話,當(dāng)然要對(duì)話肯定需要共同的語言,如果一個(gè)人說國(guó)語,而另一個(gè)人說英語,那肯定不能進(jìn)行溝通的。在本例中,電話號(hào)碼相當(dāng)于上面的IP地址,而共同語言相當(dāng)于HTTP協(xié)議。

如下圖:







2、TCP/IP協(xié)議

HTTP協(xié)議是構(gòu)建在TCP/IP協(xié)議之上的,是TCP/IP協(xié)議的一個(gè)子集,所以要理解HTTP協(xié)議,有必要先了解下TCP/IP協(xié)議相關(guān)的知識(shí)。

由于TCP/IP協(xié)議族包含眾多的協(xié)議,在這里我們無法一一討論。接下來,我們僅介紹理解HTTP協(xié)議需要掌握的TCP/IP協(xié)議族的一些相關(guān)知識(shí)點(diǎn)。如果想深入理解TCP/IP協(xié)議,可以參考經(jīng)典書籍《TCP/IP詳解》。

2.1、TCP/IP協(xié)議族分層

TCP/IP協(xié)議族是由一個(gè)四層協(xié)議組成的系統(tǒng),這四層分別為:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層。如下圖示:







分層的好處:把各個(gè)相對(duì)獨(dú)立的功能解耦,層與層之間通過規(guī)定好的接口來通信。如果以后需要修改或者重寫某一個(gè)層的實(shí)現(xiàn),只要接口保持不變也不會(huì)影響到其他層的功能。接下來,我們將會(huì)介紹各個(gè)層的主要作用。

1) 應(yīng)用層

應(yīng)用層一般是我們編寫的應(yīng)用程序,其決定了向用戶提供的應(yīng)用服務(wù)。應(yīng)用層可以通過系統(tǒng)調(diào)用與傳輸層進(jìn)行通信。

處于應(yīng)用層的協(xié)議非常多,比如:FTP(File Transfer Protocol,文件傳輸協(xié)議)、DNS(Domain Name System,域名系統(tǒng))和我們本章討論的HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議)等。

2) 傳輸層

傳輸層通過系統(tǒng)調(diào)用向應(yīng)用層提供處于網(wǎng)絡(luò)連接中的兩臺(tái)計(jì)算機(jī)之間的數(shù)據(jù)傳輸功能。

在傳輸層有兩個(gè)性質(zhì)不同的協(xié)議:TCP(Transmission Control Protocol,傳輸控制協(xié)議)和UDP(User Data Protocol,用戶數(shù)據(jù)報(bào)協(xié)議)。

3) 網(wǎng)絡(luò)層

網(wǎng)絡(luò)層用來處理在網(wǎng)絡(luò)上流動(dòng)的數(shù)據(jù)包,數(shù)據(jù)包是網(wǎng)絡(luò)傳輸?shù)淖钚?shù)據(jù)單位。該層規(guī)定了通過怎樣的路徑(傳輸路線)到達(dá)對(duì)方計(jì)算機(jī),并把數(shù)據(jù)包傳輸給對(duì)方。

4) 鏈路層

鏈路層用來處理連接網(wǎng)絡(luò)的硬件部分,包括控制操作系統(tǒng)、硬件設(shè)備驅(qū)動(dòng)、NIC(Network Interface Card,網(wǎng)絡(luò)適配器)以及光纖等物理可見部分。硬件上的范疇均在鏈路層的作用范圍之內(nèi)。

數(shù)據(jù)包封裝

上層協(xié)議數(shù)據(jù)是如何轉(zhuǎn)變?yōu)橄聦訁f(xié)議數(shù)據(jù)的呢?這是通過封裝(encapsulate)來實(shí)現(xiàn)的。應(yīng)用程序數(shù)據(jù)在發(fā)送到物理網(wǎng)絡(luò)之前,會(huì)沿著協(xié)議棧從上往下傳遞。每層協(xié)議都將在上層協(xié)議數(shù)據(jù)的基礎(chǔ)上加上自己的頭部信息(鏈路層還會(huì)加上尾部信息),以為實(shí)現(xiàn)該層功能提供必要的信息。如下圖示:




發(fā)送端發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)會(huì)從上層傳輸?shù)较聦?,且每?jīng)過一層都會(huì)被打上該層的頭部信息。而接收端接收數(shù)據(jù)時(shí),數(shù)據(jù)會(huì)從下層傳輸?shù)缴蠈樱瑐鬏斍皶?huì)把下層的頭部信息刪除。

過程如下圖:







由于下層協(xié)議的頭部信息對(duì)上層協(xié)議是沒有實(shí)際的用途,所以在下層協(xié)議傳輸數(shù)據(jù)給上層協(xié)議的時(shí)候會(huì)把該層的頭部信息去掉,這個(gè)封裝過程對(duì)于上層協(xié)議來說是完全透明的。這樣做的好處是,應(yīng)用層只需要關(guān)心應(yīng)用服務(wù)的實(shí)現(xiàn),而不用管底層的實(shí)現(xiàn)。

2.2、TCP三次握手

從上面的介紹可知,傳輸層協(xié)議主要有兩個(gè):TCP協(xié)議和UDP協(xié)議。TCP協(xié)議相對(duì)于UDP協(xié)議的特點(diǎn)是:TCP協(xié)議提供面向連接、字節(jié)流和可靠的傳輸。

使用TCP協(xié)議進(jìn)行通信的雙方必須先建立連接,然后才能開始傳輸數(shù)據(jù)。TCP連接是全雙工的,也就是說雙方的數(shù)據(jù)讀寫可以通過一個(gè)連接進(jìn)行。為了確保連接雙方可靠性,在雙方建立連接時(shí),TCP協(xié)議采用了三次握手(Three-way handshaking)策略。

過程如下圖:







TCP協(xié)議三次握手的描述如下:

第一次握手:客戶端發(fā)送帶有SYN標(biāo)志的連接請(qǐng)求報(bào)文段,然后進(jìn)入SYN_SEND狀態(tài),等待服務(wù)端的確認(rèn)。
第二次握手:服務(wù)端接收到客戶端的SYN報(bào)文段后,需要發(fā)送ACK信息對(duì)這個(gè)SYN報(bào)文段進(jìn)行確認(rèn)。同時(shí),還要發(fā)送自己的SYN請(qǐng)求信息。服務(wù)端會(huì)將上述的信息放到一個(gè)報(bào)文段(SYN+ACK報(bào)文段)中,一并發(fā)送給客戶端,此時(shí)服務(wù)端將會(huì)進(jìn)入SYN_RECV狀態(tài)。
第三次握手:客戶端接收到服務(wù)端的SYN+ACK報(bào)文段后,會(huì)想服務(wù)端發(fā)送ACK確認(rèn)報(bào)文段,這個(gè)報(bào)文段發(fā)送完畢后,客戶端和服務(wù)端都進(jìn)入ESTABLISHED狀態(tài),完成TCP三次握手。
當(dāng)三次握手完成后,TCP協(xié)議會(huì)為連接雙方維持連接狀態(tài)。為了保證數(shù)據(jù)傳輸成功,接收端在接收到數(shù)據(jù)包后必須發(fā)送ACK報(bào)文作為確認(rèn)。如果在指定的時(shí)間內(nèi)(這個(gè)時(shí)間稱為重新發(fā)送超時(shí)時(shí)間),發(fā)送端沒有接收到接收端的ACK報(bào)文,那么就會(huì)重發(fā)超時(shí)的數(shù)據(jù)。

3、DNS服務(wù)

前面介紹了與HTTP協(xié)議有著密切關(guān)系的TCP/IP協(xié)議,接下來介紹的DNS服務(wù)也是與HTTP協(xié)議有著密不可分的關(guān)系。

通常我們?cè)L問一個(gè)網(wǎng)站,使用的是主機(jī)名或者域名來進(jìn)行訪問的。因?yàn)橄鄬?duì)于IP地址(一組純數(shù)字),域名更容易讓人記住。但TCP/IP協(xié)議使用的是IP地址進(jìn)行訪問的,所以必須有個(gè)機(jī)制或服務(wù)把域名轉(zhuǎn)換成IP地址。DNS服務(wù)就是用來解決這個(gè)問題的,它提供域名到IP地址之間的解析服務(wù)。

解析過程如下:







3.1、服務(wù)原理:

DNS服務(wù)是通過DNS協(xié)議進(jìn)行通信的,而DNS協(xié)議跟HTTP協(xié)議一樣也是應(yīng)用層協(xié)議。由于我們的重點(diǎn)是HTTP協(xié)議,所以這里不打算對(duì)DNS協(xié)議進(jìn)行詳細(xì)的分析,我們只需要知道可以通過DNS服務(wù)把域名解析成IP地址即可。

3.2、HTTP與TCP/IP、DNS的關(guān)系

到現(xiàn)在,我們介紹了與HTTP協(xié)議有密切關(guān)系的TCP/IP協(xié)議和DNS服務(wù),接下來我們通過下圖來整理一下HTTP協(xié)議與它們之間的關(guān)系:







總而言之,就是當(dāng)客戶端訪問Web站點(diǎn)時(shí),首先會(huì)通過DNS服務(wù)查詢到域名的IP地址。然后瀏覽器生成HTTP請(qǐng)求,并通過TCP/IP協(xié)議發(fā)送給Web服務(wù)器。Web服務(wù)器接收到請(qǐng)求后會(huì)根據(jù)請(qǐng)求生成響應(yīng)內(nèi)容,并通過TCP/IP協(xié)議返回給客戶端。

4、參考

參考鏈接

關(guān)鍵詞:協(xié)議

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉