IP协议2

ARP

只要确定了IP地址,就可以向这个目标地址发送IP数据报。然而在底层数据链路层,进行实际通信时,却需要知道每个IP地址所对应的MAC地址

ARP 协议(Address Resolution Protocol)用于通过目标 IP 地址,定位下一个接收数据包的网络设备的 MAC 地址。如果目标主机处在同一个数据链路上,那么可以直接得到目标主机的 MAC 地址,否则会得到下一条路由器的 MAC 地址。

ARP 协议的工作原理可以分为两部分:ARP 请求和 ARP 响应。 首先,源主机会通过广播发送一个 ARP 请求包:“我要与 IP 地址为 xxx 的主机通话,谁知道它的 MAC地址?”。

数据链路上的所有主机都会收到这条消息并检查自己的 IP 地址,如果与 ARP 请求包中的 IP 地址一致,主机就会发送 ARP 响应包:“我就是 IP 地址为 xx

在实际的使用过程中,每次往目标主机发送数据都要使用 ARP 是很低效的,通常的做法是把获取到的 MAC 地址缓存一段时间。一般来说,一旦源主机向目标地址发送一个数据包,接下来继续发送多次的概率非常大,因此这种缓存非常容易命中。

当下一次发送 ARP 请求或超过一定时间后,缓存都会失效,这保证了即使 MAC 地址与 IP 地址的对应关系发生了变化,数据包依然能够被正确的发往目标地址。

IP地址和MAC地址缺一不可?

MAC 和 IP 地址虽然看上去功能类似(都是用于唯一区分主机),但是两者缺一不可。如果只有 IP 地址,虽然可以跳过 ARP,直接在数据链路上发一个广播,但是这仅适用于通信双方处于同一个数据链路下的情况。如果双方处于不同的数据链路,数据报无法穿透中间的路由器。

仅凭MAC地址,人们无法知道这台机器所处的位置。如果全世界只用 MAC 地址,那么网桥就得向全世界发包,那么请参考交换机的自学过程,可以想象这个过程会带来庞大的,不必要的流量,而且网桥要维护一张巨大的表格来维护所有学到的MAC地址,当这些信超过网桥极限,就没法工作了,也就无法通信了。

正因为 MAC 和 IP 地址缺一不可,所以才产生了 ARP 这样的协议将两者关

通常ARP包会被路由器隔离,但是采用代理ARP的路由器可以将ARP请求转发给邻近的网段。由此两个以上网段的节点之间可以像在同一个网段中一样进行通信。

一般情况下有路由器连接多个网络时,会在每个网段定义各自的子网,从而进行路由控制,但是对于那些不支持设定子网掩码的老设备,不适用代理ARP,有时就无法更好的使用网络。

原文地址:https://www.cnblogs.com/123zhangyue/p/11949990.html