ARP协议
设备A要给设备B发数据的时候需要先知道它的MAC地址,通常都只有IP,所以要用ARP找MAC
- A会先检查自己的ARP高速缓存,看有没有B的MAC地址。如果有,直接给这个地址发数据。
如果没有,A会在本地网络广播ARP请求,这个请求有源IP(A的IP)、目的IP(B的IP)、源MAC (A的
MAC)和全F的目的MAC(广播) - 如果B在同一个局域网,它会发现ARP请求中的目的IP和自己的IP一样,然后回复一个ARP响应(自己的IP和MAC)
- 如果B不在同一个局域网,A会用ARP找到路由器(网关)的MAC,然后将数据包发送给它。不过数据包的目标IP地址还是B的IP
- 如果B在路由器连接的网络里,路由器会广播发ARP请求找到B的MAC,然后给B发送数据包(注意源IP还是A的不是路由器)。
如果B不在,路由器会把数据包转发给下一个路由器 - 设备和路由器会把新知道的MAC 地址加到自己的ARP缓存,不过过段时间会清理
ps. 路由器中一般有至少两个MAC,一个给局域网一个给广域网。局域网的接口是一个私有IP,广域网的接口是一个公共IP。好像我们对朋友和对外人有不一样的"名字"和wx号