生成树协议

STP(Spanning Tree Protocol)是生成树协议的英文缩写,可应用于计算机网络中树形拓扑结构建立,主要作用是防止网桥网络中的冗余链路形成环路工作。

运行方式就是使用生成树算法(SAT)创建一个拓扑数据库,然后找出并关闭冗余链路

生成树协议运行生成树算法(STP)。生成树算法很复杂,但是其过程可以归纳为以下三个部分。

  • 选择根网桥
  • 选择根端口
  • 选择指定端口

    运行方式

    根网桥依据

    交换机的网桥优先级,网桥优先级是用来衡量网桥在生成树算法中优先级的十进制数,取值范围是0~65535.默认值是32768,网桥ID=网桥优先级+网桥MAC地址组成的,共有8个字节。由于交换机的网桥优先级都是默认,所以在根网桥的选举中比较的一般是网卡MAC地址的大小,选取MAC地址小的为根网桥。

    根端口依据

  • 到根网桥路径开销最低。

根路径开销是两个网桥间的路径上所有链路的开销之和,也就是某个桥网到达根网桥的中间所有链路的路径开销之和。

  • 最低的发送方网桥ID。
  • 最低的端口ID。

由于端口的ID是由优先级和端口号组成,保证了根端口的唯一性。

指定端口依据

  • 根路径开销较低
  • 所在的交换机网桥ID值最小
  • 端口号最小

注:根桥上的所有端口都是指定端口

端口状态

Blocking(阻塞状态)

此时,二层端口为非指定端口,也不会参与数据帧的转发。该端口通过接收BPDU来判断根交换机的位置和根ID,以及在STP拓扑收敛结束之后,各交换机端口应该处于什么状态,在默认情况下,端口会在这种状态下停留20秒钟时间。

Listening(侦听状态)

生成树此时已经根据交换机所接收到的BPDU而判断出了这个端口应该参与数据帧的转发。于是交换机端口就将不再满足于接收BPDU,而同时也开始发送自己的BPDU,并以此通告邻接的交换机该端口会在活动拓扑中参与转发数据帧的工作。在默认情况下,该端口会在这种状态下停留15秒钟的时间。

Learning(学习状态)

这个二层端口准备参与数据帧的转发,并开始填写MAC表。在默认情况下,端口会在这种状态下停留15秒钟时间。

Forwarding(转发状态)

这个二层端口已经成为了活动拓扑的一个组成部分,它会转发数据帧,并同时收发BPDU。

Disabled(禁用状态)

这个二层端口不会参与生成树,也不会转发数据帧。

潜在故障

  • 生成树算法不稳定
  • 端口工作方式导致端口工作模式不匹配
  • 单向链路故障
  • 数据帧被损坏
  • 网络设备资源不足引起故障
  • 配置 PortFast 快速端口引起的故障

    内部网关协议

    IGP(内部网关协议)指的是在一个自治系统(AS)的内部所使用的一种路由协议,它一般分为 2 种类型:距离-矢量路由协议、链路状态路由协议。

    RIP

    RIP(Routing Information Protocol),基于距离矢量算法的路由协议,利用跳数来作为计量标准。在带宽、配置和管理方面要求较低,主要适合于规模较小的网络中。

RIP 配置很简单方便,容易上手,但 RIP 显而易见的缺陷就是容易学到错误路由,除此之外,RIP 的收敛时间比较长,也是一个卡点。

OSPF

OSPF(Open Shortest Path First),开放式最短路径优先,属于内部网关协议(IGP),用于在单一自治系统(AS)内决策路由。
著名的迪克斯彻(Dijkstra)算法被用来计算最短路径树

OSPF 支持负载均衡和基于服务类型的选路,也支持多种路由形式,如特定主机路由和子网路由等

OSPF 收集信息的确很精细,每个细节都不放过,但同时也太多大庞大了,很是负累。

ISIS

ISIS(Intermediate system to intermediate system),中间系统到中间系统,是一个分级的链接状态路由协议,基于 DECnet PhaseV 路由算法,实际上与OSPF 非常相似,它也使用 Hello 协议寻找毗邻节点,使用一个传播协议发送链接信息。ISIS 可以在不同的子网上操作,包括广播型的 LAN、WAN 和点到点链路。

边际网关协议

BGP(Border Gateway Protocol)是指边界网关协议,它是运行在自制系统间的路由协议,主要作用交换域间路由协议。可以说,它是互联网上一个核心的去中心化自治路由协议。它存在的目的就是去中心化,以达到各个网络自治。

BGP 是 EGP(外部网关协议)发展了 20 多年以后的最新成果,所以和 IGP(内部网关协议)可以形成呼应和对比。

BGP 是应用层协议,其传输层使用 TCP,默认端口号是 179。

BGP 是唯一使用 TCP 作为传输层的路由协议,其他的路由协议可能都还到不了传输层。

BGP 又分成了 EBGP(Exterior BGP:不同 AS 之间的 BGP 连接)和 IBGP(Interior BGP :同一个 AS 之间的连接)两种类型。

IBGP 一般用 loopback 建邻居保证高可用,loopback 路由需要 OSPF 传递。

