简单的TCP客户端程序

上传人:876****10 文档编号:127713790 上传时间:2020-04-05 格式:DOC 页数:16 大小:140KB
返回 下载 相关 举报
简单的TCP客户端程序_第1页
第1页 / 共16页
简单的TCP客户端程序_第2页
第2页 / 共16页
简单的TCP客户端程序_第3页
第3页 / 共16页
简单的TCP客户端程序_第4页
第4页 / 共16页
简单的TCP客户端程序_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《简单的TCP客户端程序》由会员分享,可在线阅读,更多相关《简单的TCP客户端程序(16页珍藏版)》请在金锄头文库上搜索。

1、计算机网络实验教学大纲实验名称:实验一、模拟Ethernet帧的发送过程(即CSMA/CD协议的实现)实验类型:综合性实验实验类别:基础 专业基础 专业实验学时:2(4)所涉及的课程及知识点:计算机网络;局域网技术、Ethernet帧、CSMA/CD协议。一、 实验目的局域网技术发展十分迅速,目前,Ethernet是应用最广泛的局域网。因此,学习Ethernet技术对深入掌握局域网知识是非常重要的。本课程设计的目的是模拟Ethernet帧的发送过程,使学生熟悉Ethernet帧的数据发送流程,即CSMA/CD工作流程。二、 实验内容编写程序模拟Ethernet结点的数据发送流程。实验要求用两个

2、线程模拟两台网络中的主机进行网络通信。通信中进行数据的发送时,由发送的线程号和总线模拟变量进行或运算,当结果与要发送的数据相等时,既说明没有发生冲突,没有冲突就记录数据发生的次数;如果不相等,则说明发生了冲突,发生冲突后,对两台主机进行冲突次数记录,并分别调用冲突处理函数,进行延迟时间的推算(延迟函数是根据网络数据发生冲突时的原理CMSA/CD来进行时间的计算)。再获得延迟时间后,分别对两个线程延迟。数据发送后置接收标志,然后接收数据。在数据接收完之后,判断循环次数,当次数满时,退出循环。在循环中,可以添加一些其他的线程处理机制。三、 实验仪器设备和材料清单要求:具备局域网网络环境,VC+四、

3、 实验要求课外必须预习,根据实验任务,查阅资料,进行理论分析和研究,确定实验方案,或根据规定的实验方案,确定实验步骤。准备、编写实验程序,另安排了4学时的课外上机时间,学生可根据自己的实际情况,延长课外机时。五、 实验步骤1)用两个线程a和b来模拟Ethernet上的两台主机。 2)用一个双字类型变量 Bus来模拟总线(将其初始化为“0”,并且总线等于“0”时表示总线空闲)。 3)两个子线程向总线发送自己的数据。数据用该线程的线程号进行模拟,发送数据用线程号和Bus的“或”操作进行模拟(即BusBus | ID,ID为该线程的线程号)。 4)每台主机须向总线上成功发送10次数据,如果其中某次数

4、据发送失败,则该线程结束。5)发送流程须遵循CSMA/CD。随机延迟算法中的冲突窗口取0.005。在数据发送成功(即BusID)后,报告“ID sendsuccess”,产生冲突(即Bus !ID)后报告“ID send conllision”,发送失败(即冲突计数器值为0)后报告“ID send failure”。随着主机发送成功次数增加,报告其已发送成功的次数,如“主机A发送成功数=3”。六、 实验成绩评定方法实验成绩总分以100分计,其中实验准备占30,实验操作占40,其它占30%。七、 实验报告要求要求学生从实验方法的建立、实验步骤的设计、实验设备的选择、实验数据的处理、实验结果的分析

5、讨论等方面写出报告。报告包含:1. 系统概述运行环境编译使用方法实现环境程序文件列表等 2. 主要数据结构 3. 主要算法 4. 遇到的问题及解决方法 5. 体会与建议6. 可正确编译的可读性好的源代码 八、思考题实验名称:二、发送 Ethernet ARP包实验类型:综合性实验实验类别:基础 专业基础 专业实验学时:2(4)所涉及的课程及知识点:计算机网络;地址解析协议(Address Resolution Protocol,ARP)、ARP协议的帧结构。一、实验目的IP数据包常通过Ethernet发送。Ethernet设备并不识别32位IP地址,它们是以48位MAC地址传输Ethernet

