摘要:前言三月份就快要結束了,這個月定的目標是對的基礎知識點做一個落地。由于是無狀態的,請求之間無法維系上下文,所以就出現了作為會話控制,服務端存放用戶的會話信息。概念在協議上增加了層。
前言
三月份就快要結束了,這個月定的目標是對http的基礎知識點做一個落地。直入主題我們順著下面的思路去對http基礎知識做一個總結:
概念
五層網絡協議
HTTP Method
HTTP Status
HTTP Header
Cookie/Session
HTTPs
Websocket
HTTP2
概念什么是http?Hypertext Transfer Protocol, 超文本傳輸(轉移)協議,是客戶端和服務端傳輸文本制定的協議。說起http協議,還得說說WWW,http是構建WWW的三項技術之一,具體的三項技術如下:
WWW: world wide web, 萬維網
HTML: Hypertext Markup Language, 超文本標記語言
HTTP: Hypertext Transfer Protocol, 超文本傳輸(轉移)協議
URL: Uniform Resource Locator, 統一資源定位符號
URI: Uniform Resource Identitier, 統一資源標示符號,URL是URI的子集五層網絡協議
應用層(http/https/websocket/ftp...) => 定義:文本傳輸協議 | 傳輸層(tcp/udp) => 定義:端口 | 網絡層(ip) => 定義:IP | 鏈路層(mac&數據包) => 定義:數據包,MAC地址 | 實體層(光纜/電纜/交換機/路由/終端...) => 定義:物理
TCP/IP:
說起網絡協議自然不能不提TCP/IP協議了,它有兩種解釋如下,
解釋一:分別代表tcp協議和ip協議
解釋二:如果按照網絡五層架構,TCP/IP代表除了應用層其他層所有協議簇的統稱
TCP/IP connect: TCP/IP的三次握手:
標有syn的數據包 -------------> 標有syn/ack的數據包 client <------------- server 標有ack的數據包 -------------->
TCP/IP finish: TCP/IP的四次握手:
fin <------------- ack client(或server) -------------> server(或client) fin -------------> ack <-------------
Keep-Alive:
HTTP協議初期每次連接結束后都會斷開TCP連接,之后HEADER的connection字段定義Keep-Alive(HTTP 1.1 默認 持久連接),代表如果連接雙方如果沒有一方主動斷開都不會斷開TCP連接,減少了每次建立HTTP連接時進行TCP連接的消耗。
HTTP Methodget: 獲取資源,url傳參,大小2KB
post: 傳輸資源,http body, 大小默認8M,1000個input variable
put: 傳輸資源,http body,資源更新
delete: 刪除資源
patch: 傳輸資源,http body,存在的資源局部更新
head: 獲取http header
options: 獲取支持的method
trace: 追蹤,返回請求回環信息
connect: 建立隧道通信
HTTP Status200: ok
301: 永久重定向
302: 臨時重定向
303: 臨時重定向,要求用get請求資源
304: not modified, 返回緩存,和重定向無關
307: 臨時重定向,嚴格不從post到get
400: 參數錯誤
401: 未通過http認證
403: forbidden,未授權
404: not found,不存在資源
500: internet server error,代碼錯誤
502: bad gateway,fastcgi返回的內容web server不明白
503: service unavailable,服務不可用
504: gateway timeout,fastcgi響應超時
接口選取http status作為響應code是個不錯的選擇HTTP Header Fields
常見通用頭部
Cache-Control:
no-cache: 不緩存過期的緩存
no-store: 不緩存
Pragma: no-cache, 不使用緩存,http1.1前的歷史字段
Connection:
控制不在轉發給代理首部不字段
Keep-Alive/Close: 持久連接
Date: 創建http報文的日期
常見請求頭
Accept: 可以處理的媒體類型和優先級
Host: 目標主機域名
Referer: 請求從哪發起的原始資源URI
User-Agent: 創建請求的用戶代理名稱
Cookie: cookie信息
常見響應頭
Location: 重定向地址
Server: 被請求的服務web server的信息
Set-Cookie: 要設置的cookie信息
NAME: 要設置的鍵值對
expires: cookie過期時間
path: 指定發送cookie的目錄
domain: 指定發送cookie的域名
Secure: 指定之后只有https下才發送cookie
HostOnly: 指定之后javascript無法讀取cookie
Cookie/SessionCookie: 工作機制是用戶識別和狀態管理,服務端為了管理用戶的狀態會通過客戶端,把一些臨時的數據寫入到設備中Set-Cookie,當用戶訪問服務的時候,服務可以通過通信的方式取回之前存放的cookie。
Session: 由于http是無狀態的,請求之間無法維系上下文,所以就出現了session作為會話控制,服務端存放用戶的會話信息。
HTTPs概念:在http協議上增加了ssl(secure socket layer)層。
SSL層 | 應用層 | 傳輸層 | 網絡層 | 鏈路層 | 實體層
HTTPS 認證流程
發起請求 ---------------------------> server 下發證書 <--------------------------- server 證書數字簽名(用證書機構公鑰加密) ---------------------------> 證書機構 證書數字簽名驗證通過 client(內置證書機構證書) <--------------------------- 證書機構 公鑰加密隨機密碼串(未來的共享秘鑰) ---------------------------> server私鑰解密(非對稱加密) SSL協議結束 HTTP協議開始 <--------------------------- server(對稱加密) 共享秘鑰加密 HTTP ---------------------------> server(對稱加密)
核對證書證書: 證書機構的公開秘鑰驗證證書的數字簽名
公開密鑰加密建立連接:非對稱加密
共享密鑰加密
Websocket基于http協議建立連接,header的upgrade字段轉化協議為websocket
全雙工通信,客戶端建立連接
HTTP2多路復用:多個請求共享一個tcp連接
全雙工通信
必須https://
頭部壓縮
二進制傳輸
附錄詳細五層協議
概括:從上到下,越上越接近用戶,越下越接近硬件
應用層:
規定應用程序的數據格式
[HEAD(以太網標頭) [HEAD(IP標頭) [HEAD(TCP標頭) DATA(應用層數據包)]]]
傳輸層(端口到端口的通信):
端口:
0到65535(2^16)的整數
進程使用網卡的編號
通過IP+mac確定主機,只要確定主機+端口(套接字socket),就能進行程序間的通信
UDP協議:
數據包中加入端口依賴的新協議
數據包[HEAD(發送、接收mac) [HEAD(發送、接收ip) [HEAD(發送、接收端口) DATA]]]
簡單,可靠性差,不知道對方是否接受包
TCP協議:
帶有確認機制的UDP協議
過程復雜,實現困難,消耗資源
網絡層(主機到主機的通信):
IP協議
ipv4:
32個二進制位表示,由網絡部分和主機部分構成,
子網掩碼: 網絡部分都為1,主機部分都為0,目的判斷ip的網絡部分,如255.255.255.0(11111111.11111111.11111111.00000000)
IP數據包:標頭Head+數據Data,放進以太網數據包的Data部分[HEAD [HEAD DATA]]
IP數據包的傳遞:
非同一網絡:無法獲得mac地址,發送數據到網關,網關處理
ARP(Address Resolation Protocol): 解析地址協議,通過ip解析mac地址
同一網絡:mac地址填寫FF:FF:FF:FF:FF:FF:FF,廣播數據,對比ip,不符合丟包
鏈接層:
定義數據包(幀Frame)
標頭(Head):數據包的一些說明項, 如發送者、接收者、數據類型
數據(Data):數據包的具體內容
數據包:[HEAD DATA]
定義網卡和網卡唯一的mac地址
以太網規定接入網絡的所有終端都應該具有網卡接口,數據包必須是從一個網卡的mac地址到另一網卡接口的mac地址
mac全球唯一,16位16位進制組成,前6廠商編號,后6網卡流水號
廣播發送數據
向本網絡內的所有設備發送數據包,對比接收者mac地址,不是丟包,是接受
實體層:
終端(pc,phone,pad...)的物理連接(光纜,電纜,路由...),負責傳遞0和1信號
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22587.html
摘要:微信任意用戶密碼修改漏洞漏洞描述在微信官方的首頁上發現了找回密碼功能。選擇通過手機號碼找回密碼。提交成功,輸入新密碼。網易郵箱可直接修改其他用戶密碼描述這次我們看一個郵箱的找回密碼漏洞,這個還真和上面的方式有點不一樣。 來自 GitChat 作者:湯青松更多使用技術,盡在微信公眾號:GitChat技術雜談 進入 GitChat 閱讀原文 WEB安全用戶密碼找回多案例安全攻防實戰 這次文...
摘要:所謂對稱加密,就是加密和解密使用同一秘鑰,這也是這種加密算法最顯著的缺點之一。非對稱加密算法由于對稱加密在通信加密領域的缺陷,年和提出了非對稱加密的概念。非對稱加密,其主要缺點之一就是慢,適合加密少量數據。 1. 加密的目的 加密不同于密碼,加密是一個動作或者過程,其目的就是將一段明文信息(人類或機器可以直接讀懂的信息)變為一段看上去沒有任何意義的字符,必須通過事先約定的解密規則才能將...
摘要:所謂對稱加密,就是加密和解密使用同一秘鑰,這也是這種加密算法最顯著的缺點之一。非對稱加密算法由于對稱加密在通信加密領域的缺陷,年和提出了非對稱加密的概念。非對稱加密,其主要缺點之一就是慢,適合加密少量數據。 1. 加密的目的 加密不同于密碼,加密是一個動作或者過程,其目的就是將一段明文信息(人類或機器可以直接讀懂的信息)變為一段看上去沒有任何意義的字符,必須通過事先約定的解密規則才能將...
摘要:小二穆遠是螞蟻金服的一名程序員,五年晉升了三次,他要聊聊自己的五年阿里之旅,那些變化堅持和淚水。在阿里待滿五年是一種什么樣的體驗打怪升級,一路找尋自己的答案。年陳故事會,來自阿里小二的自述。小二穆遠是螞蟻金服的一名程序員,五年晉升了三次,他要聊聊自己的五年阿里之旅,那些變化、堅持和淚水。請看本期的年陳故事會。showImg(https://user-gold-cdn.xitu.io/2019...
閱讀 3603·2021-11-24 10:25
閱讀 2508·2021-11-24 09:38
閱讀 1217·2021-09-08 10:41
閱讀 2903·2021-09-01 10:42
閱讀 2569·2021-07-25 21:37
閱讀 1981·2019-08-30 15:56
閱讀 914·2019-08-30 15:55
閱讀 2749·2019-08-30 15:54