自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HTTP協(xié)議揭秘:探尋互聯(lián)網(wǎng)的背后密碼、探秘數(shù)據(jù)傳輸?shù)膴W秘

開發(fā) 前端
HTTP協(xié)議最早由蒂姆·伯納斯-李(Tim Berners-Lee)在1989年創(chuàng)建,作為連接萬維網(wǎng)(World Wide Web)上文檔的一種通信協(xié)議。起初,HTTP的目標(biāo)是在客戶端和服務(wù)器之間傳輸超文本文檔(HTML)和超鏈接(Hyperlink)。隨著互聯(lián)網(wǎng)的蓬勃發(fā)展,HTTP也在不斷演進(jìn)和完善。

HTTP(超文本傳輸協(xié)議:Hypertext Transfer Protocol)是一種用于在Web上傳輸數(shù)據(jù)的協(xié)議,它是互聯(lián)網(wǎng)上最重要的應(yīng)用層協(xié)議之一。從誕生至今,HTTP一直扮演著連接世界的通信橋梁的角色,在互聯(lián)網(wǎng)的發(fā)展和普及中發(fā)揮著重要作用。本文將帶您深入了解HTTP協(xié)議的起源、工作原理、常見特點(diǎn)以及它對現(xiàn)代Web的影響。

一、起源與發(fā)展

HTTP協(xié)議最早由蒂姆·伯納斯-李(Tim Berners-Lee)在1989年創(chuàng)建,作為連接萬維網(wǎng)(World Wide Web)上文檔的一種通信協(xié)議。起初,HTTP的目標(biāo)是在客戶端和服務(wù)器之間傳輸超文本文檔(HTML)和超鏈接(Hyperlink)。隨著互聯(lián)網(wǎng)的蓬勃發(fā)展,HTTP也在不斷演進(jìn)和完善。

在1991年,HTTP的第一個正式版本HTTP/0.9問世,其功能非常簡單,只能傳輸純文本的HTML文檔。而后,在1996年,HTTP/1.0發(fā)布,引入了更多功能,支持傳輸多種格式的資源,如圖片、樣式表和腳本文件。然而,隨著Web應(yīng)用和互聯(lián)網(wǎng)的規(guī)模不斷擴(kuò)大,HTTP/1.0的性能表現(xiàn)出現(xiàn)了瓶頸。為了解決HTTP/1.0的性能問題HTTP/1.1在1997年發(fā)布,引入了持久連接、管道化請求、Host頭字段等特性,顯著提升了網(wǎng)頁加載速度和用戶體驗(yàn)。

時至今日,HTTP協(xié)議持續(xù)發(fā)展,最新的版本是HTTP/2(2015年發(fā)布)和HTTP/3(2022年發(fā)布),它們進(jìn)一步優(yōu)化了性能、安全性和并行處理能力,逐漸成為主流的HTTP協(xié)議版本。

二、工作原理

HTTP是一種無狀態(tài)的協(xié)議,每個請求都是獨(dú)立的,服務(wù)器不保留與之前請求的狀態(tài)信息。HTTP使用客戶端-服務(wù)器模式,客戶端發(fā)送請求,服務(wù)器處理請求并返回響應(yīng)。

HTTP通信過程遵循以下步驟:

  • 建立連接: 客戶端(通常是Web瀏覽器)向服務(wù)器發(fā)起TCP連接,并建立起雙向通信通道。
  • 發(fā)送請求: 客戶端發(fā)送HTTP請求到服務(wù)器,請求包含請求行(請求方法、URL和HTTP版本)、請求頭和請求體(對于POST等有內(nèi)容的請求)。
  • 處理請求: 服務(wù)器接收并解析請求,根據(jù)請求的內(nèi)容執(zhí)行相應(yīng)的操作,可能包括讀取數(shù)據(jù)庫、處理業(yè)務(wù)邏輯等。
  • 發(fā)送響應(yīng): 服務(wù)器將處理結(jié)果封裝為HTTP響應(yīng),響應(yīng)包含響應(yīng)行(狀態(tài)碼、狀態(tài)文本和HTTP版本)、響應(yīng)頭和響應(yīng)體。
  • 關(guān)閉連接: 服務(wù)器發(fā)送完響應(yīng)后,關(guān)閉TCP連接,請求-響應(yīng)過程完成。

