1、HCIA 入门
1.传输介质
介质-双绞线
以太网标准 线缆类别 最长有效距离 100BASE-T 两对3/4/5类双绞线 100米 100BASE-TX 两对5类双绞线 100米 1000BASE-T 四对5e类双绞线 100米
双绞线分为屏蔽双绞线(Shielded Twisted Pair,STP)和非屏蔽双绞线(Unshielded Twisted Pair,UTP)。
介质-光纤
以太网标准 线缆类别 最长有效距离 10BASE-F 单模/多模光纤 2000米 100BASE-FX 单模/多模光纤 2000米 1000BASE-LX 单模/多模光纤 316米 1000BASE-SX 多模光纤 316米
双绞线和同轴电缆传输数据时使用的是电信号,而光纤在传输数据时使用的是光信号。
单模光纤只能传输一种模式的光,不存在膜间色散,因此**单模光纤适用于长距离高速传输。多模光纤允许不同模式的光在一根光纤上传输,由于膜间色散较大而导致信号脉冲展宽严重,因此多模光纤主要用于局域网中的短距离传输**。
冲突域
- 共享网络中可能会出现的信号冲突现象。
解决这种问题的办法一般采用载波侦听多路访问/冲突检测技术(Carrier Sense Multiple Access/Collision Detection,CSMA/CD)。
CSMA/CD 的基本工作过程如下:
终端设备不停的检测共享路线的状态。如果线路空闲,则可以发送数据;如果线路不空闲,则等待一段时间后继续检测(延时时间由退避算法决定)。
如果有另一个设备同时发送数据,两个设备发送的数据会发生冲突。终端检测到这种冲突后,会马上停止发送自己的数据,并发送特殊阻塞信息,以强化冲突信号,使线路上其他站点能够尽早检测到冲突。等待一段时间后继续发送(延时时间由退避算法决定)。
CSMA/CD 的工作原理总结为:先听后发,边发边听,冲突停发,随机延迟后重发。
2.以太帧结构
分层模型-OSI
- 物理层:在设备之间传输比特流,规定了电平、速度和电缆针脚。
- 数据链路层:将比特流组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)为介质,并进行差错检测。
- 网络层:提供逻辑地址,供路由器确定路径。
- 传输层:提供面向连接或不面向连接的数据传递以及进行数据传递前的差错检测。
- 会话层:负责建立、管理和终止表示层实体之间的通信对话。该层的通信由不同设备中的应用程序之间的服务器请求和响应组成。
- 表示层:提供各种用于应用层的数据编码和转换的功能,确保一个系统的应用层数据能被另一个系统的应用层识别。
- 应用层:OSI参考模型中最靠近用户的一层,为应用程序提供网络服务。
分层模型-TCP/IP
TCP/IP 模型的核心是网络层和传输层,网络层解决网络之间的逻辑转发问题,传输层保证源端到目的端之间的可靠传输。最上层的应用层通过各种协议向终端用户提供业务应用。
数据封装
应用层:数据单元(PDU);
传输层:上层数据在传输层添加TCP报头后得到的PDU被称为数据段(segment);
网络层:网络层添加IP报头得到的PDU被称为数据包(packet);
数据链路层:封装数据链路层得到的PDU被称为数据帧(frame);
最后,帧被转换为比特,通过网络介质传输。
终端之间的通信
- 数据链路层控制数据帧在物理链路上传输。
数据包在以太网物理介质上传播之前必须封装头部和尾部信息,封装后的数据包称为数据帧,数据帧中封装的信息决定了数据如何传输。以太网上传输的数据帧有两种格式,选择哪种格式由TCP/IP协议簇中的网络层决定。
帧格式
以太网上使用两种标准帧格式。不同的Type字段值可以用来区别两种帧的类型,当Type≤1500(或者十六进制的 0x05DC)时,帧使用的事IEEE 802.3格式。当Type≥1536(或者十六进制的 0x0600)时,帧使用的事Ethernet Ⅱ格式。以太网中大多数的数据帧使用的是Ethernet Ⅱ格式。
以太帧中还包括源和目的MAC地址,分别代表发送者的MAC和接受者的MAC,此外还有帧校验序列字段,用于检验传输过程中帧的完整性。
以太帧中IP协议对应的Type值为0x0800,ARP协议对应的Type值为0x0806。
终端设备收到数据帧时,会如何处理?
主机检查帧头中的目的MAC地址,如果目的MAC地址不是本机MAC地址,也不是本机侦听的广播或组播MAC地址,则主机会丢弃收到的帧。如果目的MAC地址是本机MAC地址,则接收该帧,检查帧校验序列(FCS)字段,并与本机计算的值对比来确定帧在传输过程中的数据完整性。如果通过,就会剥离报头和报尾,然后根据帧头中的Type字段决定把数据发送到哪个上层协议进行后续处理。
3.IP编址
IP包分片
网络中转发的IP报文的长度可以不同,但如果报文长度超过了数据链路所支持的最大长度,则报文就需要分割成若干个较小的片段才能够在链路上传输。将报文分割成多个片段的过程叫做分片。
接收端根据分片报文中的标识符(Identification),标志(Flags),及片偏移(Fragment Offest)字段对分片报文进行重组。标识符用于标识属于同一个数据包的分片,以区别同一主机与其他主机发送的其他数据包分片,保证分片被正确的重新组合。标志字段用于判断是否已经收到最后一个分片。最后一个分片的标志字段设置为0,其他分片的标志字段设置为1,目的端在收到标志字段为0的分片后,开始重组报文。片偏移字段表示每个分片在原始报文中的位置。第一个分片的片偏移为0,第二个分片的片偏移表示紧跟第一个分片后的第一个比特的位置。比如,如果首片报文包含1259比特,那么第二报文的片偏移字段值为1260比特。
生存时间
报文在网段间转发时,如果网络设备上的路由规划不合理,就可能会出现环路,导致报文在网络中无限循环,无法到达目的端。环路发生后,所有发往这个目的地的报文都会被循环转发,随着这种报文逐渐增多,网络将会发生拥塞。
为避免环路导致的网络拥塞,IP报文头中包含一个生存时间TTL(Time To Live)字段。报文每经过一台三层设备,TTL值减1。初始TTL值由源端设备设置。当报文中的TTL降为0时,报文会被丢弃。同时,丢弃报文的设备根据报文头中的源IP地址向源端发送ICMP错误消息。
协议号
目的端的网络层在接收并处理报文以后,需要决定下一步对报文该做如何处理。IP报文头中的协议字段标识了将会继续处理报文的协议。与以太帧中的Type字段类似,协议字段也是一个十六进制数。该字段可以标识网络层协议,如ICMP(Internet Contorl Message Protocol,因特网控制报文协议),他可以标识上层协议,如TCP(Transmission Control Protocol,传输控制协议)[对应值:0x06]、UDP(User Datagram Protocol,用户数据包协议)[对应值:0x11]
通配符掩码(wildcard-mask)
在IP计算中掩码分为三种,网络掩码(Network-mask),反掩码(Wild Card-mask),通配符掩码(Wildcard-mask)。
其中反掩码一般用于OSPF协议中,而通配符掩码一般用于ACL的中。
通配符的计算较为复杂:
通配符掩码中,0表示要检查的位,1表示不需要检查的位;
通配符掩码中,可以用255.255.255.255表示所有IP地址,因为全为1说明32位中所有位都不需检查,此时可用any替代。而0.0.0.0的通配符则表示所有32位都必须要进行匹配,它只表示一个IP地址,可以用host表示。
如例:
IP地址段为:12.0.0.0 通配符掩码为8.0.0.1,请算出四个可用的IP地址。
将IP地址段和通配符掩码转换为二进制为:
0000 1100.0.0.0000 0000(12.0.0.0)
0000 1000.0.0.0000 0001(8.0.0.1)
计算条件为:通配符二进制为0则不变,为1则不检查(变不变都可以,就会出现多种结果)。
通配符掩码8.0.0.1二进制中有两个1,所以可能地址有22=4个地址。
分别为:
0000 0100.0.0.0000 0000(4.0.0.0)
0000 0100.0.0.0000 0001(4.0.0.1)
0000 1100.0.0.0000 0000(12.0.0.0)
0000 1100.0.0.0000 0001(12.0.0.1)
IP数据报头部
版本:
占 4 位,指 IP 协议的版本目前的 IP 协议版本号为 4 (即 IPv4)
首部长度:
占4位,可表示的最大数值是15个单位(一个单位为 4 字节)因此IP 的首部长度的最大值是 60 字节
区分服务:
占8位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.1998 年这个字段改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下都不使用这个字段
总长度:
占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节.总长度必须不超过最大传送单元 MTU
标识:
占16位,它是一个计数器,用来产生数据报的标识
标志(flag):
占3位,目前只有前两位有意义
MF
标志字段的最低位是 MF (More Fragment)
MF=1 表示后面“还有分片”。MF=0 表示最后一个分片
DF
标志字段中间的一位是 DF (Don’t Fragment)
只有当 DF=0 时才允许分片
片偏移:
占12位,指较长的分组在分片后某片在原分组中的相对位置.片偏移以 8 个字节为偏移单位
生存时间:
占8位,记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字 RFC 指定,当前值为 64.发送 ICMP 回显应答时经常把 TTL 设为最大值 255
协议:
占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程, 1表示为 ICMP 协议, 2表示为 IGMP 协议, 6表示为 TCP 协议, 17表示为 UDP 协议
首部检验和:
占16位,只检验数据报的首部不检验数据部分.这里不采用 CRC 检验码而采用简单的计算方法
源地址和目的地址:
都各占 4 字节,分别记录源地址和目的地址
4.传输层协议
TCP
TCP端口号
端口分为知名端口和动态端口。有些服务会使用固定的端口,这类端口称为知名端口,端口号范围为0-1023。动态端口号范围从1024-65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。
TCP三次握手(建立连接)
主机A(客户端)发送一个标识了SYN的数据段,表示期望与服务器A建立连接,此数据段的序列号(seq)为a。
服务器A回复了表示SYN,ACK的数据段,此数据段的序列号(seq)为b,确认序列号(ack)为主机的序列号+1(a+1),以此作为对主机A的SYN报文的确认。
主机A发送了一个标识了ACK的数据段,此数据段的序列号(seq)为a+1,确认序列号(ack)为服务器的序列号+1(b+1),以此作为对服务器A的SYN报文的确认。
TCP四次挥手(关闭连接)
主机A想终止连接,于是发送了一个标识了FIN,ACK的数据段,序列号(seq)为a,确认序列号(ack)为b。
服务器A回应了一个标识了ACK的数据段,序列号(seq)为b,确认序列号(ack)为a+1,作为对主机A的FIN报文的确认。
服务器A想终止连接,于是发送了一个标识了FIN,ACK的数据段,序列号(seq)为b,确认序列号(ack)为a+1。
主机A回应了一个标识了ACK的数据段,序列号(seq)为a+1,确认序列号(ack)为b+1,作为对服务器A的FIN报文的确认。
问答:
二层、三层网络的环路有什么特点和区别?
二层环路较易产生,需要运行破坏机制,经过计算阻塞某些端口实现预防,且由于二层设备的处理行为导致了后果特别严重。
三层环路不容易产生,由于三层设备的处理行为和TTL机制,所以后果并不十分严重,且每种路由协议都有比较完整的防环机制,三层环路比较容易发生在特殊的场景下,如双点双向路由发布。
ttl的英文是什么?最大值是多少?为什么是255,而不是300?
TTL:Time to live,在IP报文中,TTL字段占8个bit,所以最大255,设备接收到报文都需要减1,减到0则丢弃报文,并向报文的源IP发送ICMP消息type为1,code为0的错误消息。
导致二层环路的原因?导致三层环路的原因?
网络环路也分为第二层环路和第三层环路,所有环路的形成都是由于目的路径不明确导致混乱而造成的
二层环路是由于物理拓扑出现环路,如3台交换机三角形连接。
三层环路一般物理拓扑有环路,并且设置之间路由表形成互指。
二层网络对广播帧、未知单播帧的处理方式?三层网络对无路由的数据包的处理方式?
二层交换机工作行为
收到的数据帧查看2层头部,根据目的Mac地址转发,目的Mac分广播、组播、单播。广播
目的Mac全为F。收到广播报文,除了接收的端口外,向其余所有端口转发(泛洪)。组播
目的Mac的第8位为1。收到组播报文,首先判断目的MAC是否本机要接受,如收到STP的BPDU,而自身也运行STP,此报文上送CPU处理,不做转发。假如此报文自身不需要接受,则处理方式为泛洪。单播
目的MAC的第8位位0。收到单播报文,如果目的MAC在自身MAC表中不存在,则称为未知单播,处理方式为泛洪。假如目的MAC在自身MAC表中存在,则称为已知单播,把报文向MAC表中的接口转发(如该接口等于报文的接收端口,则丢弃报文)。省流:洪泛
三层设备的工作行为
收到数据包查看三层目的IP,根据目的IP地址转发,分为广播,组播,单播。广播
目的IP全为1。收到广播包,上送CPU处理(注意不是丢弃报文),三层设备是隔离广播域,不是丢弃广播报文。组播
目的IP为224.0.0.0-239.0.0.0。开启组播路由协议则转发,否则丢弃。单播
目的IP在路由表中存在则按出端口转发,目的IP在路由表中不存在则丢弃。省流:丢弃
环路的影响
二层环路
广播风暴和数据帧复制,MAC地址震荡;假设交换机收到广播帧或者组播帧或者未知单播帧,会采用泛洪形式处理,数据帧在转发时产生了拷贝复制,数据帧无休止被转发,如此往复,最终导致整个网络带宽资源被耗尽,设备负载过大,网络瘫痪不可用。
三层环路
数据包会在设备之间有限的互相转发,因为在三层IP头部存在TTL字段,所以报文不会无休止转发。
防环机制
二层防环
STP、SMART-LINK等技术,或使用LACP链路捆绑和设备堆叠等技术,使得物理拓扑上没有环路。
三层防环
依靠路由协议自身的防环机制。静态路由
依靠人工预防。RIP
RIP防环机制,16跳,水平分割,毒性逆转,触发更新。OSPF
区域内依靠SPF算法,区域间依靠区域结构设计和ABR的水平分割原则。ISIS
区域内依靠SPF算法,区域间依靠路由泄露的DOWN位。BGP
AS之间依靠AS号,AS内部只传一跳,如使用路由反射依靠簇LIST和起源ID,使用联盟,依靠联盟的私有AS号。组播
依靠PRF检查。转发层面:二层环路无防环机制,三层环路有TTL机制。
5.VRP基础
路由器、交换机、集线器
术语解释
路由器:(Router)是连接因特网中各局域网、广域网的设备。在路由器中记录着路由表,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。发生在网络层。
交换机:(Switch)是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路,把传输的信息送到符合要求的相应路由上。发生在数据链路层。
集线器:(Hub)是指将多条以太网双绞线或光纤集合连接在同一段物理介质下的设备。发生在物理层。
路由器和交换机的区别
路由器 | 交换机 | |
---|---|---|
工作层次 | 网络层 | 数据链路层 |
转发依据 | IP地址 | Mac地址 |
功能 | 连接不同的网络 | 连接局域网中的电脑 |
宽带影响 | 共享宽带 | 独享宽带 |
交换机和集线器的区别
交换机 | 集线器 | |
---|---|---|
工作层次 | 数据链路层 | 物理层 |
宽带影响 | 独享 | 共享 |
数据传输 | 有目的发送 | 广播发送 |
传输模式 | 全双工或半双工 | 半双工 |
- 交换机可以隔离冲突域,路由器可以隔离广播域。
为什么交换机可以隔离冲突域?
交换机在数据链路层,作用是转发数据报文
交换机可以隔离冲突域,但是不可以隔离广播域
交换机具有地址学习的能力,它会记录连接的主机的MAC地址,形成MAC地址表;
当需要转发数据帧时,交换机会查看MAC地址表,根据数据帧的目的MAC转发到指定的端口,不会转发到其它端口,这样每一台主机都只会收到跟自己有关的数据,不会相互影响;
假如数据帧的目的MAC地址不在交换机MAC地址表里时,交换机会把数据帧转发到除接收端口外的其它所有端口,此时交换机就是hub,不能起到隔离冲突域的作用。
所以,交换机之所以能够隔离冲突域,是因为交换机有地址学习(生成MAC地址表)的能力,并且按照MAC地址表转发数据。
6.交换网络基础
交换机的转发行为
交换机中有一个MAC地址表,里面存放了MAC地址与交换机端口的映射关系。MAC地址表也称为CAM(Content Addressable Memory)表。
如图所示,交换机对帧的转发操作行为一共有三种:泛洪(Flooding),转发(Forwarding),丢弃(Discarding)。
泛洪:交换机把从某一端口进来的帧通过所有其它的端口转发出去(注意,“所有其它的端口”是指除了这个帧进入交换机的那个端口以外的所有端口)。
转发:交换机把从某一端口进来的帧通过另一个端口转发出去(注意,“另一个端口”不能是这个帧进入交换机的那个端口)。
丢弃:交换机把从某一端口进来的帧直接丢弃。
交换机的基本工作原理可以概括地描述如下:
如果进入交换机的是一个单播帧,则交换机会去MAC地址表中查找这个帧的目的MAC地址。
1)如果查不到这个MAC地址,则交换机执行泛洪操作。
2)如果查到了这个MAC地址,则比较这个MAC地址在MAC地址表中对应的端口是不是这个帧进入交换机的那个端口。如果不是,则交换机执行转发操作。如果是,则交换机执行丢弃操作。如果进入交换机的是一个广播帧,则交换机不会去查MAC地址表,而是直接执行泛洪操作。
如果进入交换机的是一个组播帧,则交换机的处理行为比较复杂,超出了这里的学习范围,所以略去不讲。另外,交换机还具有学习能力。当一个帧进入交换机后,交换机会检查这个帧的源MAC地址,并将该源MAC地址与这个帧进入交换机的那个端口进行映射,然后将这个映射关系存放进MAC地址表。
7.STP原理与配置
参考文档:
STP ( Spanning Tree Protocol )生成树协议
STP :IEEE 802.1d 1980年
RSTP:IEEE 802.1w 2001年
MSTP:IEEE 802.1s 2002年
Backup : 备份端口
Alternate :预备端口
环路引起的问题
广播风暴
根据交换机的转发原则,如果交换机从一个端口上接收到的是一个广播帧,或者是一个目的MAC地址未知的单播帧,则会将这个帧向除源端口之外的所有其他端口转发。如果交换网络中有环路,则这个帧会被无限转发,此时便会形成广播风暴,网络中也会充斥着重复的数据帧。
本例中,主机A向外发送了一个单播帧,假设此单播帧的目的MAC地址在网络中所有交换机的MAC地址表中都暂时不存在。SWB接收到此帧后,将其转发到SWA和SWC,SWA和SWC也会将此帧转发到除了接收此帧的其他所有端口,结果此帧又会被再次转发给SWB,这种循环会一直持续,于是便产生了广播风暴。交换机性能会因此急速下降,并会导致业务中断。
MAC地址震荡
交换机是根据所接收到的数据帧的源地址和接收端口生成MAC地址表项的。
主机A向外发送一个单播帧,假设此单播帧的目的MAC地址在网络中所有交换机的MAC地址表中都暂时不存在。SWB收到此数据帧之后,在MAC地址表中生成一个MAC地址表项,00-01-02-03-04-AA,对应端口为G0/0/3,并将其从G0/0/1和G0/0/2端口转发。此例仅以SWB从G0/0/1端口转发此帧为例进行说明。
SWA接收到此帧后,由于MAC地址表中没有对应此帧目的MAC地址的表项,所以SWA会将此帧从G0/0/2转发出去。
SWC接收到此帧后,由于MAC地址表中也没有对应此帧目的MAC地址的表项,所以SWC会将此帧从G0/0/2端口发送回SWB,也会发给主机B。
SWB从G0/0/2接口接收到此数据帧之后,会在MAC地址表中删除原有的相关表项,生成一个新的表项,00-01-02-03-04-AA,对应端口为G0/0/2。此过程会不断重复,从而导致MAC地址表震荡。
STP工作原理
STP的作用
在以太网中,二层网络的环路会带来广播风暴,MAC地址表震荡,重复数据帧等问题,为解决交换网络中的环路问题,提出了STP。
STP的主要作用:
消除环路:通过阻断冗余链路来消除网络中可能存在的环路。
链路备份:当活动路径发生故障时,激活备份链路,及时恢复网络连通性。
STP操作
STP通过构造一棵树来消除交换网络中的环路。
每个STP网络中,都会存在一个根桥,其他交换机为非根桥。根桥或者根交换机位于整个逻辑树的根部,是STP网络的逻辑中心,非根桥是根桥的下游设备。当现有根桥产生故障时,非根桥之间会交互信息并重新选举根桥,交互的这种信息被称为BPDU。BPDU中包含交换机在参加生成树计算时的各种参数信息,后面会有详细介绍。
STP中定义了三种端口角色:指定端口,根端口和预备端口。
指定端口是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口总是指定端口。
根端口是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。
如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞。
根桥选举
STP中根桥的选举依据的是桥ID,STP中的每个交换机都会有一个桥ID(Bridge ID)[BID] 。
桥ID由16位的桥优先级(Bridge Priority)和48位的MAC地址构成。在STP网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768。
优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。
交换机启动后就自动开始进行生成树收敛计算。
默认情况下,所有交换机启动时都认为自己是根桥,自己的所有端口都为指定端口,这样BPDU报文就可以通过所有端口转发。对端交换机收到BPDU报文后,会比较BPDU中的根桥ID和自己的桥ID。如果收到的BPDU报文中的桥ID优先级低,接收交换机会继续通告自己的配置BPDU报文给邻居交换机。如果收到的BPDU报文中的桥ID优先级高,则交换机会修改自己的BPDU报文的根桥ID(BID)字段,宣告新的根桥。
根端口选举
在STP中,端口角色共有三种,分别为根端口RP(Root Port)、指定端口DP(Designated Port)、阻塞端口AP(Alternate Port)。
什么是根端口?指定桥上所有端口中去往根桥最优的端口叫根端口。这话有两个意思,一是根桥上没有根端口,二是除根桥外,每台指定桥上的根端口有且仅有一个。
那么,指定桥上如何选举根端口呢?
首先比一比谁去根桥更近,也就是谁的RPC(Root Path Cost)最小。
STP中每条物理链路都有开销,开销值和链路带宽、聚合有关,值越小越优。
如图中,SWA为根桥,那么SWA上没有根端口。指定桥SWB端口E0/1的RPC为为10,端口E0/2的RPC为30+20=50(经过SWC),所以E0/1为RP。同理,SWC上的RP为端口E0/1。
可是,有时候开销一样:
如图中,SWB可以选出RP为E0/1。可是我们发现SWC两个端口的RPC都是10。
这种情况,当根路径开销比不出来时,我们就比较指定桥ID,也就是给你发BPDU的桥ID谁更优。
给SWC端口E0/1发送BPDU的是SWA,BID为0.MAC_A;
给SWC端口E0/2转发BPDU的是SWB,BID为4096.MAC_B;
显然SWA的BID更优,所以SWC的E0/1为根端口。
如果两个或两个以上的端口连接到同一台交换机上,则选择发送者PID最小的那个端口作为根端口。
如果两个或两个以上的端口通过Hub连接到同一台交换机的同一个接口上,则选择本交换机的这些端口中的PID最小的作为根端口。
总结:
谁优选谁,谁小谁优
通常情况下:
1.比较根链路开销(RPC);
2.比较指定桥(BID);
遇特殊情况:
比较指定端口;
更特殊情况:
比较自己的接收端口。
指定端口选举
指定端口的选举和根端口不同:
根端口是每台交换机上的所有端口共同参与选举,自己家里搞内斗,选出唯一仅有的一个;
而指定端口是在每条物理链路上选出一个,是相连接的不同交换机之间的端口进行选举,是跟外人斗。
首先,根端口对面的端口一定是指定端口。
如图中,SWB与SWA相连接的链路上有根端口,为SWB的E0/1端口,则它对面SWA上的端口E0/1就是指定端口。同样的,SWC与SWA相连接链路上的指定端口为SWA的E0/2端口。
那么,在没有根端口的链路上怎么选举指定端口呢?
如图中,SWB与SWC相连接的链路上,指定端口是SWB的E0/2端口,还是SWC的E0/2端口呢?
首先,我们来比较两个端口的RPC(Root Path Cost,根路径开销)谁更小。
先看SWB的E0/2端口,它的RPC是多少呢?是15,还是5?
正确答案是5!
我们可以这样来理解:
SWB当初在选举根端口时,E0/2败给了E0/1,是因为从E0/1出去到达根桥更近,RPC=5,而从E0/2出去到达根桥的RPC=15。
但是现在,选举指定端口是SWB上的端口与其他交换机的端口之间进行比较,是跟外人比较,SWB当然认为自己身上所有端口的RPC都是5,同样,SWC也认为自己身上所有端口的RPC都是10。
很显然,SWB的E0/2端口的RPC更小,所以被选举为这条链路上的指定端口。
如果RPC相同,比较端口所在交换机的BID谁更优
端口状态转换
运行STP协议的设备上端口状态有5种:
Forwarding:转发状态。端口既可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入Forwarding状态。
Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路。
Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量。
Blocking:阻塞状态。端口仅仅能接收并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态。
Disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量。
端口可以转化的状态:
从初始化(交换机启动)到阻塞状态(blocking)
从阻塞状态(blocking)到监听(listening)或失效状态(disabled)
从监听状态(listening)到学习(learning)或失效状态(disabled)
从学习状态(listening)到转发(forwarding)或失效状态(disabled)
从转发状态(forwarding到失效状态(disabled)
从失效状态(disabled)到阻塞状态(blocking)
STP选举出根桥,确定了端口角色后,生成树收敛,环路消除。
可是,STP的计算毕竟需要一个过程,需要一点时间。那么在选出根桥和确定端口角色之前,是不是还是有环路呢?
没错,在生成树收敛前,确实存在临时环路。
为了避免临时环路,STP引入了“端口状态”。
STP规定,端口在初始情况下,全部都是Blocking状态!
什么是Blocking状态?处于这种状态的端口,只会接收BPDU,除此之外啥也不干!既不会接收任何数据,更不会发送任何报文,包括BPDU。
这样一来,肯定没有环路了:谁都不发东西,哪来的环路呢。
接着,STP一声令下,所有端口的状态由Blocking变成了Listening状态。
处于Listening状态的端口,会发会收BPDU,除此之外啥也不干。
既然会发会收BPDU,那么STP就可以开始干活了:选举根桥,确定根端口、指定端口和阻塞端口。
被选为AP的阻塞端口,STP把它们的端口状态由Listening状态立即变回Blocking状态。
被选为RP和DP的端口,STP经过Forwarding Delay时间(默认15秒)后,把它们的状态由Listening状态变成Learning状态。
处于Learning状态的端口,和Listening状态一样会发会收BPDU,不会转发其他任何数据,但比Listening状态多做一件事,会学习MAC地址表,也就是会把端口收到报文中的源MAC地址写进MAC地址表中,或更新它的老化时间。
经过Forwarding Delay时间后,STP把Learning状态的端口再变成Forwarding状态。
Forwarding状态是端口的最终稳定状态。处于Forwarding状态的端口会收发任何数据,也会学习更新MAC地址表,和正常端口一样。
8.OSPF
OSPF报文
OSPF直接运行在IP协议之上,使用IP协议号89。
OSPF有五种报文类型,每种报文都使用相同的OSPF报文头。
Hello报文:最常用的一种报文,用于发现、维护邻居关系。并在广播和NBMA(None-Broadcast Multi-Access)类型的网络中选举指定路由器DR(Designated Router)和备份指定路由器BDR(Backup Designated Router)。
DD报文:两台路由器进行LSDB数据库同步时,用DD报文来描述自己的LSDB。DD报文的内容包括LSDB中每一条LSA的头部(LSA的头部可以唯一标识一条LSA)。LSA头部只占一条LSA的整个数据量的一小部分,这样就可以减少路由器之间的协议报文流量。
LSR报文:两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地LSDB所缺少的,这时需要发送LSR报文向对方请求缺少的LSA,LSR只包含了所需要的LSA的摘要信息。
LSU报文:用来向对端路由器发送所需要的LSA。
LSACK报文:用来对接收到的LSU报文进行确认。
邻居状态
邻居和邻接关系建立的过程如下:
Down:这是邻居的初始状态,表示没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。
Attempt:此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。
Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,尚未与邻居建立双向通信关系。
2-Way:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。
ExStart:这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报文。主从关系是在此状态下形成的,初始DD序列号也是在此状态下决定的。在此状态下发送的DD报文不包含链路状态描述。
Exchange:此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地LSDB的内容。
Loading:相互发送LSR报文请求LSA,发送LSU报文通告LSA。
Full:路由器的LSDB已经同步。
BD和BDR的选举
在邻居发现完成之后,路由器会根据网段类型进行DR选举。在广播和NBMA网络上,路由器会根据参与选举的每个接口的优先级进行DR选举。优先级取值范围为0-255,值越高越优先。缺省情况下,接口优先级为1。如果一个接口优先级为0,那么该接口将不会参与DR或者BDR的选举。如果优先级相同时,则比较Router ID,值越大越优先被选举为DR。
这两台路由器是广播型网络中的DR Other路由器。在广播型网络中,OSPF路由器只会与指定路由器(DR)和备份指定路由器(BDR)建立邻接关系,而与其他所有邻居路由器保持2-Way状态。
9.DHCP
DHCP报文类型
DHCP客户端初次接入网络时,会发送DHCP发现报文(DHCP Discover),用于查找和定位DHCP服务器。
DHCP服务器在收到DHCP发现报文后,发送DHCP提供报文(DHCP Offer),此报文中包含IP地址等配置信息。
在DHCP客户端收到服务器发送的DHCP提供报文后,会发送DHCP请求报文(DHCP Request),另外在DHCP客户端获取IP地址并重启后,同样也会发送DHCP请求报文,用于确认分配的IP地址等配置信息。DHCP客户端获取的IP地址租期快要到期时,也发送DHCP请求报文向服务器申请延长IP地址租期。
收到DHCP客户端发送的DHCP请求报文后,DHCP服务器会回复DHCP确认报文(DHCP ACK)。客户端收到DHCP确认报文后,会将获取的IP地址等信息进行配置和使用。
如果DHCP服务器收到DHCP请求报文后,没有找到相应的租约记录,则发送DHCP-NAK报文作为应答,告知DHCP客户端无法分配合适IP地址。
DHCP客户端通过发送DHCP释放报文(DHCP Release)来释放IP地址。收到DHCP释放报文后,DHCP服务器可以把该IP地址分配给其他DHCP客户端。
简答
DHCP报文我们都知道有5种报文,能否具体描述一下DHCP服务器什么时候发送DHCP ACK,什么时候发送DHCP NAK?你能否举出1-2个场景来描述DHCP NAK报文?
DHCP的报文类型
DHCP报文分为8种类型,DHCP服务器和客户端之间通过这8种类型的报文进行通信。
(1)DHCP DISCOVER:这是DHCP客户端首次登录网络时进行DHCP过程的第一个报文,用来寻找DHCP服务器。
(2)DHCP OFFER:DHCP服务器用来响应DHCPDISCOVER报文,此报文携带了各种配置信息。
(3)DHCP REQUEST:此报文用于以下三种用途。
①客户端初始化后,发送广播的DHCPREQUEST报文来回应服务器的DHCPOFFER报文。
②客户端重启初始化后,发送广播的DHCPREQUEST报文来确认先前被分配的IP地址等配置信息。
③当客户端已经和某个IP地址绑定后,发送单播的DHCPREQUEST报文来延长IP地址的租期。
(4)DHCPACK:服务器对客户端的DHCPREQUEST报文的确认响应报文,客户端收到此报文后,才真正获得了IP地址和相关的配置信息。
(5)DHCPNAK:服务器对客户端的DHCP REQUEST报文的拒绝响应报文,比如服务器对客户端分配的IP地址已超过使用租借期限或者客户端移到了另一个新的网络。
(6)DHCP Release:客户端可通过发送此报文主动释放服务器分配给它的IP地址,当服务器收到此报文后,可将这个IP地址分配给其它的客户端。
(7)DHCP Decline:当客户端发现服务器分配给它的IP地址发生冲突时会通过发送此报文来通知服务器,并且会重新向服务器申请地址。
(8)DHCP Inform:客户端已经获得了IP地址,发送此报文的目的是为了从服务器获得其他的一些网络配置信息,比如网关地址、DNS服务器地址等。
以上8种类型报文的格式相同,只是某些字段的取值不同。DHCP报文格式基于BOOTP报文格式。
DHCP Sever 主动发送的DHCP OFFER,ACK和NAK报文,里面主要包含什么信息和参数,是广播还是单播发送?为什么这样设计?(也就是问广播和单播你觉得那种好?好在哪里?为什么这样设计?华为是怎么设计的?)举出一个场景来阐述DHCP OFFER,ACK和NAK设计成广播和单播有什么差异?
DHCP OFFER报文和DHCP ACK报文里面包含的内容除了DHCP消息类型不同外,其他的内容相同。包含为客服端分配的IP地址、客户端的MAC地址、消息类型、服务器ID、子网掩码、租期、域名、网关、DNS服务器等内容。
以单播方式发送。
OFFER消息和ACK消息是发送给客户端的,提供以及确认为客户端分配的IP地址。此时服务器可以认为客户端的IP地址为自己分配给客户的IP地址,二层封装为单播。
DHCP NAK报文里面包含DHCP消息类型的DHCP NAK;客户端的MAC地址等内容。以广播发送。NAK消息是发送给客户端的,拒绝客户端请求的IP地址。此时服务器不知道客户端的IP地址,用255.255.255.255代替,二层封装为广播地址。
DHCP OFFER报文和DHCP ACK报文是发送给客户端的,如果设计成广播,会让同一个广播域不需要收到该报文的设备处理这些报文。
DHCP NAK报文是发给客户端的,但是是拒绝客户端请求的IP地址。如果此时设计成单播,在IP封装的目的IP地址写哪个IP地址都不合适。
10.FTP原理与配置
FTP服务器开启21端口进行控制连接,20号端口与客户端建立数据连接
FTP传输模式
FTP传输数据时支持两种传输模式:ASCII模式和二进制模式。
ASCII模式用于传输文本。发送端的字符在发送前被转换成ASCII码格式之后进行传输,接收端收到之后再将其转换成字符。
二进制模式常用于发送图片文件和程序文件。发送端在发送这些文件时无需转换格式,即可传输。
11.VLAN原理与配置
链路类型
VLAN链路分为两种类型:Access链路和Trunk链路。
接入链路(Access Link):连接用户主机和交换机的链路称为接入链路。如本例所示,图中主机和交换机之间的链路都是接入链路。
干道链路(Trunk Link):连接交换机和交换机的链路称为干道链路。如本例所示,图中交换机之间的链路都是干道链路。干道链路上通过的帧一般为带Tag的VLAN帧。
端口类型-Access
Access端口是交换机上用来连接用户主机的端口,它只能连接接入链路,并且只能允许唯一的VLAN ID通过本端口。
Access端口收发数据帧的规则如下:
如果该端口收到对端设备发送的帧是untagged(不带VLAN标签),交换机将强制加上该端口的PVID。如果该端口收到对端设备发送的帧是tagged(带VLAN标签),交换机会检查该标签内的VLAN ID。当VLAN ID与该端口的PVID相同时,接收该报文。当VLAN ID与该端口的PVID不同时,丢弃该报文。
Access端口发送数据帧时,总是先剥离帧的Tag,然后再发送。Access端口发往对端设备的以太网帧永远是不带标签的帧。
在本示例中,交换机的G0/0/1,G0/0/2,G0/0/3端口分别连接三台主机,都配置为Access端口。主机A把数据帧(未加标签)发送到交换机的G0/0/1端口,再由交换机发往其他目的地。收到数据帧之后,交换机根据端口的PVID给数据帧打上VLAN标签10,然后决定从G0/0/3端口转发数据帧。G0/0/3端口的PVID也是10,与VLAN标签中的VLAN ID相同,交换机移除标签,把数据帧发送到主机C。连接主机B的端口的PVID是2,与VLAN10不属于同一个VLAN,因此此端口不会接收到VLAN10的数据帧。
端口类型-Trunk
Trunk端口是交换机上用来和其他交换机连接的端口,它只能连接干道链路。Trunk端口允许多个VLAN的帧(带Tag标记)通过。
Trunk端口收发数据帧的规则如下:
当接收到对端设备发送的不带Tag的数据帧时,会添加该端口的PVID,如果PVID在允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。当接收到对端设备发送的带Tag的数据帧时,检查VLAN ID是否在允许通过的VLAN ID列表中。如果VLAN ID在接口允许通过的VLAN ID列表中,则接收该报文。否则丢弃该报文。
端口发送数据帧时,当VLAN ID与端口的PVID相同,且是该端口允许通过的VLAN ID时,去掉Tag,发送该报文。当VLAN ID与端口的PVID不同,且是该端口允许通过的VLAN ID时,保持原有Tag,发送该报文。
在本示例中,SWA和SWB连接主机的端口为Access端口,PVID如图所示。SWA和SWB互连的端口为Trunk端口,PVID都为1,此Trunk链路允许所有VLAN的流量通过。当SWA转发VLAN1的数据帧时会剥离VLAN标签,然后发送到Trunk链路上。而在转发VLAN20的数据帧时,不剥离VLAN标签直接转发到Trunk链路上。
端口类型-Hybrid
Hybrid端口收发数据帧的规则如下:
当接收到对端设备发送的不带Tag的数据帧时,会添加该端口的PVID,如果PVID在允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。
当接收到对端设备发送的带Tag的数据帧时,检查VLAN ID是否在允许通过的VLAN ID列表中。如果VLAN ID在接口允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。
Hybrid端口发送数据帧时,将检查该接口是否允许该VLAN数据帧通过。如果允许通过,则可以通过命令配置发送时是否携带Tag。
配置port hybrid tagged vlan vlan-id命令后,接口发送该vlan-id的数据帧时,不剥离帧中的VLAN Tag,直接发送。该命令一般配置在连接交换机的端口上。
配置port hybrid untagged vlan vlan-id命令后,接口在发送vlan-id的数据帧时,会将帧中的VLAN Tag剥离掉再发送出去。该命令一般配置在连接主机的端口上。
本例介绍了主机A和主机B发送数据给服务器的情况。在SWA和SWB互连的端口上配置了port hybrid tagged vlan 2 3 100命令后,SWA和SWB之间的链路上传输的都是带Tag标签的数据帧。在SWB连接服务器的端口上配置了port hybrid untagged vlan 2 3,主机A和主机B发送的数据会被剥离VLAN标签后转发到服务器。
Access端口收发数据帧的规则如下:
1.接收
如果该端口收到对端设备发送的帧是untagged(不带VLAN标签),交换机将强制加上该端口的PVID。如果该端口收到对端设备发送的帧是tagged(带VLAN标签),交换机会检查该标签内的VLAN ID。当VLAN ID与该端口的PVID相同时,接收该报文。当VLAN ID与该端口的PVID不同时,丢弃该报文。
2.发送
Access端口发送数据帧时,总是先剥离帧的Tag,然后再发送。Access端口发往对端设备的以太网帧永远是不带标签的帧。
Trunk端口收发数据帧的规则如下:
1.接收
当接收到对端设备发送的不带Tag的数据帧时,会添加该端口的PVID,如果PVID在允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。当接收到对端设备发送的带Tag的数据帧时,检查VLAN ID是否在允许通过的VLAN ID列表中。如果VLAN ID在接口允许通过的VLAN ID列表中,则接收该报文。否则丢弃该报文。
2.发送
端口发送数据帧时,当VLAN ID与端口的PVID相同,且是该端口允许通过的VLAN ID时,去掉Tag,发送该报文。当VLAN ID与端口的PVID不同,且是该端口允许通过的VLAN ID时,保持原有Tag,发送该报文。
Hybrid端口收发数据帧的规则如下:
1.接收
当接收到对端设备发送的不带Tag的数据帧时,会添加该端口的PVID,如果PVID在允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。当接收到对端设备发送的带Tag的数据帧时,检查VLAN ID是否在允许通过的VLAN ID列表中。如果VLAN ID在接口允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。
2.发送
Hybrid端口发送数据帧时,将检查该接口是否允许该VLAN数据帧通过。如果允许通过,则可以通过命令配置发送时是否携带Tag。
配置子接口时,需要注意以下几点:
1.必须为每个子接口分配一个IP地址。该IP地址与子接口所属VLAN位于同一网段。
2.需要在子接口上配置802.1Q封装,来剥掉和添加VLAN Tag,从而实现VLAN间互通。
3.在子接口上执行命令arp broadcast enable使能子接口的ARP广播功能。
dot1q termination vid
命令用来配置子接口dot1q封装的单层VLAN ID。缺省情况,子接口没有配置dot1q封装的单层VLAN ID。本命令执行成功后,终结子接口对报文的处理如下:接收报文时,剥掉报文中携带的Tag后进行三层转发。转发出去的报文是否带Tag由出接口决定。发送报文时,将相应的VLAN信息添加到报文中再发送。
arp broadcast enable
命令用来使能终结子接口的ARP广播功能。缺省情况下,终结子接口没有使能ARP广播功能。终结子接口不能转发广播报文,在收到广播报文后它们直接把该报文丢弃。为了允许终结子接口能转发广播报文,可以通过在子接口上执行此命令。