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