1. 程式人生 > >對於Http的簡單理解

對於Http的簡單理解

什麼是 HTTP協議:

HTTP協議是Hyper Text Transfer Protocol(超文字傳輸協議)的縮寫,是用於從全球資訊網(WWW:World Wide Web )伺服器傳輸超文字到本地瀏覽器的傳送協議。

HTTP是一個基於TCP/IP通訊協議來傳遞資料(HTML 檔案, 圖片檔案, 查詢結果等)。

HTTP是一個屬於應用層的面向物件的協議,由於其簡捷、快速的方式,適用於分散式超媒體資訊系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴充套件。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規範化工作正在進行之中,而且HTTP-NG(Next Generation of HTTP)的建議已經提出。

HTTP協議工作於客戶端-服務端架構為上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB伺服器傳送所有請求。Web伺服器根據接收到的請求後,向客戶端傳送響應資訊。

HTTP的特點:

1.支援客戶/伺服器模式。

2.簡單快速:客戶向伺服器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與伺服器聯絡的型別不同。由於HTTP協議簡單,使得HTTP伺服器的程式規模小,因而通訊速度很快。

3.靈活:HTTP允許傳輸任意型別的資料物件。正在傳輸的型別由Content-Type加以標記。

4.無連線:無連線的含義是限制每次連線只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間。

5.無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的資訊,則它必須重傳,這樣可能導致每次連線傳送的資料量增大。另一方面,在伺服器不需要先前資訊時它的應答就較快。

(看了上面的介紹會不會覺得很懵逼呢?這些基礎的感念其實在書本上都可以找到,沒什麼技術含量在面試中你也不可能給面試官背這些東西吧,先別說你背起來很麻煩,再就是面試官也不想聽這些。
我的回答是:其實簡單點來說http就是超文字傳輸協議,然後他是明文傳輸的(這點可以不說,因為扯了這一點面試官可能就會問你:http是明文傳輸的可能會照成資料不安全,該怎麼辦?這個時候你就要開始扯get和post了。那麼什麼是get?什麼是post?首先呢,get和post是http的兩種傳輸方式。

1)GET:獲取資源
GET方法用來請求訪問已被URL識別的資源

2)POST:傳輸實體主體
POST方法用來請求伺服器傳輸資訊實體的主體

然後就是既然扯到了get和post那麼他們之間的區別就肯定少不了要說了,所以說回答時一定要小心不要給自己挖坑。

然後簡單的說一下GET和POST的區別:

首先,使用目標不同:GET方法只是用來查詢,不會對瀏覽器上的資訊產生影響,每次GET的方法都是相同的

其次,大小不同:GET是放在URL首部,因此大小隨著瀏覽器而定,而POST則是在報文中,只要沒有具體限制,檔案的大小是沒限制的

然後,安全性不同:GET採用的是明文傳輸,而POST是放在報文內部,無法看到

從使用場景的角度來說,一般像使用者註冊登入這種資訊都是私密的,採用POST,而針對查詢等,為了快速,大多采用GET傳輸。

這是兩者之間的一個比較圖:
這裡寫圖片描述
扯完get和post之後,如果面試官問還有什麼其他的方式那麼你就可以說一下https。如果沒問那麼就此打住,當然瞭如果你想展示一下自己那你就隨意好了,關於https我會在下面說到)

,它是基於TCP的,http的特點可以分為5點

1、支援客戶/伺服器模式 。2、簡單快速。3、靈活。4、無連線。5、無狀態。
因為http是基於TCP的所以http也就準守通過三次握手建立連線,四次握手解除連線。
如果問的比較淺顯的話說這些就可以了。)

什麼是HTTPS:

既然扯到了http那麼https也有很大的可能被問到。那麼什麼是https呢?

HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。 它是一個URI scheme(抽象識別符號體系),句法類同http:體系。用於安全的HTTP資料傳輸。https:URL表明它使用了HTTP,但HTTPS存在不同於HTTP的預設埠及一個加密/身份驗證層(在HTTP與TCP之間)。這個系統的最初研發由網景公司(Netscape)進行,並內置於其瀏覽器Netscape Navigator中,提供了身份驗證與加密通訊方法。現在它被廣泛用於全球資訊網上安全敏感的通訊,例如交易支付方面。

從上面的描述我們可以得出:簡單點來說HTTPS就是HTTP的安全版。也就是HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。(這時有人可能會問什麼是SSL呢?其實很簡單

SSL協議(Secure Socket Layer 安全套接字層)位於可靠的面向連線的網路層協議和應用層協議之間的一個協議層。
SSL通過互相認證,使用數字簽名保證完整性,使用加密確保私密性,以實現客戶端和伺服器之間的安全通訊,該協議由兩層組成,SSL記錄協議和SSL握手協議。
它的主要作用:
1.認證使用者和伺服器,確保資料傳送到正確的客戶端或者伺服器。
2.加密資料以防資料中途被竊取。
3.維護資料的完整性,確保資料在傳輸過程中不被更改。)

HTTPS的作用:

HTTPS的主要作用可以分為兩種:
1、建立一個資訊保安通道,來保證資料傳輸的安全;
2、確認網站的真實性,凡是使用了 https 的網站,都可以通過點選瀏覽器位址列的 鎖頭標誌來檢視網站認證之後的真實資訊,也可以通過 CA 機構頒發的安全簽章來查詢 。

HTTP和HTTPS的區別:

既然說到了http和https那麼他們之間的區別肯定要提一下簡單點來說HTTPS和HTTP的區別主要為以下四點:
1、https協議需要到ca申請證書,一般免費證書很少,需要交費。
2、http是超文字傳輸協議,資訊是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。
3、http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。
4、http的連線很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。
(這裡只是做了一些簡單的區別的比較,當然瞭如果大家想深入瞭解可以去問一下度娘有興趣的可以去看看這篇部落格 http://www.cnblogs.com/wqhwe/p/5407468.html

TCP與UDP

之前在上面有說過HTTP是基於TCP的所以它會有三次握手建立連線以及四次握手解除連線。那麼什麼是TCP?這裡就不詳說了因為有很多大牛已經解釋過了我也就不做過多言語了有興趣的朋友可以這看看很詳細
http://www.cnblogs.com/bizhu/archive/2012/05/12/2497493.html
(適合初學者)

這次就寫到這了因為是第一次寫部落格所以寫的有點亂,希望各位可以見諒。