zoukankan      html  css  js  c++  java
  • ARP协议原理学习

    一、ARP的作用。

      首先在window 的命令行中输入arp -a即可查看本机的arp缓存表。主机要发送数据包时,需要填充目的IP及其IP地址对应的MAC。当我们只有目的IP地址时,如何得到其对应的MAC地址?

      此时ARP的作用就体现出来了。ARP就是通过IP来获取其对应的MAC地址。接下来阐述具体的过程。

    二、同网段下ARP工作原理。

    图 1

      如图1所示,h1与h2是处于同一网段并通过交换机s1连接。在h1上执行ping 10.0.0.3时,具体流程如下:

      1、h1在arp缓存表中h2 IP地址对应的mac,若未查询到进入第2步;

      2、h1将目的mac改为全F(即广播),目的IP为h2,发送除自己以外的s1端口中,询问“谁是10.0.0.3”,进入第3步;

      3、h3收到广播消息后,发现目的IP与自己不匹配,将其丢弃;而h2收到广播消息后,发现查找的是自己,就会发送一个单播帧给h1,

                 单播帧中包含h2的mac地址。同时h2也会在自身的arp表中记录h1的mac;

      4、h1收到h2的arp回应后,更新arp表,并发送数据给h2,实现h1与h2的ICMP可达;

    三、不同网段下ARP工作原理


     图 2

      如图2所示,主机h1与h2连接在路由器r2。h1与h2处于不同网段。在h1上执行ping 11.0.0.4,具体流程如下:

      1、h1查询本机的arp缓存表,发现目的IP与自身不在同一网段,则通过需要通过默认网关来查询h2的mac;

      2、h1需要先arp到网关10.0.0.1的mac地址,网关单播返回给h1,h1将数据包的目的mac改为f0的mac地址,目的IP为h2的IP 11.0.0.4

      3、r2收到数据包之后,r2解包后,发现目的IP不是自己,然后查看路由表,将数据包转发到相应的接口f1;

      4、此时不知道h2的mac地址,所以r2的f1接口中发送arp请求报文,源IP与源mac都是f1,目的IP为h2,目的mac全F,即广播查找h2的mac;

      5、h2返回自身的mac给r2,r2更新路由表,而后r2将h1的包修改为源IP与源mac为h1,目的IP与母的mac为h2,从端口f1发送出去。

      6、h2接收到数据包后,更新arp表,同样返回ICMP应答报文给h1,过程可跟1~5类似。

    四、新接入网络的主机是否会自动学习其他主机mac,建立arp缓存表?

      答案:不会,按照以上过程,只有双方有通信时,对方才会将其mac记录在arp缓存表中。

  • 相关阅读:
    项目1:即时标记
    每天一个小程序—0000题(python图像处理)
    每天一个小程序—0004题(统计单词出现次数)
    每天一个小程序—第0001题(uuid模块)
    python实现八皇后问题
    2018/01/05——时间会改变一切!
    HDU 6249 Alice’s Stamps(dp)
    51nod 1422 沙拉酱前缀
    【转】DSP动态内存分配函数的使用
    优秀人的博客
  • 原文地址:https://www.cnblogs.com/grglym/p/7651160.html
Copyright © 2011-2022 走看看