ICMP经过路由器的转发过程及变化
- 路由器收到数据包后,报文送到数据链路层,数据链路层解封以太网帧头部,提取目的MAC地址
- 查看目的MAC地址是不是自己本身的MAC地址。这个时候出现两种情况,具体如下:
- 情况1:是本机的MAC地址,则把报文传到网络层,由网络层继续解析。
- 情况2:不是本机的MAC地址,则丢弃报文。
- 假设是情况1,目的MAC是自己的MAC,把报文送到网络层解析。
- 送到网络层后,网络层解析,提取目的IP地址,判断目的IP地址是不是本机的IP地址。这个时候再次出现两种情况,具体如下:
- 情况1:是本机IP,则把报文送到上层,有传输层进行解析。由于本次主要讲解转发流程,就不讲传输层解析的过程了。
- 情况2:不是本机IP,则去查路由表,匹配出接口。
- 假设是情况2,不是本机IP,查路由表根据路由的最长掩码匹配原则,匹配路由表,找到出接口。查路由的时候会出现四种情况,具体如下:
- 情况1:没有匹配路由,无法继续转发,则丢弃报文。并向源IP发送目的不可达的ICMP报文。
- 情况2:匹配直连路由,网络层封装目的IP和源IP,使用目的IP地址查ARP表。寻找目的MAC。
- 情况3:匹配非直连路由,网络层封装目的IP和源IP,使用路由表里的下一跳IP地址查ARP表。寻找下一跳IP地址的目的MAC。
- 情况4:匹配默认路由,网络层封装目的IP和源IP,使用路由表里的下一跳IP地址查ARP表。寻找下一跳IP地址的目的MAC。
- 假设匹配到路由,去ARP表,匹配目的IP对应的MAC地址。这个时候出现两种情况,具体如下:
- 情况1:在ARP表里匹配到了对应的MAC地址,则把匹配到的MAC封装到帧头部的目的MAC,把本机出接口的MAC封装到帧头部的源MAC里。然后发送出去。
- 情况2:在ARP表里没有匹配到对应的MAC地址,则发送ARP请求,寻找目的IP对应的MAC地址。
- 假设没有匹配到对应的MAC地址,发送ARP请求,这个时候会遇到两种情况。具体如下:
- 情况1:没有收到ARP响应,无法继续获取目的IP对应的MAC地址。则丢弃报文。
- 情况2:收到了ARP响应,首先把响应报文中的源MAC解析出来,然后把目的IP和从响应报文中获取的源MAC放到ARP表中,形成映射关系,并对这个映射关系添加老化时间。然后把MAC封装到目的MAC里,把本机出接口的MAC封装到源MAC里,然后发送出去。
以下是详细流程转发图。高清流程图链接:IP报文经过路由器转发流程图.jpg.jpeg-互联网其他资源-CSDN下载