關於HTTP的理解

1.HTTP的概述。

HTTP(Hypertext Transfer Protocol)超文本傳輸協議,是一種分佈式,合作式,多媒體信息系統服務,面向應用層的協議,它基於傳輸層的TCP協議進行通信,是一種通用的,無狀態的協議。

2.功能

功能:在服務器與客戶機之間傳輸超文本文件

3.特點

特點:客戶/服務器模式,靈活(允許傳輸任意類型的數據對象),無狀態,簡單(規模小,速度快),通用

4.HTTP的消息

請求消息(客戶端到服務器)   請求行  可選區域  實體
響應消息(服務器響應客戶端) 狀態行  可選區域  實體

5.HTTP的重點

HTTP之URL(Universal Resource Locator)網頁地址
統一資源定位符格式:http://[username:password@]hostname[:port]/[path]
path指定資源的URI,爲空則表示請求缺省頁面,index.html

協議請求包含:請求行,消息報頭,請求正文
請求行:Method ==POST/GET/(HEAD/PUT/DELETE/TRACE/CONNEC/OPTIONS)
GET 請求獲取Request-URI所標識的資源
POST 在Request-URI所標識的資源後附加新的數據

6.在上述第五條HTTP的請求頭中第一行包含了,請求類型+請求的正文

HTTP會根據請求方式的不同,給予HTTP請求頭不同的格式

舉例:
GET方式
GET /form.html?reqname=admin&pwd=admin HTTP/1.1 \r\n

\r\n
POST方式
POST /regist.html HTTP/1.1 \r\n
HOST:www.guet.edu.cn \r\n

\r\n
user=admin&password=admin (註釋:此行及以下行爲post提交的數據)

7.HTTP協議的響應(不作爲重點)

HTTP協議的響應包含:狀態行,消息報頭,響應正文
狀態行:HTTP-Version Status-Code Reason-Phrase CRLF
HTTP-Version表示服務器HTTP協議的版本
Status-Code表示服務器發揮的響應狀態代碼
Reason-Phrase表示狀態代碼的文本描述
Status-Code由三位數字組成,第一個數字定義了響應的類別,且有五種可能取值:
  1xx:指示信息--表示請求已接收,繼續處理
  2xx:成功--表示請求已被成功接收、理解、接受
  3xx:重定向--要完成請求必須進行更進一步的操作
  4xx:客戶端錯誤--請求有語法錯誤或請求無法實現
  5xx:服務器端錯誤--服務器未能實現合法的請求
常見狀態代碼、狀態描述、說明:
  200 OK       客戶端請求成功
  400 Bad Request   客戶端請求有語法錯誤,不能被服務器所理解
  401 Unauthorized 請求未經授權,這個狀態代碼必須和WWW-Authenticate報
域一起使用 
  403 Forbidden 服務器收到請求,但是拒絕提供服務
  404 Not Found   請求資源不存在,請求了無效的資源或者輸入了錯誤的URL
  500 Internal Server Error 服務器發生不可預期的錯誤
  503 Server Unavailable   服務器當前不能處理客戶端的請求,一段時間後,可能恢復正常
響應正文
響應正文就是服務器返回的資源的內容,通常是html文件(也可以是其他文件):
<html><head></head><body></body></html>

8.HTTP的請求頭和響應頭。

請求頭舉例
GET / HTTP/1.1 (CRLF)
Host: www.baidu.com (CRLF) //請求時,該字段是必須字段
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.18) Gecko/2010020406RedHat/3.0.18-1.el5_4Firefox/3.0.18 (CRLF)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 (CRLF)
Accept-Language: en-us,en;q=0.5 (CRLF)
Accept-Encoding: gzip,deflate (CRLF)
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 (CRLF)
Keep-Alive: 300 (CRLF)
Connection: keep-alive (CRLF)
Cookie: BAIDUID=E1A7953F23B81D8C67AD403E84427BB6:FG=1; (CRLF)
USERID=1bd4c1e75500eccc317d802c140c (CRLF)
(CRLF)
響應頭舉例
HTTP/1.1 200 OK (CRLF)
Date: Tue, 28Jun201107:17:46GMT (CRLF)
Server: BWS/1.0 (CRLF)
Content-Length: 3520 (CRLF)
Content-Type: text/html;charset=gb2312 (CRLF)
Cache-Control: private (CRLF)
Expires: Tue, 28Jun201107:17:46GMT (CRLF)
Content-Encoding: gzip (CRLF)
Connection: Keep-Alive (CRLF)
(CRLF)

