局域网 数据包是如何在以太网中传递的

在回答这个问题之前我们先来了解一下ARP
一、ARP协议【局域网 数据包是如何在以太网中传递的】ARP(Address Resolution Protocol)地址解析协议,目的是实现IP地址到mac地址的转换 。
在计算机间通信的时候,计算机要知道目的计算机是谁(就像我们人交流一样,要知道对方是谁),这中间需要涉及到MAC地址,而MAC地址才是真正的电脑的唯一标识符 。(画外音:局域网内的IP是可以随意变化的)
为什么需要ARP协议呢?因为在OSI七层模型中,对数据从上到下进行封装发送出去,然后对数据从下到上解包接收,但是上层(网络层)关心的IP地址,下层关心的是MAC地址,这个时候就需要映射IP和MAC 。
功能地址解析协议由互联网工程任务组(IETF)在1982年11月发布的RFC 826中描述制定 。[1] 地址解析协议是IPv4中必不可少的协议,而IPv4是使用较为广泛的互联网协议版本(IPv6仍处在部署的初期) 。
OSI模型把网络工作分为七层,IP地址在OSI模型的第三层,MAC地址在第二层,彼此不直接打交道 。在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的报头,但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议 。使用地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行 。
 
原理工作过程

  • 每台主机都会在自己的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查询失败 。
贴上一张流程图:
 
局域网 数据包是如何在以太网中传递的

文章插图
ARP工作流流程图
总结计算机之间的通信依赖MAC地址,而ARP的作用就是在局域网内通过广播获取IP与MAC地址的映射 。




    推荐阅读