http協議和tcp協議的區別是什么
很多朋友在現實生活中,不知道http協議 http://www.maiziedu.com/course/te/429-5568/ 和tcp協議的區別在哪里,今天,小編就來大家了解一下他們兩者之間的區別,希望大家能跟著小編的思路具體來了解,下邊就一起來看看吧!
當你需要準備做個安卓應用,服務端用golang寫的,客戶端語需要和服務端通信,這時就會想是用tcp好呢,還是用http協議呢?數據量挺大,哪個協議的效率更高呢,綜合開發效率和傳輸效率?
HTTP 是應用層協議,TCP 是傳輸層協議(位于應用層之下),放在一起類比并不合適。
不過猜測樓主是想對比 “標準 HTTP 協議” 還是 “自定義的協議(基于 TCP Socket)” 。
一般來說,移動應用推薦使用 HTTP 協議,有很多優點:
HTTP 發展成熟
HTTP 幾乎已經快成為一種通用的 Web 標準,Web Services、REST、Open API、OAuth 等等都是基于 HTTP 協議的。它已經不僅僅是 Hyper Text 的傳輸標準了,幾乎所有數據的傳輸(多媒體、XML、JSON)都可以采用 HTTP。
后臺復用
因為很多應用,除了有移動端,還有Web端,甚至桌面端。
Web 版中前后臺交互,無論是頁面請求還是 AJAX 請求,都是采用標準 HTTP 協議。那么其他的客戶端沒有理由重新設計一套協議。
HTML 5 應用
現在不少移動產品都采用或者半采用 HTML 5 技術,那么和服務器的交互又回歸到 AJAX 上。不用說,還是離不開 HTTP。
但是也有一些局限性,比如以下場景就不適合 HTTP 協議:
實時數據推送
除了 iOS 開發提供有標準的 Apple 消息推送中心,其他移動產品可能還是要采用 Socket 長連接才能保證實時通訊。
比較常見的有很多即時通訊軟件采用的 XMPP 協議。
流媒體
適用于音頻播放、視頻播放、語音會議等等,一般可能采用 RTMP 協議。
Http 是 TCP的上層協議,Http 是基于 TCP的,所以你用了HTTP,等同與你也在用TCP
所以,拿Http和TCP做優劣比較是一個不存在的問題。
當然,這問題提的很好,問的是相較基于tcp的自定義協議。
其實事實上,從宏觀層面,已經自己回答了這個問題了。
為啥要自定義協議呢?很簡單啊,http協議滿足不了需求只好自定義協議啊。
也就是說,自定義協議可以滿足很多http協議滿足不了的需求啊。
那什么需求是http協議滿足不了的呢?
這也很簡單啊,可以查一下http協議的定義去看看它提供了什么樣的包裝和定義,落在它之外的就是滿足不了的啊,要真的細說,那真是多了去了,比如:
例如:http是單工阻塞性質的協議,如果你需要一個全雙工,無阻塞的雙向傳輸,那http就滿足不了
例如:http定義提供了很多種的請求方法,從get到post不一一列舉了,但是你需要的請求應答模式和它定義的種種沒有任何一種能夠實現你需要的請求應答模式,你就需要自定義協議啊
例如:http定義自己的包頭,你要是覺得傳輸效率極其重要,這樣的包頭太臃腫,你也需要自定義協議啊
要是http都能完全滿足你的需求,那為啥要自定義協議呢?一個成熟的協議拿來就用明顯是很好的選擇啊。
現在REST一出,一改過去SOAP的復雜臃腫,HTTP協議本身一直也在擴充,因此適用的范圍更廣,更好用了。需要自定義協議的場景和需求也變少了。
如果要從微觀層面去對比優劣,至少你得告訴你這個自定義協議是啥?
TCP上的自定義協議,那可是多如繁星,我拿哪個去做對比呢?
TCP長鏈接是一直連著不斷開的。如果是TCP的話:
服務器端不是很好擴充,考驗單臺服務器的接入能力。服務器集群不是很好架設。
客戶端,處理socket連接的那個線程要負責干各種事情,所有網絡協議的邏輯集中在此,結構不太好搭。而http,結構就完全不同。
區別在于開發代價不同。http有大量現成架構,服務器,數據庫,出了問題也不會全盤崩潰,調試代價小。
tcp必須自定義協議,然后自己處理;自己實現服務器,監聽端口;遇到問題,自己打造一系列調試手段。自己動手造輪子,開發代價高了一個數量級。
最近正好在用http協議,是接手之前一個人做的,沒辦法代碼重寫,基于socket自定義協議對于移動開發快速迭代不合適,除非是一些比較底層的需求。估計像微信這樣的也許會自定義協議,要不然帶寬負荷太高。但是具體我也不了解。
所以能用http的地方,就不要用tcp。不過有的東西必須用tcp,比如網游,那是沒辦法的事情。
HTTP 協議的一個非常重要的優勢在于穿越防火墻。
如果客戶端到服務器之間有安全設備,那么可能唯一打開的端口就是TCP:80。
移動端的開發更是如此,你不想用戶整天抱怨說訪問不到你的服務器吧。
以上就是小編為您講解的http協議和tcp協議的區別了,相信以上的講解,您一定對http協議和tcp協議兩者都有一個明確的認識了。希望小編的講解能給你帶來幫助,同時,有什么需要還可請教我們的在線專家,祝大家進步。