什么是ARP协议?

ARP,即地址解析协议,实现通过IP地址得知其物理地址。在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在物理网路上传送,必须知道对方目的主机的物理地址。这样就存在把IP地址变换成物理地址的地址转换问题。以以太网环境为例,为了正确地向目的主机传送报文,必须把目的主机的32位IP地址转换成为48位以太网的地址。这就需要在互连层有一组服务将IP地址转换为相应物理地址,这组协议就是ARP协议。

ARP协议的数据结构:

  typedef structarphdr

  {

  unsigned short arp_hrd;/*硬件类型 ARP协议时值为0X0001*/

  unsigned short arp_pro;/*协议类型 ARP协议时值为0X0800*/

  unsigned char arp_hln;/*硬件地址长度 ARP协议时值为6*/

  unsigned char arp_pln;/*协议地址长度 ARP协议时值为4*/

  unsigned short arp_op;/*ARP操作类型 1为请求,2为应答,3为RARP请求,4为RARP应答*/

  unsigned char arp_sha[6];/*发送者的硬件地址*/

  unsigned long arp_spa;/*发送者的协议地址*/

  unsigned char arp_tha[6];/*目标的硬件地址*/

  unsigned long arp_tpa;/*目标的协议地址*/

  }ARPHDR,*PARPHDR;

ARP协议用于获取目标IP的MAC地址;

什么是免费ARP?

有一个免费ARP的概念:就是主机发ARP包查找自己的MAC地址;

免费ARP可以有两方面的作用:

1.一个主机通过它来确定另一个主机是否设置了相同的IP地址。主机并不希望对此请求有一个回答,

但是,如果收到一个回答,那么就会在终端日志上产生一个错误消息"以太网地址:a:b:c:d:e:f发送来

重复的IP地址",这样可以警告系统管理员,某个系统有不正确的设置。

2.如果发生免费ARP的主机正好改变了硬件地址(很可能是主机关机了,并换了一块接口卡,然后重新启动),

那么这个分组就可以使其他主机高速缓存中旧的硬件地址进行相应的更新。一个应用的例子,通过发送含有

备份硬件地址和故障服务器的IP地址的免费ARP请求,使得备份文件服务器可以顺利的接替故障服务器进行各种。

这使得所有目的地为故障服务器的报文都被送到备份服务器那里,客户程序不用关心原来的服务器是否出了故障。

在windows下进行相关操作时可以直接使用Windows IP辅助API应用程序接口模块。iphlpapi.h里面的相关函数。

最新文章

  1. 【luogu】 P1880 石子合并
  2. 给vs2010换皮肤
  3. github代码上传之命令提交
  4. Android -- 闹钟服务的使用(启动与停止)
  5. AEScrypto WEB and ANDROID (GITHUB)
  6. VS简介
  7. jquery导航二级栏目下拉
  8. RestFul && HATEOAS && Spring-Data-Rest介绍
  9. LeetCode 面试:Add Binary
  10. FileUpload控件
  11. Opencv 学习资料集合(更新中。。。)
  12. WinForm - ListView点击空白事件
  13. 关于C#时间格式化中的“f”
  14. Mysql 基础语法1
  15. JS画几何图形之五【过圆外一点作切线】
  16. macOS 版微信小助手,支持微信多开、防撤回、远程控制mac、自动回复等等
  17. Java容器——List接口
  18. 前端学习历程--localstroge
  19. laravel config 配置无效
  20. Redis入门到高可用(十二)—— pipeline

热门文章

  1. python标准库介绍——22 UserList 模块详解
  2. python函数中参数是如何传递的?
  3. mysql添加和root用户一样的权限
  4. Java总结篇系列:Java多线程(四)
  5. php excel类 phpExcel使用方法介绍
  6. 关于navigationBar的颜色计算与默认透明度
  7. HDU 4565 So Easy!(公式化简+矩阵)
  8. angular学习笔记(四)- input元素的ng-model属性
  9. [转]C#通过Http发送Soap请求
  10. maven打包可以行文件,包含依赖包等