分享

ARP协议之跨网段和同网段

 拿破仑小子 2017-12-24

ARP协议属于TCP/IP分层中的哪一层

ARP协议具体属于哪一层,有不同的说法

  • 从ARP的功能来看,我们知道ARP的主要是实现IP地址到MAC的映射,如果单就功能来说的话,ARP应该是属于链路层的协议。

  • 但是从数据封装的角度来看,ARP协议应该属于网络层。因为ARP是基于Ethernet 协议,而且从以太网数据帧的格式来看,Ethernet协议里面有独立的Type类型,ARP是0x0806而IP协议的Type 为0x0800,从这个角度来看ARP协议是和IP协议平等的,所以它又属于网络层。我们好多教材上也是把ARP协议划到网络层。

ARP协议之跨网段和同网段

什么样的网络通信中才需要ARP协议

我们知道ARP的功能是实现IP地址到物理地址的映射,这里的物理地址是指MAC地址,那么问题是什么样的物理接口有MAC地址呢?答案是Ethernet接口,所以如果A和B通信的接口是Ethernet接口那么他们之间的通信才需要知道彼此的MAC地址,也就是说才需要ARP去获得MAC地址。换句话说:通信双方A与B的物理接口是Serial interface 且二层封装是PPP/HDLC就不需要ARP,因为PPP/HDLC封装头部信息没有MAC地址信息!

ARP协议之跨网段和同网段

ARP在同一个局域网内实现的流程

之前的文章已经说了,如果主机A要想通过B的IP地址确定其MAC地址并和B进行数据交互,需要按照ARP协议的”广播请求和单播应答”来确定主机B的MAC地址。流程我们重复一遍:

1) A先查看自己的ARP高速缓存表中是否有B主机的MAC地址记录。

2) 如果A的ARP高速缓存表中有B的MAC地址记录,则直接通过这个MAC地址进行数据的传输。

3) 如果A主机的ARP高速缓存中没有B主机的记录,则会向局域网的所有主机广播一个ARP请求,寻找B主机的MAC地址。

4) 当B主机收到A主机广播的ARP请求后,就会直接给A主机回复一个ARP数据包。

5) 当A主机收到B主机发送过来的请求后,将B的MAC地址写入高速缓存中,然后通过该MAC地址,A主机向B主机进行数据的传输

ARP局域网中跨网段主机间通讯的工作原理

对于跨网段的ARP工作我们首先需要知道的是:

  • ARP请求以广播发送、以单播回应

  • 路由器隔离广播。每一个网段都是独立的广播域

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

ARP协议之跨网段和同网段

  • A与B不在一个网段,A查询自己的路由表,知道如果想和B通信则必须通过gateway 来中转,所以会在与gateway 直连的接口(假定 Ethernet接口)上请求gateway 的MAC地址。 A主机先通过广播一个ARP请求,找到本网络中的一个路由器的MAC地址,然后将数据包直接给路由器。

  • 当路由收到数据包后,如果B主机在同网络中的话,这时通过ARP找到B主机,然后把数据包给B主机。

  • 如果B主机不和A主机发送数据的路由器在同一网络内的话,则路由器会通过ARP协议找到下一跳的路由器,然后把数据包发送到该路由上,以此类推。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多