如果在两个主机(A和B)之间建立TCP连接,并且让主机A向主机B发送了5个八位字节,然后主机B崩溃(由于未知原因).主机A将等待确认,但是在没有获得确认时,将重新发送八位字节并减少发送方窗口大小.由于数据包丢失,这将重复几次,直到窗口大小缩小到零.我的问题是,接下来会发生什么?
在这种情况下,TCP最终会超时等待ack并向应用程序返回错误.应用程序必须从TCP套接字读取/ recv以了解该错误,后续的写入/发送调用也将失败.直到TCP确定连接已经消失为止,写入/发送调用不会失败,如果套接字缓冲区已满,它们将从应用程序或块中看到成功.
如果主机B在发送其ACK后消失,主机A将不会了解它,直到它向B发送内容,最终也会超时,或导致ICMP错误.(通常,第一次写入/发送呼叫作为TCP不会立即连接失败,并记住,写/送话费不等待的ACK,直到他们完成不会失败).
另请注意,重新传输不会减小窗口大小.
| 归档时间: |
|
| 查看次数: |
10095 次 |
| 最近记录: |