zoukankan      html  css  js  c++  java
  • ARP协议

    ARP协议

    ARP(Address Resolution Protocol),即地址解析协议,用于实现从IP地址到MAC地址的映射。整个ARP协议交互过程仅需要两个包,一问一答即可搞定。

    报文格式

    • 硬件类型(2字节):arp底层使用的物理网络协议,比如1代表以太网协议。
    • 协议类型(2字节):arp上层使用的网络协议,比如0x0800代表IPv4。
    • 硬件长度(1字节):物理地址(MAC)的长度,以字节为单位,对于以太网地址为6。
    • 协议长度(1字节):逻辑地址(IP)的长度,以字节为单位,对于IPv4为4。
    • 操作码(1字节):用来定义报文的类型,ARP请求(1),ARP响应(2)。
    • 源硬件地址:发送方的物理地址。
    • 源逻辑地址:发送方的逻辑地址。
    • 目的硬件地址:目标的物理地址。
    • 目的逻辑地址:目标的逻辑地址。

    ARP协议流程

    1. 当A向本局域网中的B发送IP报文时,现在自己本地的ARP缓存中查看,是否有B的IP地址对应的MAC地址,有就将该MAC填在以太帧的目的地址中,否则进入流程2;
    2. 局域网广播ARP请求报文(以太帧的目的地址为ff:ff:ff:ff:ff:ff),广播的主要内容是:“我的IP地址是IP_A,我的硬件地址是MAC_A,我要知道IP地址为IP_B的主机的硬件地址”,进入流程3;
    3. B接收到ARP请求报文,并发现要找的人就是自己,那么回复ARP响应报文:“我的IP是IPB,我的硬件地址是MACB”,进入流程4;
    4. A接收到ARP响应报文,那么更新本地ARP缓存,然后就可以正常发送IP报文了。

    为什么有的arp请求报文不是广播

    有时在用wireshark抓包会发现,有的arp请求报文中以太帧的目的地址不是ff:ff:ff:ff:ff:ff,而是一个确定的MAC地址(准确的说就是要查找的IP对应的MAC地址),这是因为这是ARP在删除本地的ARP缓存的一条记录时(到了存活时间),那么不会选择广播的方式来重新获取该IP对应的MAC地址,而是直接将现有的MAC地址作为以太帧的目的地址,这样可以减少ARP广播对网络资源的消耗。

  • 相关阅读:
    Visual Studio.Net 已检测到指定的Web服务器运行的不是ASP.NET1.1版。您将无法运行ASP.NET Web应用程序或服务。
    ActiveX 部件不能创建对象
    XML Schema帮你建模
    XBRL CHINA - XBRL入门
    Xml文档验证—编程篇
    怎样用XML技术对数据库进行操作
    Vclskin 问答
    Altova XMLSpy Ent 2006 汉化特别版 破解版
    一个通过DataSet操作XML的类
    XML Schema教程
  • 原文地址:https://www.cnblogs.com/HachikoT/p/13701164.html
Copyright © 2011-2022 走看看