为啥使用 PCap.NET 发送的数据包没有填写 TCP 选项?

Posted

技术标签:

【中文标题】为啥使用 PCap.NET 发送的数据包没有填写 TCP 选项?【英文标题】:Why does a packet sent using PCap.NET not fill out the TCP options?为什么使用 PCap.NET 发送的数据包没有填写 TCP 选项? 【发布时间】:2019-07-15 15:06:20 【问题描述】:

我正在尝试使用 PCap.NET 将 SYN 数据包发送到目的地。使用 WinSock API 时,我可以在 Wireshark 中看到 TCP 选项......但是当我使用 PCap.NET 构建和发送数据包时,这些选项不包括在内。这是我用来构建数据包的 TCP 层:

 TcpLayer tcpLayer = new TcpLayer
                
                    SourcePort = _sourcePort,
                    DestinationPort = _destinationPort,
                    SequenceNumber = _seqNumber,
                    ControlBits = TcpControlBits.Synchronize,
                    Window = _windowSize,
                ;

这是使用 WinSock 发送 SYN 的 WireShark ScreenGrab,其中 TCP 选项是可见的。

这是使用 PCap.NET 发送 SYN 的 Wireshark ScreenGrab,其中 TCP 选项不可见。

我知道在构建 Pcap TCP 层时,您可以将 options 属性设置为 None....以与 WinSock 相同的方式发送。任何人都可以为这个问题提供任何解释或建议。提前感谢您的帮助!

【问题讨论】:

【参考方案1】:

如果您创建一个新的TcpLayer,您需要设置Options 属性以便在 TCP 层中拥有选项。 如果您不设置Options 属性,则默认情况下将设置为None

【讨论】:

以上是关于为啥使用 PCap.NET 发送的数据包没有填写 TCP 选项?的主要内容,如果未能解决你的问题,请参考以下文章

pcap.net ReceivePacket 无法正常工作

如何更改 PCap.Net 数据包数据?

Pcap.net vs Sharppcap

.net 数据包捕获:pcap.net 与 Sharppcap

如何将 Pcap.Net 数据包类对象导出到 .pcap 文件

使用 pcap.net 在同一网络中捕获不同 PC 的网络数据包