不一樣的HTTP 三

2021-10-18 08:22:49 字數 3274 閱讀 5127

cdn,全稱是「content delivery network」,翻譯過來就是「內容分發網路」。它應用了 http 協議裡的快取和**技術,代替源站響應客戶端的請求。

爬蟲」(crawler),實際上是一種可以自動訪問 web 資源的應用程式。

html是 http 協議傳輸的主要內容之一,它描述了超文字頁面,用各種「標籤」定義文字、等資源和排版布局,最終由瀏覽器「渲染」出視覺化頁面。

web service 是一種由 w3c 定義的應用服務開發規範,使用 client-server 主從架構,通常使用 wsdl 定義服務介面,使用 http 協議傳輸 xml 或 soap 訊息,也就是說,它是乙個基於 web(http)的服務架構技術,既可以執行在內網,也可以在適當保護後執行在外網。

waf是近幾年比較「火」的乙個詞,意思是「網路應用防火牆」。與硬體「防火牆」類似,它是應用層面的「防火牆」,專門檢測 http 流量,是防護 web 應用的安全技術。

waf 通常位於 web 伺服器之前,可以阻止如 sql 注入、跨站指令碼等攻擊,目前應用較多的乙個開源專案是 modsecurity,它能夠完全整合進 apache 或 nginx。

tcp 協議是「transmissioncontrolprotocol」的縮寫,意思是「傳輸控制協議」,它位於 ip 協議之上,基於 ip 協議提供可靠的、位元組流形式的通訊,是 http 協議得以實現的基礎。

「可靠」是指保證資料不丟失,「位元組流」是指保證資料完整,所以在 tcp 協議的兩端可以如同操作檔案一樣訪問傳輸的資料,就像是讀寫在乙個密閉的管道裡「流動」的位元組。

ip 協議是「internetprotocol」的縮寫,主要目的是解決定址和路由問題,以及如何在兩點間傳送資料報。ip 協議使用「ip 位址」的概念來定位網際網路上的每一台計算機。可以對比一下現實中的**系統,你拿著的手機相當於網際網路上的計算機,而要打**就必須接入**網,由通訊公司給你分配乙個號碼,這個號碼就相當於 ip 位址。

網域名稱系統」(domainnamesystem)出現了,用有意義的名字來作為 ip 位址的等價替代。設想一下,你是願意記「95.211.80.227」這樣枯燥的數字,還是「nginx.org」這樣的片語呢?

在 dns 中,「網域名稱」(domain name)又稱為「主機名」(host),為了更好地標記不同國家或組織的主機,讓名字更好記,所以被設計成了乙個有層次的結構。

網域名稱用「.」分隔成多個單詞,級別從左到右逐級公升高,最右邊的被稱為「頂級網域名稱」。對於頂級網域名稱,可能你隨口就能說出幾個,例如表示商業公司的「com」、表示教育機構的「edu」,表示國家的「cn」「uk」等,買火車票時的網域名稱還記得嗎?是「www.12306.cn」。

但想要使用 tcp/ip 協議來通訊仍然要使用 ip 位址,所以需要把網域名稱做乙個轉換,「對映」到它的真實 ip,這就是所謂的「網域名稱解析」。

uri(uniformresourceidentifier),中文名稱是統一資源識別符號,使用它就能夠唯一地標記網際網路上資源。

url(uniformresourcelocator),統一資源定位符,也就是我們俗稱的「**」,它實際上是 uri 的乙個子集,不過因為這兩者幾乎是相同的,差異不大,所以通常不會做嚴格的區分。

它的全稱是「http over ssl/tls」,也就是執行在 ssl/tls 協議上的 http。ssl 的全稱是「securesocketlayer」,由網景公司發明,當發展到 3.0 時被標準化,改名為 tls,即「transportlayersecurity」,但由於歷史的原因還是有很多人稱之為 ssl/tls,或者直接簡稱為 ssl。

**(proxy)是 http 協議中請求方和應答方中間的乙個環節,作為「中轉站」,既可以**客戶端的請求,也可以**伺服器的應答。

**有很多的種類,常見的有:

匿名**:完全「隱匿」了被**的機器,外界看到的只是**伺服器;

透明**:顧名思義,它在傳輸過程中是「透明開放」的,外界既知道**,也知道客戶端;

正向**:靠近客戶端,代表客戶端向伺服器傳送請求;

反向**:靠近伺服器端,代表伺服器響應客戶端的請求;

由於**在傳輸過程中插入了乙個「中間層」,所以可以在這個環節做很多有意思的事情,比如:

負載均衡:把訪問請求均勻分散到多台機器,實現訪問集群化;

內容快取:暫存上下行的資料,減輕後端的壓力;

安全防護:隱匿 ip, 使用 waf 等工具抵禦網路攻擊,保護被**的機器;

資料處理:提供壓縮、加密等額外的功能。

關於 http 的**還有乙個特殊的「**協議」(proxy protocol),它由知名的**軟體 haproxy 制訂,但並不是 rfc 標準,我也會在之後的課程裡專門講解。

dns 是將網域名稱解析出真實ip位址的系統

uri 是統一資源識別符號,標定了客戶端需要訪問的資源所處的位置,如果uri中的主機名使用網域名稱,則需要使用dns來講網域名稱解析為ip。 

不一樣的HTTP(一)

uri 即統一資源識別符號,作為網際網路上資源的唯一身份 http 即超文字傳輸協議,用來傳輸超文字。只允許用 get 動作從伺服器上獲取 html 文件,並且在響應請求之後立即關閉連線,功能非常有限 增加了 head post 等新方法 增加了響應狀態碼,標記可能的錯誤原因 引入了協議版本號概念 ...

不一樣的HTTP 二

一.http是什麼?1.首先,http 是乙個協議。不過,協議又是什麼呢?第一點,協議必須要有兩個或多個參與者,也就是 協 第二點,協議是對參與者的一種行為約定和規範,也就是 議 http 是乙個用在計算機世界裡的協議。它使用計算機能夠理解的語言確立了一種計算機之間交流通訊的規範,以及相關的各種控制...

不一樣的HTTP 四

第一層叫 鏈結層 link layer 負責在乙太網 wifi 這樣的底層網路上傳送原始資料報,工作在網絡卡這個層次,使用 mac 位址來標記網路上的裝置,所以有時候也叫 mac 層。第二層叫 網際層 或者 網路互連層 internet layer ip 協議就處在這一層。因為 ip 協議定義了 i...