找到具有相同有效负载的TCP数据包的可能性?
时间:2020-03-05 18:58:25 来源:igfitidea点击:
今天早些时候,我与开发人员进行了讨论,以重新确定在具有相同负载的特定接口上输出的TCP数据包。他告诉我,由于在系统级构造TCP数据包的方式,找到具有相等有效负载的TCP数据包(即使多次发送相同的数据)的可能性非常低。我知道可能是由于系统的MTU设置(通常为1500字节)等导致的,但是我真正在查看哪种概率统计信息?是否有任何特定的协议可以使识别匹配的负载变得更加容易?
解决方案
回答
编辑:对不起,我的初衷是荒谬的。
我们引起了我的兴趣,所以我在Google上搜索了一下并找到了它。如果我们想编写自己的工具,则可能必须检查每个负载,最简单的方法可能是某种哈希/校验和,以检查相同的负载。只要确保我们检查的是有效载荷,而不是整个数据包即可。
至于统计信息,我将不得不请对TCP的工作知识更深的人。
回答
定义有效负载的唯一性是在tcp上运行的协议,而不是tcp协议本身。
例如,我们可能天真地认为在请求服务器主页时HTTP请求将完全相同,但是引荐来源网址和用户代理字符串使有效负载有所不同。
同样,如果响应是动态生成的,则它可能具有日期标头:
日期:2008年9月12日,星期五,格林尼治标准时间
因此,这将使响应负载有所不同。但是,如果内容是静态的,则后续有效负载可能是相同的。
请记住,实际的数据包将因序列号不同而有所不同,这些序列号应该是递增的和伪随机的。
回答
克里斯是对的。更具体地说,数据包标头中的两三个信息应该不同:
- 序列号(它是不可预测的),随发送和接收的字节数而增加。
- 时间戳记,一个包含两个时间戳记的字段(尽管此字段是可选的)。
- 校验和,因为对有效载荷和标头都进行了校验和,包括更改的序列号。
回答
发送相同的PAYLOAD可能很常见(尤其是在运行某种网络服务时)。如果我们要发送相同的tcp段(报头和全部)或者整个网络数据包(ip和上行),则概率大大降低。