数学和计网实验

This commit is contained in:
estomm
2019-11-07 09:53:52 +08:00
parent a0a0bc02bc
commit 25c3b3476c
33 changed files with 656 additions and 6 deletions

View File

@@ -0,0 +1,328 @@
# 802.11
> 参考文献
> * [802.11协议族](https://blog.csdn.net/ght886/article/details/79862046)
## 1 无线网络概述
### 定义
无线网络是利用无线电波作为信息传输的媒介所构成的网络。可以将无线网络分为:无线个人网络(PAN)、无线局域网(LAN)、无线城域网(MAN)、无线广域网(WAN)。
### 分类
![](image/无线网络分类.png)
### 组网示意图
![](image/无线网络组网.png)
* AC(Access Controller,无线访问控制器):无线控制器对局域网中的FIT AP进行管理和控制,无线控制器还可以通过与认证服务器交互信息来为用户提供无线接入认证功能。
* AP(Access Point,无线接入点):AP提供无线客户端到局域网的桥接功能,在无线客户端与无线局域网之间进行无线与有线之间的帧转换,AP分为FAT AP和FIT AP两种模式。
* AC+FIT AP是当前部署无线网络时的主流模式。无线控制器AC集中处理所有的安全、管理和控制功能,所有配置均是在无线控制器和网桥上;FIT AP零配置,FIT AP只需要从无线控制器上注册并下载配置,提供可靠的、高性能的射频服务。
### FIT AP注册方式
FIT AP 与 AC有三种连接方式:直连方式、二层网络连接、跨三层网络连接。
* AP与无线控制器通过二层网络连接:AP通过DHCP server获取IP地址;然后,通过发出二层广播的发现报文尝试联系一个无线控制器,收到请求的控制器会检查该AP是否有接入本机的权限,如果是有权限,则响应请求;AP从控制器上下载最新软件版本与配置,开始工作。
* AP与无线控制器通过三层网络连接时,采用option 43方式进行注册:AP通过DHCP server获取IP地址、43属性,AP从option43中获取控制器的IP,然后向无线控制器发送单播请求报文,受到请求的控制器检查AP是否有接入本机的权限,如果有权限则响应请求,AP从控制器上下载最新的软件版本与配置,开始工作。
## 2 802.11帧
### 帧格式示意图
![](image/802.11帧格式.png)
802.11数据帧可以分为三类:管理真、数据帧、控制帧。
### 帧字段说明
1. 帧控制结构(Frame Control)
* Protocol Version: (协议版本)通常为0
* Type: 帧类型
* 控制帧:用于竞争期间的握手通信和正向确认、结束非竞争期等; 
* 管理帧:主要用于STA与AP之间协商、关系的控制,如关联、认证、同步等; 
* 数据帧:用于在竞争期和非竞争期传输数据。
* Subtype: 进一步判断帧的子类型  
* To DS: 表明该帧是否是BSS向DS发送的帧 
* From DS: 表明该帧是否是DS向BSS发送的帧 
* More Fragment: 用于说明长帧被分段的情况,是否还有其它的帧,如果有则该值设置为1
* Retry(重传域): 表示该分段是先前传输分段的重发帧。 
* Power Management: 表示传输帧以后,站所采用的电源管理模式
*  More Data: 表示有很多帧缓存到站中。即至少还有一个数据帧要发送给STA是设置为1。 
* Protected Frame: 表示根据WEP(Wired Equivalent Privacy)算法对帧主体进行加密。如果帧体部分包含被密钥套处理过的数据,则设置为1,否则设置为0  
* Order(序号域): 在长帧分段传送时,该域设置为1表示接受者应该严格按照顺序处理该帧,否则设置为0
2. Duration/ID(持续时间/标识)
表明该帧和它的确认帧将会占用信道多长时间,Duration 值用于网络分配向量(NAV)计算。
3. Address Fields(地址域): 
* Destination Address
* Source Address
* BSS ID 
4. Sequence Control(序列控制域): 用于过滤重复帧
* MSDU(MAC Server Data Unit), 12位序列号(Sequence Number)终端方出去的数据包序号。
* MMSDU(MAC Management Server Data Unit), 4位片段号(Fragment Number)组成,数据包分片的序号。
5. QoS Control:服务质量控制。
6. HT Control:仅在个别帧中出现
7. Frame Body(Data): 发送或接收的信息。对于不同类型的数据帧来说,这个域的格式差别较大
8. FCS(CRC): 包括32位的循环冗余校验(CRC),用于检错,注意是检错不是纠错
### 管理帧
* 管理帧的一般格式
![](image/802.11管理帧.png)
其中Address 1代表目的地址,Address 2代表原地址,Address 3 代表BSSID(Basic Set ID)。
* 管理帧的子类型
|子类型Subtype值|代表的类型|
|-|-|
|0000|Association Request(关联请求)|
|0001|Association Response (关联响应)|
|0010|Reassociation Request(重关联请求)|
|0011|Reassociation Response(重关联响应)|
|0100|Probe Request(探测请求)|
|0101|Probe Response(探测响应)|
|1000|Beacon(信标帧)|
|1001|ATIM(通知传输指示信息)|
|1010|Disassociation(解除关联)|
|1011|Authentication(解除身份验证)|
|1100|Deauthentication(解除身份验证)|
* Beacon帧
* Association Request
* Association Response
* Probe Request
* Probe Response
* Authentication
### 数据帧
* 数据帧的格式
![](image/802.11数据帧.png)
* address字段存在于TO DS、FROM DS关系
![](image/802.11数据帧address字段.png)
可能会进行分段分片。
### 控制帧
CSMA/CA 访问控制机制
分布式协调功能(distributed coordination function,简称DCF)
预约信道:RTS/CTS
虚拟载波监听功能与网络分配矢量
帧间隔
RTS(Request To Send)请求发送
RA:RTS用于为要传送的数据帧、管理帧或者控制帧预约信道,RA就是后续这些帧的目的地址;
TA:发送RTS的无线终端的地址;
Duration:持续时间,单位为微秒。值为传送一个管理帧或者数据帧时间加上一个CTS时间、一个ACK再加上3个SIFS。
CTS(Clear To Send)允许发送
RA:直接拷贝自对应RTS中的TA;
Duration:拷贝自对应的RTS中的Duration值,但要减去传输此CTS帧的时间,并再减去一个SIFS。
ACK
RA:拷贝自所要确认的帧的Address 2字段;
Duration:
如果Frame Control中More Fragment为0,那么Duration为0;
否则将拷贝自所要确认的帧中的Duration值,并减去传输此ACK所需时间,再减去一个SIFS。
## 3 802.11与以太网帧转换
### 802.11帧封装
![](image/802.11与以太网帧转换.png)
### 无线介质到有线介质
1. 基站收到一个帧,会检测该帧是否完整。接下来,基站会帧对所使用的物理城,检视物理层标头,然后验证802.11帧上的帧检验码
2. 该帧无误,基站会继续检视是否应该进一步处理
* 传送至基站的帧,会将基站的MAC地址(BSSID)放到802.11MAC标头的address1位。不符该基站BSSID的帧应予以丢弃。(有些产品并未实现此步骤)
* 802.11 MAC接着监测且移出重复的帧。产生重复帧的原因很多,不过最常见的情况是802.11应答信息在传递过程中丢失或有所损毁。为了简化上层协议的工作,因此由802.11MAC负责剔除重复的帧
3. 一旦决定处理该帧,就必须进行解密,因为该帧会收到链路层安全算法的保护
4. 解密之后,判断该帧是否为帧片段,是否重组。完整性保护针对重组后完整帧,而不是个别的帧片段。(完整性保护ICV在数据中,也被加密)
5. 经过步骤2的检验,判定基站必须桥送该帧,较复杂的802.11MAC标头就会被转换为较简单的以太网MAC标头。
* 记录在802.11MAC标头的address3的目的地址,会被复制到以太网的目的地址。
* 记录在802.11MAC标头的address2位的源地址,会被复制到以太网的源地址
* 从802.11data位里的SNAP标头,将TYPE类型代码复制到以太网帧里的type位。如果该以太网帧亦使用SNAP,就复制整个SNAP标头
* 顺序信息主要供帧片段重组之用,不过当帧被桥送之后即立即丢弃
* 如果有标准的服务质量处理程序,即在此进行无线与有线的Qos对应。不过到目前为止,用来表示服务质量的形式,通常就是在有线帧中使用的802.1p优先级等级bit,或者其他的控制形式。
6. 重新计算帧校验码。以太网与802.11使用相同的算法来计算FCS,不过802.11帧多出一些位,同时为FCS所保护。
7. 将产生的新帧交付以太网界面传送
### 有线介质至无线介质
1. 验证以太网FCS后,基站首先会检视是否需要进一步处理所接收到的帧,也检视该帧的目的地址是否属于目前与基站连接的工作站。
2. 将SNAP标头加入以太网帧的数据之前。上层封包是以SNAP标头进行封装,而其type位是自以太网里的类型代码复制而来。如果该以太网帧也使用SNAP,则复制整个SNAP标头
3. 对帧的传送进行排程。802.11包含复杂的省电过程,将帧置于传送序列之前,基站可能会将帧暂存于缓存区。
4. 一旦帧被置于序列待传,就会被赋予一个顺序编号。如有必要,所产生的数据可以用完整性检测值加以保护。如果帧需要分段,则会根据事先设定好的分段门限进行分段。分段帧时,将会在sequence control位指定片段编号
5. 如果帧需要保护,对帧的本体进行加密
6. 802.11MAC标头根据以太网MAC首部产生
* 将以太网的目的地址复制到802.11MAC标头的address1位
* 将BSSID置于MAC标头的address2位,以作为帧的发送者
* 将帧的源地址复制到MAC标头的address3
* 将其它位填入802.11MAC标头。也就是把预计传送时间填入duration位,并把适当的标志填入到frame control 位
7. 重新计算帧校验码。以太网与802.11使用相同的算法来计算FCS,不过802.11帧多出一些位,同时为FCS所保护
8. 所产生的新帧交付802.11界面传送界面
## 4 802.11工作原理
### 无线网络接入过程
![](image/无线网络接入过程.png)
包括四个阶段:网络扫描、链路认证、建立连接、数据传输。
1. 网络扫描:无线网卡发现附近有可能接入的所有无线网络
2. 链路认证:802.11标准要求无线网络终端访问网络前进行链路认证。开放式和共享秘钥。
3. 建立关联:若无线终端想要接入无线网络,与特定的AP(接入点)建立关联。
4. 数据传输:用户开始网络数据访问。之前需要用户身份认证。
> * 链路认证:只允许有限的网络访问,确认身份后允许完整的网络访问权限。可以对用户进行区分并在用户访问网络之前限制其访问权限。对于网络协议而言,链路认证可以配合任何网络层协议使用。
> * 用户身份认证WPA、WPA 2-PSK 、802.1x、WAP、MAC认证。
### 网络扫描
* 相关的参数值
|参数|含义|
|-|-|
|BSSType |指定搜寻的网络类型
|BSSID |针对特定网络进行扫描或者所有网络(individual broadcast)
|ScanType |主动扫描或者被动扫描(active passive)主动扫描发送Probe Request帧,被动扫描监听Beacon帧。
|ChannelList |被动扫描,当前信道被动动监听目前存在的网络列表。
|ProbeDelay |主动扫描某个信道,等到ProbeResponse延时计时器。
|MinChannelTime MaxChannelTime |每个特定的信道使用的最大最小时间量。
* 被动扫描(passive scanning, Beacon 帧)
可以节省电池的电力,不需要传送任何信号。工作站会在信道表(channel list)所列的各个信道之间不断切换,并等待 Beacon 帧。所收到的任何帧都会被缓存起来,以便获取传送这些帧的BSS(Basic Service Set,基本服务集合)的相关数据。
* 主动扫描( Probe Request帧,Probe Response帧)
主动扫描是主动寻找网络,具体流程:
1. 跳至某个信道,然后等候来帧指示,或者等到ProbeDelay 计时器超时。
2. 取得介质使用权后送出一个Probe Request帧
3. 至少等候一段最短信道时间(MinChannelTime)。如果介质不忙碌,表示没有网络存在。跳至下个信道。如果在MinChannelTime这段期间介质非常忙碌,就继续等候一段时间,直到最长的信道时间(即 MaxChannelTime),然后处理Probe Response帧。
4. 网络收到Probe Request帧,就发出 Probe Response帧。
扫描结束后会产生一份扫描报告,这份报告列出了该次扫描所发现的所有BSS及其相关参数(如BSSID、SSID 、BSSType等)
### 链路认证
链路认证是无线终端接入无线网络的起点,也是一种对网络表明身份的方式。
* 开放认证方式(Open System Authentication)
* Shared-Key 认证方式(Shared Key Authentication)
两种认证方式都是通过Authentication 报文实现。
### 建立关联
完成身份认证后,无线终端就可以与无线服务端进行关联(或者跟新的无线服务端进行重新关联),以便获得网络的完全访问权。
* 无线终端在发起Association或者Re-association请求帧
* 无线服务端发送Association response或Reassociation response响应帧
无线终端和无线服务端成功完成关联,表明两个设备成功建立了802.11链路。
### 数据传输
参考:802.11与以太网帧转换
###
### 用户认证-WPA/WPA2-PSK认证
WPA(wifi protected access)wifi保护接入。链路认证阶段使用开放系统认证。用户身份认证阶段采用WPA-PSK认证。
WPA-PSK通过Pre-shared key进行认证,以Pre-shared key作为PMK(pairwise master key成对主秘钥)协商临时加密。无线终端预先配置Key,通过AP-AC四次握手协商验证无线终端侧Key的合法性。产生PTK和GTK用来加密无线报文。
![](image/WPA-PSK认证.png)
1. 四次单播秘钥协商过程
* 无线服务端发送EAPOL-Key给无线终端,包括Anonce
* 无线终端计算PTK,发送EAPOL-Key给无线服务端。
* 无线服务端计算PTK,校验MIC,验证无线终端PMK。
* 无线服务端发送EAPOL-Key给无线终端,安装秘钥。
* 无线终端发送EAPOL-Key给无线服务端,已经安装秘钥。
2. 二次组播秘钥协商过程
* 无线终端发送秘钥
* 无线服务端计算GTK。
## 5 802.11协议族
### ★802.11a★
  802.11a:1999年,IEEE 802.11a标准制定完成,该标准规定无线局域网工作频段在5GHz,数据传输速率达到54Mbps, 传输距离控制在10~100米。802.11a采用正交频分复用(OFDM)的独特扩频技术;可提供25Mbps的无线ATM接口和10Mbps的以太网无线帧结构接口,以及TDD/TDMA的空中接口;支持语音、数据、图像业务;一个扇区可接入多个用户,每个用户可带多个用户终端。
### ★802.11b★
  802.11b:1999年9月IEEE 802.11b被正式批准,该标准规定无线局域网工作频段在2.4GHz,数据传输速率达到11Mbps。该标准是对IEEE 802.11的一个补充,采用点对点模式和基本模式两种运作模式,在数据传输速率方面可以根据实际情况在11Mbps、5.5Mbps、2Mbps、1Mbps的不同速率间自动切换,802.11b和工作在5GHz频率上的802.11a标准不兼容。由于价格低廉,802.11b产品已经被广泛地投入市场,并在许多实际工作场所运行。
### ★802.11g★
IEEE的802.11g标准是对流行的802.11b(即Wi-Fi标准)的提速(速度从802.11b的11Mb/s提高到54Mb/s)。802.11g接入点支持802.11b和802.11g客户设备。同样,采用802.11g网卡的笔记本电脑也能访问现有的802.11b接入点和新的802.11g接入点。 不过,基于802.11g标准的产品目前还不多见。如果你需要高速度,已经推出的802.11a产品可以提供54Mb/s的最高速度。
### ★802.11n ★
  Wi-Fi联盟在802.11a/b/g后面的一个无线传输标准协议, 为了 实现 高带宽、高质量的WLAN服务,使无线局域网达到以太网的性能水平,802.11N(TGn)应运而生。802.11n标准至2009年才得到IEEE的正式批准,采用 MIMO OFDM调制技术,而且已经大量在PC、笔记本电脑中应用.
802.11n物理层采用的关键技术有MIMO、MIMO-OFDM、40MHz信道、Short GI、FEC、MRC等。802.11n MAC层采用的关键技术有Block确认、帧聚合等。
### ★802.11ac★
  802.11ac的核心技术主要基于802.11a
  继续工作在5.0GHz频段上以保证向下兼容性,但数据传输通道会大大扩充,在当前 20MHz的基础上增至40MHz或者80MHz,甚至有可能达到160MHz。再加上大约10%的实际频率调制效率提升,新标准的理论传输速度最高有望 达到1Gbps,是802.11n 300Mbps的三倍多。
  802.11ac是第一个承诺将无线数据传输率提升到超过1Gbps的标准,而且还包含很多先进特性来改善用户体验。802.11ac使用更多的多流空间传输技术,采用8x8(MIMO)多输入输出,提供更宽的数据传输信道带宽(达到80MHz),甚至还可以使用信道聚合技术,将数据信道总带宽提升至160MHz。此外,802.11ac获得成功的关键在于他是一个渐进的技术:实现其目标,超越了几个重要的典范,并建立在现有的802.11n基础之上。这是巨大的优势,因为对那些将要使用802.11ac的厂商和消费者来说,802.11ac能够相对容易地从现有无线网络和应用(使用802.11n或者更早期无线协议过渡)。
### 802.11a/b/g/n比较
![](image/802.11协议族比较.png)
### 802.11n与802.11ac比较
![](image/802.11协议族比较2.jpg)
### 802.11n关键技术-MIMO技术
  802.11n 将 WLAN 带入了全面的多天线时代。MIMO(多输入多输出)技术是指在发射端和接收端分别使用多个发射天线和接收天线,信号通过发射端和接收端,从而改善每个用户的服务质量(误码率或数据速率)。
  传统的WLAN 系统中,AP 和无线用户通常只是各用一根天线,采用 802.11a/b/g 协议传输,在信号的传输速率上最多达到54Mb/s,很难再提高其速率。而随着 WLAN 技术的普及和广泛应用,用户要求大幅度提高无线通信速率的愿望越来越强烈。802.11n 协议中采用了 MIMO(多输入多输出)多天线技术,WLAN 的信号传输可以很容易的突破单天线所造成的速率瓶颈,满足用户对带宽和信号质量的要求。
![](image/802.11n-MIMO.png)
### 802.11n关键技术——OFDM(正交频分复用)技术
![](image/802.11n-OFDM.png)
### 802.11n关键技术——MIMO-OFDM
![](image/802.11n-MIMO&OFDM.png)
## 6 无线加密技术
### ☆无线网络加密技术之WEP(有线等效加密)☆
  尽管从名字上看似乎是一个针对有线网络的安全选项,其实并不是这样。WEP标准在无线网络的早期已经创建,目标是成为无线局域网WLAN的必要的安全防护层,但是WEP的表现无疑令人非常失望。它的根源在于设计上存在缺陷。 在使用WEP的系统中,在无线网络中传输的数据是使用一个随机产生的密钥来加密的。但是,WEP用来产生这些密钥的方法很快就被发现具有可预测性,这样对于潜在的入侵者来说,就可以很容易的截取和破解这些密钥。即使是一个中等技术水平的无线黑客也可以在两到三分钟内迅速的破解WEP加密。
### ☆无线网络加密技术之WPA☆
  WPA延用WEP算法函数RC4,但增加了一些特性以消除WEP使用密码方式上的一些问题: 1.更严格的认证:一个802.1x服务器,如Radius服务器,可以单独地用于用户认证。 2.更长的密钥:WPA将Initialization Vector (IV)的长度增加到48位,主密钥的长度增加到128位。 3.Temporal Key Integrity Protocol (TKIP)为每一个客户生成不同密钥,并且为每一个后续数据包使用不同的密钥。
### ☆无线网络加密技术之WPA2☆
  在802.11i颁布之后,Wi-Fi联盟推出了WPA2,它支持AES(高级加密算法),因此它需要新的硬件支持,它使用CCMP(计数器模式密码块链消息完整码协议)。在WPA/WPA2中,PTK的生成依赖PMK,而PMK获的有两种方式,一个是PSK的形式就是预共享密钥,在这种方式中PMK=PSK,而另一种方式中,需要认证服务器和站点进行协商来产生PMK。

View File

@@ -7,5 +7,67 @@
3. 网络拓扑发现实验
## 1 网管软件基本功能实验
### 网络管理软件Quidview
对路由器、交换机、接入服务器、食品设备进行统一管理和维护。
功能:
* 利用设备的管理信息库(MIB)完成浏览设备的配置信息
* 监视设备的运行状态
* 集成了SNMP、HP OpenView NNM等通用的网关平台。
### 基本概念
网络管理包括对硬件、软件和人力的使用、综合与协调,以便对网络资源进行监视、测试、配置、分析、评测和控制。简称网管。
* 网管站:整个网络管理系统的核心。也称为网络运行中心。可以称为管理者。
* 被管设备:主机、路由器、集线器、网桥。称为网络元素、网元。
* 被管对象:被管设备中有很多被管对象。维持可供管理程序读写的若干控制和状态信息。
* 管理信息库MIB:耦控制和状态信息总称。管理程序使用MIB中的信息的值对网络进行管理。
* 网络管理协议:管理程序和代理程序之间进行通信的规则。
* 管理程序和代理程序:按客户/服务器方式工作。管理程序运行SNMP客户程序,像某个代理程序发出请求,代理程序运行SNMP服务程序,返回响应。
* OSI网络管理标准:将网络管理分为系统系统管理、层管理和层管理。五个功能域:故障管理、配置管理、计费管理、性能管理、安全管理。
### RMON管理
RMON远程网络监视。有网管侧配置设备代理统计和计算某一个或几个监视对象的值,然后将这些值域设定的们限进行比较。超过门限向网管发出警告。
RMON管理的主要功能定义了统计、历史、告警和事件组的监视和配置功能。
## 2 SNMP基本原理的验证与分析实验
## 3 网络拓扑发现实验
> SNMP 协议。
## 3 网络拓扑发现实验
### 概述
用于构造并管理整个数据通信网络的拓扑构造。定时轮询监视、对设备的trap进行处理,保证网络视图与实际网络拓扑一致。
功能:
* 自动发现网络拓扑
* IP网络层的网络拓扑显示
* 拓扑图的自动排列和按比例缩放
* 对选中视图区域局部缩放。
* 不同设备采用不同位图图标。
* 图标颜色标识响应设备状态。
……
### 原理
* 拓扑管理平台选择种子节点
* NMS首先读取种子节点的路由表,通过分析路由表确定网络上已经存在的子网。
* NMS学习到网络子网的情况通过ping或broadcast报文来确定子网中的网络设备。
* 以ping的方式发现设备和主机。ICMPreply响应,速度慢。
* 通过broadcast方式发现设备或主机。速度快。
* 根据学习到的网络信息及设备主机信息,按照一定算法形成拓扑结构
* 种子节点设置经验:
* seed节点位置居中、路由信息丰富的设备。
* 一半平台支持多种子节点。

View File

@@ -27,12 +27,12 @@ import static 引入静态路由。将路由器中手动添加的静态路由直
### 路由来源说明
* 直连路由:当路由设备配置连接完成之后,会根据所有的接口IP地址生成直连路由。
* 直连路由:当路由设备配置连接完成之后,会根据所有的接口IP地址生成直连路由。Proto表示direct。
* 到每个接口的直接路由地址,NextHop为自身路由器的回环IP地址,接口是InLoop表示会将数据包直接交付给自身。
* 到每个接口的直连的网段的地址,NextHop为自身路由器连接该网段的IP地址,接口是自身路由器连接该网段的接口。
![](image/ip routing table.png)
* 动态路由:根据OSPF、RIP、BGP生成的路由。Proto表示是dynamic。
* 静态路由:通过ip-route static 配置的路由,手动导入的路由。
* 静态路由:通过ip-route static 配置的路由,手动导入的路由。Proto表示static。
### 路由转发算法说明
@@ -61,3 +61,6 @@ display ip routing
![](image/ip routing table.png)
## OSPF生成带权有向图,如果某个路径双向COST值不同,是否会因此导致A-B和B-A的路由不同?如果真的如此,会出现什么问题,应该怎么避免?如果存在不同那么RPF路径回溯检查会不会出问题。

View File

@@ -0,0 +1,251 @@
1# SNMP
> 参考文献
> * [简单网络管理协议](https://blog.csdn.net/HandsomeHong/article/details/80016249)
## 1 版本
简单网络管理协议(SNMP)是TCP/IP协议簇的一个应用层协议。在1988年被制定,并被Internet体系结构委员会(IAB)采纳作为一个短期的网络管理解决方案;由于SNMP的简单性,在Internet时代得到了蓬勃的发展,1992年发布了SNMPv2版本,以增强SNMPv1的安全性和功能。现在,已经有了SNMPv3版本。
### SNMPv1
SNMPv1 是 SNMP 协议的最初版本,提供最小限度的网络管理功能。SNMPv1 的 SMI 和 MIB 都比较简单,且存在较多安全缺陷。SNMPv1 采用团体名认证。团体名的作用类似于密码,用来限制NMS对Agent 的访问。
如果 SNMP 报文携带的团体名没有得到 NMS/Agent 的认可,该报文将被丢弃。SNMPV1 是一种简单的请求/响应协议。网络管理系统发出一个请求,管理器则返回一个响应。这一行为的实现是通过使用四种协议操作中的其中任一种完成的。这四种操作分别是 GET、GETNEXT、SET 和 TRAP。
* NMS 通过 GET 操作,从 SNMP 代理处得到一个或 更多的对象(实例)值。如果代理处不能提供请求列表中所有的对象(实例)值,它也就不提供任何值。
* NMS 使用 GETNEXT 操作请求代理从请求列表或对象列表中取出下一 个对象实例值。
* NMS 通过 SET 操作向 SNMP 代理发送命令,要求对对象值重新配置。
* SNMP 代理通过 TRAP 操作不定时的通知 NMS 所发生的特定事件 SNMP 是一种应用程序协议。
### SNMPv2
SNMPv2c 也采用团体名认证。在兼容 SNMPv1 的同时又扩充了 SNMPv1 的功能:它提 供了更多的操作类型(GetBulk--批量获取操作等);支持更多的数据类型(Counter32等),提供了更丰富的错误代码,能够更细致地区分错误。
SNMPV1 中的 GET、GETNEXT 及 SET 操作同样适用于 SNMPV2,只是 SNMPV2 添加和增强了有关协议操作。例如 SNMPV2 中的 TRAP 操作,不但具备 SNMPV1 中 TRAP 的相同功能,而且它采用了一种不同的消息格式,它用于替换 SNMPV1 中的 TRAP。
SNMPV2 中还定了两种新操作,即 GET BULK 和 INFORM。
* NMS 通过 GET BULK 操作能有效地获取大块数据,如对象列表中的多行。请求多少数据 GETBULK 返回一个包含尽可能多的请求数据的应答消息。
* INFORM 操作使一个NMS 能发送 TRAP 给另一个 NMS 并收到回复。SNMPV2中,如果回复 GET BULK 操作的 SNMP 代理不能提供请求表中所有变量值,那么SNMP代理只提供部分结果。
### SNMPV3
SNMPv3主要在安全性方面进行了增强,它采用了 USM(基于用户的安全控制模型)和 VACM(基于视图的访问控制模型) 技术。USM 提供了认证和加密功能,VACM 确定用户是否允许访问特定的 MIB 对象以及访问方式。
SNMPV3 中增加了安全管理方式及远程控制。SNMPV3 结构引入了基于用户的安全模型用于保证消息安全及基于视图的访问控制模型用于访问控制(USM)。这种安全管理方式支持不同安全性,访问控制安全性认证和隐私授权和访问控制管理框架人员和政策用户名及密钥管理通知目标文件代理关系实体命名。
SNMPV3 使用 SNMP SET 命令配置MIB对象,使之能动态配置SNMP代理。这种动态配置方式支持本地或远程地配置实体的添加、删除及修改。
 
## 2 SNMP基本组成
基于TCP/IP的网络管理包含3个组成部分:
1. 管理信息库MIB(Management Information Base)。管理信息库包含所有代理进程的所有可被查询和修改的参数。RFC 1213[McCloghrie and Rose 1991]定义了第二版的MIB,叫做MIB-II。
2. 管理信息结构SMI(Structure of Management Information)。关于MIB的一套公用的结构和表示符号。这个在RFC 1155 [Rose and McCloghrie 1990] 中定义。例如:SMI定义计数器是一个非负整数,它的计数范围是 0~4294967295,当达到最大值时,又从0开始计数。
3. 简单网络管理协议SNMP(Simple Network Management Protocol)。管理进程和代理进程之间的通信协议,在RFC 1157 [Case et al. 1990]中定义。SNMP包括数据报交换的格式等。尽管可以在传输层采用各种各样的协议,但是在SNMP中,用得最多的协议还是UDP。
### 管理信息库MIB
* 定义
任何一个被管理的资源都表示成一个对象,称为被管理的对象。MIB是被管理对象的集合。它定义了被管理对象的一系列属性:对象的名称、对象的访问权限和对象的数据类型等。每个SNMP设备(Agent)都有自己的MIB。MIB也可以看作是NMS(网络管理系统)和Agent(网络代理)之间的沟通桥梁。
![图2 MIB树结构](image/MIB命名树.png)
MIB文件中的变量使用的名字取自ISO和ITU管理的对象标识符(object identifier)名字空间。它是一种分级树的结构。变量的名字可以表示为:
```
iso.org.dod.internet.mgmt.mib.ip.ipInReceives
# 相应的数字表示
1.3.6.1.2.1.4.3
```
* 工作方式
在网络管理中,驻留在被管设备上的Agent从UDP端口161接受来自网络管理站的串行化报文,经过解码、共同体名验证、**分析得到管理变量在MIB书中对应的节点**,从响应的模块中得到管理变量的值,形成响应报文,编码发送回管理站;管理站得到响应报文后经过处理,显示最终结果。
### 管理信息结构(SMI)
SMI(structure of management information)用来定义SNMP数据结构。SMI标准规定了所有的MIB变量必须使用抽象语法记法1(ASN.1)来定义。
ASN.1定义对象信息数据,**数据类型及序列格式**。
* ASN.1定义的数据类型
![](image/ASN.1定义的变量.png)
> 补充:应用类型(application-wide)
> * IpAddress: 以网络序表示的IP地址。因为它是一个32位的值,所以定义为4个字节;
> * counter:计数器是一个非负的整数,它递增至最大值,而后回零。在SNMPv1中定义的计数器是32位的,即最大值为4,294,967,295;
> * Gauge :也是一个非负整数,它可以递增或递减,但达到最大值时保持在最大值,最大值为232-1;
> * time ticks:是一个时间单位,表示以0.01秒为单位计算的时间;
* ASN.1定义的序列化格式
定义了ASN.1类型的值如何明确地转换为适合于传输的字节序列,也就是将ASN.1语法表示的抽象数据转换成具体的比特流。
![](image/ASN.1序列化格式.png)
* ASN.1语法实例
![](image/ASN.1语法实例.png)
### SNMP协议报文
 
SNMP报文结构如下:
![](image/SNMP报文格式.jpg)
SNMP共有5种报文,对应五种协议数据单元PDU也有5种。SNMP中定义了五种消息类型:Get-Request、Get-Response、Get-Next-Request、Set-Request和Trap 。
* Get-Request 、Get-Next-Request与Get-Response
SNMP 管理站用Get-Request消息从拥有SNMP代理的网络设备中检索信息,而SNMP代理则用Get-Response消息响应。Get-Next- Request用于和Get-Request组合起来查询特定的表对象中的列元素。
* Set-Request 
SNMP管理站用Set-Request 可以对网络设备进行远程配置(包括设备名、设备属性、删除设备或使某一个设备属性有效/无效等)。
* Trap 
SNMP代理使用Trap向SNMP管理站发送非请求消息,一般用于描述某一事件的发生,如接口UP/DOWN,IP地址更改等。
上面五种消息中Get-Request、Get-Next-Request和Set-Request是由管理站发送到代理侧的161端口的;后面两种Get-Response和Trap 是由代理进程发给管理进程的,其中Trap消息被发送到管理进程的162端口,所有数据都是走UDP封装。
## 3 SNMP报文封装
### SNMP报文封装
下图是封装成UDP数据报的5种操作的SNMP报文格式。一个SNMP报文共有三个部分组成,即公共SNMP首部、get/set首部或者trap首部、变量绑定。
![](image/SNMP报文封装.png)
### 公共SNMP首部
* 版本:写入版本字段的是版本号减1,对于SNMP(即SNMPV1)则应写入0。
* 共同体(community):共同体就是一个字符串,作为管理进程和代理进程之间的明文口令,常用的是6个字符“public”。
* PDU类型:根据PDU的类型,填入0~4中的一个数字,其对应关系如表2所示意图。
|PDU类型|名称|用途|
|-|-|-|
|0|get-request|用来查询一个或多个变量的值
|1|get-next-request|允许在一个MIB树上检索下一个变量,此操作可反复进行
|2|get-response|对get/set报文作出响应,并提供差错码、差错状态等信息
|3|set-request|对一个或多个变量的值进行设置
|4|trap|向管理进程报告代理中发生的事件
### get/set首部
* 请求标识符(request ID):这是由管理进程设置的一个整数值。代理进程在发送get-response报文时也要返回此请求标识符。管理进程可同时向许多代理发出get报文,这些报文都使用UDP传送,先发送的有可能后到达。设置了请求标识符可使管理进程能够识别返回的响应报文对于哪一个请求报文
* 差错状态(error status):由代理进程回答时填入0~5中的一个数字,见表3的描述
|差错状态|名字|说明|
|-|-|-|
|0|noError|一切正常|
|1|tooBig|代理无法将回答装入到一个SNMP报文之中|
|2|noSuchName|操作指明了一个不存在的变量|
|3|badValue|一个set操作指明了一个无效值或无效语法|
|4|readOnly|管理进程试图修改一个只读变量|
|5|genErr|某些其他的差错|
* 差错索引(error index):当出现noSuchName、badValue或readOnly的差错时,由代理进程在回答时设置的一个整数,它指明有差错的变量在变量列表中的偏移。
### trap首部
* trap 类型
![trap报文格式](image/NMPtrap报文.gif)
当使用上述类型2、3、5时,在报文后面变量部分的第一个变量应标识响应的接口。
* 企业(enterprise):填入trap报文的网络设备的对象标识符。此对象标识符肯定是在图3的对象命名树上的enterprise结点{1.3.6.1.4.1}下面的一棵子树上。
* 代理地址:即代理进程所在系统的地址。
* 特定代码:特定代码仅仅在trap类型为6时有效,否则都置为0,他是厂家自定义的事件代码。
* 时间戳(timestamp):指明自代理进程初始化到trap报告的事件发生所经历的时间,单位为10ms。例如时间戳为1908表明在代理初始化后1908ms发生了该时间。
### 变量绑定(variable-bindings)
指明一个或多个变量的名和对应的值。在get或get-next报文中,变量的值应忽略。
管理变量表示管理对象类型在某一时刻的值(或称该类型的实例),SNMP以管理变量作为操作对象。管理变量的表示方法是这样规定的:形如x.y,其中x是管理对象的object identifer。y是能唯一确定对象类型值的一组数字。
## 4 SNMP工作原理
### SNMP交互过程
![](image/SNMP工作原理.jpg)
![](image/SNMP协议栈及操作.png)
### SNMP的运行过程
驻留在被管设备上的AGENT从UDP端口161接受来自网管站的串行化报文,经解码、团体名验证、分析得到管理变量在MIB树中对应的节点,从相应的模块中得到管理变量的值,再形成响应报文,编码发送回网管站。网管站得到响应报文后,再经同样的处理,最终显示结果。
1. 首先解码生成用内部数据结构表示的报文,解码依据ASN.1的基本编码规则,如果在此过程中出现错误导致解码失败则丢弃该报文,不做进一步处理。
2. 第二步:将报文中的版本号取出,如果与本Agent支持的SNMP版本不一致,则丢弃该报文,不做进一步处理。当前北研的数据通信产品只支持SNMP版本1。
3. 第三步:将报文中的团体名取出,此团体名由发出请求的网管站填写。如与本设备认可的团体名不符,则丢弃该报文,不做进一步处理,同时产生一个陷阱报文。SNMPv1只提供了较弱的安全措施,在版本3中这一功能将大大加强。
4. 第四步:从通过验证的ASN.1对象中提出协议数据单元PDU,如果失败,丢弃报文,不做进一不处理。否则处理PDU,结果将产生一个报文,该报文的发送目的地址应同收到报文的源地址一致。
### 不同PDU的处理
**GetRequest PDU**
* 第一种情况:如果PDU中的变量名在本地维护的MIB树中不存在,则接受到这个PDU的协议实体将向发出者发送一个GetResponse报文,其中的PDU与源PDU只有一点不同:将ERROR-STATUS置为noSuchName,并在ERROR-INDEX中指出产生该变量在变量LIST中的位置。
* 第二种情况:如果本地协议实体将产生的响应报文的长度大于本地长度限制,将向该PDU的发出者发送一个GetResponse报文,该PDU除了ERROR-STATUS置为tooBig,ERROR-INDEX置为0以外,与源PDU相同。
* 第三种情况:如果本地协议实体因为其他原因不能产生正确的响应报文,将向该PDU的发出者发送一个GetResponse报文,该PDU除了ERROR-STATUS置为genErr,ERROR-INDEX置为出错变量在变量LIST中的位置,其余与源PDU相同。
* 第四中情况:如果上面的情况都没有发生,则本地协议实体向该PDU的发出者发送一个GetResponse报文,该PDU中将包含变量名和相应值的对偶表,ERROR-STATUS为noError,ERROR-INDEX为0,request-id域的值应与收到PDU的request-id相同。
**GetNextRequest PDU**
GetNextRequest PDU的最重要的功能是表的遍历,这种操作受到了前面所说的管理变量的表示方法的支持,从而可以访问一组相关的变量,就好象他们在一个表内。
**GetResponse PDU**
GetResponse PDU只有当收到getRequest GetNextRequest SetRequest才由协议实体产生,网管站收到这个PDU后,应显示其结果。
**SetRequest PDU**
SetRequest PDU除了PDU类型标识以外,和GetRequest相同,当需要对被管变量进行写操作时,网管站侧的协议实体将生成该PDU。
对SetRequest的响应将根据下面情况分别处理:
* 如果是关于一个只读变量的设置请求,则收到该PDU的协议实体产生一个GetReponse报文,并置error status为noSuchName, error index的值是错误变量在变量list中的位置。
* 如果被管设备上的协议实体收到的PDU中的变量对偶中的值,类型、长度不符和要求,则收到该PDU的协议实体产生一个GetReponse报文,并置error status为badValue, error index的值是错误变量在变量list中的位置。
* 如果需要产生的GetReponse报文长度超过了本地限制,则收到该PDU的协议实体产生一个GetReponse报文,并置error status为tooBig, error index的值是0。
* 如果是其他原因导致SET失败,则收到该PDU的协议实体产生一个GetReponse报文,并置error status为genErr, error index的值是错误变量在变量list中的位置。
* 如果不符合上面任何情况,则agent将把管理变量设置收到的PDU中的相应值,这往往可以改变被管设备的运行状态。同时产生一个GetResponse PDU,其中error status置为noError,error index的值为0。
**Trap PDU**
Trap PDU的字段:产生trap的系统的OBJECT IDENTIFIER、系统的IP地址、普通类型、特定类型、时戳、变量对偶表。
SNMPv2 Trap报文 SNMPv2的Trap报文格式如图所示:
![](image/SNMPv2trap报文格式.jpg)
Trap是被管设备遇到紧急情况时主动向网管站发送的消息。网管站收到trap PDU后要将起变量对偶表中的内容显示出来。一些常用的trap类型有冷、热启动,链路状态发生变化等。

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

View File

@@ -9,7 +9,12 @@ IGMP通过在接收者主机和组播路由器之间交互IGMP报文实现组成
### 目的
IP组播通信的特点是报文从一个源发出,被转发到一组特定的接收者。但在组播通信模型中,发送者不关注接收者的位置信息,只是将数据发送到约定的目的组播地址。
IP组播通信的特点是报文从一个源发出,被转发到一组特定的接收者。
在组播通信模型中:
* 发送者不关注接收者的位置信息,只是将数据发送到约定的目的组播地址。
* 接受者不受限制地加入组播组,只需要控制加入与退出。
* 组播路由器不需要保存加入的主机,保存组播网段信息。
IGMP是用来在接收者主机和与其所在网段直接相邻的组播路由器之间建立、维护组播组成员关系的协议。

View File

@@ -69,9 +69,10 @@ PIM-DM的关键工作机制包括**邻居发现、扩散、剪枝、嫁接、断
|报文类型 |类型ID |报文作用|
|-|-|-|
|hello| 0 |发现,协商参数。维护邻居关系|
|register||组播源注册,单播发送|
|register stop||组播源注册停止,单播发送|
|register|1|组播源注册,单播发送|
|register stop|2|组播源注册停止,单播发送|
|jion/prune| 3 |加入/剪枝,J置位为1,表明为jion报文,p置位为1,表明为prune报文|
|bootstrap|4|BSR RP报文
|assert| 5 |断言|
|graft| 6 |剪枝,单播发送|
|graft ack| 7 |剪枝确认,单播发送|