圖解HTTP筆記整理(前六章)

圖解HTTP

第一章

web使用HTTP (HyperText Transfer Protocol,超文本傳輸協議)協議作文規范,完成從客戶端到服務器端等一系列運作流程。

協議:計算機與網絡設備要相互通信,雙方就必須基于相同的方法。比如,如何探測到通信目標、由哪一邊先發起通信、使用哪種語言進行通信、怎樣結束通信等規則都需要事先確定。不同的硬件、操作系統之間的通信,所有的這一切都需要一種規則。而我們就把這種規則稱為協議(protocol)。

TCP/IP 協議族分層:

TCP/IP 協議族按層次分別分為以下 4 層:應用層、傳輸層、網絡層和數據鏈路層。

把 TCP/IP 層次化是有好處的。比如,如果互聯網只由一個協議統籌,某個地方需要改變設計時,就必須把所有部分整體替換掉。而分層之后只需把變動的層替換掉即可。把各層之間的接口部分規劃好之后,每個層次內部的設計就能夠自由改動了。

層次化之后,設計也變得相對簡單了。每一層可以只考慮分派給自己的任務,而不需要弄清下一層完成任務的具體細節。

應用層:

應用層決定了向用戶提供應用服務時通信的活動。比如,FTP(File Transfer Protocol,文件傳輸協議)和 DNS(Domain Name System,域名系統)和HTTP 協議。

傳輸層:

傳輸層提供處于網絡連接中的兩臺計算機之間的數據傳輸。在傳輸層有兩個性質不同的協議:TCP(Transmission Control Protocol,傳輸控制協議)和 UDP(User Data Protocol,用戶數據報協議)。

網絡層:

網絡層用來處理在網絡上流動的數據包。數據包是網絡傳輸的最小數據單位。該層規定了通過怎樣的路徑(所謂的傳輸路線)到達對方計算機,并把數據包傳送給對方。與對方計算機之間通過多臺計算機或網絡設備進行傳輸時,網絡層所起的作用就是在眾多的選項內選擇一條傳輸路線。

鏈路層(又名數據鏈路層,網絡接口層):

用來處理連接網絡的硬件部分。包括控制操作系統、硬件的設備驅動、NIC(Network Interface Card,網絡適配器,即網卡),及光纖等物理可見部分(還包括連接器等一切傳輸媒介)。硬件上的范疇均在鏈路層的作用范圍之內。

在這里插入圖片描述

利用 TCP/IP 協議族進行網絡通信時,會通過分層順序與對方進行通信。發送端從應用層往下走,接收端則往應用層往上走。

IP協議

Internet Protocol 網際協議

IP 協議的作用是把各種數據包傳送給對方。其中兩個重要的條件是 IP 地址和 MAC地址(Media Access Control Address)。

IP 地址指明了節點被分配到的地址,MAC 地址是指網卡所屬的固定地址。IP 地址可變換,但 MAC地址基本上不會更改。

ARP (Address Resolution Protocol)是一種用以解析地址的協議,根據通信方的 IP 地址就可以反查出對應的 MAC 地址。

ARP用途:通信的雙方在同一局域網(LAN)內的情況是很少的,通常是經過多臺計算機和網絡設備中轉才能連接到對方。而在進行中轉時,會利用下一站中轉設備的 MAC地址來搜索下一個中轉目標。like 快遞。

TCP協議

Transmission Control Protocol 傳輸控制協議

提供可靠的字節流服務。

字節流服務(Byte Stream Service)是指,為了方便傳輸,將大塊數據分割成以報文段(segment)為單位的數據包進行管理

可靠的傳輸服務是指,能夠把數據準確可靠地傳給對方

一言以蔽之,

TCP 協議為了更容易傳送大數據才把數據分割,而且 TCP 協議能夠確認數據最終是否送達到對方。

為了準確無誤地將數據送達目標處,TCP 協議采用了三次握手(three-way handshaking)策略。

握手過程中使用了 TCP 的標志(flag) —— SYN(synchronize,同步) 和ACK(acknowledgement,回執)。

在這里插入圖片描述

發送端首先發送一個帶 SYN 標志的數據包給對方。接收端收到后,回傳一個帶有 SYN/ACK 標志的數據包以示傳達確認信息。最后,發送端再回傳一個帶 ACK 標志的數據包,代表“握手”結束。

DNS協議

Domain Name System 域名系統

是和 HTTP 協議一樣位于應用層的協議。它提供域名到 IP 地址之間的解析服務。

計算機既可以被賦予 IP 地址,也可以被賦予主機名和域名。

