1.TCP/IP協議族數據庫
分層:應用層HTTP/DNS/FTP。傳輸層TCP/UDP。網絡層IP/ARP。數據鏈路層(處理鏈接網絡的硬件部分)瀏覽器
TCP三次握手:發送端發送SYN,接收端發送SYN/ACK,發送端再發送ACK。緩存
HTTP通訊過程:客戶端輸入域名,DNS經過域名查找IP地址。HTTP協議生成針對目標WEB服務器的HTTP請求報文。TCP協議將HTTP請求報文分割成報文段,分別添加標記序號和端口號,把每段報文可靠的(三次握手)傳給對方。IP協議搜索對方的地址,增長做爲通訊目的地的MAC地址,一邊中轉一邊傳送。服務器端TCP協議將接收到的報文段按序重組成請求報文。HTTP協議對WEB服務器請求的內容進行處理。響應的內容也按相同方式傳給客戶端。安全
2.HTTP協議服務器
HTTP協議確定是先從客戶端開始創建通訊。對於一條通訊路線來講,服務器端和客戶端的角色是固定的。網絡
HTTP是無狀態協議。併發
HTTP能夠保持TCP鏈接狀態,在創建一次TCP鏈接後可進行屢次HTTP請求和響應。網站
HTTP管線化:下一次請求不須要等待上一次的響應完成就能夠進行。加密
Cookie進行狀態管理:服務器端在響應報文裏添加Set-Cookie首部字段,通知客戶端保存Cookie,下次客戶端往服務器發送請求時,客戶端在請求報文添加Cookie首部字段,服務器發現請求報文的Cookie後,檢查到底是哪個客戶端發送來的鏈接請求,而後對比服務器的記錄,最後獲得以前的狀態信息。spa
3.HTTP報文
報文分請求報文和響應報文。報文由報文首部+空行+報文主體構成。
請求報文首部:請求行,請求首部字段,通用首部字段,實體首部字段,其餘
響應報文首部:狀態行,響應首部字段,通用首部字段,實體首部字段,其餘
HTTP狀態碼:1XX信息性狀態碼,接受的請求正在處理。
2XX成功狀態碼,請求正常處理完畢。200,204(響應不返回資源)
3XX重定向狀態碼,須要進行附加操做完成請求。304(服務器資源未改變,可直接使用客戶端未過時的緩存)
4XX客戶端錯誤狀態碼,服務器沒法處理請求。403(不容許訪問該資源)404(服務器找不到請求資源)
5XX服務器錯誤狀態碼,服務器處理出錯。500(服務器內部出錯)503(服務器處於超負荷或者停機維護)
4.WEB服務器
代理:位於客戶端和服務器之間,進行轉發。做用:緩存,訪問控制,獲取訪問日誌。
網關:接收客戶端請求時,把本身看成源服務器處理請求。做用:可使網關與服務器通訊提供非HTTP協議服務。
隧道:對相隔很遠的客戶端和服務器進行中轉,保持雙方通訊鏈接。做用:保證安全通訊
緩存:代理服務器或者客戶端本地保存的資源副本。減小對源服務器的訪問,節省通訊流量和時間。在判斷緩存過時後,要向源服務器確認緩存的有效性。
5.HTTPS
HTTP的缺點:通訊不加密,可能被竊聽。
通訊方身份不驗證,可能遭遇假裝。
沒法證實報文完整性,可能被篡改。(中間人攻擊)
解決辦法:使用SSL(安全套接層)和TLS(安全傳輸協議)對通訊進行加密
使用證書查明通訊對方的身份
使用證書證實傳輸數據的完整。
HTTPS:HTTP+加密+認證+完整性保護。
SSL加密方式:共享密鑰加密(加密和解密用同一個密鑰),處理速度快,但密鑰傳遞過程不可靠。
公開密鑰加密(公開密鑰加密,私有密鑰解密),更安全,但處理速度更慢。
HTTPS使用公開密鑰加密方式安全交換稍後共享密鑰加密中要使用的密鑰,而後使用共享加密方式進行通訊。
使用SSL時,HTTPS的處理速度會變慢:SSL通訊要消耗網絡資源,同時對通訊進行處理,使得通訊時間延長。SSL作不少加密解密處理,消耗CPU和內存,致使處理速度變慢。
6.用戶身份驗證
BASIC認證:客戶端發送請求,服務器返回狀態碼401要求認證,客戶端發送帳號密碼。不安全
DIGEST認證:客戶端發送請求,服務器返回401要求認證,併發送質詢碼,客戶端發送質詢碼計算的響應碼。不能防止用戶假裝。
SSL客戶端認證:客戶端發送事先安裝的證書進行驗證,經過後領取證書的公開密鑰,開始HTTPS通訊
表單認證:經過輸入用戶ID和密碼等登陸信息發送至服務端進行驗證。
用戶將ID和密碼發送至服務端後,服務端進行身份驗證,將認證狀態和SessionID綁定後記錄在服務端,並同時在Cookie中返回SessionID給用戶端。客戶端接收到SessionID後做爲Cookie保存在本地,下次發送請求時,SessionID隨着Cookie發送給服務端,服務端能夠驗證接受的SessionID識別用戶和其驗證狀態。
7.基於HTTP的其餘協議
WebSocket:使用HTTP創建鏈接,以後使用專有協議進行通訊。
創建鏈接的時候發起方仍是客戶端,一旦鏈接確立,不管客戶端仍是服務端,均可以直接向對方發送報文。
特色:支持由服務器向客戶端推送數據,沒必要等待客戶端的請求。一旦創建鏈接,能夠保持鏈接狀態,減小開銷。
8.WEB攻擊技術
針對WEB應用的攻擊模式:主動攻擊,直接訪問WEB應用,傳入攻擊代碼。(SQL注入攻擊和OS命令注入攻擊)
被動攻擊,利用圈套策略執行攻擊代碼。(跨站腳本攻擊XSS和跨站點請求僞造CSRF)
XSS:在有安全漏洞的網站用戶的瀏覽器運行非法的HTML標籤或者JS腳本。通常在表單中添加特殊字段
SQL注入:針對WEB應用使用的數據庫經過運行非法的SQL語句。通常在URI的查詢字符串中添加特殊字符
HTTP首部注入攻擊(被動):在響應首部字段添加換行添加任意首部字段。
HTTP響應截斷攻擊:在響應首部添加兩個換行符,往報文主體添加內容,並註釋本來內容,達到僞造的目的。
CSRF:經過其餘網站獲取當前瀏覽器針對某一網站的Cookie中的會話ID,讓服務端誤覺得假冒網站就是當前已認證的用戶,進行一些非法操做。
Dos攻擊:集中利用訪問請求形成資源過載,使服務器中止。
DDos攻擊:利用多臺計算機發起Dos攻擊。