解释计算机网络中的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是一个可靠的传输协议。它使用确认机制来检查数据的安全可靠到达。