网络数据包转发过程--链路传输层、网络层转发

原文参考:网络数据包转发过程--链路传输层、网络层转发「详细」 (baidu.com)

涉及到网络上数据包的转发必须用到三张表:Mac表、Arp表、路由表。

一、交换机与Mac地址表

1、 Mac地址表

记录mac地址与接口的对应关系,SW依据mac表转发数据帧到目标主机。

2、交换机工作原理

测试环境组网:

网络数据包转发过程--链路传输层、网络层转发

  1. 在组网没有建立连接前,交换机上没有mac表

网络数据包转发过程--链路传输层、网络层转发

  1. 在pc1上ping pc2的ip,在构造icmp报文前,需要知道目标主机的mac地址,由于此时pc1上没有匹配的mac地址条目,pc1将会先发送广播报文

  2. 交换机在收到数据帧后,将源mac以及入接口记录保存在mac表中;根据数据帧中的目的mac地址,查找自己的mac表,若能够找到,直接从对应接口单播发送该数据帧到目标主机上;

  3. 若找不到,将该数据帧从其他接口广播出去,此时局域网中所有主机都会收到该数据帧,只有匹配目的mac的主机才会单播响应一个数据帧(即组网中的pc2);

  4. 交换机在收到响应数据帧后,将会记录数据帧的源mac地址以及对应的接口。

交换机上学习到的mac表如下图:

网络数据包转发过程--链路传输层、网络层转发

SW具有动态学习源MAC地址的功能,并且交换机的一个接口可以对应多个MAC地址,但是一个MAC地址只能对应一个接口。

学习的mac地址老化时间SW动态学习的MAC地址默认只有300S的有效期,如果300S内记录的MAC地址没有通信,则会删除此记录。

二、 ARP缓存表

1、 ARP协议:ARP协议是工作在网络层的协议,它负责将IP地址解析为MAC地址。

2、 ARP表学习过程

测试环境组网:

网络数据包转发过程--链路传输层、网络层转发

1)在pc1上ping pc2的ip,在构造icmp报文前,需要知道目标主机的mac地址,由于此时pc1上没有匹配的mac地址条目,pc1将会先发送广播报文,报文如下:

网络数据包转发过程--链路传输层、网络层转发

其中二层报文头中目的mac为全F的广播mac地址,arp报文中封装的目的mac地址为全0的mac地址。

2)交换机收到数据帧后,将源mac以及入接口记录保存在mac表中;

网络数据包转发过程--链路传输层、网络层转发

根据数据帧中的目的mac地址,查找自己的mac表,若能够找到,直接从对应接口单播发送该数据帧到目标主机上;

3)若找不到,将该数据帧从其他非接收端口广播出去,此时局域网中所有主机都会收到该数据帧,即pc2会收到报文,记录报文中源mac地址,发现报文中目的ip就是自己,将会发送单播报文进行响应;

网络数据包转发过程--链路传输层、网络层转发

4)交换机在收到响应数据帧后,将会记录数据帧的源mac地址以及对应的接口,pc1也会记录响应报文的源mac地址。

ARP表的更新, 当设备收到ARP请求或其他ARP报文,且现存ARP缓存表中记录有该IP对应的ARP表项。其他的非ARP报文不会影响ARP缓存表。不同系统的ARP表老化时间不一样,具体设备需要进一步确认。

三、 路由表

1、 网络层工作,路由器接收到数据包后,会读取目标逻辑地址的网络部分,而后查找路由表。如果找到目标地址的路由条目,则从相应接口进行转发;如果没有找到,但是能够匹配默认路由,则从对应接口转发;否则,将丢弃数据包,返回路由不可达信息。

2、 工作原理

测试组网:

网络数据包转发过程--链路传输层、网络层转发

设备在接入组网前的路由表项:

网络数据包转发过程--链路传输层、网络层转发

1) PC1将来自上层的报文在网络层封装成IP数据包(其中源、目的IP地址分别为PC1、PC2的IP地址),让源、目的IP地址进行“与”运算来得出是否为同一网段,此时发现PC1/PC2主机不在同一网段,故数据包将经由网关A进行转发。

2) 由于PC1没有记录网关A(即路由器R1)的mac地址,将会发送ARP请求来获取,并将网关A的mac地址封装为目的mac地址,源mac为主机A。

网络数据包转发过程--链路传输层、网络层转发

3) 网关设备在收到arp广播报文后,发现报文的目的ip就是自己,将会发送arp报文(单播)报文进行响应。PC1收到报文后会记录源mac到自己的mac表中。

网络数据包转发过程--链路传输层、网络层转发

4) PC1在学习到mac地址后,封装icmp报文发送出去,此报文中源ip、目的ip分别为PC1和PC2的主机ip,源mac为PC1的mac地址,目的mac为网关接口的mac地址。

网络数据包转发过程--链路传输层、网络层转发

5) 路由设备会解封装报文,发现目的ip不是自己同时也不同网段,此时将会检查自己的路由表中是否记录匹配目的ip网段的路由条目,发现存在此路由信息,然后将数据包交给对应的接口feth27进行转发。

网络数据包转发过程--链路传输层、网络层转发

6) 路由设备转发报文前需要知道目的mac地址,因此将会从接口feth27发送arp广播,PC2上获取的广播报文如下:

网络数据包转发过程--链路传输层、网络层转发

7) PC2会学习arp请求包中的源mac地址,查看报文的目的ip就是自己,将会发送arp响应报文回应,此时设备上也已经学习到完整的arp表。

网络数据包转发过程--链路传输层、网络层转发

8) 网关设备在学习到mac地址后,封装icmp报文发送出去,此报文中源ip、目的ip分别为P和PC2的主机ip,源mac为网关接口feth27的mac地址,目的mac为目标主机PC2的mac地址。如此报文就会从接口发送到目标设备上,成功转发icmp报文。

网络数据包转发过程--链路传输层、网络层转发

上一篇:网络知识


下一篇:ARP欺骗