TCP是否像正常的分段重传一样处理FIN重传?

时间:2016-02-14 01:00:58

标签: tcp timer

据我所知,TCP会为每个数据段启动一个重传计时器,并在计时器到期时重新发送数据包(假设没有从接收器收到重复的ack)并重新启动一个持续时间较长的新计时器,直到故障数达到某个限制。

只是想知道它是否对传输中的FIN数据包丢失做同样的事情? (如重传尝试,定时器长度增加等)

例如,在TCP关闭图表下面,

  1. 如果丢失了第一个或第三个FIN,TCP是否会使用相同的逻辑在正常数据段失败之前重新发送它?
  2. 如果在发送第一个FIN之后我们从未听过第一个ACK的接收方,发送方是否必须自己关闭TCP连接或者必须保持活动状态?
  3. 如果发送方永远不会从接收方获得第二个FIN,发送方应该仍然处于FIN_WAIT2状态,在它直接进入关闭状态之前可能是超时(我猜不是2MSL?)?或者它完全是这样做的?
  4. tcp close

1 个答案:

答案 0 :(得分:2)

  

据我所知,TCP为每个数据段启动重传计时器

除了仅ACK段之外的每个段。

  

它发送并重新发送数据包(假设没有从接收方收到重复的ack)

重复的ACK不会与它有任何关系。

  

只是想知道它是否对传输中的FIN数据包丢失做了同样的事情?

  
      
  1. 如果丢失了第一个或第三个FIN,TCP是否会使用相同的逻辑来像正常数据段一样重新发送它,然后才会失败?
  2.   

状态图中没有第3个FIN,但它们需要重新传输。

  
      
  1. 如果在发送第一个FIN之后我们从未听过第一个ACK的接收方,发送方是否必须自己关闭TCP连接或者必须保持活动状态?
  2.   

在确认或重试到期之前,它一直保留在FIN_WAIT_1中。

  
      
  1. 如果发送方永远不会从接收方获得第二个FIN,发送方应该仍然处于FIN_WAIT2状态,在它直接进入关闭状态之前可能是超时(我猜不是2MSL?)?或者它完全是这样做的?
  2.   

完全没有。连接保持半开,就像发送器已完成输出关闭一样。

相关问题