三、特點(diǎn)與影響

HTTP協(xié)議具有以下特點(diǎn),這些特點(diǎn)對現(xiàn)代Web應(yīng)用和互聯(lián)網(wǎng)產(chǎn)生了深遠(yuǎn)的影響:

  • 無連接和無狀態(tài): HTTP是無連接的,每個請求和響應(yīng)都是獨(dú)立的。它也是無狀態(tài)的,服務(wù)器不保存客戶端的狀態(tài)信息,每次請求都是無關(guān)的,這有利于實(shí)現(xiàn)可伸縮性和靈活性。
  • 靈活性: HTTP的靈活性使得它可以傳輸各種類型的資源,如文本、圖片、視頻等,使Web應(yīng)用呈現(xiàn)豐富多樣的內(nèi)容。
  • 基于請求-響應(yīng)模型: HTTP的請求-響應(yīng)模型使得客戶端可以向服務(wù)器請求數(shù)據(jù)或操作,并獲取服務(wù)器的響應(yīng)。這種模型促進(jìn)了客戶端與服務(wù)器之間的交互和通信。
  • 分層架構(gòu): HTTP的分層架構(gòu)允許通過代理服務(wù)器和緩存來優(yōu)化網(wǎng)絡(luò)傳輸,提高性能和響應(yīng)速度。
  • 狀態(tài)碼: HTTP的狀態(tài)碼提供了對請求處理結(jié)果的說明,例如200表示成功,404表示未找到,500表示服務(wù)器錯誤等。這些狀態(tài)碼對于診斷和調(diào)試Web應(yīng)用非常有用。

四、協(xié)議組成

HTTP協(xié)議是一種規(guī)范,其樣本通常以請求和響應(yīng)的形式呈現(xiàn)。下面是HTTP協(xié)議的一個樣本,分別展示了HTTP請求和HTTP響應(yīng)的格式。

HTTP請求樣本:

GET /hanko HTTP/1.1
Host: www.hanko.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36
Accept: text/html,application/xhtml+xml
Accept-Language: en-US,en;q=0.5
Connection: keep-alive
  • 第一行是請求行,包含請求方法(GET)、請求的資源路徑(/hanko)和HTTP協(xié)議版本(HTTP/1.1)。
  • 接下來是請求頭,包含了請求的一些附加信息,如Host(請求的目標(biāo)主機(jī))、User-Agent(客戶端的瀏覽器信息)、Accept(客戶端接受的響應(yīng)內(nèi)容類型)等。

當(dāng)年阿里面試問到了http頭connection為keep-alive是什么意思?

當(dāng)HTTP請求頭中的Connection字段設(shè)置為keep-alive時,它表示客戶端希望與服務(wù)器建立持久連接。持久連接允許在同一個TCP連接上發(fā)送多個HTTP請求和響應(yīng),而不是每個請求都建立一個新的TCP連接,從而減少了連接的建立和關(guān)閉開銷,提高了性能和效率。

除了keep-alive之外,HTTP請求頭中的Connection字段還可以包含其他值,用途如下:

  • close: 當(dāng)Connection設(shè)置為close時,表示客戶端或服務(wù)器希望在發(fā)送完當(dāng)前的請求和響應(yīng)后關(guān)閉TCP連接,即不使用持久連接。
  • Upgrade: 用于HTTP升級。當(dāng)Connection設(shè)置為Upgrade時,表示客戶端希望升級到其他協(xié)議,如WebSocket。
  • Connection-Token: 自定義的Connection標(biāo)記,可以用于傳遞額外的信息或指示特定的處理方式。

