协议测试教程:L2 和 L3
在了解协议测试之前,我们先了解一下:
什么是协议?
当计算机之间相互通信时,每台计算机都必须遵循一套共同的规则和条件。换句话说,协议决定了数据在计算设备之间以及网络上的传输方式。
协议测试
协议测试 是一种检查交换、无线、VoIP、路由等领域的通信协议的方法。协议测试的主要目标是使用协议测试工具检查通过网络发送的数据包的结构。测试期间使用路由器和交换机来构成受测设备和产品的组成部分。
路由和路由协议
协议分为两类 路由协议 和 路由协议
- 路由协议:路由协议可用于将用户数据从一个网络发送到另一个网络。它承载用户流量,如电子邮件、网络流量、文件传输等。路由协议包括 IP、IPX 和 AppleTalk。
- 路由协议:路由协议是确定路由器路由的网络协议。它仅在路由器之间使用。例如 RIP、IGRP、EIGRP 等。
简单来说, 路由器就像是交通运输的公交车,而路由协议则是道路上的信号。
根据通信类型,使用不同的协议。CISCO、JUNIPER、ALCATEL 等公司生产的网络设备(如路由器、调制解调器、无线接入点等)使用不同的协议进行通信,例如, Cisco 使用 EIGRP、OSPF 等。协议测试只不过是检查 EIGRP(增强型内部网关路由协议)或 OSPF(开放最短路径优先)或任何其他协议是否按照各自的标准工作。
计算机协议的类型
协议类型 | 协议的目的 |
---|---|
TCP / IP协议 | 它用于通过互联网以小数据包形式发送信息 |
UDP/ICMP | 它用于通过互联网以数据包形式发送少量信息 |
POP3 和 SMTP | 用于发送和接收邮件 |
超文本传输协议 | 它用于以加密形式传输 HTML 页面,以确保敏感数据的安全性 |
则fTP | 它用于通过网络将文件从一个节点传输到另一个节点 |
* TCP / IP协议– Transmission 控制协议/互联网协议, UDP/ICMP– 用户数据报协议/互联网控制消息协议, POP3 / SMTP– 邮局协议/简单 Mail 传输协议, HTTP– 超文本传输协议, 则fTP- 文件传输协议
不同类型的网络协议(L2 和 L3)
OSI模型共有7层网络通信,其中第2层和第3层非常关键。
- 图层2:它是数据链路层。Mac 地址、以太网、令牌环和帧中继都是数据链路层的示例。
- 图层3:它是网络层,用于确定网络中可用于通信的最佳路径。IP 地址是第 3 层的一个例子。
如何进行协议测试
- 对于协议测试,您需要 协议分析仪和模拟器
- 协议分析器确保正确解码以及呼叫和会话分析。而模拟器模拟网络元素的各种实体
- 通常,协议测试是由DUT(被测设备)对其他设备(如交换机和路由器)进行并在其中配置协议
- 然后检查设备发送的数据包的结构
- 它使用 lxNetworks 等工具检查设备的可扩展性、性能、协议算法等。 Scapy 和 Wireshark
协议测试的测试类型
协议测试包括功能、性能、协议堆栈、互操作性等测试。在协议测试期间,基本上进行三项检查。
- 正确性:我们是否按预期收到了数据包 X
- 延迟:数据包需要多长时间才能传输系统
- 带宽:每秒可以发送多少个数据包
协议测试可分为两类。压力和可靠性测试以及功能测试。压力和可靠性测试涵盖 负载测试, 压力测试, 性能测试等。同时 功能测试 包括负面测试、一致性测试、互操作性测试等。
- 一致性测试:产品上实施的协议经过 IEEE 等标准测试, RFC 等等
- 兼容性测试:测试不同供应商的互操作性。此测试是在相应平台上完成一致性测试后进行的
- 网络功能测试: 根据设计文档对网络产品的功能进行测试。例如,功能可以是交换机上的端口安全、路由器上的 ACL 等。
网络设备协议测试的测试用例示例
以下是路由器的测试用例示例
考试名称 | 测试用例 |
---|---|
一台交换机上一个 VLAN | 建立两个不同的 VLAN。检查不同 VLAN 上的主机之间的可见性 |
一台交换机上三个对称 VLAN | 创建三个不同的非对称 VLAN。检查主机之间的可见性 |
生成树:根路径成本变化 | 测试拓扑变化后根路径成本如何变化 |
生成树:端口阻塞 | 检查生成树协议如何避免在网络中形成循环,阻塞冗余链路,在存在 VLAN 也有 |
不同的 MSTI 有不同的根桥 | 显示每个 MSTI 可以有不同的根桥 |
不同 STP 区域之间的可见性 | 使用相同的 VLAN 检查不同 STP 区域之间的可见性 |
电话交换机性能 | 生成 1000 个电话呼叫,并检查电话交换机是否仍然运行或其性能是否下降 |
设备测试结果为阴性 | 输入错误的密钥并检查用户是否进行身份验证。它不应该允许用户访问 |
线速度 | 检查以 10Gbps 速度运行的设备,利用所有可用带宽来处理传入流量 |
协议转换率 | 跟踪两个设备之间的 TCP 对话并验证每个设备是否参与了正确的行为 |
会话发起的响应时间 | 测量设备对会话发起邀请请求的响应时间 |
协议测试工具
让我们讨论用于验证协议的最重要的测试工具
1) Scapy 对于数据包制作
Scapy 是一个功能强大的交互式数据包处理程序。它使您能够
- 创建数据包
- 解码网络上的数据包
- 捕获数据包并进行分析
- 将数据包注入网络
所以基本上,scapy 主要做两件事: 接收答案并发送数据包。您定义数据包,它发送数据包,接收答复,将请求与答复进行匹配并返回数据包对列表和不匹配数据包列表。
它还可以处理其他事务,如跟踪路由、单元测试、攻击或网络发现、开发新协议、探测等。
Scapy 使我们能够编写 Python 脚本允许我们执行发送和接收数据包或嗅探数据包等任务。例如,scapy 可以使用 Python 脚本。在编辑器中输入打开 getdit 的命令
#gedit scapysniff.py #!/usr/bin/env python from scapy.all import* a= sniff(count=10) a.nsummary() save, and change the mode of the file into an executable form #chmod+x scapysniff.py # ./scaotsbuff.py
它将嗅探 10 个数据包,嗅探完 10 个数据包后,它将打印摘要。 Scapy 也可以作为同时发送和接收数据包的命令数组
2) Wireshark 分析工具
用于协议测试的工具- Wireshark。它允许实时捕获数据包并以人类可读的形式显示它们。它允许您深入挖掘网络流量并使用颜色编码和过滤器检查单个数据包。
Wireshark 捕获数据包有助于确定会话何时建立、何时启动确切的数据传输以及每次发送多少数据等。
Wireshark 具有一系列丰富的功能,包括
- 对数百种协议进行彻底检查,并且不断添加更多协议
- 实时捕获和离线分析
- 丰富的 VoIP 分析
- 标准三窗格浏览器
- 可在多种平台上运行,例如 Windows、Linux、OSX 等
- 捕获的网络数据可以通过 GUI 浏览
- 解密支持多种协议,如 IPsec、ISAKMP、SSL/TLS
- 可以从以太网、ATM、蓝牙、USB、令牌等读取实时数据。
- 输出可以导出为 CSV、XML、纯文本等。
TTCN
TCCN 是一种标准测试语言,用于定义 测试场景 及其协议测试的实现。TCCN 测试套件包含许多用 TTCN 编程语言编写的测试用例,用于 测试 反应系统或行为测试.
例如,一台咖啡售货机在插入一美元硬币时会为您提供咖啡,但如果插入的金额少于一美元,则不会做出反应。要对此类机器进行编程,需要使用 TCCN3 语言。为了使咖啡机在插入硬币时做出反应,我们必须编写一个可以充当咖啡机的 TCCN-3 组件。它允许我们在实际的咖啡机作为产品推出之前运行测试。完成后,我们将 TCCN3 测试套件与外部设备连接起来。
测试系统发出刺激(一美元硬币)并接收响应(咖啡)。刺激适配器从测试系统获取刺激并将其传递给被测系统。响应适配器等待被测系统的响应并将其传递给测试系统。
TCCN3 可用于各种领域,例如
- 移动通信(LTE、WiMAX、3G等)
- 宽带技术(ATM、DSL)
- 中间件平台(Webservices、CORBA 等)
- 互联网协议(SIP、IMS、IPv6)
- 智能卡
- 汽车(AutoSAR、MOST、CAN)
在 TCCN 中我们可以定义
- 测试套件
- 测试用例
- 测试步骤
- 声明变量
- 声明计时器
- 创建 PDU 等。
TCCN 可以与其他语言类型的系统集成,如 ASN.1, XML, C/C++. TCCN3 核心语言以文本格式存在,除表格、图形和演示文稿等其他格式外。