#原创分享# ARP 转发流程
  

ztbf 218

本帖最后由 ztbf 于 2020-2-5 11:44 编辑


   从事网络工作很多年,感到很多基础网络知识点是支撑工作重要工具,,比如arp转发,特别是上大学计算机专业表弟问我为什么转发需要arp时,才明白很多人不理解,当设备的数据过网络传给另一设备时,IP数据报文必须封装成帧才能通过物理网络发送,这个时候需要知道对端的MAC,而这需要ARP协议,另外vxlan转发流程也一样,后面有机会和大家交流下时也会写下,自己面试员工时,也喜拿这个当题目,所以分享给大家交流。


            先来简单点:    二层arp 转发流程,自己用viso画的图,说明下,

                                  199055e3a371a5373e.png
         

   当主机A和主机B在同一网段时,主机A查看自己的ARP表,确定其中是否包含B对应的ARP表项。如果找到了B对应的MAC地址,则A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给B。
     如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为A的IP地址和MAC地址,目标IP地址为B的IP地址,目标MAC地址为全0的MAC地址。由于ARP请求报文以广播方式发送

                        92295e3a37421cd38.png      

            该网段上的所有主机都可以接收到该请求,但只有被请求的主机B会对该请求进行处理。B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端A的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给A,其中包含了自己的MAC地址B向A发出一个包含其MAC地址的ARP响应报文。

                        807555e3a3770dcbcf.png

                                                     

               A收到ARP响应报文后,将BMAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去.
        
                4215e3a37c6435e7.png


  下面在来个三层arp转发流程,简单说明下

                   249335e3a37f99b577.png   



主机A和主机B不在同一网段时,主机A将数据包发送到网关由网关进行三层寻址转发,
           1  首先A会读arp缓存,看是否有网关ipmac地址的对应关系,如果有将直接封装帧转发;如果没有将使用arp协议也就是广播,携带自己的ip地址与mac地址,目的地址为网关ipmac地址为f

                                        611885e3a381f3ac52.png
            
            网关收到此arp广播后,将回复A自己的mac地址,数据包为网关ipmac地址目的为A ipmac地址。

                                          274545e3a3845f0829.png

                       主机A收到数据包后会将IP和MAC地址写入到电脑的arp缓存表里,并直接封装数据包,三层IP头为源A,目的为B,二层帧格式为源macA,目的为网关macC地址(记住此包头)。

                                    734345e3a38bde0ec8.png


         2    网关将收到A发来的数据包,进行拆包,根据其目的ip地址进行寻址(路由表),找到对应的,果查找到ipmac地址的对应关系将直接封装转发,如果没有交换机将发送arp广播包获取目的ip地址的mac地址.
                            169765e3a39591c731.png

  
          B接收到路由器发来的数据包,解封检验MAC地址为自己MAC 接收数据包,然后向源发送IC应答数据包,过程一样。
                                  57365e3a39a5a8cb0.png






           引申:自己遇到很多人问过,有一台电脑能正常访问其它服务器,而有一台不行,这个有故障的服务器能访问自己的网关,这个时候很有可能故障服务器没有配置网关引起的故障。

                              




                  


                                   






喜欢这篇文章吗?喜欢就给楼主打赏吧!

打赏
7人已打赏

Sangfor_闪电回_朱丽 发表于 2020-2-9 18:18
  
您好,感谢您参与社区原创分享计划6,您的文章已被收录到计划中,交由专家评审小组评审,文章标签在专家评审后设置,分享奖励将在活动结束后统一安排发放!分享越多,奖励越多,期待您更多的精彩分享哦!
关于技术文章的管理流程,请参考:https://bbs.sangfor.com.cn/forum.php?mod=viewthread&tid=90279
心灵鸡汤 发表于 2020-2-10 20:34
  
相当详细,学习了!
小兵123 发表于 2020-2-13 09:44
  
虽然是基础知识,但是百分之80的人估计都说不上来
YangZheng 发表于 2020-2-15 23:39
  
学习学习
新手612152 发表于 2020-2-17 09:16
  
新年第一课,感谢
新手741261 发表于 2020-2-17 09:25
  
很基础,但是还是记不清
新手780102 发表于 2020-2-17 09:39
  
已经写得很详细了,赞一个
司马缸砸了光 发表于 2020-2-17 09:46
  
多多分享此类型的贴子
新手031815 发表于 2020-2-17 10:00
  
理清了我的思路,感谢