协议测试教程: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 - 传输控制协议/互联网协议,UDP / ICMP - 用户数据报协议/互联网控制消息协议,POP3/SMTP - 邮局协议 / 简单邮件传输协议,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)
- 中间件平台(Web服务、CORBA 等)
- 互联网协议(SIP、IMS、IPv6)
- 智能卡
- 汽车(AutoSAR、MOST、CAN)
在 TCCN 中我们可以定义
- 测试套件
- 测试用例
- 测试步骤
- 声明变量
- 声明计时器
- 创建 PDU 等
TCCN 可以与其他语言(如 ASN.1、XML、C/C++)的系统集成。TCCN3 核心语言以文本格式存在,此外还有表格、图形和演示等其他格式。