zoukankan      html  css  js  c++  java
  • ARP协议工作原理

    一、ARP在同网段下的工作原理

            每台主机都会在自己的ARP缓冲区中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;

      如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。

      如果源主机一直没有收到ARP响应数据包,表示ARP查询失败

    例如: 

    A的地址为:IP:192.168.10.1   MAC: AA-AA-AA-AA-AA-AA 
    B的地址为:IP:192.168.10.2   MAC: BB-BB-BB-BB-BB-BB 

      根据上面的所讲的原理,我们简单说明这个过程:A要和B通讯,A就需要知道B的以太网地址,于是A发送一个ARP广播请求(谁是192.168.10.2 ,请告诉192.168.10.1),当B收到该广播,就检查自己,结果发现和自己的一致,然后就向A发送一个ARP单播应答(192.168.10.2 的MAC地址是BB-BB-BB-BB-BB-BB)。

     

    二、局域网中跨网段主机间通讯

            不同网段的主机通信时,主机会封装网关(通常是路由器)的mac地址,然后主机将数据发送给路由器,后续路由进行路由转发,通过ARP解析目标地址的mac地址,然后将数据包送达目的地。具体过程分析如下:

     

      如上图,主机A、B通过路由器连接,属于两个不同的网段,子网掩码24(255.255.255.0)

    1、主机A有数据发往主机B,数据封装IP之后发现没有主机B的mac地址;然后查询ARP,ARP回应:“我在192.168.3.0/24网段,目标地址在192.168.4.0/24,不属于同一网段,需要使用默认网关”;ARP发现默认网关是192.168.3.2,但是没有网关mac地址,需要先进行查询;

    2、主机将数据包先放到缓存中,然后发送ARP查询报文:封装自己的mac地址为源mac,目标mac地址写全F的广播地址,请求网关192.168.3.2的mac地址。然后以广播方式发送出去;

    3、路由器收到广播数据包,首先将192.168.3.1添加到自己的mac地址表中,对应mac地址为0800.0222.2222。路由发现是请求自己的mac地址,然后路由回复一个ARP应答:封装自己的IP地址为源IP自己的mac地址为源mac,主机A的IP为目的IP主机A的mac为目的mac,发送一个单播应答(我是192.168.3.2,我的MAC地址为0800.0333.2222);

    4、主机收到应答后,将网关MAC地址和IP地址192.168.3.2存到自己的mac地址表中(跨网关通信,其他网段IP地址的mac地址均为网关mac),然后将缓存中的数据包,封装网关mac地址进行发送;

    5、路由收到数据包,检查目的IP地址,发现不是给自己的,决定要进行路由,然后查询路由表,需要发往192.168.4.0网段中的192.168.4.2地址。路由准备从相应接口上发出去,然后查询mac地址表,发现没有主机B的映射。路由器发送arp请求查询主机B的mac地址;

    6、路由器收到主机B的mac地址后,将其添加到路由mac地址表中,然后将缓存中的数据帧头去掉,封装自己的mac地址为源mac,主机B的mac地址为目的mac(源和目的IP地址不变),加上帧头及校验,发送给主机B;

    7、主机B收到数据之后,进行处理,发送过程结束;

    8、如果主机B收到数据后进行回复,主机B会进行地址判断,不在同一网段,然后决定将数据发送给网关,主机B查询mac地址表获得网关mac地址,将数据封装后发送(ARP地址解析的过程不再需要了,mac地址表条目有一定的有效时间),网关收到数据后直接查询mac表,将二层帧mac地址更改为A的mac发送出去。如此,主机A收到主机B的回复;

      此外需注意点:
    1、ARP请求以广播发送、以单播回应
    2、路由器隔离广播,每一个网段都是独立的广播域

    3、跨越网段通信需要使用网关的mac地址

    4、整个过程中,源IP和目的IP不变,只改变源MAC和目的MAC

    原文链接:https://blog.csdn.net/qq_32220231/article/details/53511362

  • 相关阅读:
    yii 引入文件
    CodeForces 621C Wet Shark and Flowers
    面试题题解
    POJ 2251 Dungeon Master
    HDU 5935 Car(模拟)
    HDU 5938 Four Operations(暴力枚举)
    CodeForces 722C Destroying Array(并查集)
    HDU 5547 Sudoku(dfs)
    HDU 5583 Kingdom of Black and White(模拟)
    HDU 5512 Pagodas(等差数列)
  • 原文地址:https://www.cnblogs.com/yongjin-hou/p/14511109.html
Copyright © 2011-2022 走看看