3.3.1 TCP协议基本思想

互联网络层提供的服务是不可靠的分组交付。当传输过程中出现错误时,当网络硬件失效或网络负载过重时,分组可能会丢失,数据可能被破坏。动态路由策略可能导致分组到达目的网络时顺序混乱、时延太大或重复交付。

为了解决上述问题,为上层的应用程序提供一个端到端可靠的传输服务,在Internet的运输层引入了TCP协议。它主要从五个方面来提供可靠的交付服务:

1、面向数据流。当两个应用程序传输数据时,TCP将这些数据当作一个比特流。从应用的角度看,发送者(应用程序)发出的数据与接收者(应用程序)接收到的数据完全一致。

2、虚电路连接。接收和发送应用程序在进行数据传输前,首先需要建立一个逻辑连接,以确保双方均做好数据传输的准备。在数据传输结束后,需要释放这种逻辑连接关系。这一过程从用户的角度看,与电路交换的形式很像。因此,称为“虚电路”(virtual circuit)。

3、有缓冲的传输。应用程序传输数据时,可以根据需要来确定发送数据片的大小,最小可以为1个八位组。但是,过小的数据片传输会导致传输效率低下,因此,协议软件通常会对数据进行缓冲,等缓冲的数据达到一定量以后再将它们组成大小合理的数据报传输给接收方。

4、无结构的数据流。TCP报文中的数据按照无结构的数据流处理。应用程序之间交互的数据通常以某种数据结构的格式组织,但是这些结构数据传输给TCP协议后,都统一作为没有结构的数据流处理。这种机制既统一了TCP数据传输机制,又不影响应用层的程序对不同数据格式的数据进行交互。

5、全双工连接。TCP的流服务是全双工的(full duplex)。即每个TCP连接包括两个独立的、流向相反的数据流。这种机制的优点是一个方向的传输不受另一个方向传输的影响,并且可以将流控制信息捎带(piggy backing)在相反方向的报文中,发回到源主机。