计算机网络实验教学大纲
实验名称:实验一、模拟Ethernet帧的发送过程(即CSMA/CD协议的实现) 实验类型:综合性实验
实验类别:基础□专业基础√专业□ 实验学时:2(4)
所涉及的课程及知识点:
计算机网络;局域网技术、Ethernet帧、CSMA/CD协议。 实验目的
局域网技术发展十分迅速,目前,Ethernet是应用最广泛的局域网。因此,学习Ethernet技术对深入掌握局域网知识是非常重要的。本课程设计的目的是模拟Ethernet帧的发送过程,使学生熟悉Ethernet帧的数据发送流程,即CSMA/CD工作流程。矚慫润厲钐瘗睞枥庑赖賃軔。 实验内容
编写程序模拟Ethernet结点的数据发送流程。实验要求用两个线程模拟两台网络中的主机进行网络通信。通信中进行数据的发送时,由发送的线程号和总线模拟变量进行或运算,当结果与要发送的数据相等时,既说明没有发生冲突,没有冲突就记录数据发生的次数;如果不相等,则说明发生了冲突,发生冲突后,对两台主机进行冲突次数记录,并分别调用冲突处理函数,进行延迟时间的推算(延迟函数是根据网络数据发生冲突时的原理CMSA/CD来进行时间的计算)。再获得延迟时间后,分别对两个线程延迟。数据发送后置接收标志,然后接收数据。在数据接收完之后,判断循环次数,当次数满时,退出循环。在循环中,可以添加一些其他的线程处理机制。聞創沟燴鐺險爱氇谴净祸測。 实验仪器设备和材料清单
要求:具备局域网网络环境,VC++ 实验要求
课外必须预习,根据实验任务,查阅资料,进行理论分析和研究,确定实验方案,或根据规定的实验方案,确定实验步骤。准备、编写实验程序,另安排了4学时的课外上机时间,学生可根据自己的实际情况,延长课外机时。残骛楼諍锩瀨濟溆塹籟婭骒。 实验步骤
1)用两个线程a和b来模拟Ethernet上的两台主机。
2)用一个双字类型变量 Bus来模拟总线(将其初始化为“\\0”,并且总线等于“\\0”时表示总线空闲)。酽锕极額閉镇桧猪訣锥顧荭。 3)两个子线程向总线发送自己的数据。数据用该线程的线程号进行模拟,发送数据用线程号和Bus的“或”操作进行模拟(即Bus=Bus | ID,ID为该线程的线程号)。彈贸摄尔霁毙攬砖卤庑诒尔。 4)每台主机须向总线上成功发送10次数据,如果其中某次数据发送失败,则该线程结束。
5)发送流程须遵循CSMA/CD。随机延迟算法中的冲突窗口取0.005。在数据发送成功(即Bus==ID)后,报告“ID sendsuccess”,产生冲突(即Bus !=ID)后报告“ID send conllision”,发送失败(即冲突计数器值为0)后报告“ID send failure”。随着主机发送成功次数增加,报告其已发送成功的次数,如“主机A发送成功数=3”。謀荞抟箧飆鐸怼类蒋薔點鉍。 实验成绩评定方法
实验成绩总分以100分计,其中实验准备占30%,实验操作占40%,其它占30%。 实验报告要求
要求学生从实验方法的建立、实验步骤的设计、实验设备的选择、实验数据的处理、实验结果的分析讨论等方面写出报告。厦礴恳蹒骈時盡继價骚卺癩。 1 / 10
报告包含:
系统概述运行环境编译使用方法实现环境程序文件列表等 主要数据结构 主要算法
遇到的问题及解决方法 体会与建议
可正确编译的可读性好的源代码 八、思考题
实验名称:二、发送 Ethernet ARP包 实验类型:综合性实验
实验类别:基础□专业基础√专业□ 实验学时:2(4)
所涉及的课程及知识点:
计算机网络;地址解析协议(Address Resolution Protocol,ARP)、ARP协议的帧结构。茕桢广鳓鯡选块网羈泪镀齐。 一、实验目的
IP数据包常通过Ethernet发送。Ethernet设备并不识别32位IP地址,它们是以48位MAC地址传输Ethernet数据包的。因此,IP驱动器必须把IP目的地址转换成Ethernet网络目的地址。这两种地址之间存在着某种静态的或动态的映射,通常需要查看一张表来进行这种映射。地址解析协议(Address Resolution Protocol,ARP)就是用来确定这些映象的协议。鹅娅尽損鹌惨歷茏鴛賴縈诘。 ARP工作时,送出一个含有所希望的 IP地址的Ethernet广播数据包。目的地主机(或另一个代表该主机的系统)以一个含有IP和Ethernet地址对的数据包作为应答。发送者将这个地址对高速缓存起来,以节约不必要的ARP通信。籟丛妈羥为贍偾蛏练淨槠挞。 本课程设计的目的是进一步熟悉ARP协议的帧结构以及它的运作过程。 二、实验内容
在熟悉ARP协议并了解Winpcap编程的前提下,构造ARP包,选择并打开网卡,将ARP包发送出去。
1)命令行格式:
arpsend src_ip src_mac dst_ip dst_mac flag 其中arpsend作为程序名。 各参数意义: ·src_ip:源IP地址。 ·src_mac:源MAC地址。 ·dst_ip:目的IP地址。 ·dst_mac:目的MAC地址。 ·flag:0表示ARP请求;1表示ARP应答。 例如:
arpsend 192.168.1.I FA:01:02:C3:04:05 192.168.1.2 0D:E1:02:03:B4:06 1預頌圣鉉儐歲龈讶骅籴買闥。 2)输出:Send OK。
3)程序的正确性的检验。可以安装一个截包软件,如 Iris,运行该软件以查看能否收到程序发出的ARP包,并检查包中各字段填充的内容(如各地址、协议类型)是否准确。渗釤呛俨匀谔鱉调硯錦鋇絨。 2 / 10
三、实验仪器设备和材料清单
要求:具备网络环境并连入Internet,VC++ 四、实验要求
课外必须预习,根据实验任务,查阅资料,进行理论分析和研究,确定实验方案,或根据规定的实验方案,确定实验步骤。准备、编写实验程序,另安排了4学时的课外上机时间,学生可根据自己的实际情况,延长课外机时。铙誅卧泻噦圣骋贶頂廡缝勵。 五、实验步骤
●首先,定义ARP包的数据结构。根据ARP分组结构,分别定义两个子结构,即物理帧结构。
/*DLC头数据结构*/ typedef struct DLCHeader { unsigned char DesMAC[6]; unsigned char SreMAc[6]; unsigned short Ethertype; } DLCHEADER; //ARP桢
typedef struct ARPFrame {
unsigned short HW_Type; unsigned short Prot_Type; unsigned char HW_Addr_Len; unsigned char Prot_Addr_Len; unsigned short Flag;
unsigned char Send_HW_Addr[6]; unsigned char Send_Prot_Addr[4]; unsigned char Targ_HW_Addr[6]; unsinged char Targ_port_Addr[4]; unsigned char padding[18]; }ARPFRAME;
// ARP包=DLC头+ARP帧 typedef struct ARPPacket; {
DLCHEADER dlcHeader; ARPFRAME arpFrame; }
*PARPPACKET
ARPPacket ARPPACKET; ● 其次,定义三个子函数。
ⅰ TransAndFilellMAC(CHAR *argv,unsigned char*a)
其功能是判断argv(MAC地址)的格式是否正确。正确,则将它填到a中 并返回1;否则,指出MAC格式错误并返回0。 ⅱ TransAndFilellIP(CHAR *argv,unsigned char*b)
其功能是判断argv(IP地址)的格式是否正确。正确,则将它填到b中,并返回1;否则,指
3 / 10