1.  什么是ARP协议?

   网络层以上的协议用IP地址来标识网络接口,但以太数据帧传输时,以物理地址来标识网络接口。因此我们需要进行IP地址与物理地址之间的转化。对于IPv4来说,我们使用ARP地址解析协议来完成IP地址与物理地址的转化(IPv6使用邻居发现协议进行IP地址与物理地址的转化,它包含在ICMPv6中)。 ARP协议提供了网络层地址(IP地址)到物理地址(mac地址)之间的动态映射。ARP协议 是地址解析的通用协议。

2.  工作流程

   1.每个主机都会在自己的 ARP 缓冲区中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址(以太网地址)之间的对应关系。

   2.主机(网络接口)新加入网络时(也可能只是MAC 地址发生变化,接口重启等), 会发送免费ARP报文把自己IP地址与Mac地址的映射关系广播给其他主机。

   3.网络上的主机接收到免费ARP报文时,会更新自己的ARP缓冲区。将新的映射关系更新到自己的ARP表中。

   4.某个主机需要发送报文时,首先检查 ARP 列表中是否有对应 IP 地址的目的主机的 MAC 地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送 ARP 数据包,该数据包包括的内容有:源主机 IP 地址,源主机 MAC 地址,目的主机的 IP 地址等。

   5.当本网络的所有主机收到该 ARP 数据包时:

(A)首先检查数据包中的 IP 地址是否是自己的 IP 地址,如果不是,则忽略该数据包。

(B)如果是,则首先从数据包中取出源主机的 IP 和 MAC 地址写入到 ARP 列表中,如果已经存在,则覆盖。

(C) 然后将自己的 MAC 地址写入 ARP 响应包中,告诉源主机自己是它想要找的 MAC 地址。

6.源主机收到 ARP 响应包后。将目的主机的 IP 和 MAC 地址写入 ARP 列表,并利用此信息发送数据。如果源主机一直没有收到 ARP 响应数据包,表示 ARP 查询失败。

3.  获取目的端的MAC地址(在一个以太网中)步骤如下:

1.发送ARP请求的以太网数据帧给以太网上的每个主机,即广播(以太网源地址填全1)。ARP请求帧中包含了目的主机的IP地址。 
         2.目的主机收到了该ARP请求之后,会发送一个ARP应答,里面包含了目的主机的MAC地址。

4.  报文格式(ARP 帧)

   

最新文章

  1. Cocos2d-x 3.X 事件分发机制
  2. Ember.js入门教程、博文汇总
  3. iOS交互WebService(cxf框架)
  4. secureCRT背景颜色设置
  5. primefaces p:tableData 显示 List<List>
  6. Unity(三)依赖注入
  7. windows关机命令
  8. Servlet的尾(yi)巴---filter ( 过滤器 )的小应用
  9. VisualVM 性能分析概述
  10. ArrayList的toArray
  11. Spring+Redis的部署与Redis缓存使用示例
  12. css子元素添加绝对定位,不添加top、left会有影响吗???
  13. 易爆物D305
  14. 使用numpy与matplotlib.pyplot画图
  15. WINDBG常用方法
  16. Linux命令学习笔记1
  17. java学习(五)Number类、Math类
  18. Real-time 3D Reconstruction using Kinect
  19. 可变参数宏...和__VA_ARGS__
  20. E: 无法获得锁 /var/cache/apt/archives/lock - open (11 资源临时不可用)

热门文章

  1. PTA QQ Account Manageme【map的巧妙应有】
  2. bzoj 3576: [Hnoi2014]江南乐【博弈论】
  3. locale localedef --之Linux字符集理解
  4. day04 TimeZone类
  5. Qt文本读写之一:输入输出设备和文件操作
  6. AtCoder Grand Contest 015 E - Mr.Aoki Incubator
  7. Brush (III) LightOJ - 1017
  8. 关于web中的路径
  9. 更新项目,uwsgi重新加载和日志文件
  10. spring在非容器管理的类里获取bean