2011-05-12 23 views
2

我已經實現了一個客戶端服務器的jave程序,使用TCP進行分配。現在我來解釋爲什麼我選擇了TCP通訊時如HTTP其他替代品也可.. 所以我需要一些原因,TCP是比另一個更好..如何比HTTP通信更好地使用TCP通信?

+3

Http使用TCP,所以比較它們並不是真的有效......大概問題是「爲什麼你會選擇通過TCP進行合理的實現,當更多的開放,標準化的格式,如http已經存在」? – Nathan 2011-05-12 06:55:07

回答

7

HTTP不是替代到TCP。它是一個建立在TCP之上的協議。

由於HTTP在基本的請求/響應基礎上工作,自定義交互協議在TCP上實現比在HTTP上執行效率高得多。

在純TCP連接上,兩端都可以隨時發送消息。在HTTP上,服務器無法主動向客戶端發送消息。它需要等待客戶端發送請求。

HTTP的一個優點是它幾乎可以普遍理解:所有語言都有服務器和客戶端庫,有很好理解的緩存和代理機制,以及內置的各種內容協商機制。

所以這是高級別或更低級別的抽象之間的傳統折衷:

  • 較低級別的抽象(TCP)提供高flexbility和實現幾乎所有的可能性,而它並非如此簡單易用
  • 更高層次的抽象(HTTP)提供了更多的內置功能,而且更容易支持,但附加功能也難以增加
3

TCP不能告訴更好。它是運輸(第4)級別的OSI模型的協議。 HTTP是一個應用協議(第7級)。

它們不同,HTTP基於TCP。

HTTP基本上用於網絡通信 - 網站,網絡服務等。可以告訴HTTP是面向客戶端的:客戶端向服務器請求一些數據並接收響應。當它發送另一個請求等。 TCP是一個基本協議,它可以讓您以相同的順序接收所有發送的信息並保持原樣。

在Wiki上閱讀它們:HTTPTCP

4

HTTP是TCP的頂層上的協議。它提供了特定的功能並缺少其他功能(最顯着的狀態和服務器啓動通信的能力)。如果你需要HTTP使得硬件或不可能的東西,那麼使用別的東西是個好主意。或者你可以把這些功能混淆在HTTP之上,這似乎是最受歡迎的選擇(可能是因爲「只有端口80在任何地方都是開放的,所以讓我們用它來解決所有問題」),但通常會導致到相當討厭的黑客。