http協議各個版本的區別

HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是因特網上應用最爲廣泛的一種網絡傳輸協議,所有的WWW文件都必須遵守這個標準。
HTTP是一個基於TCP/IP通信協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)。
http:是應用層,基於TCP/IP(即傳輸層和網絡層)

HTTP版本的演進:
1、HTTP/0.9 – 單行協議:HTTP/0.9 極其簡單:請求由單行指令構成,以唯一可用方法GET開頭,其後跟目標資源的路徑(一旦連接到服務器,協議、服務器、端口號這些都不是必須的)。例如:GET /mypage.html。

2、HTTP/1.0 – 構建可擴展性:
(1)協議版本信息:協議版本信息現在會隨着每個請求發送(HTTP/1.0被追加到了GET行)。
(2)狀態碼:狀態碼會在響應開始時發送,使瀏覽器能瞭解請求執行成功或失敗,並相應調整行爲(如更新或使用本地緩存)。
(3)HTTP頭:引入了HTTP頭的概念,無論是對於請求還是響應,允許傳輸元數據,使協議變得非常靈活,更具擴展性。
(4)Content-Type:在新HTTP頭的幫助下,具備了傳輸除純文本HTML文件以外其他類型文檔的能力(感謝Content-Type頭)。
例如:
GET /mypage.html HTTP/1.0 User-Agent: NCSA_Mosaic/2.0 (Windows 3.1) 200 OK Date: Tue, 15 Nov 1994 08:12:31 GMT Server: CERN/3.0 libwww/2.17 Content-Type: text/html
HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。

3、HTTP/1.1 – 標準化的協議
HTTP1.1 新增了六種請求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
(1)持久鏈接,連接可以複用,節省了多次打開TCP連接加載網頁文檔資源的時間。
(2)增加流水線操作,允許在第一個應答被完全發送之前就發送第二個請求,以降低通信延遲。
(3)支持響應分塊。
(4)引入額外的緩存控制機制。
(5)引入內容協商機制,包括語言,編碼,類型等,並允許客戶端和服務器之間約定以最合適的內容進行交換。
例子:
GET /en-US/docs/Glossary/Simple_header HTTP/1.1 Host: developer.mozilla.org User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Referer: https://developer.mozilla.org/en-US/docs/Glossary/Simple_header 200 OK Connection: Keep-Alive Content-Encoding: gzip Content-Type: text/html; charset=utf-8 Date: Wed, 20 Jul 2016 10:55:30 GMT Etag: "547fa7e369ef56031dd3bff2ace9fc0832eb251a" Keep-Alive: timeout=5, max=1000 Last-Modified: Tue, 19 Jul 2016 00:59:33 GMT Server: Apache Transfer-Encoding: chunked Vary: Cookie, Accept-Encoding

4、HTTP 2.0
(1)多路複用 (Multiplexing):多路複用允許同時通過單一的 HTTP/2 連接發起多重的請求-響應消息。
(2)二進制分幀;
(3)首部壓縮(Header Compression):在客戶端和服務端之間使用首部表來跟蹤和存儲之前發送的鍵值對,如果首部沒有改變或只改變了少部分,就在原來的首部表裏修改或者追加,首部表在HTTP2.0的鏈接存續期內始終存在,減少每次通訊的數據量,對性能有提升。
(4)服務端推送(Server Push):一個請求多個響應,同時客戶端可以拒絕推送,將推送的數量限制爲0即可,推送的時候先推送頭部,如果客戶端同意纔會推送數據。
(5)流量控制
(6)請求優先級

HTTP content-type
Content-Type,內容類型,一般是指網頁中存在的Content-Type,用於定義網絡文件的類型和網頁的編碼,決定瀏覽器將以什麼形式、什麼編碼讀取這個文件,這就是經常看到一些Asp網頁點擊的結果卻是下載到的一個文件或一張圖片的原因。

TCP三次握手四次揮手
TCP三次握手

  1. 連接開始時,連接建立方(Client)發送SYN包,幷包含了自己的初始序號a;
  2. 連接接受方(Server)收到SYN包以後會回覆一個SYN包,其中包含了對上一個a包的迴應信息ACK,迴應的序號爲下一個希望收到包的序號,即a+1,然後還包含了自己的初始序號b;
  3. 連接建立方(Client)收到迴應的SYN包以後,回覆一個ACK包做響應,其中包含了下一個希望收到包的序號即b+1。

TCP終止連接的四次揮手過程如下:
4. 首先進行關閉的一方(即發送第一個FIN)將執行主動關閉,而另一方(收到這個FIN)執行被動關閉。
5. 當服務器收到這個FIN,它發回一個ACK,確認序號爲收到的序號加1。和SYN一樣,一個FIN將佔用一個序號。
6. 同時TCP服務器還向應用程序(即丟棄服務器)傳送一個文件結束符。接着這個服務器程序就關閉它的連接,導致它的TCP端發送一個FIN。
7. 客戶必鬚髮回一個確認,並將確認序號設置爲收到序號加1。

爲什麼揮手比握手多一次?因爲要等待資源傳輸完畢纔開一斷開連接

網絡分層裏七層模型
應用層:應用層、表示層、會話層(從上往下)( HTTP、FTP、SMTP、DNS )
傳輸層( TCP 和 UDP )
網絡層( IP )
物理和數據鏈路層(以太網)
物理層:通過媒介傳輸比特,確定機械及電氣規範(比特Bit)
數據鏈路層:將比特組裝成幀和點到點的傳遞(幀Frame)
網絡層:負責數據包從源到宿的傳遞和網際互連(包PackeT)
傳輸層:提供端到端的可靠報文傳遞和錯誤恢復(段Segment)
會話層:建立、管理和終止會話(會話協議數據單元SPDU)
表示層:對數據進行翻譯、加密和壓縮(表示協議數據單元PPDU)
應用層:允許訪問OSI環境的手段(應用協議數據單元APDU)

協議
ICMP協議 : 因特網控制報文協議。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息。
TFTP協議 : 是TCP/IP協議族中的一個用來在客戶機與服務器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。
HTTP協議 : 超文本傳輸協議,是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分佈式超媒體信息系統。
DHCP協議 : 動態主機配置協議,是一種讓系統得以連接到網絡上,並獲取所需要的配置參數手段。

https:超文本傳輸安全協議
就是在http下加入了SSL層,這個系統是由網景公司(Netscape)研發的,https是443端口,而http是80端口
HTTP 用於安全傳輸節:HTTP在基本的TCP/IP協議棧上發送信息,在此基礎上創建了一個額外的加密傳輸層:SSL 。
HTTPS和HTTP的區別主要爲以下四點:
一、https協議需要到ca申請證書,一般免費證書很少,需要交費。
二、http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。
三、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。
四、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。

SSL協議提供的服務主要有哪些
1)認證用戶和服務器,確保數據發送到正確的客戶機和服務器
2)加密數據以防止數據中途被竊取
3)維護數據的完整性,確保數據在傳輸過程中不被改變。
SSL協議的工作流程
服務器認證階段:
1)客戶端向服務器發送一個開始信息“Hello”以便開始一個新的會話連接;
2)服務器根據客戶的信息確定是否需要生成新的主密鑰,如需要則服務器在響應客戶的“Hello”信息時將包含生成主密鑰所需的信息;
3)客戶根據收到的服務器響應信息,產生一個主密鑰,並用服務器的公開密鑰加密後傳給服務器;
4)服務器恢復該主密鑰,並返回給客戶一個用主密鑰認證的信息,以此讓客戶認證服務器。

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