標籤:申請認證 type 訪問 src 開啟 80連接埠 data- 基礎上 ip 協議
協議
協議是通訊電腦雙方必須共同遵從的一組約定。如怎麼樣建立串連、怎麼樣互相識別等。只有遵守這個約定,電腦之間才能相互連信交流。它的三要素是:文法、語義、時序。
簡單來說,協議就是 通訊雙方/多方都遵從共同的一個規範。
協議的一些特點:
1) 協議中的每個人都必須瞭解協議,並且預Crowdsourced Security Testing道所要完成的所有的步驟。
2) 協議中的每個人都必須同意並遵循它。
3) 協議必須是清楚的,每一步必須明確定義,並且不會引起誤解。
HTTP是一個應用程式層協議,由請求和響應構成,是一個標準的用戶端伺服器模型。HTTP是一個無狀態的協議。
在Internet中所有的傳輸都是通過TCP/IP進行的。HTTP協議作為TCP/IP模型中應用程式層的協議也不例外。HTTP協議通常承載於TCP協議之上,有時也承載於TLS或SSL協議層之上,這個時候,就成了我們常說的HTTPS。如所示:
HTTP/HTTPS協議簡介
HTTP協議:超文字傳輸通訊協定 (HTTP)(HyperText Transfer Protocol)是互連網上應用最為廣泛的一種網路通訊協定。主要被用於在Web瀏覽器和網站伺服器之間傳遞資訊。 HTTP 是基於 TCP/IP 協議的應用程式層協議。預設使用80連接埠。最新版本是HTTP 2.0,目前是用最廣泛的是HTTP 1.1。
HTTPS協議:簡單來說,可以理解為安全版的HTTP協議,基於TCP/IP協議和SSL/TLS協議之上的應用程式層協議。預設連接埠443。
HTTP協議和HTTPS協議的區別
HTTP協議以明文方式發送內容,不提供任何方式的資料加密,如果攻擊者截取了Web瀏覽器和網站伺服器之間的傳輸報文,就可以直接讀懂其中的資訊,因此HTTP協議不適合傳輸一些敏感資訊,比如密碼等。
為瞭解決HTTP協議的這一缺陷,需要使用另一種協議:安全通訊端層超文字傳輸通訊協定 (HTTP)HTTPS。為了資料轉送的安全,HTTPS在HTTP的基礎上加入了SSL協議,SSL依靠認證來驗證伺服器的身份,並為瀏覽器和伺服器之間的通訊加密。
HTTPS和HTTP的區別主要為以下四點:
- https協議需要到ca申請認證,一般免費認證很少,需要交費。
- http是超文字傳輸通訊協定 (HTTP),資訊是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。
- http和https使用的是完全不同的串連方式,用的連接埠也不一樣,前者是80,後者是443。
- http的串連很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路通訊協定,比http協議安全。
HTTP協議工作流程
- 用戶端和伺服器之間建立一條串連
- 串連建立後,用戶端向伺服器發起一個請求(request)
- 伺服器收到一個請求後,給用戶端一個響應(應答,response)
- 用戶端收到響應後做進一步處理
HTTP是基於傳輸層的TCP協議,而TCP是一個端到端的連線導向的協議。所謂的端到端可以理解為進程到進程之間的通訊。所以HTTP在開始傳輸之前,首先需要建立TCP串連,而TCP串連的過程需要所謂的“三向交握”。所示TCP串連的三向交握。
在TCP三向交握之後,建立了TCP串連,此時HTTP就可以進行傳輸了。一個重要的概念是連線導向,既HTTP在傳輸完成之間並不斷開TCP串連。在HTTP1.1中(通過Connection頭設定)這是預設行為。
HTTP協議主要特點:無狀態
HTTP是一個連線導向的無狀態協議。
無狀態:同一個用戶端的這次請求和上次請求是沒有對應關係,對http伺服器來說,它並不知道這兩個請求來自同一個用戶端。這意味著,每一個請求的是獨立的,任何兩個請求之間無任何記憶關係。如果服務端處理一個請求需要前面的資訊,則該資訊必須重傳。這樣做的話,在服務端處理不需要先前資訊的請求時,它的應答會比較快。
除了上面這個特點,還有幾個其他小特點:
- 支援客戶/伺服器模式。支援基本認證和安全認證。
- 簡單快速:客戶向伺服器請求服務時,只需傳送要求方法和路徑。要求方法常用的有GET、HEAD、POST。每種方法規定了客戶與伺服器聯絡的類型不同。由於HTTP協議簡單,使得HTTP伺服器的程式規模小,因而通訊速度很快。
- 靈活:HTTP允許傳輸任意類型的資料對象。正在傳輸的類型由Content-Type加以標記。
- 在HTTP/1.1之前,使用非持續串連,用戶端(瀏覽器)和伺服器每次串連只處理一個請求。伺服器處理完用戶端的請求,對用戶端做出應答後,即中斷連線。HTTP/1.1開始,預設都開啟了Keep-Alive,保持串連特性,簡單地說,當一個網頁開啟完成後,用戶端和伺服器之間用於傳輸HTTP資料的TCP串連不會關閉,如果用戶端再次訪問這個伺服器上的網頁,會繼續使用這一條已經建立的串連。Keep-Alive不會永久保持串連,它有一個保持時間,可以在不同的伺服器軟體(如Apache)中設定這個時間。
要求方法
HTTP/1.1協議中共定義了八種方法(有時也叫“動作”)來表明Request-URI指定的資源的不同操作方式:
OPTIONS - 返回伺服器針對特定資源所支援的HTTP要求方法。也可以利用向Web伺服器發送‘*‘的請求來測試伺服器的功能性。
HEAD- 向伺服器索要與GET請求相一致的響應,只不過響應體將不會被返回。這一方法可以在不必傳輸整個響應內容的情況下,就可以擷取包含在響應訊息頭中的元資訊。該方法常用於測試超連結的有效性,是否可以訪問,以及最近是否更新。
GET - 向特定的資源發出請求。注意:GET方法不應當被用於產生“副作用”的操作中,例如在web app.中。其中一個原因是GET可能會被網路蜘蛛等隨意訪問。
POST - 向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案)。資料被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。
PUT - 向指定資源位置上傳其最新內容。
DELETE - 請求伺服器刪除Request-URI所標識的資源。
TRACE- 回顯伺服器收到的請求,主要用於測試或診斷。
CONNECT - HTTP/1.1協議中預留給能夠將串連改為管道方式的Proxy 伺服器。
PATCH - 用來將局部修改應用於某一資源,添加於規範RFC5789。
方法名稱是區分大小寫。當某個請求所針對的資源不支援對應的要求方法的時候,伺服器應當返回狀態代碼405(Method Not Allowed);當伺服器不認識或者不支援對應的要求方法的時候,應當返回狀態代碼501(Not Implemented)。
HTTP伺服器至少應該實現GET和HEAD方法,其他方法都是可選的。此外,除了上述方法,特定的HTTP伺服器還能夠擴充自訂的方法。
GET和POST的區別:
1、GET提交的資料會放在URL之後,以?分割URL和傳輸資料,參數之間以&相連,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的資料放在HTTP包的Body中。
2、GET提交的資料大小有限制,最多隻能有1024位元組(因為瀏覽器對URL的長度有限制),而POST方法提交的資料沒有限制。
3、GET方式需要使用Request.QueryString來取得變數的值,而POST方式通過Request.Form來擷取變數的值。
4、GET方式提交資料,會帶來安全問題,比如一個登入頁面,通過GET方式提交資料時,使用者名稱和密碼將出現在URL上,如果頁面可以被緩衝或者其他人可以訪問這台機器,就可以從記錄獲得該使用者的帳號和密碼。
HTTP協議簡單介紹