HTTP是一個基于TCP/IP通信協議來傳遞數據,包括html文件、圖像、結果等,即是一個客戶端和服務器端請求和應答的標準。基本上用到的就是GET和POST,充其量再遇到個option請求。
(1)https有ca證書,http一般沒有;
(2)http是超文本傳輸協議,信息是明文傳輸。https則是具有安全性的ssl加密傳輸協;
(3)http默認80端口,https默認443端口。
(1)http無連接:限制每次連接只處理一個請求,服務端完成客戶端的請求后,即斷開連接。(傳輸速度快,減少不必要的連接,但也意味著每一次訪問都要建立一次連接,效率降低);
(2)http無狀態:對于事務處理沒有記憶能力。每一次請求都是獨立的,不記錄客戶端任何行為;
(3)客戶端/服務端模型:客戶端支持web瀏覽器或其他任何客戶端;
(4)簡單快速\靈活:可以傳輸任何類型的數據。
無狀態協議對于事務處理沒有記憶能力。缺少狀態意味著如果后續處理需要前面的信息。
狀態協議解決辦法:1、cookie 2、通過session會話保存。
http協議中,返回狀態碼302表示重定向。這種情況下,服務器返回的頭部信息中會包含一個Location字段,內容是重定向到的url。
請求報文包含三部分:請求行:包含請求方法、URI、HTTP版本信息;請求首部字段;請求內容實體。
響應報文包含三部分:狀態行:包含HTTP版本、狀態碼、狀態碼的原因短語;響應首部字段;響應內容實體。
GET:用于請求訪問已經被URI(統一資源標識符)識別的資源,可以通過URL傳參給服務器。
POST:用于傳輸信息給服務器,主要功能與GET方法類似,但一般推薦使用POST方式。
PUT: 傳輸文件,報文主體中包含文件內容,保存到對應URI位置。
HEAD: 獲得報文首部,與GET方法類似,只是不返回報文主體,一般用于驗證URI是否有效。
DELETE:刪除文件,與PUT方法相反,刪除對應URI位置的文件。
OPTIONS:查詢相應URI支持的HTTP方法。
TCP(Transmission Control Protocol,傳輸控制協議)是基于連接的協議,也就是說,在正式收發數據前,必須和對方建立可靠的連接。一個TCP連接必須要經過三次“對話”才能建立起來。
UDP(User Data Protocol,用戶數據報協議)是與TCP相對應的協議。它是面向非連接的協議,它不與對方建立連接,而是直接就把數據包發送過去,UDP適用于一次只傳送少量數據、對可靠性要求不高的應用環境。
HTTP協議有HTTP/1.0版本和HTTP/1.1版本。HTTP1.1默認保持長連接(HTTP persistent connection,也翻譯為持久連接),數據傳輸完成了保持TCP連接不斷開(不發RST包、不四次握手),等待在同域名下繼續用這個通道傳輸數據;相反的就是短連接。
在 HTTP/1.0 中,默認使用的是短連接。也就是說,瀏覽器和服務器每進行一次HTTP操作,就建立一次連接,任務結束就中斷連接。從HTTP/1.1起,默認使用的是長連接,用以保持連接特性。
CSRF(Cross-site request forgery)也被稱為 one-click attack或者 session riding,中文全稱是叫跨站請求偽造。一般來說,攻擊者通過偽造用戶的瀏覽器的請求,向訪問一個用戶自己曾經認證訪問過的網站發送出去,使目標網站接收并誤以為是用戶的真實操作而去執行命令。常用于盜取賬號、轉賬、發送虛假消息等。攻擊者利用網站對請求的驗證漏洞而實現這樣的攻擊行為,網站能夠確認請求來源于用戶的瀏覽器,卻不能驗證請求是否源于用戶的真實意愿下的操作行為。
XSS攻擊又稱CSS,全稱Cross Site Script (跨站腳本攻擊),其原理是攻擊者向有XSS漏洞的網站中輸入惡意的 HTML 代碼,當用戶瀏覽該網站時,這段 HTML 代碼會自動執行,從而達到攻擊的目的。XSS 攻擊類似于 SQL 注入攻擊,SQL注入攻擊中以SQL語句作為用戶輸入,從而達到查詢/修改/刪除數據的目的,而在xss攻擊中,通過插入惡意腳本,實現對用戶游覽器的控制,獲取用戶的一些信息。 XSS是 Web 程序中常見的漏洞,XSS 屬于被動式且用于客戶端的攻擊方式。
XSS防范的總體思路是:對輸入(和URL參數)進行過濾,對輸出進行編碼。
網絡的七層架構從下到上主要包括物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。
①物理層:物理層主要定義物理設備標準,主要作用是傳輸比特流,具體做法是在發送端將1、0轉化為電流強弱來進行傳輸,在到達目的地之后再將電流強弱轉化為1、0,也就是我們常說的模數轉換與數模轉換,這一層的數據叫做比特。
②數據鏈路層:數據鏈路層主要用于對數據包中的MAC地址進行解析和封裝。這一層的數據叫做幀,在這一層工作的設備是網卡、網橋、交換機。
③網絡層:網絡層主要用于對數據包中的IP地址進行封裝和解析,這一層的數據叫做數據包。在這一層工作的設備有路由器、交換機、防火墻等。
④傳輸層:傳輸層定義了傳輸數據的協議和端口號,主要用于數據的分段、傳輸和重組。在這一層工作的協議有TCP和UDP等。TCP是傳輸控制協議,傳輸效率低,可靠性強,用于傳輸對可靠性要求高,數據量大的數據,比如支付寶轉賬業務;UDP是用戶數據報協議,用于傳輸可靠性要求不高,數據量小的數據,例如抖音等視頻服務。
⑤會話層:會話層在傳輸層的基礎上建立連接和管理會話,具體包括登陸驗證、斷點續傳、數據粘包與分包等。在設備之間需要互相識別的可以是IP,也可以是MAC或者主機名。
⑥表示層:表示層主要對接收的數據進行解釋、加密、解密、壓縮、解壓縮等,即把計算機能夠識別的內容轉換成人能夠識別的內容(圖片、聲音、文字等)。
⑦應用層:基于網絡構建具體應用,例如FTP上傳文件下載服務、Telnet服務、HTTP服務、DNS服務、SNMP郵件服務等。
TCP/IP不是指TCP和IP這兩個協議的合稱,而是指因特網的整個TCP/IP協議簇。從協議分層模型方面來講,TCP/IP由4個層次組成:網絡接口層、網絡層、傳輸層和應用層。
①網絡接口層:定義了主機間網絡連通的協議,具體包括Echernet、FDDI、ATM等通信協議。
②網絡層:主要用于數據的傳輸、路由及地址的解析,以保障主機可以把數據發送給任何網絡上的目標。數據經過網絡傳輸,發送的順序和到達的順序可能發生變化。在網絡層使用IP協議和ARP地址解析協議。
③傳輸層:使源端和目的端的機器上的對等實體可以基于會話相互通信。在這一層定義了兩個端到端的協議TCP和UDP。TCP是面向連接的協議,提供可靠的報文傳輸和對上層應用的連接服務,除了基本的數據傳輸,它還有可靠性保證、流量控制、多路復用、優先權和安全性控制等功能。UDP是面向無連接的不可靠傳輸的協議,主要用于不需要TCP的排序和流量控制等功能的應用程序。
④應用層:負責具體應用層協議的定義,包括Telnet虛擬終端協議、FTP文件傳輸協議、SMTP簡單電子郵件傳輸協議、DNS域名解析服務、NNTP網上新聞傳輸協議和HTTP超文本傳輸協議等。
①服務端創建傳輸控制塊TCB,進入LISTEN狀態,準備接收客戶端的請求。客戶端同樣先創建TCB,然后當準備建立連接時向服務端發送連接請求報文(SYN=1,seq=x),然后進入SYN-SENT狀態。
②服務端收到后向客戶端發送確認報文(SYN=1,ACK=1,ack=x+1,seq=y),進入SYN-RCVD狀態。
③客戶端接收到確認后,再向服務端發送一個確認報文(ACK=1,ack=y+1,seq=x+1),然后進入ESTABLISHED狀態,服務端接收后也進入ESTABLISHED狀態。
④不是兩次的原因是為了避免無效的連接請求突然發送到服務端,而此時客戶端已關閉,服務端誤以為客戶端將要發送數據會白白浪費資源。
⑤不是四次的原因是將服務端的SYN和ACK報文拆分成兩次發送和一次的效果是相同的,沒有意義。
①當客戶端準備關閉連接時,向服務端發送連接終止報文(FIN=1,seq=u),進入FIN-WAIT-1狀態。
②服務端接收后向客戶端發送確認報文(ACK=1,ack=u+1,seq=v),進入CLOSE-WAIT狀態,客戶端收到后進入FIN-WAIT-2狀態,此時TCP連接處于半關閉狀態。
③當服務端也發送完全部數據準備斷開連接時,向客戶發送連接終止報文(FIN=1,ACK=1,ack=u+1,seq=w),進入LAST-ACK狀態。
④客戶端接收到該報文后,發送一個確認報文(ACK=w+1,ack=1,seq=u+1),進入TIME-WAIT狀態,然后等待2MSL時間后關閉。服務端收到后關閉,時間將略早于客戶端。
⑤不是三次的原因第一是為了保證客戶端發送的最后一個報文可以到達服務端,如果該報文丟失那么服務端會超時重傳之前的FIN+ACK報文,客戶端可以在2MSL內收到,第二是防止已失效的報文發送到客戶端,在2MSL后客戶端在本連接時間內發出的所有報文都將從網絡中消失。