TCP中的数据传输是如何发起的?

TCP中的数据传输是如何发起的?

从概念上讲,我认为 TCP 连接有两个方面。

  1. “连接”——即两个主机“同意”彼此通信的安排。大致类似于拨打某人的电话,当他们在另一端接听时,您就建立了“连接”。
  2. 数据传输

TCP 连接方面的内容在网络文档中有详细介绍,主机通过 3 次握手等协商连接,但此时您只有一个空闲连接 - 再次类似于某人在另一端拿起电话并具有“死空气”

我的问题是,一旦建立连接,数据(例如文件传输)如何启动?我想它看起来像发件人概述了要发送的内容,即“我要发送给您......,当您有一个 X 字节的文件,或者您收到来自的预告片时,您就会知道传输已完成我”。 TCP 数据/文件传输如何开始?

答案1

传输控制协议是一种面向流的传输协议;它只关心以正确的顺序从一台主机到另一台主机获取字节,它不关心这些字节的内容或它们可能形成的任何消息。一旦建立连接,连接的任一端都可以向另一端发送字节。

要赋予消息含义,您需要就 TCP 之上的协议达成一致。正是这个协议决定了应该发送哪些消息,以及如何解释接收到的消息;这包括确定消息何时完成。例如,在 HTTP 中,如果存在“Content-Length”标头,接收方可以使用它来确定是否已收到所有数据;如果不是,则使用其他方法(请参阅RFC详细信息),直到简单地等待服务器关闭连接(这在某种程度上使用 TCP 来确定消息长度,尽管以相当昂贵的方式)。

如果您想使用面向消息的传输协议发送单独的消息,您可以使用UDP协议或者SCTP而不是 TCP。

相关内容