你知道, 数据包在局域网上是怎么传输的吗?是靠什么来传输的吗?也许你会说是靠IP地址, 那么你只正确了一半。 其实真正在传输过程中是靠计算机的网卡地址即MAC来传输。
有两台计算机A(IP:192.168.85.1 MAC:AA-AA-AA-AA-AA-AA)、B(IP:192.168.85.100 MAC:BB-BB-BB-BB-BB-BB)。
现在用A去ping B:
看见Reply from 192.168.85.100: bytes=32 time<10ms TTL=32 这样的信息。
然后在命令行中输入 arp -a, 会看见192.168.85.100 BB-BB-BB-BB-BB-BB dynamic这样的信息。
这就是arp高速缓存中IP地址和MAC地址的一个映射关系, 在以太网中, 数据传递靠的是MAC, 而并不是IP地址。 其实在这背后就隐藏着arp的秘密。
你一定会问, 网络上这么多计算机, A是怎么找到B的?那么我们就来分析一下细节。
首先A并不知道B在哪里, 那么A首先就会发一个广播的ARP请求, 即目的MAC为FF-FF-FF- FF-FF-FF,目的IP为B的192.168.85.100, 再带上自己的源IP, 和源MAC。
那么这个网段上的所有计算机都会接收到来自A的ARP请求, 由于每台计算机都有自己唯一的MAC和IP, 那么它会分析目的IP即192.168.85.100是不是自己的IP?
如果不是, 网卡会自动丢弃数据包。 如果B接收到了, 经过分析, 目的IP是自己的, 于是更新自己的ARP高速缓存, 记录下A的IP和MAC。 然后B就会回应A一个ARP应答, 就是把A的源IP, 源MAC变成现在目的IP, 和目的MAC, 再带上自己的源IP, 源MAC, 发送给A。
当A机接收到ARP应答后, 更新自己的ARP高速缓存, 即把arp应答中的B机的源IP, 源MAC的映射关系记录在高速缓存中。 那么现在A机中有B的MAC和IP, B机中也有A的MAC和IP。 arp请求和应答过程就结束了。
由于arp高速缓存是会定时自动更新的, 在没有静态绑定的情况下, IP和MAC的映射关系会随时间流逝自动消失。 在以后的通信中, A在和B通信时, 会首先察看arp高速缓存中有没有B的IP和MAC的映射关系, 如果有, 就直接取得MAC地址, 如果没有就再发一次ARP请求的广播, B再应答即重复上面动作。
……