linux - 捕获数据包的网络和传输层功能

标签 linux network-programming tcp libpcap packet-capture

我有一个在 TCP 上通信的客户端和服务器程序,在应用层上实现 IEC-60870-5-104 协议(protocol)。我正在嗅探他们之间所有流量的副本, 我如何在 C 中从 libpcap 嗅探的数据包上精确复制 IP 和 TCP 层功能?。像 IP 重组、管理无序 段、重新传输复制 TCP 段和分离 PDU,这样我得到的数据包就好像我在服务器的应用层上嗅探一样。 (另外请建议任何有助于做到这一点的框架)。

最佳答案

这是一项非常困难且复杂的任务。这就是网络入侵检测/深度包检测系统所做的,据我所知,没有处理它的嵌入式库。

你最好的选择是建立在一个现有的系统上,比如 Bro 或 Suricata(或者可能是 wireshark 内部),它已经在进行 session 跟踪、状态管理、重新组装、重新排序、重复检测等。你可以然后添加自己的应用层解码以对提供的重新组装的数据流进行操作。

关于linux - 捕获数据包的网络和传输层功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48382272/

相关文章:

python - Scrapy FakeUserAgentError : Error occurred during getting browser

java - 从文件中删除重复行

c# - 每个 WebRequest.Create() 都有不同的 TCP 连接

c# - SQL 在负载测试中拒绝连接

c - 检测断开连接的客户端而不阻塞 (C)

c - 每个中断处理程序都需要自旋锁吗?

linux - Groovy sh 命令在我的 echo 命令中不包含引号

c - IP头的分解

linux - 我可以做些什么来减少 TCP 在 ubuntu 中的拥塞控制的影响?

c# - 在启动 TCP 服务器之前如何优雅地启动 C# TCP 客户端