路由器(Router)
路由器的工作原理
-
路由器是3层设备,所以当数据包进入路由器时,路由器先查看数据包中的目标MAC地址,这时对于目标MAC地址会有三种情况:
- 若目标MAC地址为广播地址:由于路由器不知道该广播报文是不是传给自己的,所以会将数据包继续解封装到3层
- 若目标MAC地址为组r播地址:
- 每一个组播地址均存在自己的MAC地址,所以基于目标MAC就可以判断本地是否需要解封装
- 若本地加入了该组将解包,否则直接丢弃
- 若目标MAC地址为单播地址:
- 目标MAC为路由器接收到该流量的接口mac地址 --解封装
- 目标MAC不是本地路由器的mac地址 --丢弃
-
二层解封装完成后,查看3层报头,注意:路由器默认仅查看目标IP地址,对于目标IP也有三种抢矿:
-
若目标IP地址为广播地址:由于不清楚该广播包是否是给自己的,所以路由器会继续解封装
-
若目标IP地址为组播地址:若路由器加入了该组,则继续解封;若没有加入,直接丢弃
-
若目标IP地址为单播地址:
-
若目标IP地址为路由器,则继续解封
-
若目标IP地址为其他设备,路由器将查询本地的路由表—TCAM
TCAM由1、0、x构成 x标识主机位,而交换机的CAM表为二进制表格
-
-
-
原始包交换:
先查询本地的TCAM表,再查看本地的ARP表来确定目标或者下一跳的mac地址 — 前提网络环境为以太网
-
快速交换:
- 一次路由多次交换,基于数据流的第一个包进行TCAM和ARP表查询;
- 之后将该通过过程—源目ip地址、进出接口、新的二层封装记录到缓存中,生成一个cache列表;
- 该数据流的第二个包将基于缓存直接转发;(路由器根据每个数据包的时间间隔判定是否为数据流)
-
特快交换:即CEF技术,最早由cisco提出;该交换方式无需路由,直接交换:
-
路由器将本地的路由表和ARP表(ARP表,又称ADJ表,即邻居关系表)直接转换为二进制的列表;
-
之后将两个表格整合形成转发规则;
所以新的路由表有一个另外的名字:FIB转发信息数据库,它的存在可以说解决了路由查询的递归操作
-
边界路由器的小知识:
当内网访问外网时,数据包到达路由器时,路由器优先查找路由表;
若从外网到内网,经过路由器,路由器优先查找nat表
网络类型
-
点到点 – 在一网段内只能存在两个物理接口
-
BMA – 广播型多路访问网络 在一个MA网络中,同时存在广播洪泛机制
-
NBMA – 非广播型多路访问网络 在一个MA中不支持洪泛机制,只能使用伪广播来进行广播或组播行为
MA(Multiple Access protocol):即多路访问,在一个网段内物理节点数量不做限制
在真实情况下,判断网络类型的方法为:查看接口的二层封装
多台设备通过串线连接帧中继路由器,可以直接看出该网络的网络类型为NBMA,帧中继路由器的出现是为了连接不同的网络类型。
交换机(Switch)
二层交换机的作用
-
提供端口密度,用于更多节点的互联 ,当然集线器(HUB)也可以实现
-
对电流信息进行识别再转发;故理论上可以无限延长传输距离
-
彻底解决了冲突—可以实现所有节点间的同时数据收发
-
可以实现二层单播 — 物理寻址,在一个交换网络内,实现一对一通讯,保障了数据的安全,减少了垃圾数据量,降低的转发延时
二层交换机的工作原理
-
当数据帧进入交换机后,交换机先识别数据帧中的源mac地址,然后将该MAC地址与该流量的进入接口进行绑定、记录,生成MAC地址表—CAM 表;
-
之后查看数据帧中的目标MAC地址,在CAM表中寻找对应的记录,若存在记录,按记录接口单播转发;
-
若没有对应的记录将进行洪泛 – 除流量进入接口外其他所有接口转出
洪泛的情况:
- 广播 目标mac地址为全F
- 组播(可能洪泛 – 无组播部署时)
- 未知的单播
默认CAM在一个mac最后出现的后300s将被删除;
标准CAM为MAC+ 接口编号进行哈希运算后二进制的显示
支持vlan基础的CAM为MAC+接口编号+VLAN ID进行哈希运算后二进制的显示
哈希运算(hash算法)
它是一种散列函数算法,是信息摘要算法,其他常用的摘要算法有:MD5算法,SHA-1算法(-128、-256、-512)
哈希算法特点:
- 不等长的输入,等长的输出
- 雪崩效应
- 不可逆向运算
三层交换机工作原理:
二层交换机和路由器的功能集合设备;
当一个数据包进入三层交换机后:
-
先查看源mac地址,生成cam
-
再查看目标mac地址
- 若目标MAC地址为广播地址:设备将洪泛,同时进行解封装
- 若目标MAC地址为组r播地址:设备将洪泛或者基于组转发,若该设备处于该组时,将同时进行解封装
- 若目标MAC地址为单播地址:
- 目标mac为本地,则直接解封
- 目标mac为其他设备,则基于cam表转发
-
解封装后,查看目标ip地址,此时行为将和路由器一致:
- 若目标IP地址为广播地址:由于不清楚该广播包是否是给自己的,所以路由器会继续解封装
- 若目标IP地址为组播地址:若路由器加入了该组,则继续解封;若没有加入,直接丢弃
- 若目标IP地址为单播地址:
- 若目标IP地址为路由器,则继续解封
- 若目标IP地址为其他设备,路由器将查询本地的路由表—TCAM