HTTP網路協議

2022-09-23 04:32:05 字數 1555 閱讀 6058

http— 超文字傳輸協議(http)是用於分散式協作超**資訊系統的應用程式協議。 http是全球資訊網資料通訊的基礎。

— 維基百科 & 中文地址

http通訊的三大支柱:urls  /  動詞  /  狀態**

web通訊的核心是請求資訊,它是通過url(uniform resource locators)傳送的。該協議通常是http,但也有https的加密通訊。預設埠為80,也可以明確的設定它(在**中顯式設定),資源的路徑為伺服器上的本地路徑。

上面的urls揭示了我們想要進行通訊的確切主機的身份,但是應通過http動詞來明確具體執行的是哪項操作。有一些動作是客戶端想要主機去執行的,http已經正式化了一些適用於所有應用程式的動詞。

get:fetch an existing resource. 

post:create a new resource. 

put:update an existing resource.

delete:delete an existing resource.

以上四個動詞是最受歡迎的,並且大多數工具和框架都明確地暴露了這些請求動詞。

然後還有一些用的比較少的,不過http也支援的:

head:和get類似,但是沒有訊息body。它被用來為一個指定的資源獲得伺服器headers,通常用於通過時間戳來檢查該資源是否改變。

trace:用來獲得一個帶著從伺服器往返的請求的這麼一個hops.每一個直接的**或者通道(閘道器)都會向via的header field注入它自己ip或者dns的名字。這個動詞能被用於診斷的目的。

options:用來獲得伺服器的能力。在客戶端一頭,它能被用來通過基於伺服器是否支援來選擇,繼而修改請求。

帶著urls和動詞,客戶端就能向伺服器開始請求。伺服器會返回給客戶端狀態**和訊息的有效負荷。狀態**很重要,它能告訴客戶端如何解釋伺服器的這一響應。http規範(spec是specification的縮寫)為響應的具體型別定義了一些數字欄位:

1xx: informational messages

2xx: successful

3xx: redirection

4xx: client error

5xx: server error

(具體的說明:

1xx 是臨時的,告訴客戶端繼續傳送剩下的其他請求,或者忽略它已經傳送的,http/1.0 客戶端應該忽略它。

202 已接受

204 沒有內容

205 重置內容

206 部分內容

301 永久移動

303 見其他

304 沒有修改

404 錯誤的請求

401 未認證

403 拒絕訪問

405 不允許的方法(不支援該動詞)

409 衝突(多發生於多人協作)

501 未實施

503 服務不可用)

HTTP 1 1 HTTP 2 HTTP 3 演變

http 協議是基於tcp ip,並且使用了 請求 應答 的通訊模式,所以效能的關鍵就在這兩點裡。 早期 http 1 0 效能上的一個很大的問題,那就是每發起一個請求,都要新建一次 tcp 連線 三次握手 ,而且是序列請求,做了無畏的 tcp 連線建立和斷開,增加了通訊開銷。 為了解決上述 tcp...

HTTP 2 HTTP是什麼

http 就是超文字 傳輸 協議,也就是hypertexttransferprotocol。 超文字傳輸協議 ,它可以拆成三個部分,分別是 超文字 傳輸 和 協議 。 1 首先,http 是一個協議。 2 傳輸 資料雖然是在 a 和 b 之間傳輸,但並沒有限制只有 a 和 b 這兩個角色,允許中間有...

HTTP Authorization

謹以此文獻給那些需要實現http auth的 程式猿 們。 關於http auth的文件不多。 rfc在 wiki在 一次典型的訪問場景是...