zoukankan      html  css  js  c++  java
  • ARP-Address Resolution Protocol-地址解析协议

    主要内容摘自:图解TCP/IP

    ARP是一种解决地址问题的协议。以目标IP地址为线索,用来定位下一个应该接受数据分包的网络设备的mac地址。

    如果目标主机不在同一个链路上时,可以通过ARP查找下一跳路由器的MAC地址。

    不过ARP只适用于IPv4,不能用于IPv6。IPv6可以用ICMPv6替代ARP发送邻居探索消息。

    ARP的工作机制

    ARP是如何知道MAC地址的呢?简单地说,ARP是借助ARP请求与ARP响应两种类型的包确定MAC地址的。

    从一个IP地址发送ARP请求包以了解其MAC地址(同时ARP请求包也将自己的MAC地址告诉了对方),目标地址将自己的MAC地址填入其中的ARP响应包返回到IP地址。由此,可以通过ARP从IP地址获得MAC地址,实现链路内的IP通信。

    不是每次发送一个IP数据报都要进行一次ARP请求,接收端主机缓存MAC地址,提高效率,避免不必要的网络流量。

    记录IP地址与MAC地址对应关系的数据库叫做ARP表。在UNIX或windows中可以通过“arp -a”命令获取该表信息。每执行一次ARP,其对应的缓存内容都会被清除。此外,MAC地址的缓存是有一定期限的。超过这个期限,缓存的内容将被清除。

    ARP包格式

    RARP

    RARP (Reverse Address Resolution Protocol)是将ARP反过来,从MAC地址定位IP地址的一种协议。

    一般用于向RARP服务器获取IP地址。

    代理ARP

    通常ARP包会被路由器隔离,但是采用代理ARP(proxy ARP)的路由器可以将ARP请求转发给邻近的网段。由此,两个以上的网段的节点之间可以像在同一个网段中一样进行通信。

    在目前的TCP/IP网络中,一般情况下用路由器连接多个网络时,会在每个网段上定义各自的子网,从而进行路由控制。然而,对于那些不支持设定子网掩码的老设备来说,不适用代理ARP,有时就无法更好地适用网络。

    ARP命令

    一般执行arp -a即可显示所有网口mac。windows mac如下,-s添加,-d删除,-a显示。

    ARP -s inet_addr eth_addr [if_addr]
    ARP -d inet_addr [if_addr]
    ARP -a [inet_addr] [-N if_addr] [-v]

    ARP包解析

    通过wireshark抓取arp包。

    arp请求包

    arp响应包

  • 相关阅读:
    华为机试:字符串翻转
    华为机试:数字颠倒
    华为机试:字符个数统计
    华为机试:提取不重复的整数
    华为机试:取近视值
    华为机试:进制转换
    华为机试:字符串分隔
    华为机试:明明的随机数
    华为机试:字符串最后一个单词的长度
    网易:相反数
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/6936975.html
Copyright © 2011-2022 走看看