文章目錄
-
目錄
文章目錄
前言
一.網址組成
二.HTTP協議解析
Http 請求報文
?報文請求方法
?報文頭
Cache-Control 常見緩存控制行為
Http 響應報文
?常見狀態碼
?三.域名解析(DNS)
DNS域名服務器分類
遞歸查詢
迭代查詢
四.端口號
五.路徑信息
六.Https協議
?對稱加密算法
非對稱加密算法
總結
前言
? ? ? ? 我們想象一個場景,當我們在瀏覽器中輸入網址后,網頁會自動生成對應網頁且打開曾經登錄過的網站,發現無需重新登錄直接進入首頁,這是如何做到的呢?
? ? ? ? 其實,當們在瀏覽器輸入網址后瀏覽器會通過網址中域名解析出的IP地址訪問該網址對應的服務器;服務器收到瀏覽器發出的請求后,根據網址中包含的執行方法,路徑信息等信息返回相應的文本信息,最終瀏覽器解析服務器返回的信息從而生成對應的網頁!!!
一.網址組成
一個完整的網址(URL)通常包含以下部分:
- 協議(Protocol):表示訪問網頁時使用的通信協議,常見的有HTTP、HTTPS、FTP等。HTTP(超文本傳輸協議)是一種用于傳輸超文本的協議,是互聯網上應用最為廣泛的協議之一。HTTPS(安全超文本傳輸協議)是一種加密的HTTP協議,可以保證數據傳輸的安全性。FTP(文件傳輸協議)則是一種用于文件傳輸的協議。
- 域名(Domain Name):表示網站的名稱,是網站在互聯網上的唯一標識。域名由多個部分組成,包括主域名和子域名。例如,在www.example.com中,“www”是子域名,“example”是主域名,“.com”是頂級域名。域名也可以被視為一個IP地址的代稱,目的是為了便于記憶。
- 端口號(Port):表示用于訪問網站的端口號,默認為80。端口號的范圍是0~65535。
- 路徑(Path):表示網站上具體的文件或目錄路徑。路徑通常由多個目錄和文件名組成,用斜杠(/)分隔。例如,在www.baidu.com/news/index.html中,“news/index.html”就是路徑。
- 此外,一個完整的網址還可能包含查詢參數和錨點。查詢參數用于向服務器發送額外的數據,通常以“?”開頭,后跟參數名和參數值。錨點則用于指定網頁內部的定位點,以“#”開頭,用于跳轉到網頁的特定位置。
二.HTTP協議解析
http協議詳解
??????HTTP協議(超文本傳輸協議)是用于從萬維網(WWW)服務器傳輸超文本到本地瀏覽器的傳輸協議。它是互聯網上應用最為廣泛的一種網絡協議。
- ??工作原理:HTTP協議工作于客戶端-服務端架構上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端(即WEB服務器)發送所有請求。Web服務器根據接收到的請求后,向客戶端發送響應信息。
- ?特點:HTTP協議具有簡單、靈活的特點。它基于TCP/IP協議,是一種無連接、無狀態的協議,每個請求都是獨立的,不依賴于之前的請求或響應。這意味著服務器不會跟蹤客戶端的狀態,每個請求都需要包含足夠的信息以供服務器處理。此外,HTTP協議還允許傳輸任意類型的數據對象,具有很好的擴展性。
點擊此處了解TCP協議
Http 請求報文
?一個完成的Http請求報文包含以下三個部分:請求行+請求頭+請求體
?報文請求方法
GET : 請求指定的頁面信息,并返回實體主體。
HEAD : 類似于 GET 請求,只不過返回的響應中沒有具體的內容,用于獲取報頭
POST : 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST 請求可能會導致新的資源的建立和/或已有資源的修改。
PUT : 從客戶端向服務器傳送的數據取代指定的文檔的內容。
DELETE : 請求服務器刪除指定的頁面。
CONNECT : HTTP/1.1 協議中預留給能夠將連接改為管道方式的代理服務器。
OPTIONS : 允許客戶端查看服務器的性能。
TRACE : 回顯服務器收到的請求,主要用于測試或診斷。
PATCH : 是對 PUT 方法的補充,用來對已知資源進行局部更新 。
?報文頭
以下是對HTTP請求報文頭的一些常見字段的解析:
-
Host:指定了請求的目標服務器的域名和端口號。這是HTTP/1.1規范中必須包含的字段,用于告訴服務器請求的目標地址。
-
User-Agent:表示發出請求的客戶端類型,通常包括瀏覽器類型、版本、操作系統等信息。服務器可以根據User-Agent來定制響應內容,以適配不同的客戶端設備。
-
Accept:告訴服務器客戶端能夠處理的媒體類型。這個字段可以包含多種媒體類型,并且可以通過質量因子(q-factor)來指定每種類型的優先級。
-
Accept-Language:表示客戶端偏好的自然語言。這可以幫助服務器返回針對特定語言環境的本地化內容。
-
Accept-Encoding:客戶端告訴服務器它支持的內容編碼方式,如gzip、deflate等。服務器可以根據這個字段來決定是否對響應內容進行壓縮。
-
Accept-Charset:表示客戶端支持的字符集,如UTF-8、GBK等。這有助于服務器正確編碼響應內容。
-
Connection:用于控制網絡連接的行為。常見的值有"close"(表示請求完成后關閉連接)和"keep-alive"(表示保持連接以便復用)。
-
Cache-Control:用于控制緩存行為。客戶端可以通過這個字段來指定是否緩存請求的響應,以及緩存的有效期等。
-
Authorization:當需要進行身份驗證時,客戶端會在這個字段中包含認證信息,如用戶名和密碼。
-
Referer:表示發出請求的頁面的URL。這個字段通常用于跟蹤用戶訪問來源,也可以幫助服務器生成重定向或重寫的規則。
-
Content-Type:在POST或PUT請求中,用于指定請求體的媒體類型。例如,在發送表單數據時,可能會使用
application/x-www-form-urlencoded
或multipart/form-data
。 -
Content-Length:表示請求體的長度(以字節為單位)。這個字段對于服務器來說很重要,因為它知道需要讀取多少數據。
-
Cookie:用于在客戶端和服務器之間傳遞會話信息。瀏覽器會在每個請求中自動包含之前收到的所有Cookie。
Cache-Control 常見緩存控制行為
Public 指示響應可被任何緩存區緩存;
Private 指示對于單個用戶的整個或部分響應消息,不能被共享緩存處理。這允許服務器僅僅描述當用戶的部分響應消息,此響應消息對于其他用戶的請求無效;
no-cache 指示請求或響應消息不能緩存;
no-store 用于防止重要的信息被無意的發布。在請求消息中發送將使得請求和響應消息都不使用緩存;
max-age 指示客戶機可以接收生存期不大于指定時間(以秒為單位)的響應;
min-fresh 指示客戶機可以接收響應時間小于當前時間加上指定時間的響應;
max-stale 指示客戶機可以接收超出超時期間的響應消息。如果指定 max-stale 消息的值,那么客戶機可以接收超出超時期指定值之內的響應消息。
?cookie 解析
????????Cookie是HTTP協議的一種規范,它是服務器發送到用戶瀏覽器并保存在本地的一小段數據。每當客戶端(通常是瀏覽器)請求同一個網站時,它會發送之前接收并保存的Cookie信息到服務器。這些信息可以被服務器用來識別用戶身份、跟蹤會話狀態等。
Cookie中主要包含以下內容:
-
名稱(Name):Cookie的唯一標識符,用于標識和區分不同的Cookie。
-
值(Value):Cookie的具體數據,服務器發送到客戶端的實際數據,可以是任何類型的數據,通常以字符串形式存儲。
-
域名(Domain):指定哪些域名可以訪問該Cookie。通常,Cookie只能由創建它的域名下的網頁訪問。
-
路徑(Path):指定哪些路徑或頁面可以訪問該Cookie。只有路徑或子路徑下的頁面才能訪問該Cookie。
-
有效期/過期時間(Expires/Max-Age):指定Cookie何時過期。如果設置了過期時間,瀏覽器會將Cookie保存到硬盤上,并在過期時間之前發送該Cookie給服務器。否則,Cookie只在瀏覽器會話期間有效,關閉瀏覽器后會被刪除。
-
安全標志(Secure):如果設置了Secure屬性,那么Cookie只能通過HTTPS協議發送,不能通過HTTP協議發送,這有助于保護Cookie的安全。
-
HttpOnly標志:如果設置了HttpOnly屬性,那么Cookie將無法通過客戶端腳本(如JavaScript)訪問,這有助于防止跨站腳本攻擊(XSS)。
Http 響應報文
一個完成的Http響應頭包含以下信息:響應行+響應頭+響應體
?常見狀態碼
1xx : 信息響應類,表示接收到請求并且繼續處理
2xx : 處理成功響應類,表示動作被成功接收、理解和接受
3xx : 重定向響應類,為了完成指定的動作,必須接受進一步處理
4xx : 客戶端錯誤,客戶請求包含語法錯誤或者是不能正確執行
5xx : 服務端錯誤,服務器不能正確執行一個正確的請求
100(繼續):請求者應當繼續提出請求。服務器返回此代碼表示已收到請求的第一部分,正在等待其余部分。
101(切換協議):請求者已要求服務器切換協議,服務器已確認并準備切換。200(成功):服務器已成功處理了請求。通常,這表示服務器提供了請求的網頁。
201(已創建):請求成功并且服務器創建了新的資源。
204(無內容):服務器成功處理了請求,但在返回的響應報文中不含實體的主體部分(沒有資源可以返回)。
206(部分內容):服務器成功處理了部分GET請求。301(永久移動):被請求的資源已永久移動到新位置。
302(臨時移動):請求的資源臨時從不同的URI響應請求,但請求者應繼續使用原有位置來進行以后的請求。
304(未修改):自從上次請求后,請求的網頁未修改過。400(錯誤請求):請求有語法錯誤或無法理解。
401(未授權):請求要求身份驗證。
403(禁止):服務器已經理解請求,但是拒絕執行它。
404(未找到):服務器無法找到被請求的頁面。500(內部服務器錯誤):服務器遇到了一個未曾預料的狀況,導致了它無法完成對請求的處理。
503(服務不可用):服務器暫時處于超負載或正在進行停機維護,無法處理請求。
?三.域名解析(DNS)
DNS 域名解析是將域名(如www.example.com)轉換為對應的IP地址(如192.0.2.1)的過程。在這個過程中,涉及到兩種主要的查詢方式:遞歸查詢和迭代查詢。
DNS域名服務器分類
- 根域名服務器:?主要負責解析互聯網最頂級的域名,如.com、.org、.net等。當用戶輸入一個網址時,當本地域名服務器向根域名服務器發出查詢請求時,路由器就把查詢請求報文轉發到離這個DNS客戶最近的一個根域名服務器,以獲取目標域名對應的IP地址。根域名服務器全球共13臺。
- 頂級域名服務器:負責管理在該頂級域名服務器注冊的所有二級域名。例如,.com域名的頂級域名服務器負責管理所有以.com結尾的域名。也被稱為權威域名服務器
- 權限域名服務器:這些域名服務器負責管理某個區的域名。每一個主機的域名都必須在某個權限域名服務器處注冊登記。因此權限域名服務器知道其管轄的域名與IP地址的映射關系。另外,權限域名服務器還知道其下級域名服務器的地址。
- 本地域名服務器:。這些服務器主要服務于其所在區域內的用戶,提供快速的域名解析服務。當用戶在瀏覽器中輸入一個域名時,本地域名服務器會迅速將該域名解析為相應的IP地址,從而快速地完成網頁的加載。
遞歸查詢
遞歸查詢是客戶端向DNS服務器發送一個查詢請求,然后等待DNS服務器返回查詢結果。如果DNS服務器本地緩存中有對應的結果,則直接返回;如果沒有,它會向其他DNS服務器(如根服務器)發送查詢請求,并等待這些服務器返回結果。一旦獲取到結果,它會將這個結果返回給客戶端,并且可能會將結果緩存起來,以便未來對同樣的查詢請求能夠更快地響應。
迭代查詢
迭代查詢是客戶端向DNS服務器發送一個查詢請求,然后等待DNS服務器返回一個或多個可能包含答案的DNS服務器的地址。客戶端接著向這些服務器發送查詢請求,重復這個過程,直到找到答案或確定答案不存在。
?總結:遞歸查詢由本地域名服務器返回給主機域名對應的IP地址;迭代查詢由本地服務器返回給主機一個其它可能查詢到該域名的DNS服務器地址并由主機根據返回的地址自主訪問。
通常采用模式:從請求主機到本地域名服務器的查詢是遞歸查詢,而其余的查詢是迭代查詢。
四.端口號
當一個計算機上的應用程序或服務需要與其他計算機進行通信時,它會使用一個特定的端口號作為目標端口。接收方的計算機會根據目標端口號來確定將數據包傳送給哪個應用程序或服務。
五.路徑信息
URL中的路徑信息是指在主機名后面的部分,通常用來指定訪問服務器上特定資源的路徑。路徑信息的作用如下:
-
標識資源位置:路徑信息可以告訴服務器需要訪問的資源所在的具體路徑,服務器可以根據路徑信息來定位資源的存儲位置。
-
指定資源類型:路徑信息的擴展名可以指定要訪問的資源的類型,例如.html表示訪問HTML文件,.jpg表示訪問圖片文件等。
-
支持頁面跳轉:路徑信息可以用來實現頁面之間的跳轉,通過在URL中指定不同的路徑信息,可以直接訪問不同的頁面或資源。
-
支持動態生成內容:路徑信息可以用來傳遞參數,從而實現動態生成內容。服務器可以根據路徑信息中的參數來生成不同的內容或返回不同的數據。
六.Https協議
????????Http協議與Https最大的區別是Http協議是明文傳輸,Https協議是密文傳輸;當明文傳輸的報文被攔截后極易造成信息泄露!!!
?對稱加密算法
? ????????對稱加密算法是一種使用相同的密鑰進行加解密的算法,其加密和解密過程相互對稱。在對稱加密算法中,消息的發送方使用密鑰將明文轉化為密文,而消息的接收方則使用相同的密鑰將密文轉化回明文。
對稱加密算法的主要特點包括:
- 加密和解密使用相同的密鑰,因此速度較快。
- 密鑰的管理較為困難,需要確保密鑰的安全性。
- 對稱加密算法通常具有較高的加密強度,可以提供較高的安全性。
- 若公鑰在發送圖中被攔截會導致信息泄露。
非對稱加密算法
? ? 非對稱加密算法是一種使用不同的密鑰進行加密和解密的加密算法。它使用一對密鑰,包括公鑰和私鑰,其中公鑰用于加密數據,私鑰用于解密數據。
?總結:為防止對稱加密算法中客戶端公鑰在傳輸給服務端的過程中被竊取,通常使用非對稱加密算法來加密客戶端的公鑰,這樣即使服務端的公鑰被竊取,由于沒有服務端的私鑰所以無法解密從而獲得客戶端的公鑰;而客戶端與服務端之間的報文則使用對稱加密算法進行加密從而提高通訊效率。