Tcp 哪些报头字段表示数据包是唯一的?

Tcp 哪些报头字段表示数据包是唯一的?,tcp,header,udp,ip,packets,Tcp,Header,Udp,Ip,Packets,我正在处理可能包含UDP或TCP有效负载的IP数据包 如果只考虑IP级别和传输级别标题< /强>,对于一个包,什么是“强”集合的代表字段< /强>?也就是说,作为一个整体,哪些报头字段会使该数据包唯一?(当然,如果没有副本) 如果没有考虑IP和TCP或UDP代码> ChkSuth字段,那么其他字段的子集是否足够了? IP和UDP没有“唯一性”的概念。TCP没有,由序列号字段暗示。没有足够的字段来明确数据包在传输过程中被复制或丢弃的时间 根据评论更新: 如果您同时编写发送和接收代码,那么可以包含一

我正在处理可能包含UDPTCP有效负载的IP数据包

如果只考虑IP级别和传输级别<强>标题< /强>,对于一个包,什么是“强”集合的代表字段< /强>?也就是说,作为一个整体,哪些报头字段会使该数据包唯一?(当然,如果没有副本)


如果没有考虑IP和TCP或UDP代码> ChkSuth字段,那么其他字段的子集是否足够了?

IP和UDP没有“唯一性”的概念。TCP没有,由序列号字段暗示。没有足够的字段来明确数据包在传输过程中被复制或丢弃的时间

根据评论更新:

如果您同时编写发送和接收代码,那么可以包含一个IP选项,该选项唯一地标识数据包。我建议使用SATNET StreamId选项(#8,请参阅第3.1节)-它提供16位可供使用,并且已经存在了30多年


如果您没有编写发送代码,我认为您无法做到这一点-在IP、ICMP或UDP中没有任何字段可用于进行比较。

您可以使用IP头的可选字段附加数据以实现唯一性(如果您正在发送),但您需要将IHL修改为大于5。

当然可以。我的措辞有点拙劣。我最终的意思是:如果我忽略所有校验和(IP和传输层),这部分取决于各自的有效载荷,那么所有其他报头字段(或它们的子集)是否都会识别数据包?想象一下,我无法查看传输层负载。此外,为了使它更简单,让我们假设复制不存在。我注意到TCP序列号偶尔会被中间框覆盖,所以我不想考虑。我想这让我的目标有点不可能实现……你还没有真正描述你的目标。你问了一个问题,答案是“你不能那样做”。你说“识别数据包”是什么意思?我必须将ttl过期ICMP数据包的有效负载与生成它们的数据包进行比较。我的问题是,有时中间盒会在IP报头和TCP序列字段中应用更改。这就是为什么有时我无法直接找到这些ICMP数据包的匹配项。标题中的细微变化也意味着校验和值略有不同,这就是我在比较过程中必须忽略它的原因。