65. ARP的优点与缺点正好与ICMP相反 。它无法跨物理网段进行IP查找,但是由于没有防火墙禁止ARP包的通过(想想看,如果禁止了ARP包,也就等于不让人家知道你的物理地址,那么实际上也就是将自己的计算机同网络断开了),所以ARP包的IP查找结果一定是非常精准的 。
66.在实现了一个原始的ARP IP查找版本以后,我发现其结果并不准确,有些已经没有人使用的IP地址被错误的报成有人占用了,难道我的判断是错误的?
67.当然不,这种错误的原因是在Windows 的ARP缓冲中 。实际上,在发送一个ARP报文的时候,Windows会首先检查本机的ARP缓冲,如果发现了已经有对应的ARP表项,而且还没有过期的话,Windows 并不会发送这个报文,而是直接返回给调用者这个ARP表项的内容 。
68.这样一来,假设有计算机中途掉网,而它的ARP表项还没有过期,那么这个程序仍然能够得到它的IP到MAC的映射,自然也就会错误的宣称这个IP地址还在使用中了 。
69.在运行这个程序前,我使用arp –d(事实上,在看了本文以后,你就可以实现一个这样的arp程序了)这个命令来删除缓冲中所有的ARP表项,然后得到的结果就非常准确了 。
70.IP Helper API 提供了管理ARP缓冲的过程,所以我修改了这个程序,把arp –d的功能集成到了自己的程序中来 。
71.如果看看《使用TCP/IP协议实际网际互连(第二卷)》你就会明白ARP协议软件中的诸多问题 。IP Helper API GetIpNetTable 函数能够提取出本机上的所有ARP表项 。
72.使用它的方法与上一篇文章中使用的函数相当的类似,你也必须两次使用它,第一次获得缓冲的大小,而第二次获得实际的ARP表 。
73.这个映射表是以数组的方式指出的 。其结构如下: typedef struct _MIB_IPNETTABLE {DWORD dwNumEntries; //数组的大小MIB_IPNETROW table[ANY_SIZE]; //数组本身 } MIB_IPNETTABLE,*PMIB_IPNETTABLE; 而MIB_IPNETROW 的定义: typedef struct _MIB_IPNETROW {DWORD dwIndex; // 网络接口的索引号DWORD dwPhysAddrLen; // 物理地址长度BYTE bPhysAddr[MAXLEN_PHYSADDR]; // 物理地址DWORD dwAddr; // IP地址DWORD dwType; // ARP表项类型 } MIB_IPNETROW,*PMIB_IPNETROW;其中dwType 即ARP表项类型是比较重要的东西,因为某些ARP表项一但设定就不再改变,比方本机地址的ARP表项和默认网关的地址表项等等,这些ARP表项并不会“过期”,除非网络故障或者设置改变了以后,会重新生成一次ARP查询 。
74.这种表项被称为“静态”的 。此时dwType的值为4 。在程序中,我们不必删除这类表项(虽然删了它们也不会造成什么后果) 。
75.然而在实际的程序中,我使用了FlushIPNetTable这个函数来删除特定网卡上的ARP缓冲 。
76.然后是删除一个表项的DeleteIpNetEntry,修改表项的SetIpNetEntry 和添加表项的CreateIpNetEntry。
77.还有两个管理代理ARP表项的函数,关于代理ARP,可以看看《使用TCP/IP 协议实现网际互连(第一卷)》关于ARP代理的部分,由于与我们的程序无关,就不做介绍了 。
78.最后需要详述的函数是SendARP 。它的原型如下: DWORD SendARP(IPAddr DestIP,// 目的IP 地址IPAddr SrcIP,// 源IP地址,可选参数,把它填成0不会有问题PULONG pMacAddr,// 返回的物理地址PULONG PhyAddrLen // 物理地址的长度 );对于我们的这个程序来说,返回了什么样的值并不重要,只要它成功的返回了,就说明这个IP被占用了 。
三.360家庭防火墙怎么取消360防火家庭防火墙要想取消其实很简单的你在呃防火墙那里点击,然后看到了之后进行取消就可以,或者干脆是把它卸载
四.华为手机连接无线网时出现360家庭防火墙是什么意思?华为手机有很多都自带有奇虎360的杀毒软件,这个没事,有防火墙给你用更好 。
推荐阅读
- 360电话手表怎么关机 360电话手表关机的方法
- 360电话手表怎么激活 360电话手表激活的方法
- 华为 360 小米 路由器怎么样啊,小米华为360哪家路由器好
- mt3608,MT3608电路
- 仅售1399的360N5测评报告,360n5版本是多少
- 扫地机器人内卷了,家庭机器人
- lg ks360,LG ks360这款手机怎么样
- 三星s5怎么下载软件 三星s5360软件下载
- 家庭类别一栏怎么填写
- 家庭影院品牌排行榜前十名,网络高清播放器有3D功能排名前十的品牌是哪些