这里我们简要地介绍一下这个IP地址和硬件地址。在一个主机向另一个主机发送数据的过程中,会把IP数据报给封装起来,使得网络以下的部分看不到IP数据报中的源地址和目的地址。在IP地址被封装了之后,它就被装上了当前的MAC地址和目的MAC地址。这样就可以实现在链路中传输的时候能够准确地找到下一个站点。当到达下一个站点之后,所发送的数据又被送到网络层之中给拆开,读取到这个IP数据报的目的IP地址,之后根据这个目的IP地址来封装成新的MAC帧。
这里需要注意的一点是对于一个路由器来说,如果这个路由器有两个接口,那么这个路由器就有两个MAC地址。
下面我们来讲一下这个地址解析协议ARP
补充一下:IP协议,提供一种无连接不可靠的协议。
已经知道了一个机器的IP地址需要找出其相应的硬件地址——ARP地址解析协议干的事情。
ARP协议在主机ARP高速缓存中存放一个IP地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。当主机A要向本局域网上的某台主机B发送数据报时,先在ARP高速缓存中查找这个B的IP地址。
如果有,就查出其MAC地址,再把这个硬件地址写入MAC帧,之后通过局域网把该MAC帧发往对应的硬件地址。
当查不到的时候主机A就运行ARP,在本局域网上广播发送一个ARP请求分组,这个请求分组中包含的信息有该主机的IP地址和硬件地址。
本局域网上的所有主机运行的ARP进程都会收到这个ARP请求分组。
当主机B的IP地址与请求分组中的IP地址一致,就会发送一个响应的分组回去,同时在这个响应分组中写入自己的硬件地址。由于A的IP地址到硬件地址的映射在这个请求分组之中,所以此时B直接把这个地址映射写入。
注意ARP请求分组是广播发送的。ARP响应分组是单播发送的。
当A收到响应分组之后就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。
ARP对高速缓存中的每一个项目都设置生存时间,超过生存时间的项目就会从高速缓存中删除,以防止出现网络适配器更换等情况。
ARP协议:解决同一个局域网上的主机或路由器的IP地址和硬件地址的问题。如果源主机和目的主机不在同一个局域网上主机就无法解析出另一个局域网上的主机的硬件地址。
下面说一下不同网络上使用ARP的情况
主机如果要发送IP数据报到另一个网络上的主机,那么此时要找到此时和该主机在同一个网络上的路由器的MAC地址,剩下的事情由该路由器来完成。
如果发送方是路由器,那么就由路由器来发送这个ARP请求分组,之后如果这个目的主机和该路由器在同一个网络上就可以知道这个主机的硬件地址。如果不在一个网络上那么它会发送给连接在该网上的另一个路由器,之后由另一个路由器按照上方的办法来找。