图解http
一、了解web及網(wǎng)絡(luò)基礎(chǔ)
1.網(wǎng)絡(luò)基礎(chǔ)TCP/IP
通常使用的網(wǎng)絡(luò)包括互聯(lián)網(wǎng)是在TCP/IP協(xié)議族的基礎(chǔ)上運(yùn)作的,HTTP是屬于它內(nèi)部的一個子集,
不同的硬件,操作系統(tǒng)之間的通信需要一種規(guī)則,這種規(guī)則稱為協(xié)議(protocal);
2.TCP/IP的分層管理
TCP/IP分為四層:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層
應(yīng)用層:決定了向用戶提供應(yīng)用服務(wù)時通信的活動;http協(xié)議處于該層
傳輸層:提供處于網(wǎng)絡(luò)連接中的兩臺計算機(jī)之間的數(shù)據(jù)傳輸(TCP位于該層)
網(wǎng)絡(luò)層: 處理在網(wǎng)絡(luò)上流動的數(shù)據(jù)包,數(shù)據(jù)包時網(wǎng)絡(luò)傳輸?shù)淖钚?shù)據(jù)單位(IP)
鏈路層:用來處理連接網(wǎng)絡(luò)的硬件部分
利用TCP/IP協(xié)議族進(jìn)行通信時,會通過分層順序與對方進(jìn)行通信,發(fā)送端從應(yīng)用層往下走,接收端從鏈路層往上走
3.一次完整的http請求過程
二、簡單的HTTP協(xié)議
請求報文組成:請求方法、請求URI、協(xié)議版本、可選的請求首部字段、內(nèi)容實體
響應(yīng)報文組成:協(xié)議版本、狀態(tài)碼、原因短語、響應(yīng)首部字段、實體主體
三、HTTP狀態(tài)碼
1XX: 接收的請求正在處理
2XX: 請求正常處理完畢
3XX: 重定向狀態(tài)碼
4XX: 客戶端錯誤
5XX: 服務(wù)器錯誤
常見狀態(tài)碼:
200: 請求成功返回內(nèi)容
204: 請求成功無內(nèi)容返回
206: 范圍請求
301: 永久性重定向
302: 臨時性重定向(會存在網(wǎng)址劫持的問題)
303: 臨時性重定向,但明確表示客戶端應(yīng)采用GET方法獲取資源
304: 緩存
307:臨時性重定向,會遵照瀏覽器標(biāo)準(zhǔn),不會從POST變成GET
400: 客戶端語法錯誤
401:請求需要通過HTTP認(rèn)證
403: 未獲得訪問權(quán)限
404: 服務(wù)器上無法找到請求的資源
500: 服務(wù)器端執(zhí)行請求時發(fā)生錯誤
503: 服務(wù)器暫時處于超負(fù)載或正在停機(jī)維護(hù)
四、HTTP首部
HTTP報文包括報文首部、空行、主體部分
請求報文首部:請求行,請求首部字段,通用首部字段,實體首部字段,其他
響應(yīng)報文首部: 狀態(tài)行,響應(yīng)首部字段,通用首部字段,實體首部字段,其他
五、確保安全的HTTPS
HTTP的缺點(diǎn)
1.通信使用明文(不加密),內(nèi)容可能會被竊聽; 通過加密技術(shù)來解決
通信的加密:HTTP協(xié)議中沒有加密機(jī)制,通過和SSL或TLS組合使用,建立安全通信線路,加密HTTP的通信內(nèi)容;
內(nèi)容的加密:客戶端對HTTP報文進(jìn)行加密處理后再發(fā)送請求
2.不驗證通信方的身份,有可能遭遇偽裝;
使用SSL不僅提供加密處理,還使用了證書的手段確定通信方
3.無法證明報文的完整性,有可能被篡改
通過MD5,PGP簽名驗證
HTTP+加密+認(rèn)證+完整性保護(hù)=HTTPS
HTTPS:是添加了加密及認(rèn)證機(jī)制的HTTP;HTTP+SSL
SSL(安全套接層):是為網(wǎng)絡(luò)通信提供安全及完整性的一種安全協(xié)議
常見的加密方法:
共享秘鑰加密: 加密和解密同用一個密鑰的方式;
優(yōu)缺點(diǎn):密鑰有可能被竊聽的風(fēng)險,處理速度較快
使用兩把密鑰的公開秘鑰加密: 發(fā)送密文的一方使用對方的公開秘鑰加密,對方收到被加密的信息后,使用自己的私有秘鑰進(jìn)行解密
優(yōu)缺點(diǎn): 秘鑰不會被竊聽,但處理速度要慢
HTTPS采用混合加密機(jī)制
HTTPS存在一些問題:當(dāng)使用SSL時,處理速度變慢;
SSL必須進(jìn)行加密處理,在服務(wù)器和客戶端都需要進(jìn)行加密和解密的運(yùn)算處理,會更多地消耗服務(wù)器和客戶端的硬件資源,導(dǎo)致負(fù)載增強(qiáng)
需要購買證書耗費(fèi)財力
六、webSocket
是什么:webSocket是一個html5的一個新特性,目的是為了在瀏覽器和服務(wù)器之間建立一個雙向通信的通道,服務(wù)器可以在任意時刻給瀏覽器發(fā)送消息。
與傳統(tǒng)http的不同:http是一個請求-響應(yīng)協(xié)議,必須由客戶端發(fā)起請求,服務(wù)器才能發(fā)送數(shù)據(jù)給瀏覽器
請求格式如下:
GET ws://localhost:3000/ws/chat HTTP/1.1
Host: localhost
Upgrade: websocket //協(xié)議升級
Connection: Upgrade
Origin: http://localhost:3000
Sec-WebSocket-Key: client-random-string //是用于標(biāo)識這個連接,并非用于加密數(shù)據(jù);
Sec-WebSocket-Version: 13
創(chuàng)建 WebSocket 對象:
var Socket = new WebSocket(url, [protocol] );
webSocket事件:
Socket.onopen 連接建立時觸發(fā)
Socket.onmessage 客戶端接收服務(wù)端數(shù)據(jù)時觸發(fā)
Socket.onerror 通信發(fā)生錯誤時觸發(fā)
Socket.onclose 連接關(guān)閉時觸發(fā)
webSocket方法:
Socket.send() 使用連接發(fā)送數(shù)據(jù)
Socket.close() 關(guān)閉連接
七、常見的攻擊及加密方式
xss(跨站腳本攻擊):在網(wǎng)站內(nèi)嵌入惡意腳本,竊取用戶的cookie或者用戶信息
攻擊方式:在提交表單時攻擊或者uri參數(shù)傳遞時攻擊
CSRF(跨站請求偽造):攻擊者偽裝成已完成認(rèn)證的用戶向第三方平臺發(fā)送惡意請求
解決方案:設(shè)置cookie為httpOnly,驗證token
SQL注入攻擊:通過非法的sql指令來操作數(shù)據(jù)庫
解決方案:重要信息加密,md5
DDOS攻擊:黑客通過程序控制大量的計算機(jī),然后通過這個計算機(jī)群在同一個時間,發(fā)送大量的請求到目標(biāo)服務(wù)器,從而達(dá)到服務(wù)器處理不過來,請求超時的情況
總結(jié)
- 上一篇: 天杞补肾胶囊的功效作用 效果怎么样?
- 下一篇: 芜湖火车站和高铁站在一起吗