雖然名為"keep-alive",但HTTP的持久連接(keep-alive)并不是真正意義上的一直保持連接。實(shí)際上,HTTP的持久連接是一種在單個TCP連接上可以發(fā)送多個HTTP請求和響應(yīng)的機(jī)制,從而避免了每次請求都重新建立新的TCP連接,從而減少了連接的建立和關(guān)閉的開銷。

HTTP響應(yīng)樣本:

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
Server: Apache/2.4.41 (Ubuntu)
Date: Wed, 20 Jul 2023 12:34:56 GMT

<!DOCTYPE html>
<html>
<head>
    <title>Example Page</title>
</head>
<body>
    <h1>Hello, World!</h1>
    <p>This is an example page.</p>
</body>
</html>
  • 第一行是響應(yīng)行,包含HTTP協(xié)議版本(HTTP/1.1)、狀態(tài)碼(200)和狀態(tài)文本(OK)。
  • 接下來是響應(yīng)頭,包含了響應(yīng)的一些附加信息,如Content-Type(響應(yīng)內(nèi)容類型)、Content-Length(響應(yīng)內(nèi)容長度)、Server(服務(wù)器信息)等。
  • 響應(yīng)頭與響應(yīng)體之間有一個空行,表示響應(yīng)頭結(jié)束,接下來是響應(yīng)體,即實(shí)際返回給客戶端的內(nèi)容。在本例中,響應(yīng)體是一個簡單的HTML頁面。

1、請求頭

常見的請求頭:

  • Host: 指定請求的目標(biāo)主機(jī)名和端口號。
  • User-Agent: 指定發(fā)送請求的用戶代理,通常是瀏覽器標(biāo)識。
  • Accept: 指定客戶端可以接受的響應(yīng)內(nèi)容類型,如文本、圖片、JSON等。
  • Accept-Language: 指定客戶端可以接受的自然語言,用于國際化。
  • Authorization: 用于身份驗(yàn)證,包含認(rèn)證信息。
  • Cookie: 用于在客戶端和服務(wù)器之間傳遞會話信息。

2、響應(yīng)頭

常見的響應(yīng)頭:

  • Content-Type: 指定響應(yīng)內(nèi)容的類型,如text/html、application/json等。
  • Content-Length: 指定響應(yīng)內(nèi)容的長度,單位為字節(jié)。
  • Location: 用于重定向,指定新的URL地址。
  • Set-Cookie: 用于在客戶端設(shè)置Cookie,用于維持會話狀態(tài)。
  • Cache-Control: 指定響應(yīng)的緩存策略,如no-cache、max-age等。

3、狀態(tài)碼

HTTP狀態(tài)碼是HTTP協(xié)議中用于表示服務(wù)器對請求的處理結(jié)果的數(shù)字代碼。狀態(tài)碼由三位數(shù)字組成,每個狀態(tài)碼表示不同的處理結(jié)果。HTTP狀態(tài)碼主要分為五類,分別以不同的數(shù)字開頭,每類狀態(tài)碼具有特定的含義。以下是常見的HTTP狀態(tài)碼及其含義:

1xx(Informational): 表示請求已被接收,繼續(xù)處理。

  • 100 Continue:服務(wù)器已接收到請求的頭部,并且客戶端應(yīng)繼續(xù)發(fā)送請求的其余部分。

2xx(Successful): 表示請求已成功被服務(wù)器接收、理解和處理。

  • 200 OK:請求成功,服務(wù)器已成功處理請求。
  • 201 Created:請求成功,并在服務(wù)器上創(chuàng)建了新的資源。
  • 204 No Content:請求成功,但響應(yīng)不包含實(shí)體主體內(nèi)容,用于成功的DELETE請求等。

3xx(Redirection): 表示需要進(jìn)一步的操作以完成請求。

  • 301 Moved Permanently:請求的資源已永久移動到新的URL,客戶端應(yīng)該使用新URL重新請求。
  • 302 Found:請求的資源已臨時移動到新的URL,客戶端應(yīng)繼續(xù)使用原始URL。
  • 304 Not Modified:客戶端通過條件式請求的資源未修改,可直接使用緩存的版本。

