为什么Tcp比http更快?

Kin*_*han 13 wcf networking tcp osi

我与我的经理进行了讨论,他说tcp比http更快,因为tcp在低于http的层上工作.

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

所以我的问题是:

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

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

提前致谢.

Mar*_*tos 8

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


Cod*_*ter 5

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

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

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

在常见情况下,您不会看到任何区别,但是在处理大量请求或大量数据(尤其是二进制数据,必须对其进行编码以适应 XML 从而增加其大小)时,您可能会通过使用获得好处网络协议。