6、数据包的。因此,IP驱动器必须把IP目的地址转换成Ethernet网络目的地址。这两种地址之间存在着某种静态的或动态的映射,通常需要查看一张表来进行这种映射。地址解析协议(Address Resolution Protocol,ARP)就是用来确定这些映象的协议。 ARP工作时,送出一个含有所希望的 IP地址的Ethernet广播数据包。目的地主机(或另一个代表该主机的系统)以一个含有IP和Ethernet地址对的数据包作为应答。发送者将这个地址对高速缓存起来,以节约不必要的ARP通信。本课程设计的目的是进一步熟悉ARP协议的帧结构以及它的运作过程。二、实验内容在熟悉ARP协议并了解Winpc

7、ap编程的前提下,构造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 12)输出:Send OK。3)程序的正确性的检验。可以安装一个

8、截包软件,如 Iris,运行该软件以查看能否收到程序发出的ARP包,并检查包中各字段填充的内容(如各地址、协议类型)是否准确。三、实验仪器设备和材料清单要求:具备网络环境并连入Internet,VC+四、实验要求课外必须预习,根据实验任务,查阅资料,进行理论分析和研究,确定实验方案,或根据规定的实验方案,确定实验步骤。准备、编写实验程序,另安排了4学时的课外上机时间,学生可根据自己的实际情况,延长课外机时。五、实验步骤首先,定义ARP包的数据结构。根据ARP分组结构,分别定义两个子结构,即物理帧结构。/*DLC头数据结构*/typedef struct DLCHeaderunsigned ch

9、ar DesMAC6;unsigned char SreMAc6; 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_Addr6;unsigned char Send_Prot_Addr4;unsigned char Targ_

10、HW_Addr6; unsinged char Targ_port_Addr4; unsigned char padding18; ARPFRAME;/ ARP包=DLC头+ARP帧typedef struct ARPPacket; DLCHEADER dlcHeader; ARPFRAME arpFrame;*PARPPACKETARPPacket ARPPACKET; 其次,定义三个子函数。 TransAndFilellMAC(CHAR *argv,unsigned char*a)其功能是判断argv(MAC地址)的格式是否正确。正确,则将它填到a中并返回1;否则,指出MAC格式错误并返回

11、0。 TransAndFilellIP(CHAR *argv,unsigned char*b)其功能是判断argv(IP地址)的格式是否正确。正确,则将它填到b中,并返回1;否则,指出MAC格式错误并返回0。 bool Send()其功能是读取并选择网卡,打开选定网卡后发送。成功后完成关闭网卡、释放资源等工作。Bool Send()/定义各变量LPADAPTER lpAdapter; /网卡结构指针LPPACKET lpPacket; /发送包结构指针ARPPacket ARPPACKET;/获取版本号,以判断操作系统类型DWORD dwVersion=Getversion();DWORDdw

12、WindowsMajorVersion=(DWORD)(LOBYTE(LOWORD(dwVersion)If(!(dwVersion=0x80000000& dwWindowsMajorVersion)/*在Windows NT下,获取UNICODE码网卡列表,并选择适当的网卡,将其名称转换伪ASCII码。主要用到函数PacketGetAdapterNames(AdapterNameu,&AdapterULength),第一个参数是char数组,大小为8192*2,用于存放网卡列表,第二个参数是unsigned long型的,其值为sizeof(AdapterNameU).*/else/*在W

13、indows NT下,获取UNICODE码网卡列表,并选择适当的网卡,也使用PacketGetAdapterNames函数,只不过第一个参数大小为8192.*/打开网卡,参数是选定的网卡名lpAdapter=PacketOpenAdapter(AdapterNameA);/*发送帧:用PacketAllocatePacket()给要发送的包分配空间; 用PacketInitPacket(lpPacket,&,sizeof (ARPPACKET)初始化包结构; 用PacketSetNumWrites(lpAdapter,1) 用PacketSendPacket(lpAdapter,lpPacke

14、t,true)发送ARP包; 最后用PacketCloseAdapter(lpAdapter)关闭网卡*/main函数根据命令行的输入,判断输入的正确性,完成ARP包中各字段的填充;再调用子函数send(),完成包的发送。填充ARP包中的各个字段时,要注意主义字节序和网络字节序的转换。如ARPPACKET.dlcHeader.Ethertype=(unsigned short)0x0608。程序流程图:命令行参数=6?定义ARP包结构并初始化YYFlag=0?填充DLC的其他字段及ARP头的各个字段进入发送ARP包函数获取网卡列表?选择网卡并打开分配及初始化发送包结构发送包功?释放包结构关闭网卡结束ARP请求,填充DLC头中目的MAC(广播,全F)及FlagARP请求,填充DLC头中目的MAC及Flag开始六、实验成绩评定方法实验成绩总分以100分计,其中实验准备占30,实验操作占40,其它占30。七、实验报告要求要求学生从实验方法的建立、实验步骤的设计、实验设备的选择、实验数据的处理、实验结

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号