TCP协议通过使用连续ARQ协议和滑动窗口协议,来保证数据传输的正确性,从而提供可靠的传输。
一、自动重传请求(ARQ,Automatic Repeat reQuest)
ARQ是TCP为了保证数据包的正确到达所采取的重传机制。有两种重传机制:超时重传机制 和 快速重传机制。
超时重传机制
为了方便解释,我们假设当前数据单向传输,从A到B,A向B发送数据, B向A回复 ACK。
在超时重传机制中,发送方维护一个超时计时器,当超时收不到某一个数据包的ACK时,发送方会重新发送这个数据包。这里面又分为停等协议和连续ARQ协议。
ACK 是接收端收到数据包以后发送给发送端的回复包, 其中有一个标识,表示的是接收端期望下次接收到的包序列号。例如:A 发送给 B 的包 10001 收到了, 那么 B 回复给 A 的 ACK 中的序列为 10002.
停等协议
假设发送方A已经发送完数据包 M1,在停等协议下,A会等待 M1 的ACK 包到达,在收到此ACK之前,A会一直死等, 知道超时重发。很明显,停等协议对于网络的利用率很低,在等待期间发送端A什么也不做,浪费了网络资源。
连续ARQ协议
由于停等协议