DNS 協議提供通過域名查找 IP 地址,或逆向從 IP 地址反查域名的服務。

URI和URL

URL(Uniform Resource Locator,統一資源定位符)指定文檔所在地址。

URL正是使用 Web 瀏覽器等訪問 Web 頁面時需要輸入的網頁地址。

URI (Uniform Resource Identifier)用字符串標識某一互聯網資源,而 URL表示資源的地點(互聯網上所處的位置)。可見 URL是 URI 的子集。

URI舉例:

在這里插入圖片描述

第二章

http用于客戶端和服務器之間的通信。

請求訪問文本或圖像等資源的一端稱為客戶端,而提供資源響應的一端稱為服務器端。

請求報文是由請求方法、請求 URI、協議版本、可選的請求首部字段和內容實體構成的。

在這里插入圖片描述

響應報文基本上由協議版本、狀態碼(表示請求成功或失敗的數字代碼)、用以解釋狀態碼的原因短語、可選的響應首部字段以及實體主體構成。

在這里插入圖片描述

HTTP是無狀態協議

HTTP 協議自身不對請求和響應之間的通信狀態進行保存。

有了 Cookie 再用 HTTP 協議通信,就可以管理狀態了。

HTTP/1.1 中可使用的方法
GET:獲取資源

將數據附加在 URL 之后,以查詢字符串(Query String)的形式。數據以鍵值對的方式表示,并用 & 連接。查詢字符串以 ? 開頭。

POST:傳輸實體主體,用于向服務器提交數據

將數據放在 HTTP 請求的主體部分(body),而不是 URL 中。這使得 POST 可以傳輸較多數據,并且適合傳遞敏感信息。

PUT:傳輸文件

HEAD:獲得報文首部

DELETE:刪除文件

OPTIONS:詢問支持的方法

在這里插入圖片描述

TRACE:追蹤路徑

CONNECT:要求用隧道協議連接代理

HTTP keep-alive

持久連接的特點是,只要任意一端沒有明確提出斷開連接,則保持 TCP 連接狀態。

管線化(pipelining):不用等待響應亦可直接發送下一個請求。同時并行發送多個請求,而不需要一個接一個地等待響應。

Cookie

Cookie 技術通過在請求和響應報文中寫入 Cookie 信息來控制客戶端的狀態。

Cookie 會根據從服務器端發送的響應報文內的一個叫做 Set-Cookie 的首部字段信息,通知客戶端保存 Cookie。當下次客戶端再往該服務器發送請求時,客戶端會自動在請求報文中加入 Cookie 值后發送出去。

在這里插入圖片描述

第四章

狀態碼告知從服務器端返回的請求結果,狀態碼如 200 OK,以 3 位數字和原因短語組成。

在這里插入圖片描述

第五章

物理層面只有一臺服務器,使用虛擬主機的功能,則可以假想已具有多臺服務器。

在相同的 IP 地址下,由于虛擬主機可以寄存多個不同主機名和域名的 Web 網站,因此在發送 HTTP 請求時,必須在 Host 首部內完整指定主機名或域名的 URI。

代理

代理服務器的基本行為就是接收客戶端發送的請求后轉發給其他服務器。代理不改變請求 URI,會直接發送給前方持有資源的目標服務器。

持有資源實體的服務器被稱為源服務器。從源服務器返回的響應經過代理服務器后再傳給客戶端。

轉發時,需要附加Via 首部字段以標記出經過的主機信息。

在這里插入圖片描述

為什么使用代理服務器?

利用緩存技術(稍后講解)減少網絡帶寬的流量,組織內部針對特定網站的訪問控制,以獲取訪問日志為主要目的,等等。

緩存代理

代理轉發響應時,緩存代理(Caching Proxy)會預先將資源的副本(緩存)保存在代理服務器上。

當代理再次接收到對相同資源的請求時,就可以不從源服務器那里獲取資源,而是將之前緩存的資源作為響應返回。

透明代理

轉發請求或響應時,不對報文做任何加工的代理類型被稱為透明代理。

網關

利用網關可以由 HTTP 請求轉化為其他協議通信。工作機制和代理十分相似。

利用網關能提高通信的安全性,因為可以在客戶端與網關之間的通信線路上加密以確保連接的安全。

網關可以連接數據庫,使用SQL語句查詢數據。

隧道

隧道可按要求建立起一條與其他服務器的通信線路,屆時使用 SSL等加密手段進行通信。隧道的目的是確保客戶端能與服務器進行安全的通信。

可以和遠距離的服務器安全通信

隧道不會去解析 HTTP 請求,在通信雙方斷開連接時結束。

緩存

