正好最近作过这个方面的针对性研究。
http://blog.csdn.net/liuxk99/archive/2004/09/17/108084.aspx
需要代码可以发给你
[email protected]

解决方案 »

  1.   

    可以不用ARP协议的,
    方法有2
    1。用SendARP(IP Helper里面的东西,但是仅仅支持win2000/xp)
    2.ping就可以了,如果对方存在防火墙的话,虽然不会返回icmp包,但是我这个时候就可以读取本地ARP缓冲表,用IP Helper里面的一个xx函数(偶不记得那个了,好像是GetIpNetTable),ping可以用系统的ping,用CreateProcess来循环调用,或者用IPHelper里面的IcmpSendEcho。这样就不要这么费周章了,比较winpcap是驱动级的,要安装。
      

  2.   

    纠正错误:可以不用ARP协议的
    改为
    可以不用winpcap的
      

  3.   

    to iorikingdom(iori)
    “2.ping就可以了,如果对方存在防火墙的话,虽然不会返回icmp包,但是我这个时候就可以读取本地ARP缓冲表,用IP Helper里面的一个xx函数(偶不记得那个了,好像是GetIpNetTable),ping可以用系统的ping,用CreateProcess来循环调用,或者用IPHelper里面的IcmpSendEcho。这样就不要这么费周章了,比较winpcap是驱动级的,要安装。”
    这个方法有实现的代码没有?我很想知道其中的细节。有的话能不能发过来,[email protected]
    不过通常用线程来发送和接受网络包,CreateProcess有点费资源吧!
      

  4.   

    没有现成的代码,我一般都是用别人的程序遍历ping一把,然后
    在命令提示符里面输入arp -a 这个就是懒人的做法,呵呵
      

  5.   

    ping采用的是icmp协议,《windows网络编程技术》13章讲解如何使用原始套接字来ping.
    ping不能穿越天网防火墙吧,在xp里面观察到的,可能是因为在tcp/ip协议栈中设置这个策略。但arp协议可以准确的查出ip到mac的映射!优化大师里有群集ping,用的就是多线程。to XmagicX(与code无缘)
    我还头次听说面试靠arp的,不知是那家公司,考的这么底层的东西。
      

  6.   

    楼上的兄弟,你可能没有了解到数据包的发送过程,icmp协议又怎么样?
    不一样要发送arp请求获取目标MAC,才能够填充icmp的帧头,除非本地的ARP映射表已经有了这个值供你数据包的查询,防火墙是能够截获icmp但是arp请求在这个时候已经成功,
    已经更新了系统的ARP表,所以你返不返回icmp不重要,重要是更新了ARP表,
    事实胜于雄辩,你应该自己试试。
    我这个方法是有点冗余,但是简单,起码你不用解包截包,不过说起来用winpcap不是很难,
    看各人爱好吧,反正偶懒人一个。
      

  7.   

    “ping不能穿越天网防火墙吧,在xp里面观察到的,可能是因为在tcp/ip协议栈中设置这个策略”这句话我不大理解你的意思。Icmp协议可以用NDIS中间层,或者NDIS HOOK的技术来截获,天网好像就是用NDIS 协议HOOK的技术来处理的,其实TDI还是可以截获ICMP的,但是微软不提供接口。所以在TDI传输层和SPI会话层都不可以截获ICMP,而不是因为什么策略。防火墙的原理和协议栈驱动希望楼上
    能够温习温习。不好意思,今天心情有点不好,得罪之处万望见谅。
      

  8.   

    "ping不能穿越天网防火墙吧,在xp里面观察到的,可能是因为在tcp/ip协议栈中设置这个策略"
    更正一下
    在防火墙软件中可以设置icmp响应的策略。
    当然ping的时候,首先检查缓冲区,如果没有还是会调用
    arp协议来获得对应的mac地址,这些方法最后都是用的arp,呵呵,没有问题。
      

  9.   

    "ping不能穿越天网防火墙吧,在xp里面观察到的,可能是因为在tcp/ip协议栈中设置这个策略"
    更正一下
    在防火墙软件中可以设置icmp响应的策略。
    当然ping的时候,首先检查缓冲区,如果没有还是会调用
    arp协议来获得对应的mac地址,这些方法最后都是用的arp,呵呵,没有问题。
      

  10.   

    "ping不能穿越天网防火墙吧,在xp里面观察到的,可能是因为在tcp/ip协议栈中设置这个策略"
    更正一下
    在防火墙软件中可以设置icmp响应的策略。
    当然ping的时候,首先检查缓冲区,如果没有还是会调用
    arp协议来获得对应的mac地址,这些方法最后都是用的arp,呵呵,没有问题。
      

  11.   

    我有篇文章不错讲解ARP的,email?