4xx(Client Error): 表示客戶端發(fā)生錯誤,無法完成請求。

  • 400 Bad Request:請求錯誤,服務(wù)器無法理解請求。
  • 401 Unauthorized:請求需要身份驗(yàn)證,客戶端需要提供有效的認(rèn)證信息。
  • 403 Forbidden:服務(wù)器理解請求,但拒絕執(zhí)行請求。
  • 404 Not Found:請求的資源不存在,服務(wù)器未找到請求的URL。

5xx(Server Error): 表示服務(wù)器發(fā)生錯誤,無法完成請求。

  • 500 Internal Server Error:服務(wù)器內(nèi)部錯誤,無法完成請求。
  • 502 Bad Gateway:服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到無效響應(yīng)。
  • 503 Service Unavailable:服務(wù)器暫時不可用,通常由于過載或維護(hù)。

4、請求方法

  • GET:用于請求獲取指定資源。
  • POST:用于提交數(shù)據(jù)給服務(wù)器,如提交表單數(shù)據(jù)。
  • PUT:用于更新指定資源的內(nèi)容。
  • DELETE:用于刪除指定資源。
  • HEAD:類似于GET請求,但只獲取響應(yīng)頭信息,不獲取響應(yīng)體。
  • OPTIONS:用于獲取目標(biāo)資源支持的通信選項(xiàng)。
  • PATCH:用于對資源進(jìn)行局部更新。

5、Http版本

HTTP(Hypertext Transfer Protocol)協(xié)議經(jīng)過多次版本的演進(jìn)和改進(jìn),目前主要有以下幾個主要版本:

  • HTTP/0.9: HTTP的最早版本,于1991年發(fā)布。它是一個非常簡單的協(xié)議,僅支持傳輸HTML文本,沒有請求頭和響應(yīng)頭,也沒有狀態(tài)碼。它主要用于傳輸超文本文檔(HTML)和超鏈接(Hyperlink)。
  • HTTP/1.0: 于1996年發(fā)布,相比HTTP/0.9,HTTP/1.0引入了請求頭和響應(yīng)頭的概念,允許傳輸多種類型的資源,如圖片、樣式表和腳本文件。HTTP/1.0的特點(diǎn)是每個請求都需要單獨(dú)建立連接,導(dǎo)致效率較低。
  • HTTP/1.1: 于1997年發(fā)布,是HTTP協(xié)議的一個重要版本。HTTP/1.1引入了持久連接、管道化請求、Host頭字段等特性,顯著提升了網(wǎng)頁加載速度和用戶體驗(yàn)。持久連接允許在同一個連接上發(fā)送多個請求和響應(yīng),避免了每次請求都需要重新建立連接的開銷。
  • HTTP/2: 于2015年發(fā)布,是HTTP協(xié)議的最新主要版本。HTTP/2進(jìn)一步優(yōu)化了性能、安全性和并行處理能力。它引入了二進(jìn)制協(xié)議,允許多個請求和響應(yīng)同時在同一個連接上傳輸,消除了請求阻塞的問題。HTTP/2還支持頭部壓縮和服務(wù)器推送等特性,進(jìn)一步減少了數(shù)據(jù)傳輸?shù)拈_銷。
  • HTTP/3: 最新版本,于2022年6月6日標(biāo)準(zhǔn)化為RFC9114。會拋棄使用TCP,通過UDP上使用QUIC來承載應(yīng)用層數(shù)據(jù)。

6、Cookie

HTTP Cookie(簡稱Cookie)是HTTP協(xié)議中的一種機(jī)制,用于在客戶端(通常是Web瀏覽器)和服務(wù)器之間傳遞會話信息和狀態(tài)數(shù)據(jù)。Cookie主要用于記錄用戶的一些狀態(tài)信息,以便服務(wù)器在后續(xù)請求中識別用戶或維持用戶的會話狀態(tài)。

工作原理:

  • 服務(wù)器設(shè)置Cookie: 服務(wù)器在HTTP響應(yīng)中的Set-Cookie頭部中設(shè)置Cookie信息,并將Cookie發(fā)送給客戶端。例如:
