http協議概述

了解web及網絡基礎

TCP/IP的分層管理:1、應用層:決定了向用戶提供應用服務時通信的活動,該層包含的協議有:FTP(文件傳輸協議),DNS(域名系統)以及http;2、傳輸層:傳輸層對上層應用層,提供處于網絡連接中的兩臺計算機之間的數據傳輸,該層包含的協議有:TCP(傳輸控制協議)和UDP(用戶數據報協議);3、網絡層:網絡層用來處理在網絡上流動的數據包,該層規定了通過怎樣的路徑到達對方計算機,并把數據包傳送給對方,該層包含有IP協議;4、鏈路層:用來處理鏈接網絡的硬件部分。

如何理解TCP/IP的分層管理:鏈路層是實實在在的管道,網絡層負責管道鋪設方案,傳輸層負責將管道內要傳送的物資進行統一的打包,而應用層就是那些要被傳送的物資了。

TCP協議三次握手:1、目的:確保數據能到達目標;2、過程:發送端首先發送一個帶SYN標志的數據包給對方;接收端收到后,回傳一個帶有SYN/ACK標志的數據包以示傳達確認信息。最后發送端再回傳一個帶有ACK標志的數據包,代表握手結束。

一個請求發送的全過程:客戶端發送請求=>dns域名解析=>http協議生成請求http報文=>TCP協議,分割請求報文,生成數據包=>IP協議搜索對方地址,一邊中轉一邊傳送=>TCP協議報文重組=>http協議,對web服務器請求的內容進行處理=>服務器根據請求返回資源=>經過同樣的過程返回數據給客戶端。

簡單的http協議

請求報文的構成:

響應報文的構成:

理解無狀態的http:http自身不對請求和響應之間的通信狀態進行保存,協議對于發送過的請求或響應都不做持久化處理,無狀態-有狀態的轉化可以通過cookie實現

http/1.0和http/2.0支持的方法:

理解持久連接和管線化:持久連接可以實現一次連接處理多個請求,管線化可以實現并行處理多個請求。

http報文:1、主要構成部分:請求行,狀態行,請求首部,響應首部,通用首部,實體首部,報文主體;2、用于對內容進行編碼的頭部:gzip,compress,deflate(以上都常用于壓縮文件),identity(不進行編碼);3、返回多部分對象集合的頭部:multipart/form-data,multipart/byteranges;4、獲取部分范圍內容的請求頭部:range;5、用于內容協商的首部字段:Accept,Accept-Charset,Accept-Encoding,Accept-Language,Content-Language

http狀態碼

狀態碼類別:

200:表示從客戶端發來的請求在服務器被正常處理了;204:表示服務器已經成功處理請求,但返回的響應報文不含實體的主體部分;206:表示客戶端進行了范圍請求,服務器成功執行了這部分請求;301:永久重定向;302:臨時重定向;303:臨時重定向,并規定用get方法訪問資源;304:資源從緩存中獲取;307:臨時重定向;400:請求報文存在語法錯誤;401:用戶認證失敗;403:未獲得文件系統的授權或訪問權限出現問題;404:未找到資源;500:服務端在執行請求時發生錯誤;503:服務器暫時存在超負荷或停機狀態

與http協作的web服務器

代理:1、接受由客戶端發送的請求并轉發給服務器,同時也接受服務器返回的響應并轉發給客戶端;2、代理服務器的作用:利用緩存技術減少帶寬和流量,組織內部針對特定網站的訪問控制。網關:1、轉發其他服務器通信數據的服務器,接收從客戶端發過來的請求時,就像自己擁有資源的源服務器一樣對請求進行處理。隧道:建立起一條與其他服務器的通信線路,會使用ssl加密手段進行通信,目的是確保客戶端能與服務器進行安全的通信

http首部

通用首部:cache-control: public:表示其他用戶也可以利用緩存;cache-control:private:緩存服務器會對該特定用戶提供資源緩存的服務;cache-control:no-cache:客戶端將不會姐搜緩存過的響應;cache-control:no-store:比no-cache更高級的禁用緩存策略;cache-control:max-age:自請求發送起,資源的緩存有效期;connection:不再轉發的首部字段名:可控制不在轉達給代理的首部字段;connection:keep-alive:建立持久連接;Date:GMT時間:創建報文的日期和時間;Upagrade:協議名:用于檢測HTTP協議及其他協議是否可使用更高的版本進行通信。

請求首部:Accept:文件類型:通知服務器,用戶代理能后處理的媒體類型及媒體類型的相對優先級;Accept-Charset:字符集:用來通知服務器,用戶代理支持的字符集及字符集的 相對優先順序;Accept-Encoding:編碼類型:告知服務器用戶代理支持的內容編碼及內容編碼的優先級順序;Accrpt-Language;Authorization;Host;If-Match;If-Modified-Since;Max-Forwards;Range;Refer;User-Agent;

響應首部:Accept-Ranges:bytes/none;Etag;

實體首部:Content-Length;Content-Range;Content-Type;

https

http的缺憾:1、無法認證通信雙方的身份;2、本身沒有對通信內容進行加密的機制;3、無法建立安全的通信線路;4、無法驗證報文的完整性

如何解決:1、通過SSL建立安全的通信線路,并通過驗證證書的方式確認雙方的身份;2、通過MD5加密和SHA-1散列值的方式來保證報文的完整性;3、通過密鑰來對報文內容進行加密

ssl通信的建立過程:

用戶身份認證

BASIC認證:通過輸入密碼的方式來確認是否為用戶本人的認證方式;

DIGEST認證:客戶端通過由服務器發送的質詢碼產生唯一的響應碼,進行客戶端認證’

SSL雙因素認證:在ssl通信連接的保護下,進行BASIC和DIGEST認證;

cookie:保存用戶的認證狀態,以解決http的無狀態特性

基于http功能的追加協議

http的性能瓶頸:1、每次都要發送亢長重的首部;2、服務器有內容更新時不能主動向客戶端推送;3、報文內容沒有統一的壓縮方式

ajax:實現網頁局部更新以及javascript的異步操作

comet:實現服務器的主動推送

spdy協議:1、支持服務器主動推送;2、并發處理多個請求;3、支持請求首部的壓縮

websocket(全雙工雙向通信):1、支持客戶端向服務器端,以及服務器端向客戶端的主動推送;2、精簡的請求和響應首部

web的攻擊技術

跨站腳本攻擊:通過在url中輸入腳本,進而獲取文檔中的信息如cookie等,然后向攻擊者服務器發送這些信息;

sql注入攻擊:在進行數據庫操作時,有時會通過獲取表單中的數據,并將這些數據作為參數進行數據庫操作;只要攻擊者在表單輸入是輸入一些特殊的數據庫操作符,便可達到操作數據庫的目的;

http首部注入攻擊:在進行http請求時,有時會將表單中的數據作為首部參數進行請求操作;此時攻擊者只要在表單中輸入一些特殊的字符,便可操作http請求;

強制瀏覽:服務器上一些不進行公開的文件,會通過隱蔽文件url的方式進行訪問限制,此時攻擊者通過某些試錯的手段得到這些文件url,便可以訪問,造成一些保密信息的泄露;

會話劫持:攻擊者通過xss攻擊或其他方式得到用戶的會話id,便可以偽裝成用戶的身份;

跨站點請求偽造:用戶訪問某網站時已經處于登錄狀態,攻擊者此時誘惑用戶點擊某個鏈接便可以以用戶的身份進行一些特殊的操作。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容