基于多播的以太网文件传送协议的设计与实现

文件传输  时间:2021-01-12  阅读:()

张昆朋1,吕延庆1,谢华成2洛阳师范学院信息技术学院,河南洛阳471022信阳师范学院网络信息与计算中心,河南信阳464000通讯作者邮箱keyban@163.
com摘要:将文件数据从一台主机复制到多台主机的特定情况下,基于单播的FTP、HTTP等协议及软件来传送,会造成网络流量的浪费,为此设计了一种D类多播地址传送法,可减少网络流量,提高传输效率.
设计并用Java实现了基于多播的以太网文件传送协议,服务端程序用来实现多播数据的发送,而客户端程序用来接收多播数据.
传输层采用UDP协议,参考了TFTP协议的设计思路,并对其做了一些修改,对PDU超时重传的情况进行了处理.
经实验测试,该程序在各种情况下都具有较好的效率和可靠性,在以太网多播环境下优于已有的传统的FTP协议.
该设计为局域网内大量文件的传送提供了新的思路,具有一定的推广价值.

关键词:多播;D类地址;Java;文件传送中图分类号:TP311文献标志码:ADesignandImplementationofMulticast-basedEthernetFileTransferProtocolZhangkun-peng1,Lvyan-qing1,XieHua-cheng2AcademyofInformationTechnology,LuoyangNormalUniversity,LuoyangHenan471022,ChinaInformationofNetworkandComputerCenter,XinyangNormalUniversity,Xinyang464000,ChinaAbstract:Whenfilesdataarecopiedfromahosttoseveralhosts,ifFTPorHTTPprotocoletcwhichbasedonunicastisselected,amountsofnetworkflowwillbewasted.
SoafiletransfermethodusingD-classIPaddressisproposed,anditcanreducenetworkflowandimprovetransferefficiency.
DesignanEthernetfiletransferprotocolandimplementitusingJavalanguage.
Theserverprogramimplementsthetransmissionofmulticastdata,andtheclientprogramimplementsthereceivingofmulticastdata.
ThetransportlayeradoptstheUDPprotocol.
ItconsultsandimprovedonthedesigningmethodofTFTPprotocol,anddealswiththeovertimeretransferofPDU.
AccordingtoExperimentresults,theprogramhasperfectgoodspeedandreliabilityinmostconditions.
UnderEthernetmulticastingcircumstance,theprogramisbetterthanconventionalFTPprotocol.
Thedesignprovidesanewwayofamountsoffiles'transferinLAN,andhassomepromotionalvalue.
Keywords:Multicast;D-classaddress;Java;FileTransfer0引言在局域网中经常会遇到把相同的数据复制到多台主机上的情况,如果使用基于单播的FTP、HTTP等协议及软件来传送文件,会造成很多网络流量的浪费.
在将文件数据从一台主机复制到多台主机的特定情况下,使用D类多播地址可以有效的避免以上问题,从而减少网络流量,提高传输效率.

图1以太网上数据帧的单播和多播(左图为单播,右图为多播)以太局域网本身发送数据时就是以广播的方式发送的,只是不需要该数据的客户端根据MAC帧包含的目的地址来舍弃该数据.
在使用FTP或HTTP等协议传输时,由于目的地址采用单播地址,丢弃了本不应丢弃的数据,降低了传输效率;如果目的地址为多播地址,则该数据仍能正常被接收端主机接收和处理(见图1).
目前网络克隆的程序就是基于上述的多播原理完成工作的,但这些程序大多是基于磁盘或分区的.
例如Ghost软件带有的GhostCast程序,可以通过网络对客户机的整个硬盘或分区进行克隆,一般都需要预先在多台需要复制文件的客户机的磁盘上专门划分出分区,破坏了原有的磁盘结构且设置较为繁琐.

下面设计和实现一个基于单个文件或整个目录的多播文件传送程序,能够较好地解决以上问题.

