gpt4 book ai didi

TCP/IP编程,多包数据

转载 作者:可可西里 更新时间:2023-11-01 02:40:24 24 4
gpt4 key购买 nike

我正在使用 libpcap 用 C 编写一个应用程序。我的程序监听新数据包并解析它们根据语法。负载实际上是 XML。

有时一个数据包不足以容纳一个 XML 文件,因此 XML 缓冲区被拆分成单独的数据包。我想添加代码逻辑来处理这些情况。但是我事先并不知道数据包不包含全部数据。我怎么知道一个数据包有更多数据接下来要发送?我如何识别一个新数据包包含其余数据?

我必须使用 TH_FIN 标志吗?你能给我解释一下吗?

最佳答案

TCP 中没有任何内容定义数据包,这取决于更高层是否需要定义 - TCP 只是一个流。

如果这是 TCP 流上的原始 XML,您实际上需要解析 xml - 当您收到文档元素的末尾时,您就会知道何时拥有完整的 xml 文档。如果它是通过 HTTP 打包的 XML,您可能能够解析出 Content-Length: header ,其中应包含正文的长度。

请注意,从捕获的数据包中重组 TCP 流是一个非常困难的问题,有很多极端情况,例如您需要处理重传、乱序的 tcp 段等等。 http://libnids.sourceforge.net/可能对你有帮助。

关于TCP/IP编程,多包数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2240962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com