注意:HTTP的使用是在,用瀏覽器訪問服務器的時候用的,在信息傳輸過程中,用到了HTTP超文本傳輸協議

所以上面1-7是作爲理解第8條的基礎,而在開發服務器中,需要組合和拼接HTTP協議的請求頭以及響應頭,將所要傳輸的內容組合拼接到請求頭和響應頭中

這部分會在下一節中做詳細的代碼編輯。

9.這部分作爲額外的瞭解

高層協議有:文件傳輸協議FTP、電子郵件傳輸協議SMTP、域名系統服務DNS、網絡新聞傳輸協議NNTP和HTTP協議等
中介有三種:代理(Proxy)、

網關(Gateway)和

通道(Tunnel),一個代理根據URI的絕對格式來接受請求,
(例如:防火牆等)或者是中介不能識別消息的內容時,通道經常被使用。
代理(Proxy):一箇中間程序,它可以充當一個服務器,也可以充當一個客戶機,爲其它客戶機建立請求。請求是通過可能的翻譯在內部或經過傳遞到其它的服務器中。
一個代理在發送請求信息之前,必須解釋並且如果可能重寫它。代理經常作爲通過防火牆的客戶機端的門戶,代理還可以作爲一個幫助應用來通過協議處理沒有被用戶代理完成的請求。
網關(Gateway):一個作爲其它服務器中間媒介的服務器。與代理不同的是,網關接受請求就好象對被請求的資源來說它就是源服務器;發出請求的客戶機並沒有意識到它在同網關打交道。
網關經常作爲通過防火牆的服務器端的門戶,網關還可以作爲一個協議翻譯器以便存取那些存儲在非HTTP系統中的資源。
通道(Tunnel):是作爲兩個連接中繼的中介程序。一旦激活,通道便被認爲不屬於HTTP通訊,儘管通道可能是被一個HTTP請求初始化的。當被中繼的連接兩端關閉時,通道便消失。
當一個門戶(Portal)必須存在或中介(Intermediary)不能解釋中繼的通訊時通道被經常使用。

Http指紋識別工具Httprint,它通過運用統計學原理,組合模糊的邏輯學技術,能很有效的確定Http服務器的類型.
它可以被用來收集和分析不同Http服務器產生的簽名。

利用HTTP協議的特性進行拒絕服務攻擊的一些構思服務器端忙於處理攻擊者僞造的TCP連接請求而無暇理睬客戶的正常請求(畢竟客戶端的正常請求比率非常之小),

此時從正常客戶的角度看來,服務器失去響應,
這種情況我們稱作:服務器端受到了SYNFlood攻擊(SYN洪水攻擊)。而Smurf、TearDrop等是利用ICMP報文來Flood和IP碎片攻擊的。本文用“正常連接”的方法來產生拒絕服務攻擊。19端口在早期已經有人用來做Chargen攻擊了,Chargen_Denial_of_Service,但是!他們用的方法是在兩臺Chargen服務器之間產生UDP連接,讓服務器處理過多信息而DOWN掉,那麼,幹掉一臺WEB服務器的條件就必須有2個:

1.有Chargen服務

2.有HTTP服務方法:攻擊者僞造源IP給N臺Chargen發送連接請求(Connect),Chargen接收到連接後就會返回每秒72字節的字符流(實際上根據網絡實際情況,這個速度更快)給服務器。




HTTP協議ContentLenth限制漏洞導致拒絕服務攻擊
使用POST方法時,可以設置ContentLenth來定義需要傳送的數據長度
,例如:ContentLenth:999999999,在傳送完成前,內存不會釋放,攻擊者可以利用這個缺陷,
連續向WEB服務器發送垃圾數據直至WEB服務器內存耗盡。這種攻擊方法基本不會留下痕跡。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章