目錄
HTTP/HTTPS介紹
HTTP/HTTPS基本信息
HTTP如何實(shí)現(xiàn)有狀態(tài)
HTTP請求與應(yīng)答報(bào)文
HTTP請求報(bào)文
HTTP響應(yīng)報(bào)文
SSL協(xié)議
SSL單向認(rèn)證
SSL雙向認(rèn)證
HTTP連接建立與傳輸步驟
HTTP訪問全過程相關(guān)報(bào)文(以訪問www.download.cucdccom為例子)
DNS報(bào)文解析
TCP三次握手連接
進(jìn)行HTTP交互(明文)
HTTPS連接建立與傳輸步驟
HTTPS訪問全過程相關(guān)報(bào)文(以訪問www.baidu.com為例子)
DNS解析報(bào)文
TCP三次握手連接
SSL握手報(bào)文(單向)
進(jìn)行HTTPS交互(密文)
HTTP/HTTPS介紹
HTTP/HTTPS基本信息
什么是超文本
包含有超鏈接(Link)和各種多媒體元素標(biāo)記(Markup)的文本
這些超文本文件彼此鏈接,形成網(wǎng)狀(Web),因此又被稱為網(wǎng)頁(Web Page)
這些鏈接使用URL表示,最常見的超文本格式是超文本標(biāo)記語言HTML
HTTP(Hypertext Transfer Protocol)基本概念
HTTP是用于從萬維網(wǎng)(www)服務(wù)器傳輸超文本到本地瀏覽器的超文本傳輸協(xié)議
并且HTTP是一種分布式、通用的、無狀態(tài)的面向應(yīng)用層的協(xié)議(C/S架構(gòu),也支持B/S)
HTTP的分布式特性
分布式指的是一個(gè)網(wǎng)站上的內(nèi)容分布到多個(gè)服務(wù)器上
HTTP的無狀態(tài)性
web服務(wù)器不會(huì)針對用戶的訪問過程做記錄
當(dāng)一個(gè)用戶訪問過該網(wǎng)站后,等下次第二次訪問時(shí),服務(wù)器不知道該用戶曾經(jīng)訪問過
該特性簡化了HTTP服務(wù)器的設(shè)計(jì),使其更容易支持大量并發(fā)的HTTP請求
HTTP的連接方式
非持久性連接:該連接不是持久存在的,一個(gè)連接只進(jìn)行一次數(shù)據(jù)交互(即:每次傳輸數(shù)據(jù)時(shí)建立此連接,數(shù)據(jù)傳輸完畢后就斷開連接)
持久性連接:連接是持久存在的,在一個(gè)連接中進(jìn)行多次的數(shù)據(jù)交互
HTTPS基本概念
為什么提出HTTPS
由于HTTP是不加密的,在公網(wǎng)上明文傳輸,缺少保密性
為了保證隱私數(shù)據(jù)能夠加密傳輸,所以就出現(xiàn)了安全加密的HTTP協(xié)議,也就是HTTPS協(xié)議
HTTPS就是通過SSL/TLS對HTTP協(xié)議進(jìn)行加密(HTTPS=SSL/TLS+HTTP)
HTTPS和HTTP的區(qū)別
HTTPS協(xié)議需要使用到數(shù)字證書(需要向CA申請)
HTTPS和HTTP端口號(hào)不一樣;HTTP為TCP 80端口,HTTPS為TCP 443端口
HTTPS能夠?qū)鬏數(shù)男畔⑦M(jìn)行加密,更加安全
URL(Uniform Resource Locator)的概念
URL是統(tǒng)一資源定位符,用來唯一標(biāo)識(shí)萬維網(wǎng)中的某一個(gè)文檔;通過URL,可以直接使用HTTP/HTTPS協(xié)議訪問到具體的文檔
URL由協(xié)議、主機(jī)、端口號(hào)、文件名及路徑組成
HTTP如何實(shí)現(xiàn)有狀態(tài)
Cookie——存儲(chǔ)在客戶端(客戶端解決HTTP有狀態(tài)的方案)
為什么需要Cookie(以賬號(hào)登錄舉例)
當(dāng)我們訪問網(wǎng)站時(shí),有些網(wǎng)站需要進(jìn)行賬號(hào)登錄,我們需要提交我們的賬號(hào)密碼給服務(wù)器
但是由于HTTP協(xié)議是無狀態(tài)的(不記錄用戶的狀態(tài)),當(dāng)我們提交賬號(hào)密碼給服務(wù)器后,再進(jìn)行下一次操作時(shí),還需要再次去提交賬號(hào)密碼
所有由于HTTP的無狀態(tài)特征使得用戶的每一步操作都要提交賬號(hào)密碼進(jìn)行認(rèn)證,因此就提出了Cookie機(jī)制
Cookie介紹——在客戶端保存用戶狀態(tài)信息
客戶端收到Cookie之后是一般是保存在本地的硬盤上的(Cookie是由若干鍵值對組成的,鍵和值都是字符串)
Cookie是1993年由網(wǎng)景公司前雇員發(fā)明的一種進(jìn)行網(wǎng)絡(luò)會(huì)話狀態(tài)跟蹤的技術(shù)
Cookie是由服務(wù)端生成,然后通過請求響應(yīng)報(bào)文發(fā)給客戶端的信息載體。該載體中存放著用戶訪問該站點(diǎn)的會(huì)話狀態(tài)信息(只要Cookie沒有被清空,或者Cookie沒有失效,那么保存在其中的會(huì)話狀態(tài)就有效)
客戶端瀏覽器收到后將Cookie存儲(chǔ)在客戶端本地,后續(xù)當(dāng)客戶端再次向該服務(wù)器發(fā)送同類請求的時(shí)候,就會(huì)在請求中攜帶保存在客戶端的Cookie數(shù)據(jù),服務(wù)端就可以通過Cookie來識(shí)別客戶端身份和狀態(tài)信息,然后返回相應(yīng)的頁面給用戶
具體過程如下
當(dāng)用戶發(fā)送第一次請求HTTP服務(wù)器時(shí),不會(huì)攜帶Cookie值
此時(shí)服務(wù)器收到該請求時(shí),服務(wù)會(huì)把用戶的某些狀態(tài)數(shù)據(jù)以key-value的形式寫入到Cookie中,然后將其放入set-cookie字段,隨著響應(yīng)報(bào)文一同發(fā)給用戶
當(dāng)用戶收到響應(yīng)報(bào)文后,將set-cookie中的cookie保存起來,這樣瀏覽器之后發(fā)送的每一個(gè)同類型的請求都會(huì)自動(dòng)附上這個(gè)Cookie;當(dāng)服務(wù)器收到請求后發(fā)現(xiàn)有Cookie字段,通過該Cookie字段就會(huì)識(shí)別該用戶身份
當(dāng)瀏覽器此一次發(fā)送與該請求非同類的請求時(shí),不會(huì)攜帶該Cookie,到達(dá)服務(wù)器端后,服務(wù)器會(huì)生成新的Cookie給客戶端
Session——存儲(chǔ)在服務(wù)器端(服務(wù)端解決HTTP有狀態(tài)的方案)
Session介紹——Session是一個(gè)會(huì)話
Session也是一種記錄客戶狀態(tài)的機(jī)制,不同的是Cookie保存在客戶端瀏覽器上,Session是保存在服務(wù)器本地的
默認(rèn)情況下Session會(huì)針對每一個(gè)瀏覽器請求產(chǎn)生一個(gè)Session會(huì)話(記錄客戶端當(dāng)前會(huì)話產(chǎn)生的一些狀態(tài)數(shù)據(jù)),當(dāng)后續(xù)客戶端再次訪問時(shí),服務(wù)器只需要從該Session中查找該客戶的狀態(tài)并返回相應(yīng)的頁面就可以了
Session機(jī)制原理——在服務(wù)器端保存用戶狀態(tài)信息
Session一般存儲(chǔ)在服務(wù)器的內(nèi)存,也可以將其持久化到數(shù)據(jù)庫中
雖然Session保存在服務(wù)器,但是其也需要使用到Cookie技術(shù),不過此時(shí)的Cookie只是作為識(shí)別標(biāo)志,并不存儲(chǔ)用戶狀態(tài)信息(當(dāng)禁用掉客戶端的Cookie,服務(wù)器的Session也無法使用)
因此服務(wù)器會(huì)向客戶端發(fā)送一個(gè)名為SessionID的Cookie,SessionID是一段沒有規(guī)律的字符串,來唯一標(biāo)識(shí)Session會(huì)話(Cookie有多種體現(xiàn)形式,SessionID是其中的一種體現(xiàn)形式;像前面介紹的Key-Value也是Cookie的一種體現(xiàn)形式)
具體工作原理如下
當(dāng)用戶發(fā)第一次請求HTTP服務(wù)器時(shí),服務(wù)器收到該請求后
會(huì)為該會(huì)話創(chuàng)建Session文件保存在服務(wù)器本地,并針對當(dāng)前會(huì)話創(chuàng)建唯一標(biāo)識(shí)符Session ID(該Session ID也是Session的文件名)
服務(wù)器將此Session ID封裝在響應(yīng)報(bào)文中的set-cookie字段中發(fā)送給客戶端
客戶端收到后會(huì)將SessionID保存在Cookie中,之后每次請求都會(huì)攜帶Sessionid進(jìn)行訪問
服務(wù)器就通過SessionID查找對應(yīng)的Session,識(shí)別該客戶端的狀態(tài)
Cookie和Session之間的關(guān)系與區(qū)別
Cookie和Session是兩種實(shí)現(xiàn)HTTP有狀態(tài)的機(jī)制(只不過Session機(jī)制可能也會(huì)需要Cookie來輔助)
一般用戶未登錄時(shí)在網(wǎng)站上的一些操作和用戶免認(rèn)證登錄都是通過Cookie機(jī)制來進(jìn)行記錄和實(shí)現(xiàn)的
- Cookie用戶信息存放在客戶端,Session用戶信息存放在服務(wù)器端
- Cookie不是很安全,黑客分析存放在用戶本地的Cookie能夠?qū)崿F(xiàn)Cookie欺騙(考慮安全性應(yīng)當(dāng)使用Session);Session生成的SessionID也會(huì)存儲(chǔ)在客戶端的Cookie,會(huì)泄露也會(huì)造成風(fēng)險(xiǎn)
- Session存放在服務(wù)器上,當(dāng)訪問增多會(huì)占用服務(wù)器性能(如果考慮服務(wù)器性能,應(yīng)當(dāng)使用Cookie)
HTTP請求與應(yīng)答報(bào)文
HTTP請求報(bào)文
請求行
Request Method:請求方法,GET和POST是比較常見的請求方法
GET:請求獲取Request-URL所標(biāo)識(shí)的資源
POST:在Request-URL所標(biāo)識(shí)的資源后附加新的數(shù)據(jù)(上傳數(shù)據(jù)—例如登錄-HTTP為明文)
DELETE:請求服務(wù)器刪除Request-URL所標(biāo)識(shí)的資源
HEAD:請求獲取有Request-URL所標(biāo)識(shí)的資源的響應(yīng)消息報(bào)頭
OPTIONS:請求查詢服務(wù)器的性能(或查詢與資源相關(guān)的選項(xiàng)和需求)
PUT:請求服務(wù)器存儲(chǔ)一個(gè)資源,并用Request-URL作為其標(biāo)識(shí)
TRACE:請求服務(wù)器回送收到的請求消息(主要用于測試或診斷)
CONNECT:用于代理服務(wù)器
Request URL:????? 請求的URL
Request Version:HTTP版本號(hào)
請求頭部(由關(guān)鍵字和值組成,關(guān)鍵字和值使用”:”分隔,每行一對)
Host:請求的主機(jī)名,允許多個(gè)域名同處一個(gè)IP 地址,即虛擬主機(jī)
Connection:連接方式(close 或 keepalive)
User-Agent:攜帶用戶主機(jī)的操作系統(tǒng)版本、訪問該網(wǎng)站的瀏覽器信息等
Accept:客戶端可識(shí)別的頁面類型(星號(hào) “ * ” 用于按范圍將類型分組;用 “ */* ” 指示可接受全部類型;用“ type/* ”指示可接受 type 類型的所有子類型;)
Referer:告訴服務(wù)器我目前訪問的該網(wǎng)頁來自哪個(gè)頁面(referer主要出現(xiàn)在網(wǎng)頁之間相互跳轉(zhuǎn)的場景)
Accept-Language:客戶端可接受的自然語言
Accept-Encoding:客戶端可接受的編碼壓縮格式
Accept-Charset:可接受的應(yīng)答的字符集
Cookie:存儲(chǔ)于客戶端擴(kuò)展字段,向同一域名的服務(wù)端發(fā)送屬于該域的cookie(記錄登錄的狀態(tài)(第一次登錄輸入賬號(hào)密碼,后續(xù)登錄就不需要登錄了))
HTTP響應(yīng)報(bào)文
狀態(tài)行
Status Code:狀態(tài)碼
狀態(tài)碼由三位數(shù)字組成,第一位數(shù)字表示響應(yīng)的類型,常用的狀態(tài)碼有五大類如下所示
1xx:表示服務(wù)器已接收了客戶端請求,客戶端可繼續(xù)發(fā)送請求;
2xx:表示服務(wù)器已成功接收到請求并進(jìn)行處理;
3xx:表示服務(wù)器要求客戶端重定向;
4xx:表示客戶端的請求有非法內(nèi)容;
5xx:表示服務(wù)器未能正常處理客戶端的請求而出現(xiàn)意外錯(cuò)誤;
具體常見狀態(tài)碼的值及其描述
100 :??????????????????????????服務(wù)器正在處理客戶端請求?
200 OK:?????????????????????表示客戶端請求成功
302 Found:????????????????表示該資源原本存在,但是已經(jīng)被臨時(shí)改變了位置(服務(wù)器通常會(huì)給瀏覽器發(fā)送Location字段來告訴瀏覽器改變后的位置)
307 Internal Redirect:內(nèi)部重定向(與302其實(shí)是一致的,唯一的區(qū)別在于307狀態(tài)碼不允許瀏覽器將原本為POST的請求重定向到GET請求上)
400 Bad Request:??????表示客戶端請求有語法錯(cuò)誤,不能被服務(wù)器所理解
403:? ? ? ? ? ? ? ? ? ? ? ? ? ? 禁止的頁面
404 Page Not Found: 標(biāo)識(shí)客戶端請求的資源不存在
500:? ? ? ? ? ? ? ? ? ? ? ? ? ? ?服務(wù)器內(nèi)部發(fā)生錯(cuò)誤
首部行(由關(guān)鍵字和值組成,關(guān)鍵字和值使用”:”分隔,每行一對)
Content-Type:內(nèi)容的類型(如:Content-Type:text/html、xml等)
Server:告訴瀏覽器服務(wù)器的名稱和版本號(hào)等信息(如:Apache/2.2.10)(深信服可以通過AF將此字段隱藏—應(yīng)用隱藏功能)
Content-Length:響應(yīng)體的長度-單位為字節(jié)(響應(yīng)體就是響應(yīng)數(shù)據(jù)---不包含狀態(tài)行和首部行)
Content-Encoding :內(nèi)容是如何被編碼的(如gzip)
Content-Language:頁面所使用的自然語言
Last-Modified:頁面最后被修改的時(shí)間和日期,在頁面緩存機(jī)制中意義重大
Location:令客戶端重定向至該字段的URL;該字段一般配合 3xx狀態(tài)碼使用,提供重定向的URI
Set-cookie:服務(wù)器希望客戶保存一個(gè)cookie
WWW-Authenticate:服務(wù)器對客戶端的認(rèn)證信息;,用于 HTTP 訪問認(rèn)證
Proxy-Authenticate:代理服務(wù)器對客戶端的認(rèn)證信息(會(huì)把由代理服務(wù)器所要求的認(rèn)證信息發(fā)送給客戶端)它與客戶端和服務(wù)器之間的HTTP 訪問認(rèn)證的行為相似,不同之處在于其認(rèn)證行為是在客戶端與代理之間進(jìn)行的
SSL協(xié)議
SSL協(xié)議基本概念
SSL(Secure Socker Layer)安全套接字層,位于應(yīng)用層和傳輸層之間的一種協(xié)議層,屬于Socket層的時(shí)間
SSL建立在TCP之上,為應(yīng)用層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能
并且可以通過互相認(rèn)證、使用數(shù)字簽名、加密等實(shí)現(xiàn)客戶端和服務(wù)器之間的安全通信
SSL協(xié)議的組成
SSL協(xié)議是由SSL記錄協(xié)議層和SSL握手協(xié)議層兩層組成的一個(gè)協(xié)議簇
SSL記錄協(xié)議層
該層是為高層協(xié)議提供基本的安全服務(wù),實(shí)現(xiàn)對數(shù)據(jù)的分塊、加解密、壓縮與解壓縮、完整性校驗(yàn)以及高層協(xié)議的封裝
SSL記錄協(xié)議針對HTTP協(xié)議進(jìn)行了特別的設(shè)計(jì),使得HTTP能夠在SSL上運(yùn)行
SSL握手協(xié)議層
SSL握手協(xié)議層包含SSL握手協(xié)議(SSL HandShake Protocol)、SSL密碼變更協(xié)議(SSL Change Cipher Spec Protocol)、SSL報(bào)警協(xié)議(SSL Alert Protocol)
SSL密碼更改協(xié)議:更新用于當(dāng)前連接的密碼組
SSL報(bào)警協(xié)議:為通信的雙方傳遞SSL的相關(guān)警告
SSL握手協(xié)議:允許通信實(shí)體在交換應(yīng)用數(shù)據(jù)之前協(xié)商密鑰的算法,并對客戶端進(jìn)行認(rèn)證
SSL握手的相關(guān)報(bào)文內(nèi)容字段在(HTTPS訪問全過程講解)
SSL單向認(rèn)證
握手步驟簡單講解
- 客戶端發(fā)送client hello(包含支持的協(xié)議版本、加密算法和隨機(jī)數(shù)A)
- 服務(wù)返回Hello(公鑰證書、隨機(jī)數(shù)B)
- 客戶端使用CA驗(yàn)證服務(wù)器證書,確認(rèn)無誤后,生成隨機(jī)數(shù)c,用公鑰加密發(fā)給服務(wù)器(客戶端通過a、b、c生成對稱秘鑰進(jìn)行數(shù)加密)
- 服務(wù)用私鑰解密得到c,通過a、b、c生成對稱秘鑰進(jìn)行數(shù)據(jù)加密
- 最后雙方進(jìn)行數(shù)據(jù)加密
握手步驟詳細(xì)講解
1、交互Hello報(bào)文(客戶端生成隨機(jī)數(shù)R1,服務(wù)端生成隨機(jī)數(shù)R2相互交換),協(xié)商配置信息(SSL版本、加密算法等)
2、服務(wù)端向客戶端發(fā)送數(shù)字證書,并通過加密算法生成一個(gè)Server Params(橢圓曲線的公鑰),該公鑰通過服務(wù)端的私鑰簽名認(rèn)證---(當(dāng)進(jìn)行雙向驗(yàn)證時(shí)則需要客戶端也向服務(wù)器發(fā)送證書)
3、客戶端使用CA的公鑰解密證書驗(yàn)證服務(wù)端證書的真實(shí)性,然后通過證書的摘要算法對證書數(shù)據(jù)生成摘要,與證書攜帶的摘要進(jìn)行對比,來驗(yàn)證書是否被篡改。此時(shí)客戶端獲得證書的公鑰。并通過該服務(wù)端公鑰解密服務(wù)端發(fā)來的Server Params
4、此時(shí)客戶端就有了R1、R2和Server Params三個(gè)參數(shù),這時(shí)客戶端也會(huì)通過雙方協(xié)商的加密算法生成一個(gè)Client Params(橢圓曲線的公鑰),并通過服務(wù)端的公鑰加密將其發(fā)給服務(wù)端;然后將Client Params和Server Params生成一個(gè)Pre-Masterkey(也算是一個(gè)隨機(jī)數(shù));最后客戶端又通過R1、R2、Pre-Master生成主秘鑰
5、然后服務(wù)器端通過私鑰解密得到客戶端發(fā)來的Client Params(然后服務(wù)器也會(huì)根據(jù)R1、R2、Server Params、Client Params先生成Pre-MasterKey,再生成主秘鑰);由于黑客破解不了客戶端發(fā)送的Client Params,因此無法得到數(shù)據(jù)密鑰
6、最后雙方通過主秘鑰派生出的客戶端會(huì)話密鑰和服務(wù)端會(huì)話秘鑰來加密數(shù)據(jù)
交互報(bào)文
Client Hello
攜帶客戶端的SSL版本、加密套件列表、壓縮算法列表、客戶端隨機(jī)數(shù);sessionid=0
Server Hello
服務(wù)器根據(jù)客戶端的Hello報(bào)文協(xié)商加密套件、壓縮算法、計(jì)算sessionid
將其發(fā)送給客戶端(并攜帶生成的隨機(jī)數(shù))
Server Certificate
服務(wù)器將自己的證書發(fā)給客戶端
Server Hello Done
服務(wù)器通知客戶端握手消息發(fā)送完成
Client Key Exchang
客戶端密鑰交換(產(chǎn)生預(yù)主秘鑰preMasterKey,將自己的Client Params使用服務(wù)器的公鑰加密)
Change Cipher Spec
改變加密約定消息,通知服務(wù)端之后的消息啟用加密參數(shù)
Client Finished Message
客戶端SSL協(xié)商成功結(jié)束,發(fā)送握手驗(yàn)證報(bào)文確保消息的完整性
Change Cipher Spec
改變加密約定消息,通知客戶端之后的消息啟用加密參數(shù)
Server Finished Message
服務(wù)器SSL協(xié)商成功結(jié)束,發(fā)送握手驗(yàn)證報(bào)文確保消息的完整性
SSL雙向認(rèn)證
SSL雙向認(rèn)證就是多了服務(wù)器驗(yàn)證客戶端證書的認(rèn)證(服務(wù)器發(fā)送自己的證書之后,同時(shí)請求客戶端的證書,客戶端將證書發(fā)送給服務(wù)器,服務(wù)器通過CA進(jìn)行驗(yàn)證客戶端認(rèn)證)
具體報(bào)文交互
HTTP連接建立與傳輸步驟
HTTP不同場景下的通信過程和用戶上網(wǎng)認(rèn)證過程分析-CSDN博客https://blog.csdn.net/m0_49864110/article/details/134864720?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22134864720%22%2C%22source%22%3A%22m0_49864110%22%7D
- 瀏覽器分析URL連接(找到訪問的域名),并發(fā)送DNS請求得到關(guān)于該域名的IP地址
- DNS將解析出來的IP地址返回給瀏覽器
- 瀏覽器與服務(wù)器建立TCP連接
- 瀏覽器發(fā)送請求(GET或POST)
- 服務(wù)器給出響應(yīng)
- 斷開TCP連接
HTTP訪問全過程相關(guān)報(bào)文(以訪問www.download.cucdccom為例子)
DNS報(bào)文解析
TCP三次握手連接
進(jìn)行HTTP交互(明文)
HTTPS連接建立與傳輸步驟
1、瀏覽器分析URL連接(找到訪問的域名),并發(fā)送DNS請求得到關(guān)于該域名的IP地址
2、DNS將解析出來的IP地址返回給瀏覽器
3、瀏覽器與服務(wù)器建立TCP連接
4、進(jìn)行SSL握手
5、進(jìn)行加密數(shù)據(jù)傳輸
6、釋放TCP連接(同HTTP)
HTTPS訪問全過程相關(guān)報(bào)文(以訪問www.baidu.com為例子)
DNS解析報(bào)文
TCP三次握手連接
SSL握手報(bào)文(單向)
進(jìn)行SSL握手階段
Version:SSL版本號(hào)
Random:客戶端隨機(jī)數(shù)
Cipher suites:支持的加密算法列表
Server name:服務(wù)端名稱(www.baidu.com)
Compression Methods:支持的壓縮算法
還會(huì)攜帶sessionid
確定SSL版本、加密套件、壓縮算法、攜帶服務(wù)器生成的隨機(jī)數(shù)、計(jì)算sessionid
Version:版本號(hào)
Random:隨機(jī)數(shù)
Session ID:計(jì)算出來的會(huì)話ID
Cipher suite:加密套件算法
Compression Method:壓縮算法(此處表示沒有)
進(jìn)行HTTPS交互(密文)
數(shù)據(jù)加密傳輸文章來源:http://www.zghlxwxcb.cn/news/detail-763808.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-763808.html
到了這里,關(guān)于HTTP、HTTPS、SSL協(xié)議以及相關(guān)報(bào)文講解的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!