arp协议获取mac地址,同网段和不同网段。

arp协议属于OSI模型第二层(数据链路层)

计算机实现网络通信在数据链路层发送数据帧(链路层数据包)实现通讯。而数据帧要发送到目标计算机需要知道,发送端的ip地址和mac地址还有接收端的ip地址和mac地址。

那么问题来了,发送端能很简单的获取到发送端的ip地址和mac地址,以及接收端的ip地址,而接收端的mac地址最开始是不知道的,而arp协议就是为了解决这个问题的,它能通过接收端的ip地址解析到mac地址。

然而,arp协议是属于数据链路层的协议,如果发送端和目标端的主机都在同一个网段,我们则很好理解,其过程如下:

发送端发送数据帧前检查是否拥有接收端的mac地址,如果没有,则启动arp,先检查缓存ip-mac表中是否有接收端的mac地址,如果有则直接拿来即用,如果没有则在本网段(局域网)广播arp包,本网段各计算机都收到arp请求,从发送来的数据中检查请求过来的ip地址与自己是否一致,如果不一致,则丢弃,如果ip一致,则单播返回mac地址给请求的计算机,发送端便获取到了接收端的mac地址,接收到接收端的mac地址它还会缓存一份,用于下次拿来即用。

那么如果请求端和目标端的主机不在同一个网段呢?arp广播的数据是被路由阻断的,不能跨到不同的网段进行广播的,因为这样广播会导致广播数据泛滥。

不同网段的获取mac地址过程如下:

原文链接:https://blog.csdn.net/xayddxjsjxywuhui/article/details/72796646

 

假设主机A(135.24.25.23)第一次和不同网段的主机C(135.24.52.123)通信:

A封装好要发送的信息,在要写“收件地址”时,

A会用子网掩码进行计算先判断B和A自己在不在同一个网段,这时候A知道了B和自己不在一个网段,
这时候,A知道该用网关把自己的数据传递给C,所以A会发送一个ARP包来获取网关的MAC地址,

网关收到ARP包后,把自己的MAC地址封装在ARP包中,发送给A,

A封装报文,目标MAC地址写网关的MAC地址,

网关收到报文,发现是给自己发的,就开始解包,解开之后,发现是给另一个网段的主机发送的,

此时如果网管本身就是路由器就直接把数据报文发送给下一跳路由器,如果网关是普通的PC,就发送给路由器,由路由器发送给下一跳路由器,目标MAC写下一跳路由器的MAC地址,

历经千辛万苦,报文终于到达C的主机的路由器,路由器发送报文到C所在网段的网关,

C网段的网关解包之后发现不是给自己,而是给自己网段内的C主机,就发送报给给C

 

总结:如果不在同一个网段,则请求端拿到的目标端的mac地址其实是它网关的mac地址,将数据帧给到网关再进行下一跳转发,下一跳同样在自己的网段寻找到目标主机mac地址或再找到下一跳mac地址。

 

 

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ARP协议(地址解析协议)是一种用于将IP地址转换为MAC地址协议,其工作原理如下: 在相同网段上: 1. 当主机A需要与主机B通信时,首先会检查本地ARP缓存表(ARP Cache)中是否已有主机B的MAC地址。 2. 若ARP缓存表中不存在主机B的MAC地址,则主机A会向本地网络广播一个ARP请求包(ARP Request),请求该网络上所有主机返回其对应的MAC地址。 3. 当主机B收到ARP请求包时,会向主机A回复一个ARP响应包(ARP Reply),包含其MAC地址。 4. 主机A收到ARP响应包后,将主机B的MAC地址存储到本地ARP缓存表中,并使用该地址向主机B发送数据包。 在不同网段上: 1. 当主机A需要与主机B通信时,首先会检查本地ARP缓存表中是否已有主机B的MAC地址。 2. 若ARP缓存表中不存在主机B的MAC地址,则主机A会查找其默认网关(Gateway)的MAC地址,通常是路由器的MAC地址。 3. 主机A向路由器发送数据包,并将目标MAC地址设置为路由器的MAC地址。 4. 路由器接收到数据包后,将其转发到目标主机B所在的网络,并向主机B发送ARP请求包,请求MAC地址。 5. 主机B收到ARP请求包后,向路由器回复一个ARP响应包,包含其MAC地址。 6. 路由器收到ARP响应包后,将其转发给主机A,并将主机B的MAC地址存储到本地ARP缓存表中。 7. 主机A收到数据包后,会将主机B的MAC地址存储到本地ARP缓存表中,并使用该地址向主机B发送数据包

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值