找到具有相同有效负载的 TCP 数据包的概率?

Posted

技术标签:

【中文标题】找到具有相同有效负载的 TCP 数据包的概率?【英文标题】:Probability of finding TCP packets with the same payload? 【发布时间】:2010-09-10 00:54:38 【问题描述】:

今天早些时候,我与一位开发人员讨论了如何识别在特定接口上发出的具有相同有效负载的 TCP 数据包。他告诉我,由于 TCP 数据包是在系统级别构建的方式,找到具有相同有效负载的 TCP 数据包(即使相同的数据被发送多次)的概率非常低。我知道这可能是由于系统的 MTU 设置(通常是 1500 字节)等原因,但我真正在看什么样的概率统计数据?是否有任何特定协议可以更轻松地识别匹配的有效负载?

【问题讨论】:

【参考方案1】:

是运行在 tcp 上的协议定义了负载的唯一性,而不是 tcp 协议本身。

例如,当请求服务器的主页时,您可能天真地认为 HTTP 请求都是相同的,但是引荐来源网址和用户代理字符串使有效负载不同。

同样,如果响应是动态生成的,它可能有一个日期头:

日期:格林威治标准时间 2008 年 9 月 12 日星期五 10:44:27

这样会使响应负载不同。但是,如果内容是静态的,则后续有效负载可能相同。

请记住,由于序列号不同,实际数据包会有所不同,这些序列号应该是递增的和伪随机的。

【讨论】:

【参考方案2】:

克里斯是对的。更具体地说,包头中的两三条信息应该是不同的:

序列号(即 意在不可预测)其中 是随着数量的增加而增加 发送和接收的字节数。 时间戳,一个包含两个 时间戳(尽管此字段是可选的)。 校验和,因为负载和标头都是校验和,包括变化的序列号。

【讨论】:

【参考方案3】:

编辑:对不起,我最初的想法很荒谬。

你让我感兴趣,所以我用谷歌搜索了一下,找到了this。如果您想编写自己的工具,您可能必须检查每个有效负载,最简单的方法可能是某种哈希/校验和来检查相同的有效负载。只需确保您检查的是有效负载,而不是整个数据包。

至于统计数据,我将不得不听从对 TCP 工作原理有更深入了解的人。

【讨论】:

【参考方案4】:

发送相同的 PAYLOAD 可能相当普遍(尤其是在您运行某种网络服务时)。如果你的意思是发送相同的 tcp 段(header 和 all)或整个网络数据包(ip 和 up),那么概率大大降低。

【讨论】:

以上是关于找到具有相同有效负载的 TCP 数据包的概率?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取使用TCP传输的RTP有效负载(关于删除标头)

UWP:有效负载包含两个或多个具有相同目标路径的文件

有效负载包含两个或多个具有相同目标路径“System.Diagnostics.Tools.dll”的文件

什么是开销、有效负载和标头 [关闭]

tcp首部数据包中序列位和确认位详解。

如何按照基于 ml 的分类顺序将十六进制字符串转换为有意义的数据?