首页 理论教育TCP传输控制机制与流程详解

TCP传输控制机制与流程详解

【摘要】:1)流量控制机制该机制主要用于确保发送端发送的数据量不超过接收端的最大处理能力。TCP的流量控制具体通过滑动窗口算法来实现。地面网络常用TCP的拥塞控制机制主要包括TCP-Tahoe,TCP-Reno,TCP-SACT等。

2.3.1.1 TCP流程

TCP主要通过“三次握手”的连接建立、“序号与确认”的数据传输和“四次挥手”的连接拆除来保障面向连接的可靠通信,如图2-29所示。

1)连接建立

TCP的连接建立主要通过“三次握手”实现,分为请求连接(SYN)、请求确认(SYN+ACK)和确认连接(ACK)3个步骤。主机A向主机B发出连接请求,主要用于通知主机B可以开始建立TCP连接,并进行数据包的序号同步;主机B收到连接请求后,如同意,则发回确认;主机A收到主机B的确认后,主机A通知上层应用进程连接已经建立,并向主机B发回连接确认;当主机B收到主机A的确认后,也通知上层应用进程,此时可靠的连接已经建立。

图2-29 TCP交互流程

2)数据传输

TCP在数据传输过程中的可靠性主要靠“序号和确认”来维护。当主机A的TCP向主机B发送一数据报文段时,同时会在本地的重传队列中存放一个副本。只有收到主机B的确认应答才会删除此副本。若计时器时间到之前还没有收到确认,则重传此报文段的副本。

3)连接拆除

当数据传输结束后,通信双方都可以发出释放连接的请求。比如,主机A的应用进程先向其TCP发出连接释放报文段,并且不再发送数据。主机A的TCP通知对方要释放从A到B这个方向的连接,主机B收到该报文段后随即向主机A发出确认,并通知上层应用进程。此时连接处于“半关闭”状态。即主机B不再接收来自主机A的数据,但如果主机B仍有数据发送,主机A可以继续接收(但该情况通常较少)。主机A只要能正确收到数据,仍向主机B发送确认。若主机B不再向主机A发送数据,则用同样的方式去关闭连接。

2.3.1.2 TCP传输控制机制

TCP传输控制机制主要有流量控制、拥塞控制和差错控制。在过去的20多年,TCP历经多次调整和改动形成了几种不同的协议版本,但各种版本的TCP都包括这三大机制,只是具体实现时采用了不同的算法

1)流量控制机制

该机制主要用于确保发送端发送的数据量不超过接收端的最大处理能力。如图2-30(a)所示,通过一根相对较粗的管道向小容器注水,只要发送端流量控制得当,保证其输出的水量不超过小容量接收端水桶的容量,接收端的水就不会溢出。TCP的流量控制具体通过滑动窗口算法来实现。在发送端,TCP保持一个发送缓冲区,该缓冲区用于存放两类数据:一类是已经发送但还未得到确认的数据;另一类是等待发送的数据。在接收端,TCP保持一个接收缓冲区,该缓冲区用于存放接收应用程序还未读取的数据。为了避免缓冲区空间的耗尽,接收端通过“接收窗口”来告知发送端其接收数据的能力。该窗口值的大小与接收方应用进程工作的快慢(从缓冲区中读取数据的速度)有关,通常设置为接收端缓冲区剩余空间的大小。

图2-30 传输控制示意

(a)流量控制机制;(b)拥塞控制机制

2)拥塞控制机制

该机制主要用于当网络负载超出其处理能力而导致拥塞发生时,将网络恢复正常,如图2-30(b)所示,制约因素不再是接收端的容量,而是输水管(网络)内部的承载能力。如果没有拥塞控制机制,当水以很快速度到来时,输水管来不及输送就会造成发送端水的溢出,如果发送端仍不减缓注水的速度,情况就会更糟糕。因此,为解决上述问题,拥塞控制机制中引入了“拥塞窗口”,发送端根据自己所估计的网络拥塞程度设置窗口值。地面网络常用TCP的拥塞控制机制主要包括TCP-Tahoe,TCP-Reno,TCP-SACT等。TCP-Tahoe是1988年提出的早期TCP拥塞控制版本,包括3个最基本的拥塞控制阶段,分别是慢启动、拥塞避免和快速重传,如图2-31所示。在TCP Tahoe机制中,无论出现数据传输超时,还是接收到多个重复ACK应答报文,TCP发送端都会将拥塞窗口设为初始值1,并回退到慢启动阶段。由此可见,TCP Tahoe没有区分网络拥塞程度,只是一味地减少数据传输流量,所以限制了协议吞吐量,降低了对网络资源的利用。TCP-Reno,TCP-SACK都是在TCP-Tahoe的基础上发展而来的。

图2-31 TCP Tahoe的拥塞控制机制

3)差错控制机制

该机制是保障TCP可靠传输的一个重要环节,主要通过确认包、定时器和重传来实现。TCP为每个数据包分配一个32位的序列号,该序列号是累积的,且接收端需要对每个数据包进行确认。发送端在发送数据的同时,启动一个重传定时器,如果在重传定时器超时之前收到数据包的确认,定时器会被关闭;如果在定时器超时之前还未收到确认,则认为该数据包已经丢失,需要重传。