面试题答案
一键面试滑动窗口机制的工作原理
- 窗口概念:在TCP连接中,发送方和接收方都有一个滑动窗口。发送方的滑动窗口包含了一系列可以发送但尚未收到确认(ACK)的数据包,以及一些可以提前准备发送的数据包。接收方的滑动窗口用于告诉发送方自己能够接收的数据范围。
- 窗口大小:滑动窗口的大小是动态变化的,它取决于网络状况、接收方的处理能力等因素。接收方通过ACK报文将自己的窗口大小告知发送方。
- 数据发送:发送方在窗口范围内将数据分组发送出去,每发送一个分组,窗口的左边界向右移动一个分组的位置(如果该分组已得到确认)。当窗口内所有分组都已发送且未确认时,若窗口大小允许,发送方可以继续发送新的数据分组。
- 确认机制:接收方收到数据后,对正确接收的数据分组发送ACK确认报文。发送方收到ACK后,将窗口左边界向右滑动,把已确认的数据从窗口中移除,从而为新的数据腾出空间。如果某个数据分组在一定时间内未收到ACK,发送方会重传该分组。
- 窗口调整:接收方根据自身的缓存空间和处理能力,动态调整窗口大小,并通过ACK报文反馈给发送方。当接收方的缓存空间紧张时,会减小窗口大小;当缓存空间充足时,会增大窗口大小。
滑动窗口机制对可靠传输的关键作用
- 流量控制:接收方通过调整窗口大小,限制发送方的数据发送速率,避免接收方因来不及处理而导致数据丢失。这确保了发送方发送的数据量与接收方的处理能力相匹配,实现流量的有效控制。
- 提高传输效率:滑动窗口允许发送方在等待确认的同时继续发送多个数据分组,而不是每发送一个分组就等待确认,从而充分利用网络带宽,提高了数据传输的效率。
- 数据重传机制的支持:当某个数据分组未按时收到ACK时,发送方可以依据滑动窗口机制确定需要重传的分组,确保数据的可靠传输。通过重传未确认的分组,保证了数据不会因为网络问题而丢失。
- 有序交付:接收方按照序号接收数据分组,并在滑动窗口内进行排序。只有按序到达的数据分组才会被传递给上层应用,保证了数据的有序交付,满足了应用层对数据顺序的要求。