使用 TCP 发送的数据包是否可能带有不同的数据?

使用 TCP 发送的数据包是否可能带有不同的数据?

有时在我的网络库中,当我发送数据包时,数据到达的时间与我发送时的时间不同。我假设 TCP 保证准确交付。这是真的吗?还是我自己的库代码的打包和接收过程一定出了问题?

答案1

TCP 不能保证在单个数据包的级别上准确传送您的数据。

相反,TCP 通过在每个数据包的标头中包含序列号和校验和来提供确定数据完整性的框架,接收方应该检查这些序列号和校验和,并提供一种机制,当数据包根本没有到达或校验和失败时,接收方可以请求发送方重新传输数据包。

答案2

尝试匹配校验和。如果不匹配,则数据很可能在发送后、到达目的地之前被某些东西或某些人更改。就像 MITM 一样。发送方和接收方两端都有可能出现这种情况。

相关内容