• 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

  • 相关阅读:
    Openjudge 1.3 算数表达式与顺序执行
    Openjudge 1.2 变量定义、赋值并转换
    Openjudge 1.4 逻辑表达式与条件分支
    Openjudge 1.5 循环控制
    Openjudge 1.6 一位数组
    Openjudge 1.8 多维数组
    poj-3134 ida*||记录路径bfs
    wust-1588 日期模拟题
    wust 1599弗洛伊德
    hdu5667 费马小定理加矩阵快速幂
  • 原文地址:https://www.cnblogs.com/yongjin-hou/p/14511109.html
Copyright © 2020-2023  润新知