一、以太网协议介绍
冲突域
在共享网络(集线器hub)中,整个集线器就是一个冲突域,如果你用我也用那就信号冲突,结果全军覆没,什么数据都无法传输。
为此引入了CSMA/CD机制,这样就能有效避免冲突。
终端设备不停地检测共享线路的状态
-->如果线路空闲,会有一个随机延迟,然后开始发送数据(见缝插针)
-->如果线路忙,那就候着
但是随机延迟也有可能出现恰巧同时发送的情况,如果冲突了就停止发送数据
以太网交换机就不会有这个顾虑,一个端口就是一个冲突域,不同端口不同冲突域,互不影响,该发发,该收收。
广播域
广播报文
目的MAC地址为FFFF-FFFF-FFFF的帧,叫做二层广播帧
交换机收到广播后的默认行为:交换机收到广播后,默认会在一个广播域中泛洪(除接收端口外其他所有端口发送一份),在同一个广播域中设备无论你愿不愿意,都会收到。
广播域的范围
一个交换机默认就在一个广播域中。
每一个网口与一个网卡对应,交换机的一个网口就有一张网卡
将高低电平转换成bit流(通过网口的铜片),然后封装以太网II帧
或者将bit流转换成高低电平。
二、以太网帧介绍
EthernetII
EthernetII帧【(46+18=64)-(1500+18=1518)】
DMAC:目的MAC地址,6字节,标明帧的接收者
SMAC:源MAC地址,6字节,标明帧的发送者
Type:类型字段,2字节,用于标识上层承载的协议类型
用户数据:46-1500字节
如果数据超过了1500字节(MTU),就要分片
如果不足46字节(ARP),就要使用垫片(全0)填充---Wireshark不显示
FCS:校验和,4字节---Wireshark不显示
802.3 一样是协议使用,例如生成树,了解即可。
MAC地址
为什么有了IP地址又要有MAC地址?
使用16进制表示,很少场合使用二进制的
0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
0000-1111-2222
00-00-11-11-22-22
0000.1111.2222
都正确
要根据实际场合来进行配置
前24bit是OUI,厂商代码。
单播MAC地址
1.第1字节最后一个bit为0的MAC地址,就一定是单播MAC地址
2.出厂就烧录在网卡上的,理论上无法修改
3.可以作为源和目的地址
4.理论上全局唯一,但是至少要保证一个广播域内唯一
广播MAC地址
1.48bit全为1 FFFFFFFFFFFF
2.只能作为目的MAC,所有广播域设备均能收到该数据帧
组播MAC地址
1.第1字节最后一个bit为1,但是所有bit不全为1
2.只能作为目的MAC地址不可以是源MAC地址
3.只有在这个组播组的设备才能接受并处理。
单播帧
单播帧:源和目的MAC地址均为单播MAC地址的帧
只发给一个目的终端
广播帧
源MAC地址为单播,目的MAC地址为广播,一个广播域的用户都会收到,效率较低,但是无耐之举
组播帧
组播MAC地址
1.第一字节最后一个bit为1,其他47bit不全为1,则是组播MAC地址
2.只能作为目的,不能作为源MAC地址
3.只能在同一个组播组的终端能收到(效率比广播高)
三、以太网交换机介绍
接入:提供更多的是高速的端口 ,以及联动网络提供接入的安全(比如楼层交换机)
聚合:连接核心和接入,一般网关在汇聚,很多的策略在这里实施(比如一栋楼的接入交换机的汇聚)
核心:性能最高,价格最高
接入:每个班级的班主任 汇聚:教研室主任 核心:二级学院院长
典型的三层结构,并不是一定都需要三层,一些小的soho,可能就接入和核心即可,甚至只有核心,但是大的园区网,一般而言都是有三层结构
二层vs三层处理
以太网二层交换机转发数据的端口,只是根据数据帧的目的MAC地址,查询MAC地址表进行转发。不动数据帧,因此叫做二层处理,不消耗游戏币,TTL不变。
路由器或者三层交换机需要根据三层的目的IP地址,查询路由表寻找相应的出口口和下一跳,因此需要处理到第三层,因此需要拆除二层的帧,因此这是三层处理,一次三层处理,TTL减少1
交换机工作原理
二层交换机就干两件事:学习+转发
学习
一个数据帧进入交换机,交换机就学习数据帧的源MAC地址,从而形成MAC地址表
用于后续的转发
转发
根据目的MAC地址查找MAC地址表
泛洪:除了接收端口外其他端口均发送一份
转发:从一个 端口进,从另外一个端口出去
丢弃:顾名思义,丢掉
泛洪
情况一 目的MAC地址是广播或者组播
除接收端口外所有其他端口转发(泛洪)
情况二 目的MAC地址是单播MAC地址
若查MAC地址表找不到,则认为是未知单播帧,除接收端口外所有其他端口转发(泛洪)
精确转发
目的MAC地址是单播MAC地址
若查MAC地址表能找到,则认为是已知单播帧,精确从某个端口转发(Forwarding转发)
丢弃
如果是单播帧,且同一个端口进同一个端口出,则丢弃(Discard)
例子
Q:如果交换机收到了一个数据帧,源MAC地址已经在MAC地址表中了,那么交换机如何处理?
A:如果是同一个接口,收到相同的源MAC地址,那么就刷新老化时间(从头开始倒计时),MAC表默认老化时间为300s。
如果是不同接口,更新MAC表项(对应的端口进行调整)
Q:在实际网络中,交换机一般都不会有设备的MAC地址,那么是否第一个传输的数据都是泛洪的呢?
A:??
四、同网段数据通信全过程
五、VLAN原理与配置
什么是VLAN
为什么要VLAN
一个交换机默认就是一个广播域(收到广播后,除了接收端口以外全部来一份)
但是效率太低了,如果是多个部门都在一个广播域,那么不同都会收到大量的广播包
Q:192.168.10.1/24和192.168.20.1/24在一个以太网广播域,当192.168.10.1/24访问192.168.10.254/24的时候,发送ARP报文请求,那么192.168.20.1/24是否会收到?
A:
解决思路
方法1 路由器
路由器一个端口一个广播域,能够很好解决,但是路由器端口有限,而且价格高。不实用
方法2 VLAN
VLAN :Vlrtual Local Area Network,在一个交换机上逻辑划分多个广播域,从而减少广播的影响范围,节约网络带宽
特点
- 一个VLAN就是一个广播域。
Q:192.168.10.1/24和192.168.10.2/24分别位于不同的VLAN,再不做额外配置的情况下是否可以通信?
A:
- 一个VLAN一个网段,一个网段一个VLAN
- 灵活配置
带来的问题
不同VLAN如何通信?
VLAN的基本原理
通过VLAN Tag区分不同VLAN数据
VLAN Tag的结构
- 位于源MAC地址和数据之间
- 结构
TPID:标识802.1Q的帧
PRI:优先级,用于QoS
CFI:在以太网中是0
VID:12bit,VLAN ID,用于标识是哪个VLAN的数据,取值范围是0-4095,可用范围为1-4094
注意:
1.计算机无法识别tag信息,因此发送和接受都是不带有tag的
2.交换机内部为了区分不同的VLAN,必须带有标签进行转发。
用的最多的就是基于端口的VLAN,其他作为了解即可
基于接口的VLAN
基于端口
1.配置简单,容易实现,是工程应用中使用最最最广泛的
2.如果发生变化,则需要手动调整
3.默认都是属于VLAN1,即PVID值为1
基于MAC的VLAN划分
实现方式
通过交换机内部维护一个MAC地址与VLANid的对应表来实现。当交换机收到计算机发送的untagged帧时,交换机将分析帧中的源MAC地址,然后查询MAC地址表和VLAN ID的对应表,将其划入到对应的VLAN中。
特点
1.灵活度高,划分复杂
2.如果伪造MAC地址,则基于MAC地址就被欺骗
以太网二层接口类型
Access
Access端口(私家车)
如果设置交换机接口PVID=10,那么
接收
- 收到untagged的数据帧,接收后在交换机内部打上PVID=10的TAG
- 带有tag,且tag的VID=PVID,则接受,并打上PVID的值
- 带有tag,但tag的VID≠PVID,则丢弃
发送
因为终端无法识别tag,因此剥离tag后发送
应用场景
一般用于连接PC、服务器和其他终端设备,在一些场合也可以连接路由器。
Trunk
为什么要Trunk?
两个交换机均有vlan 10 和vlan 20,那么交换机互联的端口配置成Access,那么PVID应该是10还是20才能让vlan10的互访,vlan20的互访?很显然无法实现,这个时候就需要一个类似于Trunk的公共通道的出现。
Trunk端口(公交车)
接收
Trunk接口收到一个untagged的数据帧,打上VID=PVID的tag。如果该VID的tag在Trunk接口的允许通过列表中,接收该帧,如果不在允许列表则丢弃。
Trunk接口收到一个tagged的数据帧,如果该VID的tag在Trunk接口的允许通过列表中,接收该帧,如果不在允许列表则丢弃。
发送
由于在交换机内部都是打上标签的,因此在发送的时候
如果tag中的VID=PVID,并且在Trunk接口的允许通过列表中,则剥离tag后发送,如果不在允许列表则丢弃。
如果tag中的VID≠PVID,但在Trunk接口的允许通过列表中,则直接发送,如果不在允许列表则丢弃。
应用场景
用于设备互联(交换机、AP等)
Access和Trunk的例子
- vlan命令用来创建VLAN并进入VLAN视图
- undo vlan用来删除指定的vlan
- vlan batch批量创建
- 需要切换端口类型,默认为Hybrid
- 如果多次配置port default vlan vian-id,则最后配置的生效
port default vlan 10
port default vlan 20
port default vlan 30
则端口最终的缺省vlan为30
注意,要先创建VLAN,在将接口加入该VLAN
否则报错
或者使用display port vlan active进行查看
Link Type:链路类型
PVID:10
发送VLAN10的数据的时候,不带有标签
接收不带标签的数据的时候,进入设备打上tag为10的标签。
VLAN List:
U:10 --->VLAN10的数据不带标签发送
---->接收到不带标签的,打上VLAN10的标签
T:20 --->VLAN20的数据打上标签后发送(带标签发)
---->收到带有tag为20的标签的数据,原封不动接收。(带标签收)
Hybrid
华为交换机的默认接口模式,类似于Trunk,只是在发送帧的时候有些区别,新增了tagged通过列表(和Trunk类似),以及Untagged通过列表(允许多个VLAN数据以untagged形式发送,Trunk仅允许VID=PVID的通过)
port trunk allow-pass vlan xxx
Trunk :allow-pass --->Hybrid :tagged +untagged vlan
关于tagged和untagged列表
在接收时候,两个列表加起来等于allow-pass vlan,只要在这两个列表中,就能从此端口进入。是否打标签和PVID进行比较。
在发送的时候,如果是tagged列表,则携带标签发送,如果是untagged列表,则剥离标签发送,如果都不在则丢弃
接收(与Trunk相同)
Hybrid接口收到一个untagged的数据帧,打上VID=PVID的tag。如果该VID的tag在Hybrid接口的允许通过列表(untagged+tagged列表)中,接收该帧,如果不在允许列表则丢弃。
Hybrid接口收到一个tagged的数据帧,如果该VID的tag在Hybrid接口的允许通过列表(untagged+tagged列表)中,接收该帧,如果不在允许列表则丢弃。
发送
需要从Hybrid接口发送的数据
如果发送数据的tag的VID不在untagged通过列表中,也不在tag通过列表中,则丢弃
如果发送数据的tag的VID在untagged通过列表中,则剥离tag后发送。
如果发送数据的tag的VID在tagged通过列表中,则直接带着tag后发送。
收方向参考Trunk
Q:如果Hybrid的PVID=10,tagged列表中也包含10,那么是剥离标签发送,还是带有标签发送?
A:tagged列表的优先级高于pvid,因此携带tag为10的标签发送
查询命令 display port vlan active
Hybrid接口举例
可以通过clear configuration interface g0/0/1来清除接口下的配置,但是注意,清楚后端口处于shutdown状态。
主机1 <--> 192.168.10.1/24
主机2 <--> 192.168.10.2/24
主机2 <--> 192.168.10.10/24
情况一 主机1访问主机2
由于主机1判断主机2位于同网段,直接发送ARP Request主机2的MAC地址。广播报文到达SW1的Port1口,由于是Port 1 的PVID=10,并且在untagged列表中允许VID=10的数据进入,因此ARP报文打上VID=10的标签进入。但是只能在允许VID=10的线路发送,Port2不允许发送(只允许20,100不带标签发送),因此主机2无法收到ARP Request,通信失败。
情况二 主机1访问服务器
由于主机1判断服务器位于同网段,直接发送ARP请求服务器的MAC地址。广播报文到达SW1的Port1口,由于是Port 1 的PVID=10,并且在untagged列表中允许VID=10的数据进入,因此ARP报文打上VID=10的标签进入。并且在允许VID=10的接口上泛洪,因此可以在SW1的G0/0/3接口泛洪,并且是携带标签发送给SW2的Port3口。
SW2的Port3口的tagged允许列表中包含vlan10,因此允许进入,广播继续在SW2允许VID=10的端口泛洪,因此可以从G0/0/1泛洪出去,因为G0/0/1的untagged列表允许VID=10通过,因此ARP Request不带标签从G0/0/1发送,此时到达了服务器。服务器缓存主机1的ARP信息,并回复ARP Reply。
ARP Reply报文到达SW2的G0/0/1端口,G0/0/1端口PVID=100,并且在Untagged列表中允许VID=100的通过,因此能够从G0/0/1接口进入,打上VID=100的tag。通过查询MAC地址表,发现需要从SW2的G0/0/3发送,且G0/0/3的tagged列表允许VID=100的通过,ARP Reply携带VID=100标签从SW2的G0/0/3端口发送
到达SW1的G0/0/3接口,该接口的tagged列表允许VID=100的通过,因此arp reply携带VID=100的标签进入SW1,查表后从G0/0/1发送。SW1的G0/0/1接口的untagged列表允许VID=100的数据通过,因此arp reply剥离VID=100的标签后从G0/0/1接口发送值主机1。
后续主机1和服务器通信同理,主机2和服务器通信类似。
VLAN应用
VLAN标号建议连续,以保证VLAN资源合理利用,最常用的是基于接口的
一般VLAN是和网络号呼应
例如
VLAN | 网络号 |
10 | 192.168.10.0/24 |
20 | 192.168.20.0/24 |
30 | 192.168.30.0/24 |