2011-05-12 65 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在任何地方都是开放的,所以让我们用它来解决所有问题”),但通常会导致到相当讨厌的黑客。