TCP端点重传不同序列号对应数据时的实际处理行为问询
TCP端点重传不同序列号对应数据时的实际处理行为问询
有没有大佬研究过这个问题?正常来说,靠谱的TCP实现肯定不会干这种事,但我实在好奇——如果某个TCP端点对同一个序列号区间重传完全不同的数据,实际场景里会发生什么?
我翻遍了RFC 793和RFC 9293,里面都没明确规定这种异常情况的处理逻辑,谷歌搜了一圈也没找到相关的讨论内容。
给大家举个具体的通信场景(A和B之间的TCP会话):
- A → B:发送序列号0-99的字节段
- A → B:发送序列号100-199的字节段——这个包丢了(或者故意没发送)
- A → B:发送序列号200-299的字节段
- B → A:回复ACK,确认序列号100(表示B期望接收从100开始的数据)
- 重传超时触发后
- A → B:发送内容不同的序列号200-299字节段
- A → B:发送序列号100-199的字节段
想请教各位:实际的TCP实现会怎么应对这种情况?比如会不会始终采用第一次收到的对应序列号的数据?不同厂商/版本的实现会不会有差异?另外,如果发送方改变了数据包的边界(比如重传时拆成100-149和150-249两个包,其中200-249的内容和之前发送的不一样),处理逻辑会不会有所不同?
备注:内容来源于stack exchange,提问作者Adam Vartanian
相关产品推荐
相关产品推荐

