解释计算机网络中的 TCP 服务。
以下是传输控制协议 (TCP) 为应用层进程提供的一些服务:
- 流传送服务。
- 发送和接收缓冲区。
- 字节和段。
- 全双工服务
- 面向连接的服务。
- 可靠服务。
下面将详细解释所有上述 TCP 服务。
流传送服务
TCP 是一种面向流的协议。它使发送进程能够以字节流的形式传递数据,而接收进程则能够以字节流的形式获取数据。
TCP 创建了一个工作环境,以便发送和接收过程通过一个假想的"管道"连接起来,如下图所示:

发送和接收缓冲区
发送和接收进程不能以相同的速度生成和接收数据。因此,TCP 需要一个缓冲区进行存储。
每个部分中使用的缓冲区有两种类型,如下所示:
- 发送缓冲区
- 接收缓冲区
缓冲区可以使用 1 字节位置的循环数组来实现,如下图所示。该图显示了发送端数据在一个方向上的移动。
缓冲区有三种类型的位置,如下所示:
- 空位置。
- 包含已发送但尚未确认的字节的位置。这些字节将保留在缓冲区中,直到收到确认为止。
- 包含发送 TCP 将要发送的字节的位置

实际上,由于接收过程缓慢或网络拥塞,TCP 可能只发送一个数据端口。
接收方的缓冲区分为两部分,如下所示:
- 该部分包含空位置。
- 该部分包含接收的字节,发送过程可以使用它们。
字节和段
缓冲用于处理数据传输速度和数据消耗之间的差异。但仅有缓冲是不够的。
作为 TCP 服务提供商,在互联网协议 (IP) 层发送数据之前,我们还需要一步。它需要以数据包的形式发送数据,而不是字节流。
在传输层,TCP 将多个字节分组到一个数据包中,这被称为段。每个段都会添加一个报头以进行控制。
段被封装在 IP 协议图中,然后进行传输。整个操作对接收进程来说是透明的。数据段在到达接收端时,可能会被乱序、丢失或损坏。
下图展示了如何从缓冲区中的字节创建数据段:

数据段的大小各不相同。每个数据段可以包含数百个字节。
全双工服务
TCP 提供全双工服务,数据可以同时在两个方向上流动。每个 TCP 都有一个发送缓冲区和接收缓冲区。TCP 数据段在两个方向上发送。
面向连接的服务
我们已经知道 TCP 是一个面向连接的协议。当一个进程想要与另一个进程(进程 2)通信(发送和接收)时,操作顺序如下:
- 进程 1 的 TCP 通知进程 2 的 TCP 并获得其批准。
- 进程 1 的 TCP 告知进程 2 的 TCP 进行双向数据交换。
- 完成数据交换后,当双方的缓冲区都为空时,两个 TCP 都会销毁各自的缓冲区。
TCP 中的连接类型不是物理的,而是虚拟的。封装在 IP 数据报中的 TCP 段可能会无序发送。这些段可能会丢失或损坏,可能需要重新发送。每个段可能会采用不同的路径到达目的地。
可靠服务
TCP 是一种可靠的传输协议。它使用确认机制来检查数据是否安全可靠地到达。

