计算机网络概述
IEEE:电子电器工程师协会定义为:计算机网络是一组自治计算机互联集合
计算机网络的基本功能
- 资源共享
- 分布式处理余负载均衡
- 综合信息服务
计算机网络的演进
- 主机互联
- 局域网
- 互联网
- 因特网
OSI参考模型与TCP/IP模型
OSI参考模型层次
- 应用层
- 表示层
- 会话层
- 传输层(段:Segment)
- 网络层(包:Packet)
- 数据链路层(帧:Frame)
- 物理层(比特:Bit)
数据封装与解封
路由器
作用
- 连接具有不同介质的链路
- 连接网络或子网、隔离广播
- 对数据报文执行寻路和转发
- 交换和维护路由信息
特点
- 主要工作在OSI模型的物理层、数据链路层和网络层
- 根据网络层信息进行路由转发
- 提供丰富的接口类型
- 支持丰富的链路层协议
- 支持多种路由协议
交换机
作用
- 连接多个以太网物联段,隔离冲突域
- 对以太网帧进行高速而透明的交换转发
- 自行学习和维护MAC地址信息
特点
- 主要工作在OSI模型的物理层、数据链路层
- 提供以太网间的透明桥接和交换
- 依据链路的MAC地址,将以太网数据帧在端口间进行转发
命令行操作基础
- 通过Console口本地访问
- 通过AUX(辅助端口)口远程访问
- 适应Telnet终端访问
- 使用SSH终端访问(port:22):password验证、Publickey验证
- 通过异步串口访问
网络设备基本调试
ping
基于ICMP 协议,测试网络的连通性。
ICMP
- Echo Request:回波请求
- Echo Reply:回波相应
Echo Request响应
报文的字节数,报文序号,TTL(time to live,生存时间),响应时间
ping过程的统计信息
报文个数,接受到响应报文个数,未响应报文数百分比,响应时间的最小值,平均值,最大值
tracert
从源到目的所有经过的路由器(ttl)
MAC地址学习
为什么进行MAC学习
交换机刚启动,MAC地址表没有表项。如果转发某个端口收到的数据帧,会把数据转发给所有的端口,这会导致转发的效率低下,占用了太多的网络带宽;所以需要知道终端主机的位置,也就是终端主机与交换机相连的端口。主要目的是学习目的主机位置。
MAC地址表学习过程
交换机通过记录端口接收数据帧的源MAC地址和端口的对应关系来进行MAC地址的学习,为了防止MAC长久占用表项空间,故设置了老化时间
交换机在MAC地址学习遵循规则
- 一个MAC地址只能被一个端口学习
- 一个端口可以学习多个MAC地址(HUB:连接多台主机,所以有多个MAC)
交换机对数据帧的转发和过滤
单播帧转发
交换机根据MAC地址表对应进行转发
广播组播和未知单播帧的转发
除开源端口,其余均转发
数据帧过滤
- 为了杜绝不必要的转发,进行过滤。通常是一个端口学习到多个MAC地址情况下。
- 将其帧目的MAC地址在MAC表中有表项存在,且所关联的端口与接收到的帧端口相同,则进行过滤,就不对此帧进行转发,而是丢弃
广播域
- 指目的MAC地址是FFFF.FFFF.FFFF.FFFF的数据帧,它的目的是要让本地网络中的所有设备都可以收到。
- 二层交换机需要把广播帧的源端口除外的端口转发出去,所以二层交换机不能够隔离广播域
- 路由器和三层交换机不会转发广播帧,所以一个接口为一个广播域
VLAN
- 为了解决交换机在进行局域网互联时无法限制广播域的问题,可以通过划分虚拟vlan来解决。
- 不同只能通过三层互通,二层无法互通
- 每一个vlan都是一个广播域,在二层做隔离广播域
vlan优点
- 有效控制广播域范围
- 增强局域网的安全性
- 灵活构建虚拟工作组
广播风暴解决
- 用路由器隔离
- 用vlan隔离
vlan类型
- 基于端口的vlan(port)
- 基于协议的vlan(IP 、XIP)
- 基于子网的vlan(报文源IP地址以及子网掩码)
- 基于MAC地址的vlan
优先级:MAC地址vlan>IP子网vlan>协议vlan>端口vlan
vlan标签
交换机用vlan标签(tag)来区分不同vlan的以太网帧
802.1Q帧格式
传统的以太网帧中添加了 4 个字节的 802.1Q 标签后,成为带有 VLAN 标签的帧(Tagged Frame)。而传统的不携带 802.1Q 标签的数据帧称为未打标签的帧(Untagged Frame)。
802.1Q标签头包含了2个字节的标签协议标识(TPID)和2个字节的标签控制信息(TCI)。
TPID(Tag Protocol Indentifier)是 IEEE 定义的新的类型,表明这是一个封装了 802.1Q标签的帧。TPID包含了一个固定的值 0x8100。
TCI(Tag Control Information)包含的是帧的控制信息,它包含了下列元素:
- Priority:这 3 位指明数据帧的优先级。一共有 0~7 共 8种优先级。在交换机的出端口发生拥塞时,交换机通过识别该优先级,优先发送优先级高的数据帧.
- CFI(Canonical FormatIndicator):CFI 值为 0 说明是规范格式,为 1 说明是非规范格式。它被用在令牌环/源路由 FDDI介质访问方法中来指示封装帧中所带地址的比特次序信息。
- VLAN ID(VLAN Identifier):共 12 比特,指明 VLAN的编号。每个支持 802.1Q 协议的交换机发送出来的数据帧都会包含这个字段,以指明自己属于哪一个 VLAN。在4096 个可能的VLAN ID 中,VLAN ID=0用于识别帧优先级,VLAN ID=4095(FFF)作为预留值,所以 VLAN 配置的最大可能值为4094。
单交换机vlan标签操作
- 在进入交换机端口时,附加缺省vlan标签
- 出交换机端口时,去掉vlan标签
当终端主机发出的以太网帧到交换机端口时,交换机检查端口所属的vlan,然后给进入端口的帧打响应的802.1Q标签。端口所属的vlan称为端口默认vlan,又称为PVID(port vlan id)
为保持vlan技术对主机的透明,交换机负责剥离出端口的以太网帧的802.1Q
access链路端口
- 只允许缺省vlan通过,仅接收和发送一个vlan的数据帧
- 一般用于连接用户设备(路由器或主机)
- PVID:Access端口所属的vlan就是pvid,不用配置,默认是vlan1
access端口在收到以太网帧后打vlan标签,转发出端口时剥离vlan标签,通常用来连接不需识别要802.1Q协议的设备
H3C交换机默认所有端口都是access类型属于vlan1;华为是hybrid
跨交换机vlan标签操作
带有vlan标签的以太网帧在交换机间传递
trunk链路端口
- 允许多个vlan通过,可以接收和发送多个vlan的数据帧
- 缺省vlan的以太网帧不带标签
- 一般用于交换机之间的连接
- PVID:Trunk端口需要手动配置pvid,默认是vlan 1
允许多个vlan通过的端口成为trunk端口,trunk端口可以接收和发送多个vlan数据帧,且接收和发送不对帧进行任何操作
默认vlan除外
在发送帧时:trunk端口要剥离默认vlan帧中的标签
在接收帧时:如果收到不带标签的帧,要打上默认vlan标签
图示为 PCA 至 PCC、PCB 至 PCD 的标签操作流程。PCA 发出以太网帧,到达 SWA 的E1/0/1 端口,端口的缺省 VLAN 是 10,所以以太网帧被打上 VLAN10 标签;E1/0/24 端口是Trunk 端口,VLAN10 标签的帧从端口转发至 SWB,SWB 从帧中的标签得知它属于 VLAN10,于是转发至端口 E1/0/1,经剥离标签后到达 PCC。
hybrid链路端口
- 允许多个vlan通过,可以接收和发送多个vlan的数据帧
- 既可以连接路由器、主机也可以连接交换机
- PVID:Hybrid端口需要手动配置pvid,默认是vlan1
- hybrid端口和trunk端口区别:
- hybrid端口允许多个vlan的以太网帧不带标签;
- trunk端口只允许缺省vlan的以太网帧不太带标签
Hybrid 端口根据其出端口上对每个 VLAN 的标签操作的具体设定,选择是否对此帧剥离VLAN 标签;Hybrid收到未打tag的帧,会重新打上缺省vlan的tag
trunk端口不能直接被设置为hybrid端口,必须先设置为access端口
在上图中,PCA 发出的以太网帧进入端口时打上 VLAN10 的标签,在到达连接 PCC 的端口时,端口根据设定(Untag:10,20,30)将数据帧中的标签剥离后发送给 PCC,所以 PCA与 PCC 能够通信;同理,PCB 也能够与 PCC 通信。但 PCA 发出的以太网帧到达连接 PCB的端口时,端口上的设定(Untag:20,30)表明只对 VLAN20、VLAN30 的数据帧转发且剥离标签,而不允许 VLAN10 的帧通过,所以 PCA 与 PCB 不能互通。
生成树
目的:防环,防止广播风暴,防止MAC地址表震荡
STP
STP问题:网络中大量主机频繁上下线,会导致TCN BPDU以及TC置位BPDU大量发送;收敛速度慢,故障切换时间太长
STP生成树协议
- 在局域网中消除数据链路层物理环路的协议
- 通过在桥之间交换BPDU(桥协议数据单元)来保证设备完成生成树的计算过程
- 标准802.1D
BPDU类
- 指定端口:用于发送配置BPDU报文的接口,也能正常收发数据报文
- 根端口:用于接收配置BPDU报文的接口,也能正常收发数据报文
- 阻塞端口:用于接收配置BPDU报文的接口,不能收发数据报文
- 端口ID:用于表示不同的接口,通过接口优先级和接口号构成,优先级默认是128,范围是0-240,步长是16
- BPDU报文中存在一个flags字段,长度是1字节
- 0 : TC置位的BPDU报文
- 1 : P置位的BPDU报文
- 2 , 3: 用于表示端口的角色
- 4 , 5 :用于表示端口的状态
- 6 : A置位的BPDU报文
- 7 : TCA置位的BPDU报文
配置BPDU
用来进行生成生成树计算与维护生成树拓扑的报文
-
TNC BPDU
当拓扑结构发生变化时,用来通知相关设备网络拓扑结构发送变化的报文
配置BPDU的生成和传递
配置BPDU包含以下重要信息,完成生成树的计算
- 根桥ID(Root id):优先级和MAC地址组成,比较BPDU的根桥id决定根桥
- 根桥路径开销:到根桥的开销,根路径开销为0
- 指定桥ID
- 指定端口ID
各台设备的各个端口在初始时生成以自己为根桥的配置消息,向外发送自己的配置信息
网络收敛以后,根桥向外发送配置BPDU,其他的设备对该配置的BPDU进行转发
根桥的选举
一、在所有交换机中选举出一台作为根桥
- 选举规则:Bridge-id小的优先
- Bridge-id:优先级(高16位)+MAC地址(低48位),优先级默认32768,必须是4096的倍数
二、每台非根网桥(交换机)选举出一个根端口(Root port)
- 选举规则:
1、选择根路径开销数字小的
2、选择对端桥ID小的
3、选择对端端口ID小的,先比优先级,再比端口号
4、选择本端端口ID小的
- 开销:cost,带宽越大,开销越小
三、每个物理段上选举出一个指定端口(Designated port)
- 选举规则:
1、到达根网桥开销小的优先;
2、本机BID小的优先;
3、端口ID小的优先
四、每一条物理链路选择一个指定桥
- 选举规则:
1、选择根路径开销小的
2、选择桥ID小的
3、选择端口ID小的
五、剩下没有被选举的就是阻塞端口
STP的收敛过程
- 当设备发现链路故障时,会向上游设备发送TCN BPDU报文,用于通告拓扑变化
- 当上游设备收到后,会发送一个TCA置位的配置BPDU报文,用于确认
- 再向上游发送TCN BPDU,上传到根桥才会结束这个过程
- 当根桥收到TCN BPDU报文后,会发送一个TC置位的配置BPDU报文,用于刷新MAC地址表的老化时间,时间改为转发延迟时间
交换机端口状态
- disable:禁用状态,被关闭的端口
- blocking:阻塞状态------>接收BPDU,但不发送BPDU,不学习Mac地址,不转发数据
- listening:监听状态------>接收并发送BPDU,不学习Mac地址,不转发数据,持续15秒
- learning:学习状态------->接收并发送BPDU,学习Mac地址,不转发数据,持续15秒
- forwarding:转发状态---->接收并发送BPDU,学习Mac地址,转发数据
STP计时器
- Hello time:配置BPDU的发送周期(2秒)
- Max age:判断链路故障的时间,10个Hello time周期(15秒)
- Forwarding delay:状态切换延迟(15秒)----->从blocking到forwarding需要两个转发延迟时间,所以是30S
STP拓扑变更机制
- Max age超时/有接口变更为转发状态,判断为拓扑发生变更,向根网桥发起TCN BPDU
- 收到TCN BPDU的交换机继续向根网桥转发TCN BPDU,到达根网桥为止
- 根网桥收到TCN BPDU后,向所有端口发起TC置位的配置BPDU
- 交换机收到TC置位的配置BPDU后,Mac地址表的老化时间缩短到15秒
RSTP
快速生成树协议相比stp区别
端口状态减少到三种:
- discarding:阻塞端口所处状态,收发BPDU报文,数据报文不收发,MAC地址不学习
- learning:收发BPDU报文,数据报文不收发,MAC地址学习
- forwarding:指定端口和根端口所处状态,收发BPDU报文,数据报文收发,MAC地址学习
端口角色增加到4种:阻塞端口分为
- 替代端口(Alternata port)---->根端口的备份
- 备份端口(Backup port)----->指定端口的备份
边缘端口机制:
- 当链路激活,边缘端口立即进入转发状态,不参与STP计算;
- 边缘端口UP/DOWN不会触发拓扑变更;
- 建议把连接PC的端口配置为边缘端口
报文格式变化:使用了flags字段的全8位,STP只用了0和7
BPDU报文老化时间变为三倍
MSTP
将多个vlan捆绑到一个生成树实例,每个实例分别独立计算生成树;基于STP计算结果不同,实现不同vlan的流量负载均衡