Set-Cookie: session_id=1234567890; path=/; domain=example.com; expires=Sun, 20-Jul-2025 12:00:00 GMT; secure; HttpOnly
  • 客戶端保存Cookie: 客戶端(Web瀏覽器)收到服務(wù)器設(shè)置的Cookie后,會將Cookie保存在本地。在以后的請求中,客戶端會在請求頭的Cookie字段中攜帶該Cookie信息。
  • 客戶端發(fā)送Cookie: 客戶端在發(fā)送HTTP請求時,會將保存的Cookie信息包含在請求頭的Cookie字段中,發(fā)送給服務(wù)器。
  • 服務(wù)器讀取Cookie: 服務(wù)器收到請求后,可以從請求頭的Cookie字段中讀取客戶端發(fā)送的Cookie信息,并根據(jù)其中的數(shù)據(jù)來識別用戶或維持會話狀態(tài)。

Cookie屬性:

Cookie可以包含多個屬性,用于指定其行為和有效期。常見的Cookie屬性包括:

  • Name和Value: 表示Cookie的名稱和對應(yīng)的值。
  • Domain: 指定Cookie的作用域,指定了哪些域名可以訪問該Cookie。
  • Path: 指定Cookie的作用路徑,指定了哪些URL路徑可以訪問該Cookie。
  • Expires和Max-Age: 指定Cookie的有效期,Expires指定一個具體的過期時間,Max-Age指定從當(dāng)前時間開始的有效期秒數(shù)。
  • Secure: 表示Cookie只能通過HTTPS連接傳輸,用于保證Cookie的安全性。
  • HttpOnly: 表示Cookie僅限于通過HTTP或HTTPS傳輸,不能被JavaScript等腳本訪問,用于防止XSS攻擊。

用途:

Cookie在Web應(yīng)用中有許多用途,其中一些常見的包括:

  • 記錄用戶的登錄狀態(tài),實(shí)現(xiàn)用戶認(rèn)證和會話管理。
  • 存儲用戶的個性化設(shè)置和偏好。
  • 跟蹤用戶的瀏覽行為,用于分析用戶行為和推薦相關(guān)內(nèi)容。
  • 在購物網(wǎng)站中,用于保存購物車信息和交易狀態(tài)。

7、URL長度

URL長度的限制由瀏覽器規(guī)定的,而不是HTTP協(xié)議。以下是一些瀏覽器對http中url長度的限制大小。

當(dāng)然大家會說我是搞開發(fā)的,我不用瀏覽器那么長度限制嗎?比如用apache-httpclient,我試httpclient也同樣是有長度限制的,過長就返回400錯誤了。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2018-08-01 14:02:49

2018-09-10 10:32:55

2014-12-04 10:28:06

藍(lán)牙

2012-11-26 16:53:03

2021-12-14 11:01:44

TCPUDP網(wǎng)絡(luò)協(xié)議

2015-10-29 13:54:29

暢享網(wǎng)

2023-07-12 15:52:28

2024-11-01 08:30:00

2023-11-04 09:06:11

2010-11-25 16:14:07

2013-11-26 15:51:45

Android編程藍(lán)牙數(shù)據(jù)傳輸

2015-10-28 11:10:27

物聯(lián)網(wǎng)云平臺數(shù)據(jù)同步

2020-06-12 07:50:15

大數(shù)據(jù)

2014-09-12 18:18:02

tcpudtUDP

2022-02-17 15:53:19

遠(yuǎn)程醫(yī)療安全

2013-03-08 09:41:06

宜搜移動互聯(lián)網(wǎng)洗腦

2023-12-06 09:37:14

接口協(xié)議物聯(lián)網(wǎng)

2020-12-20 18:02:15

暗網(wǎng)監(jiān)控暗網(wǎng)漏洞

2021-10-08 08:37:38

數(shù)據(jù)傳輸數(shù)據(jù)調(diào)用網(wǎng)絡(luò)協(xié)議

2009-10-20 20:54:30

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號