1多播文件传送协议的设计1.
1多播IP地址分析多播通信中使用的D类IP地址范围在224.
0.
0.
1~239.
255.
255.
255之间,采用多播进行通信需要使用能够进行多播通信的网络接口,如果是通常的以太网接口,自然的就可以进行多播通信.
多播通信与以太网中的广播网不同,属于OSI第三层的网络层协议,可以跨越支持多播协议的路由器进行通信.
其中D类IP地址224.
0.
0.
1表示在本子网上的所有参加多播的主机和路由器,当使用这个IP地址时,不能跨越路由器,只能在以太网的相同网段内使用多播,但这是能够满足本文针对的网络实验室的要求的.
因此本程序在实现时采用了224.
0.
0.
1这个固定的地址,实际使用时需要跨越多播路由器通信也可以根据需要来调整多播IP地址.

1.
2传输层协议分析首先,在传输层上具有可靠性保证的TCP不支持多播,因此传输层采用UDP协议,而数据的可靠传输由协议本身的设计来保证;其次,由于涉及到文件传送,多播文件传送协议参考了同样基于UDP的TFTP协议(RFC1350)的设计思路,但考虑到TFTP没有列目录的功能,因此针对其适用情况做了一些修改.
多播文件传送协议在传输层使用的UDP数据报一共定义了六种协议数据单元(PDU),每种PDU的第一个字段是操作码标志字段(FLAG),根据该标志字段的不同PDU的格式和作用各不相同(见表1).
表1多播文件传送协议定义的6种协议数据单元PDU类型及作用方向PDU格式全部传送结束PDU服务器(客户机|标志位|文件名PDU服务器(客户机|标志位|目录名长度|文件名|文件名确认PDU客户机(服务器|标志位|IP地址|文件名响应|客户端发现PDU客户机(服务器|标志位|IP地址|文件数据PDU服务器(客户机|标志位|序列号|结束标志|文件数据|文件数据确认PDU客户机(服务器|标志位|序列号|IP地址|客户端使用"客户端发现PDU"通知服务端,包含IP地址来标识不同的客户端.
这样在文件传送未开始之前,服务器收集所有客户机IP地址,开始文件传送后可以监测并保证传送的文件数据被每个客户端正确接收.
文件传送是切分成文件数据块进行的,每个"文件数据PDU"携带1K字节的文件数据(最后一个数据块可能不足1K字节),这些文件数据块使用了序号来保证顺序,从而消除了UDP可能无序接收的问题.

1.
3对PDU超时重传的处理考虑到了网络的质量问题,UDP可能出现丢包,因此对于"文件名PDU"、"文件名确认PDU"、"文件数据PDU"、"文件数据确认PDU"都作了超时重传的处理.

需要做超时重传处理的场合包括:(1)在客户端接收"文件数据PDU"超时的情况:①如果该"文件数据PDU"是文件的第一个数据块,重传该文件的"文件名确认PDU";②如果该"文件数据PDU"不是文件的第一个数据报,重传上一个文件数据块的"文件数据确认PDU".

(2)在服务端接收"文件名确认PDU"超时的情况,重传该文件的"文件名PDU".

(3)在服务端接收"文件数据确认PDU"超时的情况,重传该文件数据块的"文件数据PDU".

对于"客户端发现PDU",由于可以在服务端看到是否所有客户端都连接上,并控制发送开始的时间,所以不用重传.
发现有"客户端发现PDU"丢失,即服务端无法发现客户端的情况,只需要重新启动客户端程序就可以,或者检查客户端程序的IP设置是否是与服务端程序在同一以太网段内.

对于"全部传送结束PDU",因为服务端程序运行到发送该PDU时已经能够保证所有文件数据已经被正确发送到所有多播客户端,因此直接把该PDU数据重传多次,使得客户端程序能够接收到该PDU能够退出运行即可.
如果出现该PDU无法被有些多播客户端接收的情况,客户端强行退出即可.

2本多播程序实现概述Java平台对多播协议提供了支持,本程序使用Java语言来开发.
本多播程序分为服务端程序和客户端程序两部分.
其中,服务端程序用来实现多播数据的发送,而客户端程序用来接收多播数据.
典型的情况是在同一以太网段内运行一个服务端程序和多个客户端程序.
程序流程框图如图2、3所示.

图2服务器端多播文件传送流程图3客户端接收数据流程3测试为了测试该多播程序的有效性,测试分三步进行.
在安装了WindowsServer2003的计算机上使用1个多播服务端程序,而多播客户端程序分别使用1个、2个和25个,也就是安装多播客户端的计算机数量逐步增多,以测试该多播程序的传送效果.
测试结果见表2.

表2本程序与FlashFXP对比表多播客户端数量本程序速度(bps)FlashFXP速度(bps)本程序重传次数FlashFXP重传次数12251M800k500k1.
3M700k200k026004684结论在此多播文件传送协议的设计和实现中,参考了成熟的协议,从测试结果来看,达到了预想的效果,在以太网的同一网段内,保证数据可靠传输的前提下提高了传输效率,具有较好的实用性.
为了进一步提高其实用性,可在以下方面做出改进.

(1)在程序中,文件数据块的大小(默认取1K字节)、超时时间(默认取5秒)等参数都可以调整以适应网络情况,以获得最大的传输效率.
可通过在不同网络条件下,针对不同大小和个数的多次的文件传送实验获得最优的参数.

(2)在多播传送过程中,能够动态调整多播客户端的个数,以避免在传送时间比较长的情况下,某些客户端出现意外情况,服务端程序无法继续传送数据的情况.

(3)因为本多播程序在没有Java运行环境的机器上运行时,首先需要安装JRE(JavaRuntimeEnvironment),可以将本程序使用C来实现并可以加上图形界面,以利于Windows平台下的部署和使用.

hostio荷兰10Gbps带宽,10Gbps带宽,€5/月,最低配2G内存+2核+5T流量

成立于2006年的荷兰Access2.IT Group B.V.(可查:VAT: NL853006404B01,CoC: 58365400) 一直运作着主机周边的业务,当前正在对荷兰的高性能AMD平台的VPS进行5折优惠,所有VPS直接砍一半。自有AS208258,vps母鸡配置为Supermicro 1024US-TRT 1U,2*AMD Epyc 7452(64核128线程),16条32G D...

LOCVPS洛杉矶CN2线路KVM上线,洛杉矶/香港云地/香港邦联7折

LOCVPS发来了新的洛杉矶CN2线路主机上线通知,基于KVM架构,目前可与香港云地、香港邦联机房XEN架构主机一起适用7折优惠码,优惠后最低美国洛杉矶CN2线路KVM架构2GB内存套餐月付38.5元起。LOCPVS是一家成立较早的国人VPS服务商,目前提供洛杉矶MC、洛杉矶C3、和香港邦联、香港沙田电信、香港大埔、日本东京、日本大阪、新加坡、德国和荷兰等机房VPS主机,基于KVM或者XEN架构。...

TMTHosting:夏季优惠,美国西雅图VPS月付7折,年付65折,美国服务器95折AS4837线路

tmthosting怎么样?tmthosting家本站也分享过多次,之前也是不温不火的商家,加上商家的价格略贵,之到斯巴达商家出现,这个商家才被中国用户熟知,原因就是斯巴达家的机器是三网回程AS4837线路,而且也没有多余的加价,斯巴达家断货后,有朋友发现TMTHosting竟然也在同一机房,所以大家就都入手了TMTHosting家的机器。目前,TMTHosting商家放出了夏季优惠,针对VPS推...

文件传输为你推荐
com域名空间域名和空间是什么意思域名注册查询如何查域名有没有被注册免费网站域名申请那里 可以申请免费的 网站域名啊??云服务器租用云服务器租用需要注意哪些方面虚拟主机试用30天需要一个免费的虚拟主机,稳定的四川虚拟主机四川java虚拟主机,哪里比较好m3型虚拟主机谁在用中国万网M3虚拟主机?怎么样?华众虚拟主机管理系统华众虚拟主机管理系统请问。华众 虚拟主机管理系统 这个问题 怎么解决 。就是后台可以开通虚拟主机 没有问题,但是 删除虚拟主机 后台显示删除成功的,但是实际在服务器上 文件夹 ftp iis站点 都没有被删除 是什么问题免费域名有哪些免费域名org域名.org域名注册有什么要求么
空间域名 双线虚拟主机 长沙域名注册 最便宜虚拟主机 kdata 国内加速器 服务器架设 个人空间申请 100m免费空间 权嘉云 php空间购买 服务器合租 河南移动m值兑换 便宜空间 数据库空间 qq金券 免费稳定空间 国外免费网盘 上海联通 亿库 更多