【网络基础】不同网段的主机之间进行ARP交互


冲突域:在同一个冲突域中的每一个节点都能收到所有被发送的帧。通常来说一个局域网就是一个广播域。
广播域:网络中能接收任一设备发出的广播帧的所有设备的集合
冲突域是基于第一层(物理层)
广播域是基于第二层(链路层)

网桥、交换机可以隔离冲突域,交换机所有端口各单独有一个冲突域,默认都在同一个广播域里,通过划分vlan可以划分不同广播域
路由器可以隔离广播域

ARP协议位于TCP/IP的网络层,与IP协议都位于网络层
ARP报文和IP协议等网络层协议都被封装在以太网的帧中,帧的协议类型字段指出此帧所携带的数据是ARP报文还是IP报文

ARP报文是由以太网帧进行封装传输的,没有封装进IP报文,
所以ARP报文中携带的目的IP、源IP、目的MAC、源MAC不是封装此ARP报文的帧的MAC头的地址,更不是IP报文头的源IP和目的IP
ARP请求/应答报文中的目的IP、源IP、目的MAC、源MAC始终是请求/应答双方的地址(请求时暂无目的MAC时填全0的MAC)
查看ARP报文的报文格式


[同网段]

    局域网net_A中的主机host_A第一次与同一局域网中刚上线的主机host_E通信
    net_A(192.168.111.0/24),host_A(192.168.111.11/24),host_E(192.168.111.33/24)

    要与对方通信,至少要知道对方的IP地址,即目的IP。主机host_E的IP地址作为已知的目的IP
    
    (1)主机host_A先判断自己与主机host_E是否在同一个网段。
       host_A将本机IP地址192.168.111.11与本机子网掩码255.255.255.0按位与,得到网段(192.168.111.0);
       host_E将本机IP地址192.168.111.33与本机子网掩码255.255.255.0按位与,得到网段(192.168.111.0);
       host_A与host_E位于同一局域网中
    
    (2)主机host_A根据主机host_E的IP地址,查找本机的ARP表,(添加ARP表截图)
       由于主机host_E刚上线,从未与主机host_A通信过,
       所以主机host_A的ARP表中没有主机host_E的IP地址对应的MAC地址,即没有找到主机host_E的MAC地址
    
    (3)主机host_A构造ARP请求报文并封装在广播帧中,向局域网net_A中的所有主机发送广播帧
    
       [广播帧]:
           “帧类型”字段指出此帧所携带的数据是ARP报文
           源MAC为host_A的MAC地址
           目的MAC为广播帧特定MAC地址FF:FF:FF:FF:FF:FF
           
           注:ARP是独立的三层协议,封装以太帧时直接在ARP报文外封装MAC源/目的地址即可,不需要经过IP协议封装
           
       [广播帧中的ARP报文]:
           ARP报文类型字段op指出此ARP报文类型为:请求
           本端host_A的源IP是192.168.111.11,源MAC地址是11:22:33:44:55:66
           对端host_E的目的IP是192.168.111.33,它的MAC地址是多少。请求时暂无目的MAC时填00:00:00:00:00:00
           
           

         
    (4)广播帧送达目的主机host_E,host_E构造单播帧向请求方host_A应答本机MAC地址
    
       局域网net_A中的所有主机均收到此广播帧,剥掉广播帧头,解析其中的ARP请求报文,目的IP与自身IP不匹配,将此帧丢弃。
       主机host_E解析出此广播帧中ARP请求报文的目的IP地址与本机IP地址一致,更新自身的ARP表:
       将host_A的IP地址与host_A的MAC地址作为一条ARP表项,添加到本机的ARP表中
       (ARP条目192.168.111.11---11:22:33:44:55:66)
       主机host_E构造ARP应答报文,封装在单播帧中,以单播的方式将帧发送给host_A
       
       [单播帧]:
           “帧类型”字段指出此帧所携带的数据是ARP报文
           源MAC为host_E的MAC地址
           目的MAC为host_A的MAC地址
           
           注:封装以太帧时直接在ARP报文外封装MAC源/目的地址即可,不需要经过IP协议封装
           
       [单播帧中的ARP报文]:
           ARP报文类型字段op指出此ARP报文类型为:应答
           本端host_E的源IP是192.168.111.33,告知本机的MAC地址为aa:bb:cc:dd:ee:ff
           对端host_A的目的IP是192.168.111.11,目的MAC地址是11:22:33:44:55:66   
    
    (5)host_A收到此单播帧后,解析出ARP报文的内容,更新自身的ARP表
       增加ARP条目192.168.111.33--aa:bb:cc:dd:ee:ff
       
    至此,host_A与host_E可以通信
       
       
