为什么Tcp比http更快?

时间:2011-10-25 22:11:40

标签: wcf networking tcp osi

我与我的经理讨论过,他说tcp比http更快,因为tcp的工作层比http低。

然后我记得我在大学里学到的OSI Model,所以我认为他的意思是因为http在应用层工作,但tcp在传输层工作(下面是2层)所以更快..

所以我的问题是

  1. 下层的工作速度是否比上层快,是因为在两台计算机之间进行数据传输时需要访问的层数较少?

  2. 如果是这样,那就意味着当我们使用tcp(即使用WCF)时,通信将从传输层开始=>到物理层=>另一台计算机的物理层=>运输层?但是我仍然需要通过应用程序来理解数据,所以仍然需要进入应用层?

  3. 提前致谢。

3 个答案:

答案 0 :(得分:8)

TCP之上总有一层。问题是关于TCP上面的东西增加了多少开销。 HTTP相对较粗,因为每次传输都需要在请求和响应中都有一堆标头。它还倾向于在无状态模式下使用,其中每个请求/响应使用单独的TCP会话。保持活动可以改善每个请求的会话,但不能改进标题。

答案 1 :(得分:4)

我注意到了WCF标签,所以我猜你们正在将NetTcp与例如BasicHttp进行比较。正如@Marcelo Cantos指出的那样,两者都驱动了TCP协议。

尽管BasicHttpbinding使用HTTP进行传输,但消息首先封装在XML中(这非常冗长且数据急切)然后通过HTTP发送,使用大量数据作为标头。

相反,NetTcp使用(专有?)协议,其中消息编码和标头专门用于减少带宽使用。

在常见的情况下,您不会看到任何差异,但在处理大量请求或大量数据(特别是二进制数据,必须进行编码以适应XML,从而增加其大小)时,您可能会获益使用NetTcp带来的好处。

答案 2 :(得分:3)

你是对的:TCP和HTTP是在不同层上运行的协议。

通常:为了使应用程序能够利用网络,他们需要在应用程序层进行操作。任何给定协议的速度取决于它所需的开销。 HTTP通常在TCP上运行,因此它需要TCP的所有开销,TCP下所有层的开销,以及HTTP本身所需的所有开销(它有一些相当大的标头)。

在比较TCP和HTTP的速度时,您实际上是在比较苹果和橙子。将TCP与UDP与其他传输层协议(以及HTTP与FTP与其他应用层协议)进行比较更有意义。