当数据到达网络层时,
路由器先检查目的IP是否和自己是同一网段。
如果是,则进行二层转发,交由数据链路层进行ARP过程请求目的主机的MAC地址;
如果不是,则进入三层转发进行路由的递归查找,
找到下一跳路由并将数据包进行转发。
若经过反复的递归查找都没有找到匹配的路由,将发送ICMP包给发送主机告知目的主机不可达。

 

二层转发原理:

MAC地址表的自学过程:

port1上的PCA要与port2上的PCB通信时,A发到交换机上,交换机收到信息后,

先记录port1所对应的A机器的MAC地址,

然后再查找目的机器B的MAC是否在表中。

如果在表中,直接转发给B所应该的port2。

如果不在表中,则向所有端口广播出去,当B收到后,会回应交换机转发到A,

在回应过程中,交换机就会把B的MAC记录到表中,达到双方通信功能。

依此类推,交换机都是从发端学习到MAC地址的,并在每5分钟后,如果端口上连接的计算机的MAC地址没有信息交换,就把该端口对应的MAC地址从表中清除。以此来保障地址表的空间容量。

 

二层转发原理:

   二层交换机根据数据包的MAC地址来交换报文的。交换机内部有一张地址表,存储了MAC地址与端口的关系。当二层交换机收到一个报文时,

(1)检查报文的MAC地址,并在地址表中查询,如果找到走(2),否则走(3);

(2)将报文按照地址表中查到的端口转发出去;

(3)在所有端口中广播该报文,当目标回应时,将MAC与端口关系记入地址表。

   二层交换机一般采用专门处理数据包转发的ASIC芯片,因此转发速度非常快。

   一台二层交换机想要实现线速转发,对交换总线带宽有要求,加入一个交换机有N个端口,每个端口的带宽是M,那么交换总线带宽必须达到N*M,才能实现线速转发。

 

三层转发原理:

三层交换机是一个带有三层路由功能的二层交换机,将二层交换和三层路由功能有机结合在一起。三层交换机将路由器软件进行了区分,(1)将路由转发的工作(这些都是有规律的过程)通过ASIC硬件实现;(2)将路由表更新与维护、路由计算等工作交给中央处理器操作。这样,三层交换机就大大提升了路由转发的性能。 

当机器A和不同网段的机器B通信时,A会给网关(三层交换机)发送ARP请求,三层交换机会直接将B的MAC地址回应给A,A发送的报文到达交换机时,交换机直接走二层转发,也就是所谓的一次选路,多次转发。

 三层交换有以下特点:

(1)路由转发硬件加速和路由软件优化;

(2)除了必要的路由决定外,大部分转发由二层交换完成;

(3)多个子网互连时只是与第三层路由的逻辑连接,不需要增加端口,节省了总投资。

 

三层转发原理:

使用IP的设备A------------------------三层交换机------------------------使用IP的设备B

比如A要给B发送数据,已知目的IP,那么A就用子网掩码取得网络地址,判断目的IP是否与自己在同一网段。

(1)如果在同一网段,但不知道转发数据所需的MAC地址,A就发送一个ARP请求,B返回其MAC地址,A用此MAC封闭数据包并发送给交换机,交换机起用二层交换模块,查找MAC地址表,将数据包转发到相应端口。

(2)如果目的IP地址显示不是同一网段,那A要实现和B的通讯,在流缓存条目中没有对应MAC地址条目,就将第一个正常数据包发送向一个缺省网关。

这个缺省网关一般在操作系统中已经调好,对应第三层路由模块,所以可见对于不是同一子网数据,最先在MAC表中放的是缺省网关的MAC地址,然后就由三层模块接收到此数据包,查询路由表以确定到达B的路由,将构造一个新的帧头,其中以缺省网关的MAC地址为源MAC地址,以主机B的MAC地址为目的MAC地址。通过一定的识别触发机制,确立主机A与B的MAC地址及转和端口的对应关系,并记录流缓存条目表,以后的A到B的数据,就直接交由二层交换完成。