如何使用TCP通信比HTTP通信更好?

时间:2011-05-12 06:50:59

标签: java http jsp tcp

我已经使用TCP实现了一个客户端服务器jave程序来进行分配。现在我要解释为什么当其他替代方案(如HTTP)也可以选择TCP进行通信时。 所以我需要一些理由来解释为什么TCP优于另一个..

3 个答案:

答案 0 :(得分:7)

HTTP不是TCP的替代。它是建立在TCP之上的协议。

在TCP上实现自定义交互式协议可以比在HTTP上实现更高效,因为HTTP在相当基本的请求/响应基础上工作。

在纯TCP连接上,两端都可以随时发送消息。在HTTP上,服务器无法主动向客户端发送消息。它需要等待客户端发送请求。

HTTP的一个优点是几乎普遍理解:所有语言都有服务器和客户端库,有很好理解的缓存和代理机制,并且内置了各种各样的内容协商机制。

所以这是高级别或低级别抽象之间的传统权衡:

  • 低级抽象(TCP)提供高灵活性和实现几乎所有内容的可能性,而不是那么简单
  • 更高级抽象(HTTP)提供更多内置功能,更易于支持,但附加功能更难添加

答案 1 :(得分:4)

HTTP是TCP顶层的协议。它提供特定功能而缺少其他功能(最显着的状态和服务器启动通信的能力)。如果您需要HTTP难以或不可能的东西,那么使用其他东西是个好主意。

或者你可以在HTTP之上使用这些功能,这似乎是最受欢迎的选项(可能是因为“只有端口80在任何地方都是开放的,所以让我们用它来解决所有问题”)但通常会导致相当讨厌的黑客。

答案 2 :(得分:3)

TCP不能被告知更好。它是OSI模型的传输(第4)级协议。 HTTP是一种应用程序协议(第7级)。

它们不同,HTTP基于TCP。

HTTP主要用于网络通信 - 网站,网络服务等。可以告诉我,HTTP是面向客户端的:客户端向服务器请求一些数据并接收响应。当它发送另一个请求等等。 TCP是一种基本协议,它允许您以相同的顺序接收所有发送的信息并保持不变。

在Wiki上了解它们:HTTPTCP