作者簡介:
目錄
1.網(wǎng)絡(luò)
2.HTTP
2.1.報(bào)文結(jié)構(gòu)
2.1.1.請求報(bào)文
2.1.2.響應(yīng)報(bào)文
2.2.方法
2.3.HTTPS
2.4.跨域
3.會(huì)話保持
3.1.概述
3.2.cookie
3.3.session
4.認(rèn)證授權(quán)
4.1.Token
4.2.JWT
4.3.oauth
1.網(wǎng)絡(luò)
計(jì)算機(jī)網(wǎng)絡(luò):
計(jì)算機(jī)網(wǎng)絡(luò),由節(jié)點(diǎn)和邊組成的一組拓?fù)浣Y(jié)構(gòu)。
邊,即鏈路,路由器間的鏈路為主干鏈路,路由器和主機(jī)之間的鏈路為接入鏈路。
節(jié)點(diǎn),即主機(jī)節(jié)點(diǎn)或者數(shù)據(jù)交換節(jié)點(diǎn),由主機(jī)或者數(shù)據(jù)交換設(shè)備(或者更高層的負(fù)載均衡設(shè)備)組成
分層:
根據(jù)所負(fù)責(zé)的功能的不同,計(jì)算機(jī)網(wǎng)絡(luò)在邏輯上分層嗎,經(jīng)典模型是OSI七層,但是七層稍顯繁瑣,一般用TCP/IP四層就能簡要說明網(wǎng)絡(luò)分層中層級(jí)的作用。
TCP/IP四層分層:
-
應(yīng)用層
應(yīng)用程序
-
傳輸層
提供端到端之間的通信,傳輸層在終端用戶之間提供透明的數(shù)據(jù)傳輸,向上層提供可靠的數(shù)據(jù)傳輸服務(wù)。傳輸層在給定的鏈路上通過流量控制、分段/重組和差錯(cuò)控制來保證數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
-
網(wǎng)絡(luò)層
IP層,負(fù)責(zé)處理IP數(shù)據(jù)報(bào)文在網(wǎng)絡(luò)中的傳輸,IP層傳輸?shù)氖荌P數(shù)據(jù)報(bào)文,借助路由表,把IP數(shù)據(jù)報(bào)文從網(wǎng)絡(luò)的一端傳輸?shù)搅硪欢?,簡而言之,IP實(shí)現(xiàn)包的路由傳輸,IP協(xié)議和路由器工作在網(wǎng)絡(luò)層。
-
網(wǎng)絡(luò)接口層
包括操作系統(tǒng)的設(shè)備驅(qū)動(dòng)程序和網(wǎng)卡,它們一起處理與傳輸媒介(光纖等)的物理接口細(xì)節(jié)。
數(shù)據(jù)在分層間流轉(zhuǎn)、網(wǎng)絡(luò)中游走的過程如下:
協(xié)議:
協(xié)議,對等層實(shí)體間通信過程中遵守的規(guī)則的集合。
以下為各層中一些經(jīng)典的協(xié)議:
2.HTTP
HTTP,超文本傳輸協(xié)議,WEB體系選用了該協(xié)議作為應(yīng)用層協(xié)議。
2.1.報(bào)文結(jié)構(gòu)
2.1.1.請求報(bào)文
HTTP的請求報(bào)文(request)由四部分組成:請求行(request line)、請求頭部(header)、空行和請求數(shù)據(jù)(request data)
名稱 | 作用 |
---|---|
請求行 | 記錄請求方法、URL、HTTP協(xié)議版本號(hào) |
請求頭 | 以鍵值對的方式記錄一些附加信息,如cookie、編碼、host等 |
請求數(shù)據(jù) | 請求數(shù)據(jù),也叫請求體,不在GET方法中使用,而是在POST方法中使用, POST方法適用于需要客戶填寫表單的場合。 請求頭中存在兩個(gè)與請求數(shù)據(jù)相關(guān)的重要key:Content-Type和Content-Length。 |
也就是說只有Post請求有請求體:
2.1.2.響應(yīng)報(bào)文
HTTP的響應(yīng)報(bào)文(response)中最重要的兩部分:
-
狀態(tài)碼
記錄響應(yīng)的狀態(tài)
-
響應(yīng)體
記錄響應(yīng)的數(shù)據(jù),可以是是網(wǎng)頁(HTML代碼),是圖片、視頻、音頻等。
2.2.方法
HTTP中總共有GET、POST、PUT、DELETE、CONNECT、HEAD,本來設(shè)計(jì)的初衷是想讓對服務(wù)器的每一種操作都有對應(yīng)的方法,但在實(shí)際使用中發(fā)現(xiàn)其實(shí)GET、POST兩個(gè)方法就足夠了,GET負(fù)責(zé)向服務(wù)器要數(shù)據(jù),POST負(fù)責(zé)向服務(wù)器存數(shù)據(jù)。
GET、POST區(qū)別:
名稱 | 特點(diǎn) |
---|---|
GET | 參數(shù)在URL中,數(shù)據(jù)大小不能超過2KB |
POST | 數(shù)據(jù)在HTTP報(bào)文的“請求數(shù)據(jù)”這一區(qū)域,理論上大小沒有上限 |
2.3.HTTPS
https=http+ssl/TSL,即使用HTTP進(jìn)行通信,使用SSL/TLS對數(shù)據(jù)進(jìn)行保護(hù)。
在https體系中,SSL/TLS為HTTP協(xié)議(應(yīng)用層)和TCP(傳輸層)間的中間層。
SSL/TLS在三個(gè)維度對數(shù)據(jù)進(jìn)行保護(hù):
-
內(nèi)容加密:采用混合加密技術(shù),中間者無法直接查看明文內(nèi)容
-
驗(yàn)證身份:通過證書認(rèn)證客戶端訪問的是自己的服務(wù)器
-
保護(hù)數(shù)據(jù)完整性:防止傳輸?shù)膬?nèi)容被中間人冒充或者篡改
SSL:
Secure Sockets Layer,安全套接層協(xié)議,為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議。在1994年被Netscape發(fā)明,后來各個(gè)瀏覽器均支持SSL,其最新的版本是3.0
TLS:
Transport Layer Security,安全傳輸層協(xié)議,最新版本的TLS(Transport Layer Security,傳輸層安全協(xié)議)是IETF(Internet Engineering Task Force,Internet工程任務(wù)組)制定的一種新的協(xié)議,它建立在SSL 3.0協(xié)議規(guī)范之上,是SSL 3.0的后續(xù)版本。在TLS與SSL3.0之間存在著顯著的差別,主要是它們所支持的加密算法不同,所以TLS與SSL3.0不能互操作。雖然TLS與SSL3.0在加密算法上不同,但是在理解HTTPS的過程中,可以把SSL和TLS看做是同一個(gè)協(xié)議。
工作機(jī)制:
SSL/TLS的機(jī)制類似于TCP,采用握手的方式在連接建立階段完成加解密方法、密鑰等數(shù)據(jù)的協(xié)商確定,然后后續(xù)的數(shù)據(jù)通信過程采用協(xié)商的結(jié)果。
SSL證書:
配置在服務(wù)器上,也稱為SSL服務(wù)器證書,記錄當(dāng)前服務(wù)器支持的加密算法、密鑰等信息,這是使用SSL/STL時(shí)的核心實(shí)體將其配置在服務(wù)器上即可,整個(gè)HTTPS里客戶端和服務(wù)器建立安全的連接靠的就是讀取改文件從而進(jìn)行決策。
2.4.跨域
跨域問題是源自“同源策略”,“同源策略”是一種約定,本質(zhì)上是限制一個(gè)域的JavaScript腳本和另一個(gè)域內(nèi)的內(nèi)容進(jìn)行交互。
“同源策略”是保證瀏覽器安全的一種核心機(jī)制,所有瀏覽器在實(shí)現(xiàn)上都必須實(shí)現(xiàn)該機(jī)制,否則該瀏覽器將會(huì)非常容易被攻擊。所謂“同源”,即在一個(gè)域內(nèi),一個(gè)域由協(xié)議、主機(jī)、端口三部分組成,有任何一個(gè)部分不同,都不是一個(gè)域、一個(gè)源。
如在http://www.test.com這個(gè)網(wǎng)頁中她的js無法與其他域中的內(nèi)容進(jìn)行交互。這種交禁止交互不是指跨域的請求發(fā)不出去,而是指響應(yīng)的結(jié)果被瀏覽器攔截了。
因此在后端解決跨域問題是很方便的,只要在響應(yīng)返回前處理一下瀏覽器判斷響應(yīng)是否跨域的條件項(xiàng)就行。
3.會(huì)話保持
3.1.概述
會(huì)話保持技術(shù)的出現(xiàn)是因?yàn)镠TTP 是一個(gè)無狀態(tài)的協(xié)議,這一次請求和上一次請求是沒有任何關(guān)系的,互相無法感知,上一次請求干了什么?這一次請求完全不知道,會(huì)話保持技術(shù)就是為了以一種第三方的設(shè)計(jì)實(shí)現(xiàn)http請求之間的聯(lián)系,讓請求之間能夠相互感知。
目前的兩大會(huì)話保持技術(shù):
-
cookie
-
session
cookie和session的區(qū)別,用一個(gè)例子解釋:
封閉式管理的學(xué)校,如何進(jìn)入校園?
-
方式1.學(xué)校準(zhǔn)備一本花名冊,進(jìn)門的時(shí)候挨個(gè)比對。
-
方式2.學(xué)生辦一張學(xué)生卡,持卡進(jìn)出。
3.2.cookie
客戶端技術(shù),即狀態(tài)(數(shù)據(jù))保存在客戶端,即學(xué)生卡進(jìn)入校園這一方式。
服務(wù)器向客戶端返回(數(shù)量無限制)cookie,一個(gè)cookie即一個(gè)鍵值對。
客戶端、服務(wù)器交互過程中cookie的載體為request和response。
public class DemoServlet extends HttpServlet {
? ?@Override
? ?protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
? ? ? ?Cookie[] cookies=request.getCookies();
? ? ? ?if(cookies!=null){
? ? ? ? ? ?for(Cookie cookie:cookies) {
? ? ? ? ? ? ? ?if("LastLoginTime".equals(cookie.getName())) {
? ? ? ? ? ? ? ? ? ?System.out.println("上次訪問時(shí)間:" + cookie.getValue());
? ? ? ? ? ? ? }
? ? ? ? ? }
? ? ? }else{
? ? ? ? ? ?System.out.println("這是第一次登錄!");
? ? ? }
? ? ? ?Cookie cookie=new Cookie("LastLoginTime",System.currentTimeMillis()+"");
? ? ? ?cookie.setMaxAge(60*60*24);//設(shè)置有效期為一天
? ? ? ?response.addCookie(cookie);
? }
}
3.3.session
服務(wù)器技術(shù),即狀態(tài)(數(shù)據(jù))保存在服務(wù)端,即花名冊進(jìn)入校園這一方式。和cookie一樣,在客戶端、服務(wù)器交互過程中session的載體也是request、response。
session的產(chǎn)生:
session并不會(huì)在客戶端訪問服務(wù)器的時(shí)候自動(dòng)創(chuàng)建,而是必須通過指定API來產(chǎn)生:
request.getSession()
session的銷毀:
-
session.invalidate()
-
前后兩次請求超出了session指定的生命周期時(shí)間。
除此之外,session不會(huì)被銷毀,之所以平時(shí)感覺到瀏覽器關(guān)閉session就會(huì)銷毀是因?yàn)殛P(guān)閉瀏覽器后再重新打開瀏覽器如果之前該瀏覽器在服務(wù)器上存在session的話,會(huì)重新創(chuàng)建一個(gè)session覆蓋老的session,所以體感上就會(huì)感覺關(guān)掉瀏覽器后session就被銷毀了。
session的使用:
由于整個(gè)瀏覽器共享session里面的數(shù)據(jù),所以session可以起到類似上下文對象共享數(shù)據(jù)的功能。
session的唯一身份標(biāo)識(shí)是sessionID,sessionID會(huì)自動(dòng)封裝成cookie返回。
這就是為什么,打開瀏覽器,http請求響應(yīng)里面都會(huì)有一個(gè)cookie存在的原因。
4.認(rèn)證授權(quán)
4.1.Token
token ,也叫“令牌”,是驗(yàn)證用戶身份的憑證。token的組成具有隨意性,能標(biāo)識(shí)用戶身份即可。
token的工作流程:
客戶端向服務(wù)器發(fā)送請求,服務(wù)器收到后生成token返回給客戶端,此后客戶端的任何鑒權(quán)都基于該token進(jìn)行。
4.2.JWT
JWT,Json web token,即一種基于json的通用token標(biāo)準(zhǔn),token本質(zhì)上具有任意性,JWT規(guī)范了token的格式。
JWT 規(guī)定token由三部分組成:
-
header
頭部,承載兩塊信息:
-
聲明類型,即聲明這是jwt
-
聲明加密算法,默認(rèn)使用 HMAC SHA256加密算法
-
-
payload
載荷,存放有效信息(數(shù)據(jù)信息)的地方。
-
signature
簽證,可以用于驗(yàn)證整個(gè)token的完整性以及是否被篡改,由三部分組成:
-
header(base64之后的)
-
payload(base64之后的)
-
secret私鑰
-
4.3.oauth
OAUTH,Open Authorization,開放授權(quán)協(xié)議,為用戶資源的授權(quán)提供了一個(gè)安全的、開放而又簡易的標(biāo)準(zhǔn)。目的是讓第三方對用戶的數(shù)據(jù)只有有限訪問權(quán),而無法觸及到用戶的核心信息。
例如,在第三方網(wǎng)站上使用微信或者QQ作為賬號(hào)進(jìn)行登錄,就是使用的oauth協(xié)議,只返回給第三方注入用戶名、頭像等信息,而不會(huì)返回給第三方秘密等核心數(shù)據(jù)。
想了解更多oauth的同學(xué),可以移步博主之前的另一篇文章:文章來源:http://www.zghlxwxcb.cn/news/detail-695094.html
詳解OAuth2.0__BugMan的博客-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-695094.html
到了這里,關(guān)于【web知識(shí)清單】你想要的都有:網(wǎng)絡(luò)、HTTP、會(huì)話保持、認(rèn)證授權(quán)......持續(xù)更新中的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!