•任务
1.同学编写数据链路层通信协议,由《发送端程序》和《接收端程
序》实现,确保数据可靠传输;
2.总结实验过程(实验报告,左侧装订):方案、编程、调试、
结果、分析、结论。
•成绩评定
1. 若完全实现无差错传输(无丢失、无差错、不重叠、不乱序、...)且实验报告
出色,5分;
2. 若完成部分无差错传输,依据实验结果定成绩,3~4分;
3. 若没有完成基本的传输任务,依据实验结果定成绩,1~2分;
4. 没有进行实验和无实验报告者,0分;
•实验环境
1. Windows 9x/NT/2000/XP/2003
2. TCP/IP协议
•同学程序
1. 认真复习数据链路层内容,熟悉编程语言C、C++和WINDOWS程序设计技
术(查阅参考书);
2. 开发工具:Visual C++ 6.0、Visual Basic 6.0、C++ Builder、Java、C#、Turbo
C/C++或其它;
3. 程序示例:理想信道的《发送端程序》和《接收端程序》(含源码VC6.0);
1. ARQ基本协议1:_引入检错和应答帧
2. ARQ基本协议2:_引入超时计时器
3. ARQ基本协议3:_引入数据帧携带发送序号0~1
4. ARQ基本协议4:_引入确认帧携带发送序号0~1
5. ARQ基本协议5:_引入应答帧含有校验码
6. ARQ基本协议6:_引入数据帧和确认帧含有发送序号0~7,
Ws=1,Ws=1
7. 下载:ARQ基本协议1~6及数字信道仿真程序
4. 示例实验指导
•协议设计建议
-协议中不考虑成帧
1. 数据帧和应答帧以字节为单位;
2. 数据帧:低4位D3~D0为数据段(取值0000B~1001B,即0~9),最高
位为校验位(D7),发送序号段:D6~D4;
3. 应答帧:确认帧ACK:低4位D3~D0取值1111B(FH),否认帧NAK:低
4位D3~D0取值1110B(EH),发送序号段:D6~D4;
4. 按上述定义,发送序号个数最大为8;实际使用时,可自行选取发送序号个数
2或4,甚至不使用。
-协议中考虑成帧
1. 参见授课讲义和教材的相关内容;
2. 数据帧:帧头+发送序号+数据段+校验段+帧尾;
3. 应答帧:帧头+发送序号+校验段+帧尾;
-协议方案提示
1. 基本ARQ协议;否认帧不必携带出错数据帧的发送序号。
2. 连续ARQ协议-回退N帧ARQ协议;应采用滑动窗口技术和否认帧应携带
出错数据帧的发送序号。
3. 连续ARQ协议-选择重发ARQ协议;基本同上;
•信道仿真程序
1. 功能:可仿真信道上的信息(数据帧或应答帧)产生丢失、产生差错和传输时
延;
2. 下载:V1.21,解压后,直接运行!
1.界面:
•实验系统原理
1. 《发送端程序》、《信道仿真程序》和《接收端程序》采用UDP(TCP/IP)
通信;
2. 若单机实验:《发送端程序》、《信道仿真程序》和《接收端程序》的IP地
址设置为127.0.0.1(本机);
3. 《发送端程序》的端口=6666、《信道仿真程序》的端口=7777、《接收端程
序》的端口=8888;
4. 用户程序(《发送端程序》和《接收端程序》)的信息发送到信道(《信道仿
真程序》),《信道仿真程序》经过处理(产生丢失、产生差错和传输时延),
然后转发到对方。
•参考程序段
1.设置(偶)校验位
//---------------------------------------------------
void SetCheck(char& c) //设置(偶)校验位D7 (一个字节)
{
int i,sum = 0;
BYTE x = 0x01;
for(i=0; i<7; i++) //求D6~D0位的有1的个数->sum
{
if(c & x) sum++;
x = x << 1;
}
if(sum % 2) c = c|0x80; //若sum为奇数,则置D7=1
else c = c & 0x7F; //若sum为偶数,则置D7=0
}