http(hypertext transfer protocol):是網際網路上應用最為廣泛的一種網路協議,是乙個客戶端和伺服器端請求和應答的標準(tcp),用於從www伺服器傳輸超文字到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網路傳輸減少。
https (基於安全套接字層的超文字傳輸協議 或者是 http over ssl) 是乙個 netscape 開發的 web 協議。
你也可以說:https = http + ssl
https 在 http 應用層的基礎上使用安全套接字層作為子層。
https協議的主要作用可以分為兩種:一種是建立乙個資訊保安通道,來保證資料傳輸的安全;另一種就是確認**的真實性。
超文字傳輸協議 (http) 是乙個用來通過網際網路傳輸和接收資訊的協議。http 使用請求/響應的過程,因此資訊可在伺服器間快速、輕鬆而且精確的進行傳輸。當你訪問 web 頁面的時候你就是在使用 http 協議,但 http 是不安全的,可以輕鬆對竊聽你跟 web 伺服器之間的資料傳輸。在很多情況下,客戶和伺服器之間傳輸的是敏感歇息,需要防止未經授權的訪問。為了滿足這個要求,網景公司(netscape)推出了https,也就是基於安全套接字層的 http 協議。
http協議以明文方式傳送內容,不提供任何方式的資料加密,如果攻擊者擷取了web瀏覽器和**伺服器之間的傳輸報文,就可以直接讀懂其中的資訊,所以安全性是很低的。簡單的說,http是http協議執行在tcp之上。所有傳輸的內容都是明文,客戶端和伺服器端都無法驗證對方的身份。因此,http協議不適合傳輸一些敏感資訊,比如:信用卡號、密碼等支付資訊。
為了解決http協議的這一缺陷,需要使用另一種協議:安全套接字層超文字傳輸協議https,為了資料傳輸的安全,https在http的基礎上加入了ssl協議,ssl依靠證書來驗證伺服器的身份,並為瀏覽器和伺服器之間的通訊加密。對比http,https是http執行在ssl/tls之上,ssl/tls執行在tcp之上。所有傳輸的內容都經過加密,加密採用對稱加密,但對稱加密的金鑰用伺服器方的證書進行了非對稱加密。此外客戶端可以驗證伺服器端的身份,如果配置了客戶端驗證,伺服器方也可以驗證客戶端的身份。
http 的 url 以 http:// 開頭,而 https 的 url 以 https:// 開頭
http 是不安全的,而 https 是安全的
http 標準埠是 80 ,而 https 的標準埠是 443
在 osi 網路模型中,http 工作於應用層,而 https 工作在傳輸層
http 無需加密,而 https 對傳輸的資料進行加密
http 無需證書,而 https 需要認證證書
http 是超文字傳輸協議,資訊是明文傳輸,而 https 協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。
使用 https 連線時,伺服器要求有公鑰和簽名的證書。
當使用 https 連線,伺服器響應初始連線,並提供它所支援的加密方法。作為回應,客戶端選擇乙個連線方法,並且客戶端和伺服器端交換證書驗證彼此身份。完成之後,在確保使用相同金鑰的情況下傳輸加密資訊,然後關閉連線。為了提供 https 連線支援,伺服器必須有乙個公鑰證書,該證書包含經過證書機構認證的金鑰資訊,大部分證書都是通過第三方機構授權的,以保證證書是安全的。
換句話說,https 跟 http 一樣,只不過增加了 ssl。
http 包含如下動作:
瀏覽器開啟乙個 tcp 連線
瀏覽器傳送 http 請求到伺服器端
伺服器傳送 http 回應資訊到瀏覽器
tcp 連線關閉
ssl 包含如下動作:
驗證伺服器端
允許客戶端和伺服器端選擇加密演算法和密碼,確保雙方都支援
驗證客戶端(可選)
使用公鑰加密技術來生成共享加密資料
建立乙個加密的 ssl 連線
基於該 ssl 連線傳遞 http 請求
什麼時候該使用 https?
銀行**、支付閘道器、購物**、登入頁、電子郵件以及一些企業部門的**應該使用 https,例如:
paypal:
google adsense:
如果某個**要求你填寫信用卡資訊,首先你要檢查該網頁是否使用 https 加密連線,如果沒有,那麼請不要輸入任何敏感資訊如信用卡號。
多數瀏覽器在收到乙個無效證書的時候都會顯示警告資訊,而一些老的瀏覽器會彈出對話方塊讓使用者選擇是否繼續瀏覽。新的瀏覽器一般在整個視窗顯示橫幅的警告資訊,同時在位址列上顯示該**的安全資訊。如果**中包含加密和非加密的混合內容,多數瀏覽器會提示警告資訊。
http url (url是一種特殊型別的uri,包含了用於查詢某個資源的足夠的資訊)的格式如下:
http表示要通過http協議來定位網路資源;host表示合法的internet主機網域名稱或者ip位址;port指定乙個埠號,為空則使用預設埠80;abs_path指定請求資源的uri;如果url中沒有給出abs_path,那麼當它作為請求uri時,必須以「/」的形式給出,通常這個工作瀏覽器自動幫我們完成。
例如:
1、輸入:www.aaa.com.cn 瀏覽器自動轉換成:
乙個http請求報文由請求行(request line)、請求頭部(header)、空行和請求資料4個部分組成,下圖給出了請求報文的一般格式。
http/1.1 定義的請求方法有8種:get、post、put、delete、patch、head、options、trace。
最常的兩種get和post,如果是restful介面的話一般會用到get、post、delete、put。
get 請求獲取request-uri所標識的資源
post 在request-uri所標識的資源後附加新的資料
head 請求獲取由request-uri所標識的資源的響應訊息報頭
put 請求伺服器儲存乙個資源,並用request-uri作為其標識
delete 請求伺服器刪除request-uri所標識的資源
trace 請求伺服器回送收到的請求資訊,主要用於測試或診斷
connect 保留將來使用
options 請求查詢伺服器的效能,或者查詢與資源相關的選項和需求
url:統一資源定位符,是一種自願位置的抽象唯一識別方法。
組成:《協議》://《主機》:《埠》/《路徑》
埠和路徑有時可以省略(http預設埠號是80)
請求頭部為請求報文新增了一些附加資訊,由「名/值」對組成,每行一對,名和值之間使用冒號分隔。
常見請求頭如下:
請求頭部的最後會有乙個空行,表示請求頭部結束,接下來為請求資料,這一行非常重要,必不可少。
協議版本的格式為:http/主版本號.次版本號,常用的有http/1.0和http/1.1
請求頭部的最後會有乙個空行,表示請求頭部結束,接下來為請求資料,這一行非常重要,必不可少。
可選部分,比如get請求就沒有請求資料。(因為它是寫在url中的)
下面是乙個post方法的請求報文:
post /index.php http/1.1 請求行
host: localhost
user-agent: mozilla/5.0 (windows nt 5.1; rv:10.0
.2) gecko/20100101 firefox/10.0
.2 請求頭
1234 請求資料
HTTPS和HTTP的區別
https secure hypertext transfer protocol 安全超文字傳輸協議 它是乙個安全通訊通道,它基於http開發,用於在客戶計算機和伺服器之間交換資訊。它使用安全套接字層 ssl 進行資訊交換,簡單來說它是http的安全版。它是由netscape開發並內置於其瀏覽器中,...
HTTPS和HTTP的區別
https secure hypertext transfer protocol 安全超文字傳輸協議 它是乙個安全通訊通道,它基於http開發,用於在客戶計算機和伺服器之間交換資訊。它使用安全套接字層 ssl 進行資訊交換,簡單來說它是http的安全版。它是由netscape開發並內置於其瀏覽器中,...
http和https的區別
在url前加https 字首表明是用ssl加密的。你的電腦與伺服器之間收發的資訊傳輸將更加安全。web伺服器啟用ssl需要獲得乙個伺服器證書並將該證書與要使用ssl的伺服器繫結。http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。http的連線很簡單,是無狀態的...