- 39
- 0
- 约2.61千字
- 约 8页
- 2018-06-17 发布于云南
- 举报
网络协议与工程实验报告
班级:计算机科学与技术(2)
姓名: 黄勇辉
学号:2014329620052
使用Spin分析与验证协议
描述并验证RDT1.0、RDT2.0、RDT3.0。
实验目的:
掌握协议描述与验证的一般过程,学会使用Promela语言描述协议并用Spin验证器进行验证。
实验内容和要求:
RDT2.0
协议假定:
报文会出错,但不会丢失,应答帧不会出错也不会丢失;
不使用停等协议
要求:
设计并描述上述协议,在描述文本中加入end 和progress标签;
模拟运行协议,并将结果写入实验报告;
将描述的协议进行一般性验证和Non-progress循环验证;在正确的描述中加入一些错误,再进行验证;将结果写入试验报告;
在上述协议中,假定应答会出错,重新描述协议,模拟运行协议并进行验证,将结果写入实验报告。
实验环境:
iSpin验证器,activestate中的wish环境。
实验原理:
分析与实现步骤:
创建RDT.0.pml文件
/*------------------------------------------------RDT 2.0-------------------------------------------*/
#define MAXSEQ 5 /*最大报文序号*/
#define ERROR 100 /*表示报文的错误状态*/
#define RIGHT 110 /*表示报文的正确状态*/
/**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/** 定义报文类型。注意:在这里mtype是类型关键字,通过查手册可知 */
/** mtype只有三种使用方法: */
/** (1) mtype [ = ] { mtype_name, [mtype_name]* } */
/** (2) mtype name = mtype_name */
/** (3) mtype name[const] = mtype_name */
/** 也就是说,mtype要么定义枚举类型,此时只能用关键词mtype,比如: */
/** mtype = {Msg, Ack, Nak }; */
/** 要么定义只有一个类型的自定义类型,或初始化自定义类型,比如: */
/** mtype msg_type = Msg 或 mtype msg_type[4] = Msg,后者是初始化 */
/**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
mtype = {Msg, Ack, Nak};
chan SenderToReceiver = [1] of {mtype, byte, byte}; /*发送端到接收端的通道*/
chan ReceiverToSender = [1] of {mtype, byte, byte}; /*接收端到发送端的通道*/
proctype sender(chan inChan, outChan)
{
byte send_data; /*待发送数据*/
send_data = 0;
do
:: send_data = send_data % MAXSEQ;
again: if
:: outChan ! Msg(send_data, RIGHT) /*正常发送数据*/
:: outChan ! Msg(send_data, ERROR) /*模拟出现误码*/
fi;
if
:: inChan ? Nak(0, 0)-
end: goto again /*收到NAK,重发报文*/
:: inChan ? Ack(0, 0)-goto progress /*收到肯定应答,发送下一报文*/
您可能关注的文档
- 2018海峡杯两岸青年创新创业周活动邀请函台湾各友好高校上海.doc
- Agent通讯语言-火龙果软件.ppt
- AI人工智能的深度学习大V吴恩达曾经说过做AI研究就像造宇宙飞船.doc
- ArtificialIntelligence人工智能-WordPress.com.ppt
- Temporalnetwork(含时网络).ppt
- Wi-Fi模块在智能家电中应用的前景-电子技术应用.doc
- 堕胎之伦理考量.ppt
- 附件1项目征集指南一、大数据领域(一)大数据基础支撑领域1.大数据.doc
- 附件2人工智能创新发展重大工程申报要求一、核心技术研发与产业化.doc
- 高中地理教学中如何促进学生深度学习.doc
原创力文档

文档评论(0)