二层转发和三层路由(Vlan)
一、广播域和冲突域
交换机分隔冲突域,路由器分隔广播域
- 广播域:一个主机发送广播数据,能够接收到这个数据的范围称做广播域。在二层转发过程中,如果一个主机需要使用ARP广播来获取Mac地址信息,那么这个ARP广播只有位于同一个广播域的主机才能收到,广播域是数据链路层的概念,所以广播域通过三层路由器来分隔,即路由器的每一个端口是一个广播域。VLAN简单来说就是一个广播域
- 冲突域:如果一个网络中两台计算机在同时发送信息会引起冲突,那么这个网络就是一个冲突域。冲突域是物理层的概念,所以冲突域通过二层交换机来分隔,即交换机的每一个端口是冲突域。
网络拓扑图如下:
网络拓扑图.jpg
当主机A发送ARP广播时,位于同一个广播域中的主机B、C、D都能收到该广播。
冲突域比较底层,暂时不需要
二、二层转发流程
- 关键词:数据帧、Mac地址、广播域、ARP广播、VLAN
- 提取数据报的源MAC地址,查询MAC转发表(也就是L2FDB),如果找到就直接发送到对应端口。
- 对于表中不包含的地址,通过广播发送,也就是发送到所有端口。
- 使用地址自动学习(根据源MAC地址学习)和老化机制(定时机制)来维护MAC转发表的信息,二层转发一般不会更改数据包内容。
三、Vlan
3.1 Vlan定义
- 关键词:vlan实际上是减小了广播域,将一个广播域又分为了数个广播域,这样更加方便管理
- vlan是二层上的应用
Vlan机制可以使处在相同Vlan下的主机任意通信(二层交换),不同Vlan主机通信完全隔离,如需通信需通过三层交换,阻断广播包,减小广播域,提供了网络安全性。
Vlan简单来说就是一个广播域,可以跨越多个物理设备构成一个Vlan,这样网络构建和维护更加方便。VLAN的划分方法可以根据交换机端口来划分,根据MAC地址来划分,根据网络层(IP地址、IP子网)来划分,根据IP组播划分等。
3.2 Vlan的划分
Vlan有如下几种类型:
- 基于端口的Vlan
- 基于MAC地址的Vlan
- 基于路由的Vlan
- 基于IP组播的Vlan
3.3 Vlan的配置
Vlan的配置通常分为单交换机上的Vlan实现和多台交换机上的Vlan实现,由于在实际应用中,Vlan的配置绝大多数都是在多台交换机上配置,所以这里只介绍多台交换机上的Vlan实现。
Vlan类型:
- 静态Vlan
- 动态Vlan
在创建Vlan时,通常都是创建静态Vlan,静态Vlan也是最为安全的Vlan。
Vlan的创建步骤(大致过程如下):
- 先创建并设置Vlan的名称:
VLAN 2 name SwitchA
- 分配端口到Vlan
interfaceethernet0/2
VLAN-membershipstatic2
3.4 干线:trunk
对于多个Vlan交换机来说,一条干线就是两个交换机之间的连接,它在两个或两个以上的Vlan之间传输数据流。
trunk线路运用于下面这种情况:
imagetrunk配置:
interface fa0/2
switchport mode trunk
switchport trunk encapsulation dot q
三、三层转发流程
- 之前也提到了,二层转发只在一个广播域(或valn)内进行,如果通信要跨广播域(或vlan)就必须要通过三层路由才行
- 三层转发就涉及到路由器,当然也就需要了解路由协议
三层IP数据分组的转发流程(计网P133):
-
从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N。
-
若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付目的主机(这里包括把目的主机地址D转换为具体的硬件地址,把数据报封装为MAC帧,再发送此帧);否则就是间接交付,执行(3).
-
若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4).
-
若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器:否则,执行(5)。
-
若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;)否则,执行(6)。
-
报告转发分组出错。
上面所讨论的是IP层怎样根据路由表的内容进行分组转发,而没有涉及到路由表一开始是如何建立的以及路由表中的内容应如何进行更新,这一相关内容请查阅路由协议。
四、二层转发和三层转发的结合:
通常来说一次Ping的过程就是二层转发和三层路由相结合最好的例子:
-
主机A在应用层发起对主机B的Ping请求
-
传输层将数据分段并加上报头
-
网络层将A的IP地址为源IP地址、B的IP地址为目标IP地址,根据ICMP协议封装成数据包。
-
根据B的IP地址和子网掩码,检测A、B是否属于同一子网。
同一子网(不经过路由,所以是二层转发):
-
如果属于同一子网,则查找本机的ARP缓存,找到B的MAC地址。
-
若ARP缓存表中找不到B的MAC地址,则发送ARP请求广播,B收到ARP广播后进行解封装,发现所请求的MAC地址是自己的。B将A的MAC地址写入ARP缓存表中,然后向A发送一个ARP应答单播。A收到B的ARP应答报文后将B的MAC地址存入ARP缓存中。
-
A将B的Mac地址作为目标MAC地址并封装到数据帧中,发送给网络接口层进行传输。B接收到这个数据帧后,首先在网络接口层中发现目标MAC地址指向自己,B将帧头去掉,向上传传输。
-
网络层接收到这个数据包后会查看包头,发现目标IP地址和自己匹配,继续解封装并将数据向上层传输。传输层接收ping请求报文,去掉报头,向应用层传送。应用层收到ping请求后,发送一个ping回应报文给A
不同子网(必须经过路由器,所以该数据报文先经过三层路由转发):
-
该数据报文按照上面的IP数据分组转发流程进行转发。
-
当发送到目的网段时,开始进行上面同一子网的转发流程。