緩存是指代理服務器或客戶端本地磁盤內保存的資源副本。利用緩存可減少對源服務器的訪問,因此也就節省了通信流量和通信時間

緩存服務器是代理服務器的一種,當代理轉發從服務器返回的響應時,代理服務器將會保存一份資源的副本。

在這里插入圖片描述

優勢在于利用緩存可避免多次從源服務器轉發資源。因此客戶端可就近從緩存服務器上獲取資源,而源服務器也不必多次處理相同的請求了。

在這里插入圖片描述

第六章

HTTP 首部

在這里插入圖片描述

HTTP 請求報文

在請求中,HTTP 報文由方法、URI、HTTP 版本、HTTP 首部字段等部分構成。

在這里插入圖片描述

在這里插入圖片描述

HTTP 響應報文

在響應中,HTTP 報文由 HTTP 版本、狀態碼(數字和原因短語)、HTTP 首部字段 3 部分構成。

在這里插入圖片描述

在這里插入圖片描述

HTTP 首部字段

通用首部字段(General Header Fields

請求報文和響應報文兩方都會使用的首部。

在這里插入圖片描述

請求首部字段(Request Header Fields

從客戶端向服務器端發送請求報文時使用的首部。補充了請求的附加內容、客戶端信息、響應內容相關優先級等信息。

在這里插入圖片描述

響應首部字段(Response Header Fields

從服務器端向客戶端返回響應報文時使用的首部。補充了響應的附加內容,也會要求客戶端附加額外的內容信息。

在這里插入圖片描述

實體首部字段(Entity Header Fields

針對請求報文和響應報文的實體部分使用的首部。補充了資源內容更新時間等與實體有關的信息。

在這里插入圖片描述

端到端首部(End-to-end Header

分在此類別中的首部會轉發給請求 / 響應對應的最終接收目標,且必須保存在由緩存生成的響應中,另外規定它必須被轉發

逐跳首部(Hop-by-hop Header

分在此類別中的首部只對單次轉發有效,會因通過緩存或代理而不再轉發。HTTP/1.1 和之后版本中,如果要使用 hop-by-hop 首部,需提供 Connection 首部字段。

Keep-Alive是逐跳首部。

HTTP/1.1 通用首部字段

Cache-Control:控制緩存的行為

Connection:控制不再轉發給代理的首部字段,管理持久連接。

在這里插入圖片描述

HTTP/1.1 版本的默認連接都是持久連接。為此,客戶端會在持久連接上連續發送請求。當服務器端想明確斷開連接時,則指定Connection 首部字段的值為 Close。

Date:表明創建 HTTP 報文的日期和時間。

Trailer:說明在報文主體后記錄了哪些首部字段,應用在 HTTP/1.1 版本分塊傳輸編碼時。

Transfer-Encoding:傳輸報文主體時采用的編碼方式。

Upgrade:用于檢測 HTTP 協議及其他協議是否可使用更高的版本進行通信,其參數值可以用來指定一個完全不同的通信協議。

在這里插入圖片描述

Via:為了追蹤客戶端與服務器之間的請求和響應報文的傳輸路徑,還可避免請求回環的發生。所以必須在經過代理時附加該首部字段內容。

在這里插入圖片描述

Warning:告知用戶一些與緩存相關的問題的警告。

在這里插入圖片描述

請求首部字段

Accept:用戶代理能夠處理的媒體類型及媒體類型的相對優先級。可使用 type/subtype 這種形式,一次指定多種媒體類型。q( quality factor)是權重。

在這里插入圖片描述

Authorization:用戶代理的認證信息。

From:告知服務器使用用戶代理的用戶的電子郵件地址。

Host:虛擬主機運行在同一個 IP 上,因此使用首部字段 Host 加以區分。

在這里插入圖片描述

If-Match:形如 If-xxx 這種樣式的請求首部字段,都可稱為條件請求。服務器接收到附帶條件的請求后,只有判斷指定條件為真時,才會執行請求。

在這里插入圖片描述

If-None-Match:在 GET 或 HEAD 方法中使用首部字段 If-None-Match 可獲取最新的資源。只有在 If-None-Match 的字段值與 ETag 值不一致時,可處理該請求。與 If-Match 首部字段的作用相反。

Referer:告知服務器請求的原始資源的 URI。

在這里插入圖片描述

User-Agent:將創建請求的瀏覽器和用戶代理名稱等信息傳達給服務器。

響應首部字段

響應首部字段是由服務器端向客戶端返回響應報文中所使用的字段,用于補充響應的附加信息、服務器信息,以及對客戶端的附加要求等信息。

Age:首部字段 Age 能告知客戶端,源服務器在多久前創建了響應。字段值的單位為秒。

ETag:告知客戶端實體標識,服務器會為每份資源分配對應的 ETag值。它是一種可將資源以字符串形式做唯一性標識的方式。

在這里插入圖片描述

強 ETag 值,不論實體發生多么細微的變化都會改變其值。

弱 ETag 值只用于提示資源是否相同。只有資源發生了根本改變,產生差異時才會改變 ETag 值。這時,會在字段值最開始處附加 W/。

在這里插入圖片描述

Location:使用首部字段 Location 可以將響應接收方引導至某個與請求 URI 位置不同的資源。

在這里插入圖片描述

實體首部字段

實體首部字段是包含在請求報文和響應報文中的實體部分所使用的首部,用于補充內容的更新時間等與實體相關的信息。

Allow:用于通知客戶端能夠支持 Request-URI 指定資源的所有 HTTP 方法。

在這里插入圖片描述

Content-Encoding:告知客戶端服務器對實體的主體部分選用的內容編碼方式。

內容編碼是指在不丟失實體信息的前提下所進行的壓縮。gzip、compress、deflate、identity。

Content-Languag:首部字段 Content-Language 會告知客戶端,實體主體使用的自然語言(指中文或英文等語言)。

Expires:將資源失效的日期告知客戶端。

Last-Modified:指明資源最終修改的時間。

Cookie 服務的首部字段

Cookie 是用戶識別及狀態管理。

在這里插入圖片描述

Set-Cookie:當服務器準備開始管理客戶端的狀態時,會事先告知各種信息。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/35864.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/35864.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/35864.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【論文閱讀】--Popup-Plots: Warping Temporal Data Visualization

彈出圖:扭曲時態數據可視化 摘要1 引言2 相關工作3 彈出圖3.1 橢球模型3.1.1 水平軌跡3.1.2 垂直軌跡3.1.3 組合軌跡 3.2 視覺映射與交互 4 實施5 結果6 評估7 討論8 結論和未來工作致謝參考文獻 期刊: IEEE Trans. Vis. Comput. Graph.(發表日期: 2019&…

【TS】Typescript 中,什么是函數重載

在JavaScript中,傳統上并沒有直接支持函數重載(Function Overloading)的概念,這是許多其他面向對象編程語言(如Java、C#、C等)的一個特性。函數重載意味著可以使用相同的函數名但不同的參數列表&#xff08…

1.3.數據的表示

定點數 原碼 最高位是符號位,0表示正號,1表示負號,其余的n-1位表示數值的絕對值。 數值0的原碼表示有兩種形式: [0]原0 0000000 [-0]原1 0000000 例:1010 最高位為1表示這是一個負數, 其它三位 010…

HQChart使用教程30-K線圖如何對接第3方數據41-分鐘K線疊加股票增量更新

HQChart使用教程30-K線圖如何對接第3方數據40-日K疊加股票增量更新 疊加股票疊加分鐘K線更新Request 字段說明Data.symbol 協議截圖返回json數據結構overlaydata HQChart代碼地址交流 疊加股票 示例地址:https://jones2000.github.io/HQChart/webhqchart.demo/samples/kline_i…

可以一鍵生成熱點營銷視頻的工具,建議收藏

在當今的商業環境中,熱點營銷已經成為了一種非常重要的營銷策略。那么,什么是熱點營銷呢?又怎么做熱點營銷視頻呢? 最近高考成績慢慢公布了,領導讓結合“高考成績公布”這個熱點,做一個關于企業或產品的營銷…

運用 Offer 管理來提高候選人感受的關鍵點

一些公司不遺余力地為應聘者提供一流的感受,通過建立個性化的求職網站、簡單的處理流程和合作的面試流程。然而,由于Offer管理緩慢笨拙,所有這些好工作都可能失敗。 如果申請人想等幾天才能得到你的錄取通知書,而你的錄取通知書必…

鴻蒙NEXT開發:工具常用命令—install

安裝三方庫。 命令格式 ohpm install [options] [[<group>/]<pkg>[<version> | tag:<tag>]] ... ohpm install [options] <folder> ohpm install [options] <har file> alias: i 說明 group&#xff1a;三方庫的命名空間&#xff0c;可…

sys.stdin對象——實現標準輸入

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 語法參考 sys.stdin是一個標準化輸入對象&#xff0c;可以連續輸入或讀入文件所有內容&#xff0c;不結束&#xff0c;不能直接使用。輸入完成后&am…

print()函數——打印輸出

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 print()函數是Python編程最常見的函數&#xff0c;常用于輸出程序結果&#xff0c;默認輸出到屏幕&#xff0c;也可以輸出到指定文件。 語法參考 pr…

吉他譜制作軟件哪個好 吉他彈唱譜制作軟件推薦

在市面上存在著多種吉他譜制作軟件&#xff0c;如何選擇一款適合自己需求的軟件成為了許多人面臨的挑戰。下面來看看吉他譜制作軟件哪個好&#xff0c;吉他彈唱譜制作軟件推薦的相關內容。 一、吉他譜制作軟件哪個好 吉他譜制作軟件在現代音樂創作中扮演著重要角色&#xff0c…

調頻信號FM的原理與matlab與FPGA實現

平臺&#xff1a;matlab r2021b&#xff0c;vivado2023.1 本文知識內容摘自《軟件無線電原理和應用》 調頻(FM)是載波的瞬時頻率隨調制信號成線性變化的一種調制方式&#xff0c;音頻調頻信號的數學表達式可以寫為&#xff1a; Fm頻率調制&#xff0c;載波的幅度隨著調制波形…

open()函數——打開文件并返回文件對象

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 open()函數用于打開文件&#xff0c;返回一個文件讀寫對象&#xff0c;然后可以對文件進行相應讀寫操作。 語法參考 open()函數的語法格式如下&…

用Idea運行Python失敗,同級目錄下的模塊無法導入試試這個方法

哈嘍,大家好,我是木頭左! 在Python編程中,經常會遇到需要導入同級目錄下的模塊的情況。然而,有時候在使用IDEA運行Python時,可能會遇到無法導入同級目錄下的模塊的問題。這個問題可能是由于Python解釋器沒有正確識別到同級目錄下的模塊導致的。那么,如何解決這個問題呢?…

【K8s】專題六(2):Kubernetes 穩定性之健康檢查

以下內容均來自個人筆記并重新梳理&#xff0c;如有錯誤歡迎指正&#xff01;如果對您有幫助&#xff0c;煩請點贊、關注、轉發&#xff01;歡迎掃碼關注個人公眾號&#xff01; 目錄 一、基本介紹 二、工作原理 三、探針類型 1、存活探針&#xff08;LivenessProbe&#x…

docker入門配置

1、創建配置鏡像 由于國內docker連接外網速度慢&#xff0c;采用代理 vi /etc/docker/daemon.json添加以下內容 {"registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com","https://dockerproxy.com","https://hub-mirror.c.163.co…

SOA和ESB介紹

SOA&#xff08;面向服務的架構&#xff09; 面向服務的架構&#xff08;Service-Oriented Architecture&#xff0c;SOA&#xff09;是一種設計理念&#xff0c;用于構建松耦合的、可互操作的、模塊化的服務。在SOA架構中&#xff0c;應用程序被劃分為一系列的服務&#xff0c…

電腦屏幕花屏怎么辦?5個方法解決問題!

“我剛剛打開電腦就發現我的電腦屏幕出現了花屏的情況。這讓我很困惑&#xff0c;我應該怎么解決這個問題呢&#xff1f;求幫助。” 在這個數字時代的浪潮中&#xff0c;電腦早已成為我們生活中不可或缺的一部分。然而&#xff0c;當你正沉浸在緊張的游戲對戰中&#xff0c;或是…

從零到一學FFmpeg:AVCodecContext 結構體詳析與實戰

文章目錄 前言一、函數原型二、功能描述三、使用場景四、使用實例 前言 avio_open是FFmpeg庫中的一個函數&#xff0c;用于打開一個I/O&#xff08;輸入/輸出&#xff09;上下文&#xff0c;以便于讀寫文件、網絡流或其他類型的媒體數據源。這個函數是FFmpeg進行文件操作的基礎…

谷歌上搞下來的,無需付費,可以收藏!

在數字化時代&#xff0c;我們越來越依賴于智能設備來獲取信息和知識。中國智謀App正是這樣一款應用&#xff0c;它將中國古代的智慧與謀略書籍帶入了我們的移動設備&#xff0c;讓我們能夠隨時隨地學習和領悟。而且提供文言文的原文和譯文。 軟件下載方式&#xff1a;谷歌上搞…

39.右鍵彈出菜單管理游戲列表

上一個內容&#xff1a;38.控制功能實現 以 ??????? 38.控制功能實現 它的代碼為基礎進行修改 效果圖&#xff1a; 點擊設置之后的樣子 點擊刪除 點擊刪除之后的樣子 實現步驟&#xff1a; 首先添加一個菜單資源&#xff0c;右擊項目資源選擇下圖紅框 然后選擇Menu 然…