如何在 C# 中获取原始 TCP 数据包

本文关键字:原始 TCP 数据包 获取 | 更新日期: 2023-09-27 18:37:06

我想接收原始TCP数据包,然后以相同的工作负载将其发回。

它应该看起来像这样:

void OnPacketReceived(TcpPacket p)
{
    byte [] body = p.GetBody();
}

注意:我需要TCP数据包而不是以太网帧。

如何在 C# 中获取原始 TCP 数据包

如果将

套接字实现为原始套接字,则可以访问整个数据包(实际上必须自己处理有关数据包的所有内容)。

创建套接字时使用 SocketType.Raw 和 ProtocolType.Raw。

请注意,如果您以这种方式实现套接字,则必须处理TCP的详细信息。

作为参考,下面是有关套接字类的 MSDN 文档:http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.aspx

您可以使用 pcapDotNet 库。

https://pcapdotnet.codeplex.com/

您需要使用数据包嗅探器,您可以在其中放置您选择的过滤器,并在此基础上也可以响应。

WinPcap周围的.net包装器可以证明对您有所帮助。