BGP可以支持大型企业网,也有很不错的策略属性,但是终归BGP网络的维护是有一定的复杂程度的,并不是每个网络工程师都掌握了,而且BGP对于路由的学习,是比较特殊的适用于大型企业网。所以一般用于在各个企业网之间使用。OSPF虽然在网络规模上比不上BGP,但是在中小型企业网中还是比较受欢迎的,因为配置难度不高,而且路由计算简单,运行速度也还可以。并且支持OSPF的设备要比支持BGP的要多。所以在企业内部网络应用更为广泛。

地址解析协议

ARP是 Address Resolution Protocol(地址解析协议)的缩写,属于 TCP/IP 协议簇,用于根据IP 地址获取主机MAC 地址。
相关协议还有 RARP、代理 ARP,NDP 用于在 IPv6 中代替地址解析协议等。

  • 主机发送信息时将包含目标IP 地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的MAC 地址;
  • 收到返回消息后将该IP 地址和MAC 地址存入本机ARP 缓存中并保留一定时间,下次请求时直接查询ARP 缓存以节约资源。

局域网络上的主机可以自主发送ARP应答报文,其他主机收到ARP 报文时不会检测该报文的真实性就会将其记入本机ARP 缓存

ARP 报文

硬件类型 协议类型
硬件地址长度 协议长度 操作类型
发送方硬件地址(0-3 字节)
发送方硬件地址(4-5 字节) 发送方IP地址(0-1 字节)
发送方 IP 地址(2-3 字节) 目标硬件地址(0-1 字节)
目标硬件地址(2-5 字节)
目标 IP 地址(0-3 字节)

ARP 缓存

ARP 缓存是个用来储存IP 地址和MAC 地址的缓冲区,其本质就是一个IP 地址→MAC 地址的对应表,表中每一个条目分别记录了网络上其他主机的IP 地址及与之对应的MAC 地址。

ARP 命令

用于查询本机ARP 缓存中IP 地址和MAC 地址对应关系,还可以添加或删除静态对应关系等。

arp -a/arp –g

查看ARP 缓存中的所有记录,-a被视为 all,即全部,-g一直是 UNIX 平台上使用,Windows 两者皆可使用

arp -a IP

多个网卡设备上,arp -a加上指定网卡的IP 地址,只显示与该网卡相关的ARP 缓存

arp -s IP MAC

向ARP 缓存中添加一条静态记录

arp -d IP

删除ARP 缓存中的一条静态记录

ARP 欺骗

地址解析协议是建立在网络中各个主机互相信任的基础上的,攻击者可以向某一主机发送伪造的ARP 报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP 欺骗。

防御措施

路由器(网关)上做IP 地址→MAC 地址静态绑定

网络地址转换

NAT 是 Network Address Translations(网络地址转换)的缩写,用于私有(内网)IP 地址和公共(公网)IP 地址之间的转换,缓解 IPv4 地址池不够用的同时还能隐藏网络内部的计算机有效地避免来自网络外部的攻击

原理

NAT 一般由路由器(网关)完成,

  1. 当局域网络的任一私有(内网)IP 地址向 Internet 发送数据包时,借助 NAT 修改 IP 报文的源 IP 地址和目的 IP 地址并自动完成 IP 地址校验,这时私有(内网)IP 地址就被转换成公共(公网)IP 地址;
  2. 而由 Internet 传送回来的数据包,先由 NAT 接收,通过查询原本记录的路由信息将目标 IP 地址从公共(公网)IP 地址改回原来的源 IP 地址并传送给相应的私有(内网)IP 地址所在终端。

这样,一个局域网只需使用少量公共(公网)IP 地址(大多数是 1 个)即可实现私有地址网络内所有计算机与 Internet 的通信需求。

实现方式

NAT 的实现方式有三种,即Static NAT(静态转换)、Dynamic NAT(动态转换)和 PAT(端口多路复用)

静态转换

静态转换是指将内部网络一对一地将私有(内网)IP 地址转换为公共(公网)IP 地址,并且固定不变;借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。

动态转换

动态转换是指将内部网络随机地将私有(内网)IP 地址转换为公共(公网)IP 地址,用于正常的局域网办公。

端口转换

即转换时加上端口

域名解析服务

域名解析服务,顾名思义,有专门的服务将域名解析到 IP 地址

树状结构

首先域名是一个树状结构:最顶层的域名是根域名(root),然后是顶级域名(top-level domain,简写 TLD),接着是一级域名、二级域名、三级域名。

根域名

所有域名的起点都是根域名,它写作一个点 .,放在域名的结尾;因为对于所有域名都是相同的,所以就省略不写,比如yuwei.cc等同于yuwei.cc.,浏览器都可以正常访问。

顶级域名

根域名的下一级是顶级域名,分成两种:通用顶级域名(gTLD,如:.com、.net 等)和国别顶级域名(ccTLD,如:.cn、.us 等)。

一级域名

一级域名就是你在某个顶级域名下面,自己注册的域名;如:yuwei.cc 就是在顶级域名 .cc 下面注册的。

二级域名

二级域名是一级域名的子域名,以及后面的层级都是由域名持有者自行设置,不用得到许可。

查询过程

  • 域名对应的 IP 地址,都保存在 DNS 服务器
  • 输入域名后浏览器会在后台自动向 DNS 服务器发出解析请求
  • DNS 服务器 返回对应的 IP 地址,然后访问该网站

命令查看

使用 nslookup & dig 命令跟 DNS 服务器互动,演示查询结果和过程

1
2
#默认使用本机 DNS 服务器,也可以后续指定
nslookup www.qq.com 114.114.114.114