数据报从H1到H2的过程(简单过程)
H1和H2分别对应两个用户。
- H1查看自己的路由表,查看H2是否就在本网络,如果是在同一网络,则直接交付。
- 如果不是,把数据报发送给路由器R1,间接交付
- R1查看路由表后,发送给R2.
- …一系列过程
- R5知道自己是和H2连接,因此直接交付给H2。
地址解析协议ARP
一直一个机器(主机或路由器)的IP,通过ARP协议可以知道其对应的MAC硬件地址。
每一个主机或路由器都有一个ARP告诉缓存。ARP中所存储的都是本局域网内的IP MAC映射表。
情况一:主机A与主机B在同一个局域网
- 先检查A的ARP表,如果有B的IP与MAC对应,则直接交付。
- 如果A的ARP表中没有,则发送广播ARP请求:“我的IP是XXX,MAC地址是XX,想知道IP是XXX的MAC地址”。
- 局域网内所有的主机都会收到ARP请求,每台主机都判断是不是找自己,如果不是找自己,那么不用理会;如果是找自己,则发送单播:“我是XXX,我的MAC地址是XX”。
- A收到B响应后,在A的ARP中写入B的IP-MAC映射。同时B也写一条A的IP-MAC映射。
情况二:主机A与主机B不在同一个局域网
- 主机A发现主机B不在本局域网,则将数据发送给默认网关,那就需要知道默认网关的MAC地址。
- 主机A发送广播ARP请求:“我的IP是XXX,MAC地址是XX,想知道默认网关IPXXX的MAC地址”。
- 然后默认网关路由器响应这个请求,发送单播“我的IP是XXX,我的MAC地址是XX”。
- 这样主机A就得到了网关的MAC地址了。然后就将这个数据分组发送给路由器。
- 路由器查询转发表得到下一跳路由的MAC地址,发送分组,这个分组的源IP和目的IP不发送变化,仍然是A的IP和B的IP,但是源MAC地址和目的MAC地址发送了变化。
- 路由器经过一系列条数之后,达到主机B。
需要注意IP数据报的源IP地址和目的IP地址始终是IP1,和IP2。
路由器只根据目的站的IP地址的网络号进行网络选择。
但是MAC帧在传输过程中,帧首部的源地址和目的地址要发生变化,而这些变化对于IP层来说是透明的。
举例说明
主机1与主机3通信
主机1箱知道主机3的MAC地址
- 主机1发送广播ARP请求:
- 数据报从主机1发出后,经过集线器(集线器不能分割冲突域和广播域),到达交换机后,一般情况下交换机会根据MAC地址转发分组,但是这个一个广播分组,因此交换机会把这个分组从他的所有端口都转发出去,也就是说主机2和主机3,以及旁边的路由器都可以收到主机1所发送的请求分组。当主机3收到后,返回单播响应分组。返回自己的IP3 MAC3.
主机1与主机5通信
- 主机1发现主机5不在本局域网内,需要经过默认网关,那么就需要知道默认网关的MAC地址,广播ARP请求分组:
- 路由器响应这个请求,发送单播响应 IP6 MAC6
- 这样主机1便得到了网关的MAC地址了。
- 数据分组到达路由器后,路由器查询转发表,从而得到了下一跳路由的MAC地址,发送数据分组:
- 注意这个请求源IP地址与目的IP地址不变,源MAC地址与目的MAC地址发生了变化。经过一系列路由器后,发送数据报文,到达MAC5:
总结ARP协议4中典型情况
- 主机A发给本网络上的主机B:用ARP找到主机B的MAC地址。
- 主机A发给另一个网络上的主机B:用ARP找到本网络路由器(网关)的MAC地址
- 路由器发给本网络的主机A:用ARP找到主机A的MAC地址。
- 路由器发给另一个网络的主机B:用ARP找到本网络上的一个路由器的MAC地址。