【问题标题】:TCP Traceroute in C#C# 中的 TCP 跟踪路由
【发布时间】:2011-02-03 21:51:31
【问题描述】:

如何在 C# 中执行 TCP 跟踪路由?有没有可能?

【问题讨论】:

标签: c# tcp traceroute


【解决方案1】:

您将需要原始以太网帧来手动生成 TCP 数据包,因为 Windows 不允许您通过原始套接字发送 TCP 数据包。

了解 nmap 如何获取原始以太网帧。重复一遍。

【讨论】:

  • 我可以用这个吗? codeproject.com/KB/IP/CSNetworkSniffer.aspx他好像用C#实现了一个网络嗅探器
  • 不抱歉。您可以通过这种方式读取所有内容,但您的出站 TCP 数据包永远不会到达网络。
  • 我正在阅读一些关于此的内容,似乎是导致原始数据包限制的 Windows XP SP2 修复 - 如果我的应用程序针对 Windows Server 2008 怎么办?也有这个限制吗?
  • 抱歉,从那以后每个 Windows 版本中都有。
  • 看下面的答案,你仍然不能在 windows server 2008 上的原始数据包上做 tcp 帧
【解决方案2】:

来自 MSFT:http://msdn.microsoft.com/en-us/library/ms740548(VS.85).aspx

在 Windows 7、Windows Server 2008 R2、Windows Vista 和带有 Service Pack 2 (SP2) 的 Windows XP 上,通过原始套接字发送流量的能力受到多种方式的限制:

  • TCP 数据不能通过原始数据发送 插座。
  • 具有无效源的 UDP 数据报 地址不能通过原始发送 插座。的 IP 源地址 任何传出的 UDP 数据报必须存在 在网络接口或 数据报被丢弃。这种变化是 限制能力 恶意代码创建分布式 拒绝服务攻击和限制 发送欺骗数据包的能力 (具有伪造源的 TCP/IP 数据包 IP 地址)。
  • 使用绑定函数调用 不允许使用原始套接字。

上述限制不适用于 Windows Server 2008、Windows Server 2003 或 Windows XP SP2 之前的操作系统版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 2021-03-05
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    相关资源
    最近更新 更多