如何在单个 TCP 数据包中从不同文件中分离数据?
Posted
技术标签:
【中文标题】如何在单个 TCP 数据包中从不同文件中分离数据?【英文标题】:How to separate data from different files in a single TCP packet? 【发布时间】:2021-03-01 06:53:36 【问题描述】:假设我已经传输了 2 个文件 A.bin 和 B.bin 的数据,因为一个 TCP 数据包可以包含来自多个文件的数据,从随机位置开始, wireshark抓包后,如何识别包的哪一部分数据属于哪个文件(假设我没有原始文件A.bin和B.bin)?
【问题讨论】:
仅供参考:如果您只是尝试提取 2 个文件,A.bin 和 B.bin,并且这些文件是使用HTTP,那么您应该能够使用 Wireshark 的 File -> Export Objects -> HTTP... 功能提取它们。 【参考方案1】:TCP 是一个字节流。它没有固有的消息语义,即既不在数据包边界也不在数据包内部。任何消息语义都需要由应用层协议完成,或者必须以某种方式固有在传输的数据中。
如果没有特定的应用程序协议以某种方式描述 A.bin 的结束位置和 B.bin 的开始位置,并且如果这些信息不是这些文件中固有的(例如具有特定的文件格式),那么就不可能分离这些文件。但是假设这是一个真实世界的应用程序,其中接收者知道如何分离文件,那么您必须将接收者拥有的相同知识应用于您的数据包捕获。但是没有通用的魔术方法。
【讨论】:
以上是关于如何在单个 TCP 数据包中从不同文件中分离数据?的主要内容,如果未能解决你的问题,请参考以下文章