[不同网段]

    局域网net_A中的主机host_A第一次与局域网net_B中的主机host_E通信
    net_A(192.168.111.0/24),host_A(192.168.111.11/24),
    net_B(192.168.44.0/24),host_E(192.168.44.77/24)

    要与对方通信,至少要知道对方的IP地址,即目的IP。主机host_E的IP地址作为已知的目的IP

    (1)主机host_A先判断自己与主机host_E是否在同一个网段
    
       host_A将本机IP地址192.168.111.11与本机子网掩码255.255.255.0按位与,得到网段(192.168.111.0);
       host_E将本机IP地址192.168.44.77与本机子网掩码255.255.255.0按位与,得到网段(192.168.44.0);
       host_A与host_E位于不同的局域网中
       
       host_A查找自己的路由表,没有找到目的IP的条目
       
    (2)主机host_A需要借助默认网关Gateway_1与不同局域网的主机host_E通信
    
       主机host_A查找本机ARP表,找出默认网关Gateway_1的IP地址(192.168.111.1/24)对应的MAC地址,
       查到结果为网关Gateway_1的MAC地址为1a:1b:1c:1d:1e:1f
       (若没有此ARP条目,则按照上述[同网段]情景发送ARP请求)
       
       网关是位于主机所在网络边界的具有路由功能的设备,可以是路由器、启用了路由协议的服务器
       
       主机host_A将对host_E的ARP请求封装在以太帧中,发给默认网关Gateway_1
       帧的MAC地址为网关Gateway_1的MAC地址为1a:1b:1c:1d:1e:1f
       网关解出ARP请求的目的IP属于另一个网段,查找路由表,查找通往目的IP的下一跳IP
       
       若网关是路由器Router_1
       由连接在局域网net_A中的路由器Router_1接口interface_1接收,然后路由器Router_1查找其路由表(转发面),
       找到此ARP请求的目的IP与interface_2所连接的局域网net_B同网段,
       则由路由器Router_1查找interface_2接口所在局域网net_B的ARP表,若无对应ARP条目,
       则由路由器Router_1(代替host_A)在局域网net_B构造封装了此ARP请求的广播帧
       
           [广播帧]:
               帧的类型字段指出此帧所携带的数据是ARP报文(不是IP报文)
               源MAC为Router_1上interface_2接口的MAC地址
               目的MAC为广播帧特定MAC地址FF:FF:FF:FF:FF:FF
               
           [广播帧中的ARP报文]:
               请求的目的IP是192.168.44.77(host_E),它的MAC地址是多少,请求时暂无目的MAC时填00:00:00:00:00:00
               请求的源IP是192.168.111.11(host_A),源MAC地址是host_A的MAC地址11:22:33:44:55:66
               
       由interface_2接口向局域网net_B发送封装了ARP请求的广播帧,查找host_E的MAC地址
       
       
    (3)主机host_E发送封装了ARP应答的单播帧
       
       主机host_E收到封装了此ARP的广播帧后,剥掉帧的MAC头,取出ARP报文,从ARP报文取出目的IP,匹配自己的IP,
       然后发送封装了ARP应答的单播帧
       
           [单播帧]:
               “帧类型”字段指出此帧所携带的数据是ARP报文
               源MAC为主机host_E的MAC地址
               目的MAC是interface_2接口的MAC
               
               注:封装以太帧时直接在ARP报文外封装MAC源/目的地址即可,不需要经过IP协议封装
               
           [单播帧中的ARP报文]:
               本端host_E的源IP是192.168.111.33,告知本机的MAC地址为aa:bb:cc:dd:ee:ff
               对端host_A的目的IP是192.168.111.11,目的MAC地址是11:22:33:44:55:66  
       
               注:ARP请求/应答报文中的目的IP、源IP、目的MAC、源MAC始终是请求/应答双方的地址(请求时暂无目的MAC时填全0的MAC)

    (4)路由器Router_1解析局域网net_B的单播帧,识别ARP应答,将此ARP应答封装二层MAC头,构造局域网net_A的单播帧并发送
    
       路由器Router_1收到后,解包识别帧中携带ARP应答报文的目的IP,发现此IP在interface_1接口的局域网net_A中,
       再在局域网net_A中构造封装了此ARP应答报文单播帧
       
           [单播帧]:
               “帧类型”字段指出此帧所携带的数据是ARP报文
               源MAC地址是路由器Router_1接口interface_1的MAC地址
               目的MAC是主机host_A的MAC地址
               
           [单播帧中的ARP报文]:
               本端host_E的源IP是192.168.111.33,告知本机的MAC地址为aa:bb:cc:dd:ee:ff
               对端host_A的目的IP是192.168.111.11,目的MAC地址是11:22:33:44:55:66  
        
       主机host_A此ARP的单播帧后,剥掉帧的MAC头,解析ARP应答报文,从ARP报文取出目的IP,匹配自己的IP,更新本机ARP表
       
    至此,host_A与host_E可以通信

 

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值