客户端C和服务器S之间建立了一个TCP连接,TCP最大段长度为1KB,客户端C当前的拥塞窗口是16KB,向服务器S连续发送2个最大段之后,成功收到服务器S发送的第一段的确认段,确认段中通告的接受窗口大小是4KB,那么此时客户端C还可以向服务器S发送的最大字节数是 ?
参考答案:
在TCP协议中,拥塞窗口(congestion window)是控制发送端发送数据量的一个重要参数,它决定了发送端在无需收到对方确认的情况下可以连续发送的数据量。同时,接收窗口(receive window)是接收端通告给发送端的一个参数,它告诉发送端自己当前还能接收多少字节的数据。
根据题目描述:
- TCP最大段长度为1KB(即1024字节)。
- 客户端C当前的拥塞窗口是16KB(即16384字节)。
- 客户端C向服务器S连续发送了2个最大段,每个段1KB,共发送了2KB(即2048字节)的数据。
- 客户端C成功收到服务器S发送的第一段的确认段,确认段中通告的接收窗口大小是4KB(即4096字节)。
接下来计算客户端C还可以向服务器S发送的最大字节数:
-
发送后拥塞窗口剩余大小: 发送2个最大段(共2KB)后,拥塞窗口剩余大小 = 初始拥塞窗口大小 - 已发送数据量 = 16KB - 2KB = 14KB(即14336字节)。
-
考虑接收窗口的限制: 接收窗口通告的是接收端还能接收的数据量。因此,即使拥塞窗口允许发送更多数据,发送端也不能超过接收窗口的大小发送数据,以免造成数据丢失或接收端缓冲区溢出。 当前接收窗口大小为4KB,所以客户端C最多还能发送4KB的数据到服务器S,直到收到新的确认和接收窗口更新。
综上所述,此时客户端C还可以向服务器S发送的最大字节数是接收窗口的大小,即4KB(或4096字节)。