据我所知,TCP会为每个数据段启动一个重传计时器,并在计时器到期时重新发送数据包(假设没有从接收器收到重复的ack)并重新启动一个持续时间较长的新计时器,直到故障数达到某个限制。
只是想知道它是否对传输中的FIN数据包丢失做同样的事情? (如重传尝试,定时器长度增加等)
例如,在TCP关闭图表下面,
答案 0 :(得分:2)
据我所知,TCP为每个数据段启动重传计时器
除了仅ACK段之外的每个段。
它发送并重新发送数据包(假设没有从接收方收到重复的ack)
重复的ACK不会与它有任何关系。
只是想知道它是否对传输中的FIN数据包丢失做了同样的事情?
是
- 如果丢失了第一个或第三个FIN,TCP是否会使用相同的逻辑来像正常数据段一样重新发送它,然后才会失败?
醇>
状态图中没有第3个FIN,但它们需要重新传输。
- 如果在发送第一个FIN之后我们从未听过第一个ACK的接收方,发送方是否必须自己关闭TCP连接或者必须保持活动状态?
醇>
在确认或重试到期之前,它一直保留在FIN_WAIT_1中。
- 如果发送方永远不会从接收方获得第二个FIN,发送方应该仍然处于FIN_WAIT2状态,在它直接进入关闭状态之前可能是超时(我猜不是2MSL?)?或者它完全是这样做的?
醇>
完全没有。连接保持半开,就像发送器已完成输出关闭一样。