我与我的经理进行了讨论,他说tcp比http更快,因为tcp在低于http的层上工作。
然后我记得那个 OSI模型 我在大学里学到的,所以我认为他的意思是因为http在应用层工作,但tcp在传输层工作(下面是2层)所以更快......
所以我的问题是:
较低层的工作速度是否比上层更快是因为在两台计算机之间进行数据传输时需要访问的层数较少?
如果是这样,那就意味着当我们使用tcp(即使用WCF)时,通信将从传输层开始=>向下到物理层=>另一台计算机的物理层=>直到传输层?但是我的数据仍然需要通过应用程序来理解,所以仍然需要进入应用层?
提前致谢。
TCP上面总是有一层。问题是关于TCP上面的东西增加了多少开销。 HTTP相对较粗,因为每次传输都需要请求和响应中的一堆标头。它还倾向于在无状态模式下使用,其中每个请求/响应使用单独的TCP会话。 Keep-alives可以改进每个请求的会话,但不能改进标题。
我注意到了WCF标签,所以我猜你正在将NetTcp与例如BasicHttp进行比较。正如@Marcelo Cantos指出的那样,两者都驱动了TCP协议。
BasicHttpbinding使用HTTP进行传输,而消息首先封装在XML中(非常冗长且数据急切)然后通过HTTP发送,使用大量数据作为标头。
相反,NetTcp使用(专有?)协议,其中消息编码和报头专门设计用于减少带宽使用。
在常见的情况下,您不会看到任何差异,但在处理大量请求或大量数据(特别是二进制数据,必须进行编码以适应XML,从而增加其大小)时,您可能会通过使用获得好处NetTcp。
你是对的:TCP和HTTP是在不同层上运行的协议。
通常:为了使应用程序能够利用网络,他们需要在应用程序层进行操作。任何给定协议的速度取决于它所需的开销。 HTTP通常通过TCP运行,因此它需要TCP的所有开销,TCP下所有层的开销,以及HTTP自身所需的所有开销(它有一些相当大的标头)。
在比较TCP和HTTP的速度时,您实际上是在比较苹果和橙子。将TCP与UDP与其他传输层协议(以及HTTP与FTP与其他应用层协议)进行比较更有意义。