摘要:包含的協議協議。表示發送端發送數據到接收到對端數據所需的往返時間在中使用了兩種加密技術,分別為對稱加密和非對稱加密。
一、前言
主要包括:1、http基礎:TCP/IP,TCP協議,IP協議,DNS協議,URI與URL;
2、http協議:http報文,http方法,http狀態碼,常見問題
名詞解釋:
(1)HTTP(HyperText Transfer Protocol)超文本傳輸協議
(2)URL(Uniform Resource Locator)統一資源定位符
(3)URI(Uniform Resource Identifer)統一資源標識符
(4)TCP(Transmission Control Protocol)傳輸控制協議
(5)IP(Internet Protocol)網際協議
(6)UDP(User Data Protocol)用戶數據報協議
(7)MAC地址(Media Access Control)媒體訪問控制地址/物理地址/硬件地址
(8)ARP協議(Address Resolution Protocol)地址解析協議
二、HTTP基礎 2.1TCP/IPTCP/IP是互聯網相關的各類協議族的總稱,而http是TCP/IP協議族中的一個子集。
TCP/IP協議族可以分為四層:
(1)應用層:決定向用戶提供應用服務時通信的活動,TCP/IP協議族內預存了各類通用的應用服務,如:http,ftp,dns等。
(2)傳輸層:提供處于網絡連接中的兩臺計算機之間的數據傳輸,包含兩個協議:tcp,udp。
(3)網絡層:用來處理網絡上流動的數據包,在眾多的選項中選擇一條傳輸線路,將數據包傳送到對方計算機。包含的協議:IP協議。
(4)數據鏈路層:用來處理連接網絡的硬件部分。
2.2 IP協議IP協議屬于網絡層,負責處理網絡上流動的數據包。為了保證傳送成功,需要滿足各類條件,其中兩個重要的條件時IP地址和MAC地址。
(1)IP地址,指明了節點被分配到的地址;
(2)MAC地址,指網卡所屬的固定地址;
(3)IP地址可以和MAC地址進行配對,IP地址可以變換,但是MAC地址基本上不會更改;
(4)使用ARP地址解析協議可以根據通信方的IP地址反查出對應的MAC地址
2.3 TCP協議TCP協議位于傳輸層,提供可靠的字節流服務(也就是說,將大數據分隔成以報文段為單位的數據包進行管理)。
為了確保數據準確無誤的到達目標處,TCP協議通常采用三次握手策略。
如果在握手的過程中某一個階段莫名的中斷了,TCP協議會再次以相同的順序發送相同的數據包。
2.4DNS協議DNS協議位于應用層,提供域名到IP地址之間的解析服務。
2.5 URI和URLURI是某一個協議方案表示的資源的定位標識符,協議方案是指訪問資源所使用的協議類型,如:http,ftp,file等。
URL用字符串標識某一個互聯網資源,而URL表示資源的地點,URL是URI的子集。
2.6 HTTP協議HTTP協議用于客戶端和服務器端之間的通信。請求必定由客戶端發出,而服務器端回復響應。
HTTP協議不保存狀態,為無狀態協議。這是為了更快的處理大量事務,確保協議的可伸縮性而特意設計的。
但是隨著Web的不斷發展,這一特性也引發了一些問題,如:如何保持登錄狀態、如何記錄用戶信息等,為了解決這一問題,引入了Cookie技術。
2.6.1常見狀態碼
2XX 成功
200 OK,表示從客戶端發來的請求在服務器端被正確處理
204 No content,表示請求成功,但響應報文不含實體的主體部分
205 Reset Content,表示請求成功,但響應報文不含實體的主體部分,但是與 204 響應不同在于要求請求方重置內容
206 Partial Content,進行范圍請求
3XX 重定向
301 moved permanently,永久性重定向,表示資源已被分配了新的 URL
302 found,臨時性重定向,表示資源臨時被分配了新的 URL
303 see other,表示資源存在著另一個 URL,應使用 GET 方法獲取資源
304 not modified,表示服務器允許訪問資源,但因發生請求未滿足條件的情況
307 temporary redirect,臨時重定向,和302含義類似,但是期望客戶端保持請求方法不變向新的地址發出請求
4XX 客戶端錯誤
400 bad request,請求報文存在語法錯誤
401 unauthorized,表示發送的請求需要有通過 HTTP 認證的認證信息
403 forbidden,表示對請求資源的訪問被服務器拒絕
404 not found,表示在服務器上沒有找到請求的資源
5XX 服務器錯誤
500 internal sever error,表示服務器端在執行請求時發生了錯誤
501 Not Implemented,表示服務器不支持當前請求所需要的某個功能
503 service unavailable,表明服務器暫時處于超負載或正在停機維護,無法處理請求
2.6.2HTTP報文頭部(HTTP首部)
通用字段 作用
Cache-Control 控制緩存的行為
Connection 瀏覽器想要優先使用的連接類型,比如:keep-alive
Date 創建報文時間
Pragma 報文指令
Via 代理服務器相關信息
Transfer-Encoding 傳輸編碼方式
Upgrade 要求客戶端升級協議
Warning 在內容中可能存在錯誤
請求字段 作用
Accept 能正確接收的媒體類型
Accept-Charset
能正確接收的字符集
Accept-Encoding 能正確接收的編碼格式列表
Accept-Language 能正確接收的語言列表
Expect 期待服務端的指定行為
From 請求方郵箱地址
Host 服務器的域名
If-Match 兩端資源標記比較
If-Modified-Since 本地資源未修改返回 304(比較時間)
If-None-Match 本地資源未修改返回 304(比較標記)
User-Agent 客戶端信息
Max-Forwards 限制可被代理及網關轉發的次數
Proxy-Authorization 向代理服務器發送驗證信息
Range 請求某個內容的一部分
Referer 示瀏覽器所訪問的前一個頁面
TE 傳輸編碼方式
響應字段 作用
Accept-Ranges 是否支持某些種類的范圍
Age 資源在代理緩存中存在的時間
ETag 資源標識
Location 客戶端重定向到某個 URL
Proxy-Authenticate 向代理服務器發送驗證信息
Server 服務器名字
WWW-Authenticate 獲取資源需要的驗證信息
實體字段 作用
Allow 資源的正確請求方式
Content-Encoding 內容的編碼格式
Content-Language 內容使用的語言
Content-Length request body 長度
Content-Location 返回數據的備用地址
Content-MD5 Base64加密格式的內容 MD5檢驗值
Content-Range 內容的位置范圍
Content-Type 內容的媒體類型
Expires 內容的過期時間
Last_modified 內容的最后修改時間
2.6.3 HTTP方法
方法名稱 方法描述
GET 獲取資源
POST 傳輸實體主體
PUT 傳輸文件,自身不帶驗證機制 ,在無驗證機制或不遵守REST標準時不建議使用
DELETE 刪除文件,自身不帶驗證機制
HEAD 獲取報文首部,和GET方法一樣,不返回報文主體部分
OPTIONS 詢問支持的方法,返回服務器所支持的方法
TRACE 追蹤路徑,可以通過該方法查詢發送出去的請求是如何被加工修改或篡改的。容易引發XST攻擊,不常用。
CONNECT 要求用隧道協議連接代理
HTTPS 還是通過了 HTTP 來傳輸信息,但是信息通過 TLS 協議進行了加密。
3.1 TLSTLS 協議位于傳輸層之上,應用層之下。首次進行 TLS 協議傳輸需要兩個 RTT ,接下來可以通過 Session Resumption 減少到一個 RTT。(RTT表示發送端發送數據到接收到對端數據所需的往返時間)
在 TLS 中使用了兩種加密技術,分別為:對稱加密和非對稱加密。
對稱加密:
對稱加密就是兩邊擁有相同的秘鑰,兩邊都知道如何將密文加密解密。
非對稱加密:
有公鑰私鑰之分,公鑰所有人都可以知道,可以將數據用公鑰加密,但是將數據解密必須使用私鑰解密,私鑰只有分發公鑰的一方才知道。
3.2 TLS 握手過程如下圖:(1)客戶端發送一個隨機值,需要的協議和加密方式
(2)服務端收到客戶端的隨機值,自己也產生一個隨機值,并根據客戶端需求的協議和加密方式來使用對應的方式,發送自己的證書(如果需要驗證客戶端證書需要說明)
(3)客戶端收到服務端的證書并驗證是否有效,驗證通過會再生成一個隨機值,通過服務端證書的公鑰去加密這個隨機值并發送給服務端,如果服務端需要驗證客戶端證書的話會附帶證書
(4)服務端收到加密過的隨機值并使用私鑰解密獲得第三個隨機值,這時候兩端都擁有了三個隨機值,可以通過這三個隨機值按照之前約定的加密方式生成密鑰,接下來的通信就可以通過該密鑰來加密解密
通過以上步驟可知,在 TLS 握手階段,兩端使用非對稱加密的方式來通信,但是因為非對稱加密損耗的性能比對稱加密大,所以在正式傳輸數據時,兩端使用對稱加密的方式通信。
PS:以上說明的都是 TLS 1.2 協議的握手情況,在 1.3 協議中,首次建立連接只需要一個 RTT,后面恢復連接不需要 RTT 了。
四、GET和POST的區別從技術上說:
1、get請求能緩存,post不能;
2、post相對于get來說,安全一點點,因為get請求都會包含在URL里,會被瀏覽器保存歷史記錄,post不會,但是在抓包的情況是一樣的。
3、post可以request body來傳遞比get更多的數據,get米有這個技術。
4、url長度有限制,會影響get請求,長度限制是瀏覽器限制規定的,不是rfc(互聯網通信協議)規定的。
5、post支持更多的編碼類型且不對數據類型限制
五、參考1、https://github.com/junruchen/...
2、https://www.cnblogs.com/Leo_w...
【注:我是saucxs,也叫songEagle,松寶寫代碼,文章首發于sau交流學習社區 https://www.mwcxs.top ,關注我們每天閱讀更多精彩內容】
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/104889.html
摘要:我的學習筆記匯總標簽筆記分為兩大部分和筆記內容主要是對一些基礎特性和編程細節進行總結整理,適合了解基礎語法,想進一步深入學習的人如果覺得不錯,請給,這也是對我的鼓勵,有什么意見歡迎留言反饋目錄基礎鞏固筆記反射基礎鞏固筆記泛型基礎鞏 我的java&javaweb學習筆記(匯總) 標簽: java [TOC] 筆記分為兩大部分:javase和javaweb javase javawe...
摘要:當某個類型變量只在整個參數列表的所有參數和返回值中的一處被應用了,那么根據調用方法時該處的實際應用類型來確定。即直接根據調用方法時傳遞的參數類型或返回值來決定泛型參數的類型。 標簽: java [TOC] 本文對泛型的基本知識進行較為全面的總結,并附上簡短的代碼實例,加深記憶。 泛型 將集合中的元素限定為一個特定的類型。 術語 ArrayList -- 泛型類型 ArrayLis...
摘要:基礎鞏固基礎總結使用已經好幾年了,由于工作主要是做服務端開發,在工作中逐漸發現的使用范圍原來越廣泛。這里要注意,務必將基礎部分掌握牢靠,磨刀不誤砍柴功,只有將基礎部分掌握并建立起系統的知識體系,在后面學習衍生的其他模式才能游刃有余。 基礎鞏固:JavaScript基礎總結 使用JavaScript已經好幾年了,由于工作主要是做服務端開發,在工作中逐漸發現JavaScript的使用范圍原...
摘要:基礎語法鞏固正則表達式引擎根據正則去匹配字符的時候,是通過檢查索引的方式。妻原配就是好,可以直接使用正則表達式調用它。下面解釋一下上面這些常用的元字符查找單個字符,除了換行和行結束符。正則系列文章整理到了 上一章內容:正則表達式實戰篇 知識回顧 前2章分別學習了正則表達式入門技巧,以及遇到正則需求該如何去分析問題,還有正則表達式實戰的一些場景解釋。 這一章內容偏向理論,推薦你點擊開頭的...
閱讀 3279·2021-10-11 11:08
閱讀 4424·2021-09-22 15:54
閱讀 912·2019-08-30 15:56
閱讀 864·2019-08-30 15:55
閱讀 3540·2019-08-30 15:52
閱讀 1352·2019-08-30 15:43
閱讀 1937·2019-08-30 11:14
閱讀 2504·2019-08-29 16:11