一 概述 一层的相关介绍
CSMA/CD
网桥和交换机的区别
冲突 共享 端口密度 性能 功能
交换机的三种主流转发方式
存储转发 完整的收到数据帧 然后校验 再传输 速度慢延迟大
快速转发 交换机确定帧的目的
mac地址和正确的端口号就转发帧 通常收到帧头的14个字节左右就开始转发
转发速度快延迟小 但是不可靠
无碎片转发 快速转发的修订版 当前交换机的缺省模式 检查前64个字节后转发 fragment free
多种交换
如何对转发方式中的mac地址 字节校验等等进行处理呢?
就需要用到软件交换 或者硬件交换 或者MLS技术
软件交换 完全通过cpu实现传统帧的交换 早期交换机和网桥共同使用此种方式 考验系统能力
硬件交换 通过专门的asic 组件处理数据包 再硬件层面单独的对数据帧进行查找 不通过软件
MLS multiple layer switch 多层交换 通过硬件来交换和路由选择数据包 通过硬件支持4-7层的交换。交换 矩阵 与单纯的硬件交换相比 没有冲突 图中比较 图中黄色的可以代表接口
MLS中cisco交换分为两种
基于netflow的MLS
1.传统的基于网流
让asic能够对呗路由的数据包执行2层重写 包括S/D MAC CRC
原理 交换机将受到的数据流中的第一个包交给三层引擎处理 后面的数据包以进程交换的额方式处理 即 查找一个包即可
如何判断数据包哪个属于同一流 需要用到三层和四层的
五元组
的概念 既有二层又有三层又有四层 所以 才叫多层交换
五元组包括三层的源ip 目的ip 源port 目的port 及协议号
当发现任意两个数据报文中的五元组的内容相同 则认为是同一个tcp流 执行相同的转发策略
2.centralized forwarding 集中式转发
使用一个专用的asic 做转发决策 是所有接口的枢纽
3.distributed forwarding 分布式转发
在sw的接口和模块上独立地做出转发决策 中央交换引擎将第三层转发、路由选择表何重写表何本地表(本 地表位于支持分布式交换的模块之上)进行同步
CEF cisco express forwarding
基于拓扑的转发模型 预先将所有的路由信息加入FIB 使sw能快速查找路由信息 解决了递归的问题
网络分类 按照 访问对象分
MA 多目的 分为BMA 广播和 NBMA非广播
P2P 单一目的地
以太网是最典型的广播多路访问网络 即上面的BMA
网络拓扑分类 总线 已经见不到
令牌环 双向令牌环 信令 军用网络 或专用网络 安全性比较高
星型 或扩展星型
全互联或者部分互联
二 二层介绍
以太网是一种二层技术
一层 定义了各种无力传输介质 以及接口类型 拓扑结构
二层 定义了MAC地址 数据封装类型
A 数据封装类型
ethernet II
802.3
数据内容分为两类
一类是由用户终端发送的数据 例如email qq 游戏 视频等等 数据
另一类是由网络设备(交换机,路由器)发送的数据 用来网络方面的相关的协议 状态 网 络状态维护等等 为第一类服务
其中的网络状态维护或维持 是重点 就是802.3 协议封装
如果此数据与终端用户数据相关 则用ethernet ii封装
二层转发 依据mac地址 端口
oui为厂商的地址 不同的厂商有不同的oui 厂商:intel cisco 等等都会买一系列的网卡oui地址
交换机必须有cam 可寻址内存 二重可寻址内存
t-cam 三重可寻址内存 寻址内存非专业叫法叫mac地址表
mac地址表有三部分组成
1 出厂写入 show mac address-table 或者 show mac-address-table
图中的vlan为all type为static ports为cpu的 就是出厂写入的mac地址 预留给协议使用 某 些协议会使用其中的某一个 当做协议的目的mac 私有的技术 明确告诉收到这些mac地址的数据 时候 要把数据交给cpu。
2 出厂预留 表项当中看不到 地址范围
show version
高亮部分显示背板 基准mac地址
在接口下的命令 show interface fa0/1
高亮显示的是接口的mac地址与上面的背板mac地址的关联
物理接口和vlan一样都会获得mac地址 地址线性分配 按照接口创建先后顺序分配 与接口号无 关。
主板预留的作用是用来支持某些特殊的功能 地址的多少会影响交换机的功能。vlan、隧道等等
交换机重要指标 :cam表大小(mac地址条目的多少),背板预留mac的多少 越多将来支持的功 能 可能越多 性能越强悍。
3 动态学习或者网工写入
图中的最后一个 type为dynamic ports为fa0/24
出厂时 应该是空的值
mac地址学习过程
交换机---收到电平信号或光脉冲信号----》010101111000------》按照ethernet结构变为帧----》查看帧结构中 的目的地址和源地址,
1.先看源mac地址 并将其加入自己的cam中(内存中)
2. 再把收到此数据帧的接口编号和 vlan编号加入cam表
3.最后看前面的目的mac地址 并查看cam表中是否有此mac地址
如果没有 则交换机将此数据帧 从属于此vlan 除了入接口外的 其余所有的接口均发送一 遍 称为flood 也叫泛洪
接口的mac地址的功能:
a pca----------------sw-----------------pcb 在此种方式中接口的mac地址没有用处
pca-----------sw1-------------sw2-----------pcb 在此种方式中接口的作用体现出来 交换机之间协商协议 选举 等等的作用 需要用到接口的mac地址
b 区分二层和三层
工作过程:1先看数据二层帧头的目的mac d-mac 是未知mac或者是cam表中的通过动态学习的mac 则 是需要二层转发。
2.如果二层帧头的目的mac是 预留的mac地址(包括背板预留mac和接口预留mac) 则将 二层帧头拆掉 查阅三层的包头 再进行转发。
转发原理:一层设备 二层设备 三层设备
二层转发
pcA ---------------sw1------------sw2--------------router1
mac1.2.3 mac a.b.c
192.168.1.1 192.168.1.2
s-mac d-mac s-ip d-ip
pcA--1. 1.2.3 ffff 1.1 1.2 目的mac地址为广播mac ----sw1
sw1--2. 1.2.3 ffff 1.1 1.2 sw1将数据包中的源mac1.2.3写入cam表 并且表明接口
再查d-mac 发现ffff没有 就泛洪----》sw2
sw2--3 1.2.3 ffff 1.1 1.2 sw2与sw1的操作一样没有改变数据 仅仅学习了mac接口
router-4 router先看二层 看到ffff广播帧 然后拆掉二层帧头 查看三层包头 目的ip为1.2 是自己, 所以就将三层包头拆掉查看更高层的数据 得出结论是arp-request 有人需要mac地址 所以router会回复一个arp reply 内容如下 回包
arp-reply--5 a.b.c 1.2.3 1.2 1.1 发给sw2
sw2--6 a.b.c 1.2.3 1.2 1.1 sw2查看源mac地址 进行学习并且关联接口 再查看目的mac地址 为1.2.3 查看cam表 有此mac地址 所以从条目中的端口发出去
sw1--7 a.b.c 1.2.3 1.2 1.1 sw1查看源mac地址 进行学习并且关联接口 再查看目的mac地址 为1.2.3 查看cam表 有此mac地址 所以从条目中的端口发出去
pcA--8 a.b.c 1.2.3 1.2 1.1 pcA查看 二层帧头查看目的mac地址 发现此帧是给自己的 就拆掉二层的帧头 查看三层包头 发现目的ip也是自己 就拆掉三层包头 查看四层内容 发现是arp reply 所以知道了路由器的mac地址和ip地址 并存放到arp表中 此表存放mac和ip的对应关系。
深入一
**交换机是否有全f的mac地址 用show命令查看
此条目需要自己读之后 仍然要泛洪处理
**与此类似 当路由器收到pcA发过来的arp-request数据包时 也需要学习 pcA的mac地址 即将收到的数据帧中的源mac和源ip加入到自己的
arp表中。优化的作用
**router 中除了拥有arp表之外 还有一个
FIB表 forwarding information database 这是路由器的转发表 如果有条目就单播发 没有此条目就丢包。
**为什么说 pc 打印机 等等终端是三层设备 从转发原理上考虑
sw查阅cam表 路由器查阅FIB和arp表 pc查阅FIB和arp表 其余终端也是如此 所以就称为三层设备
windows中查阅路由表的命令 route print arp -a 查看arp表
**arp动态学习的mac地址和ip地址的对应 时间的问题 自己设定保活时间
arp表项如果永远存在 则不会出现封装失败的情况 即丢包的情况出现
拓扑变化较大的环境下 需要arp表项的保活时间比较短
查看交换机默认mac地址表的老化时间
show mac address-table aging-time 默认时间为300s 就是5分钟
路由器中的arp命令 show arp
然后进入接口 修改时间: int **
arp timeout **
修改arp表项:arp 192.168.1.1 100.200.110 arpa 其中192...为ip地址 100...位mac地址 arpa 为类型
修改mac地址表项:mac address-table static 100.200.300 vlan 1 interface fa0/23
static为静态 100.**为mac地址
手动写的现实类型为static 接口为fa0/23 在cam表中
三层转发
sw1为三层交换机 r1和r2为不同网段 需要sw1进行三层转发 图中1.2地址对应mac为4.5.6 2.1ip地址对 应mac地址为7.8.9 sw1必须分别有两个接口与r1和r2在相同的子网 构建FIB表项
三层需要两个表来进行转发 FIB和ARP表
转发过程:
s-mac d-mac s-ip d-ip
1.r1查arp 没有2.2的对应的mac地址 封包失败 丢包
2.r1发送arp请求
1.2.3 fff 1.1
2.2
3.sw1收到此数据包 先mac学习 之后有权利看全f的数据包 拆帧后发现目的ip地址 和源ip地址不在同一个网 段 所以不能泛洪 即不能广播 所以需要交换机的代理arp功能 开启此功能 用交换机1.2ip地址的mac地址4 .5.6作为arp-reply 回复给r1
arp-reply 4.5.6 1.2.3
2.2 1.1
4.r1可以封包并且发送
1.2.3 4.5.6 1.1
2.2
5.sw1收到之后发现二层mac地址是自己 但是三层目的ip地址不是自己对应的1.2 而是2.2 所以需要继续转发
查FIB和arp两张表 此数据帧中的二层头已经被拆掉 所以需要重新封装好 源mac为2.1的地址 目的mac为2.2的地址 需要到arp表项中查 发现没有 所以封装失败 丢包 所以也需要发送arp-request
arp-request 7.8.9 fff 2.1 2.2
6.sw2收到之后执行二层转发 先学习 写cam表 再泛洪
7.8.9 fff 2.1 2.2
7.r2收到此数据包 查看目的mac 发现是自己 拆二层帧头 查看三层包头 发现目的ip是自己 再拆掉三层 发现是arp-request 所以会回应一个arp-reply 给sw2
8.sw2收到后学习源mac 然后单播给sw1
9.sw1收到arp-reply 数据为a.b.c 7.8.9 2.2 2.1
学习源mac 构建arp 表项
10.r1再发送数据包给r2 先到达sw1 查看二层帧头 目的mac为自己 目的ip为2.2
查看arp表项发现有此记录 重新封装二层帧头 源mac为7.8.9 目的mac为a.b.c 之后进行三层的交换转发 。
对应二层转发 三层转发的区别:
1.不同点1:r1pingr2会发现 ..!!! 原因就是r1封装第一次失败 之后做了arp请求
sw1也封装第一次失败 之也后做了arp请求
封装两次失败 所以有两个.
2.不同点2:二层转发不修改原数据的内容 但是三层转发会修改原来的数据 重新封装二层的数据 即源目 mac地址。一定会被改变
注意
物理拓扑和逻辑拓扑图的区别
1.pc1-----sw1----sw2---pc2 物理拓扑 针对只有二层交换的情况
对应的逻辑拓扑可以写成:pc1------------pc2
2.pc1------sw1-----sw2------pc2 物理拓扑 针对sw1执行了三层交换的情况
对应的逻辑拓扑需要写成pc1-------sw1------pc2
得出结论 二层交换不改变数据 交换机只是查看 所以可以省略
而三层交换改变了数据的包头内容 不能省略。