Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在 TCP 中保留未确认数据缓冲区(发送方缓冲区)的最佳方法是什么?
我正在考虑保留数据本身和保留数据包(标头+数据)?
如果我只保留数据字节而不是保留数据包,似乎很难重新传输数据包。
语言:C
数据包边界在 TCP 中是没有意义的:有可能一个数据包的一半数据被确认(比如由于碎片),然后您必须重新传输剩下的一半。
所以答案是:你应该保留原始数据,而不是数据包。您应该问的真正问题是:我怎么知道哪些数据已被确认。您需要为窗口中的每个数据字节设置一个位掩码,并且可以将已确认数据标记为 1,其余数据标记为 0。每当您发现窗口开头的连续数据块已被确认时,该部分可以滑出。