tcp接受窗口会不会带来死锁?
bsnry 2016-03-10 03:44:42 我看过一个人写的书, 接收方连续发送win=0的包给发方,连续发了好几次。
当然,这几个连续的包之间里,并没有出现发方的包!! 因为发方知道收方的win=0, 所以不会发送数据。
问题来了:
1. 什么原因导致接收方会连续发送win=0的包?
recv/read系统调用有两部分功能: (1)发送ack和win (2)从内核中取出数据到应用缓冲区中。
难道是说,接收方的代码 连续调用这些api, 但api的返回值为0, 体现出: 接受窗口爆满,而且应答ack+win。
2. 由于 接收方 的接受窗口为0,那么会不会导致发方的重传定时器触发,要发数据给接收方,结果接收方的应答报文里的win=0,从而死锁。