工资代发协议简单

2024-04-13

工资代发协议简单(精选8篇)

篇1:工资代发协议简单

委托代发工资的简单流程

一、签订协议

委托单位与开户行就代发工资相关事宜签订委托代理协议。

二、开户

委托单位应该按照实名制的要求提供职工姓名、身份证号码、手机号码等相关代发清单资料,开户行根据清单办理批量开户手续。

三、资金划拨

发放工资时,委托单位按照协议约定时间将代发工资资金足额划转到委托单位,并向委托单位提供电子版代发工资明细清单。

资金划拨以下几种途径:

1、直接将代发工资款额以现金方式交至代发网点柜面;

2、通过转账方式将代发工资款额划转至代发网点相关人员账号通过其转手处理

3、直接以现金缴款单方式存入银行,再将缴款单交至代发网点

网点在与代发单位进行款项交接后,将出具相应的收款凭证,于次日成功入账后向代发单位提供系统入账后交易明细清单。

四、履约入账(一般为当天晚上系统批量入账)

开户行按照委托协议约定及委托单位提供的代发清单资料按时将应发金额足额转入每位职工的储蓄账户。

五、客户取款(当天入账后便可取款)

工资上账后(次日),委托单位的职工即可自由办理取款业务。

篇2:工资代发协议简单

济南市建筑工程项目农民工

工资代发委托协议书

项目名称:

甲方(施工总承包企业): 乙方(分 包 单 位):

根据《国务院办公厅关于全面治理拖欠农民工工资问题的意见》(国办发〔2016〕1号)、《山东省人民政府办公厅关于贯彻国办发〔2016〕1号文件全面治理拖欠农民工工资问题的实施意见》(鲁政办发〔2016〕41号)和《济南市城乡建设委员会关于全面推行建筑工程项目农民工实名制和工资专用账户管理制度 执行委托银行按月代发工资办法的实施意见》(济建发〔2018〕28号)等文件规定,经双方友好协商,现就本项目农民工工资委托支付事宜协议如下:

一、甲方承诺按合同约定,按月足额发放农民工工资,不得以建设单位工程款未到位为由拒付农民工工资。

二、乙方委托甲方代发农民工工资,承诺每月按时将农民工本人和施工班组长签字确认的农民工工资支付表报送甲方,并对其真实性负责。

三、甲方负责审核确认乙方报送的农民工工资支付表,按月足额将工资通过其设立的专用账户直接划入农民工个人工资银 行卡。

四、每月支付的工资是甲方拨付的工程进度款的组成部分。

五、乙方对招用的农民工进出施工现场进行登记,甲方应为其提供便利,实施信息化考勤管理,并进行有效监督。

六、甲方委派 为劳资管理员,乙方委派 为劳资管理员,负责农民工现场考勤、工作计量、工资表编制等工作。

七、违约责任

施工期间,若发生农民工工资拖欠问题,按下列方式处理: 1.甲方落实对农民工工资支付负总责的相关规定,无条件支付和解决拖欠的农民工工资,并承担相应的违约责任。2.乙方伪造农民工考勤信息、提供虚假农民工身份信息套取工资等高估冒算超出的费用,甲方向乙方追偿,并从剩余工资性工程款中直接扣除。

3.任何一方未履行协议,对方有权追究其法律责任。本协议一式两份,甲乙双方各执一份,双方签字盖章后生效。

甲 方(盖章): 乙 方(盖章):

法定代表(签字): 法定代表(签字): 年 月 日 年 月 日

篇3:简单能耗均衡路由协议设计

关键词:无线传感器网,路由协议,能量效率,网络生存时间

0 引言

WSN (无线传感器网) 是由大量无处不在的、具有通信与计算能力的微小传感器节点, 密集布设在无人值守的监控区域, 从而构成能够根据环境自主完成指定任务的智能自治测控网络系统[1]。一旦部署, 则需要在相当长的时间内持续工作, 而无法给节点补充能源。WSN中节点的电源续航能力、数据处理能力、通信带宽以及数据存储能力都很有限, 且WSN是以数据传输为中心, 而非无线网络是以数据为中心。因此为无线传感器网络设计适合的路由协议使节点能源得到合理利用, 能耗更加均衡, 从而在带宽及节点处理能力有限的情况下使网络整体性能得到提高, 网络寿命延长。因此具有能量效率的路由协议的研究, 将对无线传感器网络的发展有重要意义。

1 相关的研究

根据应用的不同, 研究人员提出了多种路由协议, 按照网络的层次结构划分, 可分为平面路由协议和分簇路由协议。平面路由中, 所有节点的功能相同, 其路由简单;分层路由中, 节点功能不同, 上层节点负责对下层的节点进行协调和维护。目前在平面路由研究方面较为典型, 应用较多的路由协议主要有SPIN (基于协商的以数据为中心传感器协议][2]、DD (定向扩散) 协议[3]、MCF (最小代价转发) [4]这几种协议。LEACH (低能耗自适应分簇协议) [5]是分层路由协议中最具有代表性的路由算法, 其他分簇路由协议基本都是以该协议为基础发展而来的。LEACH是Chandrakasan等人为无线传感器网络设计的低功耗自适应聚类路由算法。本文提出的SEBR (简单能耗均衡路由) 协议是一种类似于MCF的平面路由协议。

2 SEBR路由协议设计

2.1 SEBR协议网络模型

通常一个无线传感器网络 (例如那些应用于气象监测或者战场环境下的传感器网络) 只有一个基站, 而且所有的感应数据都最终发送到该基站也即sink节点中去, 而不是发送给网络中的中间节点。类似地, 我们也假设有这样一个网络拥有一个sink节点, 并且该网络是一个响应型的网络, 即事件触发型网络, 当传感器区域感应到相关事件时, 即沿着协议路线向sink节点发送感应数据。其他具体的假设条件如下。

1) sink节点和传感节点位置固定, 所有传感节点初始能量相等, sink节点能量不受限。

2) 每个节点都有一个计时器用于计时。

3) 对于低辐射短距离通信, 发送能量开销和接收能量开销几乎相同。所以这里我们假设每个节点发送和接收数据的能量消耗一样。数据处理的能耗比数据通信能耗小得多, 因此我们这里不考虑数据处理的能耗。

4) 假设通信信道能提供可靠的数据传输。MAC (媒体接入控制) 层能够提供差错监测/纠错及重传;节点间通信均是双向链路, 不存在单向链路, 即如果A能和B通信, 则B也能和A进行通信。

2.2 SEBR协议特点

SEBR是一种以数据为中心的平面路由协议, 与传统的路由协议如DD、SPIN相比, SEBR有很多它们不具备的优点:

1) 以传送数据到达sink节点所需时间作为选择下一跳的指标之一, 而不是传统路由协议所采用的跳数作为指标。这样保证了数据的可靠传输, 避免其在拥塞路径上传输, 同时也可以在一定条件下最小化数据到达sink节点的时间。

2) 引入一种新的选择下一跳的指标:节点能量势———该节点邻居的平均能量, 表示为

其中Ei为第i个节点的能量, n为邻居节点数。节点能量势反映节点所在区域能量的平均分布状况, 它与节点剩余能量的差值反映节点与其邻居节点的相对能耗状况。因此节点在选择下一跳节点时应高概率选择平均能量势高且剩余能量高于平均能量势的节点。这样更有利于均衡节点能量的消耗。

3) 节点无需知道源到目的的整条路由, 只需要其邻居的信息就可以进行数据发送。这样降低了路由建立的开销, 同时也减小了节点内存需求。

4) 在初始化阶段, 每个节点只进行一次广播, 所有节点就能获取自己的邻居信息。这样既可以减少网络中的广播数据包, 也能降低节点在路由初始化阶段的开销。

5) 算法十分简单, 没有复杂的运算。数据在传播过程中只进行一次融合, 也即在感应节点数据传输路径上的下一跳进行数据融合。

2.3 SEBR协议设计

SEBR协议的操作分为3个阶段:路由初始化、数据转发和路由维持。该协议中, 每个节点除了感应、传输和接收数据的能力以外, 还可以利用邻居表进行简单的数据融合。初始化阶段由sink节点发起, 在网络布置完成后就进行, 目标就是初始化邻居表。在初始化阶段, 每个节点只广播一次。初始化阶段完成以后将进入数据转发阶段, 这个阶段所有节点都可以发送数据到sink节点。路由维持与数据转发是同时进行的。

2.3.1 报文设计

SEBR所有报文均采用如图1所示的报头结构, 各字段功能介绍如下:

1) pkt_type, 即数据包类型包括:路由初始化报文、数据报文、确认报文3种。

2) src_ID, 源节点ID:表示发送该数据包的节点ID。

3) dst_ID, 目标节点ID:表示下一跳的节点ID。

4) pkt_num, 数据包序号:用于标识数据包的顺序。

5) pkt_start_time, 数据包发送时间:表示发送该数据包时的时间值。

6) time_to_sink, 到达sink节点时间表示:该节点发送一个数据包到达sink节点所需时间。

7) node_energy, 节点剩余能量表示:该节点在发送该数据包之前的剩余能量值。

8) average_energy, 邻居节点平均能量, 即上文所述的节点能量势。

9) A字段:标识该数据包是否包含融合数据, 如果包含融合数据则置1, 否则置0。

2.3.2 路由初始化阶段

路由初始化阶段的主要目标是在每个节点内建立邻居信息表, 从而为路由转发提供信息。本阶段需要收集的邻居信息主要是两个:邻居节点到达sink节点时间和邻居节点剩余能量。

节点到达sink节点时间及剩余能量信息的传播通过以下算法来实现。当传感网络布置完成后sink节点会广播一个初始化报文。此时pkt_start_time字段设置为0, node_energy字段设置为节点初始能量。因为通常在初始化阶段各节点的能量都比较充足, 所以将average_energy字段均设置为节点的初始能量。

当节点第一次收到初始化报文后, 根据报文中的信息计算出到达sink节点的时间。然后更新time_to_sink字段;计算出此时的剩余能量, 更新node_energy域, 然后再广播初始化报文。同时更新其邻居表, 如上面算法所示添加邻居节点ID、node_energy、average_energy、time_to_sink等信息。这一过程将一直重复, 直到初始化报文覆盖整个网络。在初始化阶段的最后, 每个节点都将知道其所有邻居的信息, 包括邻居到达sink节点的时间以及剩余能量等信息。根据邻居表中的信息, 每个节点都能够很容易地将数据包传送到sink节点。

2.3.3 数据转发阶段

通过第一阶段的路由初始化, 每个节点都形成了一个邻居表, 其中包括邻居到达sink节点时间、剩余能量、节点能量势等信息。当节点感应到事件发生时, 就会发起向sink节点的数据传输。

下一步将进入下一跳决策, 这一阶段需要同时考虑能量与传输效率, 既要有利于传感器网络能量的均衡消耗, 又要保证数据包能尽快地传输到sink节点。因此需要通过评价邻居的剩余能量、节点能量势、到达sink节点时间这些指标, 从中选出综合评价最高的邻居进行转发。在评价邻居时, 可以根据不同应用的实际需要来定义不同属性的权重。

在SEBR协议的数据转发过程中, 数据包均包含了源节点的信息。因此, 当节点接收到数据包后, 会根据数据包中的源节点信息更新邻居表、更新节点信息、环路判断等操作, 然后将自己的信息封装到数据包中转发出去。

2.3.4 数据融合

SEBR协议的另一重要特点是只进行一次数据融合。即在感应节点到sink节点的数据包传输路径上, 只在感应节点的下一跳进行数据融合。例如图2所示的场景中, 只有节点3会对该感应事件的数据包进行融合。执行数据融合的节点会将数据包头部的A字段置1。当节点接收到一个数据包, 会需要检查该数据包的A字段。如果A字段为0则需要对数据部分执行数据融合, 然后将该字段置1, 最后再转发。如果为A字段为1, 说明已经是融合过的数据, 直接转发。

在前面在对协议的假设中, 我们提到SEBR协议适用于节点分布稀疏的场景, 也就意味着重叠现象较少存在, 即节点间感应数据的耦合度较低。因此一次融合可以有效控制包的大小, 进而降低丢包的概率。

3 仿真分析

使用NS-2网络仿真器来评估SEBR的性能, 仿真参数的设置如表1所示。我们将SEBR的性能与DD和MCF进行比较, 考虑如下度量:平均包传递率, 平均能量消耗, 平均网络生存时间。仿真实验中, 分别使用50、100、200和1 000个节点来进行实验, 并使用其中的10个节点来进行数据包发送, 由sink节点来接收数据包, 仿真时间均为100 s。

3.1 平均能量消耗

节点消耗的能量依赖于传输、接收和计算。然而, 对于所有这些功能来说, 在考虑能量消耗的时候, 发现发送数据的能量消耗要比接收和计算的能量消耗大得多。所以在本研究中, 我们假设平均能量消耗直接与网络中数据包的传输数量成比例。传输的数据包越多, 消耗的能量就越多。和SEBR相比, 对于同样的场景DD和MCF, 传输了更多的数据包, 所以DD和MCF比SEBR消耗更多的能量。表2、表3仿真结果同样说明了这一点。

式 (1) 是计算平均能量消耗Eav的公式。

式中Ptr为每次传输的能量消耗, Nprt为每个参与发送数据的节点发送数据包的总数, n为参与发送数据包的节点总数。N为网络中的节点总数。

当传感器节点操作电压用m V, 电流用m A, 则消耗的电能以n J计。假设每次传输的能量消耗为0.02 n J, 可以计算出平均能量损耗。如表4所示, SEBR的平均能量损耗要明显小于DD和MCF。

3.2 网络生存时间

这里我们考虑将网络生存时间定义为从网络部署到最后一个节点死亡的这段时间。网络生存时间依赖于平均能量的消耗。能量消耗越大, 生存时间越短。

假设我们考虑每次传输的能量消耗为0.02n J, 每个节点的平均初始能量是1J, 据此可以用式 (2) 估算网络平均生存时间Tav。

对于同样的任务, DD和MCF广播了更多的数据包, 相比之下SEBR将具有更高的网络生存时间, 如表5所示。

参考文献

[1]AKYILDIZ IF, SU W, SANKARASUBRAMANIAM Y.A survey on sen network[J].IEEE Communications Magazine, 2002, 40 (8) :102-114.

[2]HEINZELMAN W R, KULIK J, BALAKRISHNAN H.Adaptive protoc for information dissemination in wireless sensor networks[C]//Proceedin of ACMMobi Com’99, Seattle Washington:IEEE, 1999:174-185.

[3]INTANAGONWIWAT Chalermek, GOVINDANRamesh, ESTRIN Deb rah, et al.Directed diffusion for wireless sensor networking[J].IEEE/ACTransactionson Networking, 2003, 11 (1) :2-16.

[4]YE Fan, CHEN Alvin, LU Songwu, et al.Scalable solution to minimum c forwardingin large sensor networks[C]//Tenth International Conference Computer Communications and Networks, Los Angeles CA:UCLA Com puter Science Department, 2001:304-309.

篇4:分配改革不是简单涨工资

治标就是直接對收入分配制度本身下工夫做变革,其中一个重要问题就是“提低控高”——提高低收入者的收入水平,控制高收入者的不合理收入水平,在此前提下合理提高大家的收入水平。治本,就是把造成收入分配不公平、不公正的经济体制弊端消除,把影响扩大收入分配差距的经济结构中不合理的因素消除。一些收入分配问题表面上看是收入分配问题,根子却跟我们经济结构不合理、经济发展方式不合理以及经济体制存在的某些弊端有紧密联系。

我们都希望在继续做大“蛋糕”的基础上,分好“蛋糕”,让老百姓的收入水平有明显的提高,生活有更大幅度的改善,但是不能把整个收入分配改革简单地等同于涨工资,而是要合理调整收入分配关系,尽快扭转收入差距扩大的趋势,在做大“蛋糕”,合理调整收入分配关系的基础上涨工资、提收入。

在一定的条件下,工资倍增是可以实现的,但前提是要深化改革,健全制度,调整关系,最后落脚点才是收入的提高,不要把前后顺序颠倒了,把倍增放在唯一的位置。让工资改革覆盖全体工薪劳动者,确实是一个比较大的难题,但是深化改革就是要力争做到全覆盖。对非公有制企业来说,就是要积极稳妥地推行工资协商,通过劳资双方平等协商,来安排职工工资的合理增长。与此同时,我们呼吁逐步减轻非公有企业或者劳动密集型中小企业的税收和收费,减轻他们的税费负担,让这些企业能够更好地生存发展,让他们得到合理的利润,有能力给劳动者涨工资,劳资双方互利双赢,形成比较良性的循环。

篇5:代发工资协议表

工商银行曲阜支行(分理处、储蓄所):

根据我单位与贵行签订的代发业务协议(协议编号___________),于2017年10月31日通过数据磁盘将已经我单位电子签名明细数据(代发清单)送达贵行,要求代理银行于2017年11月2日前完成代发。

汇总金额:大写壹万叁仟贰佰元整

小写¥13200.00 汇总笔数: 11 笔。

代发业务单位联系人: 联系电话:

■代理业务编号: 账号:

■单位公章(或财务专用章): 法人代表(或其授权代理人)名章:

对于因我单位提供数据错误造成未成功处理部分,请将未完成代发明细清单发还我单位,并将成功代扣金额回退我单位。

代发业务单位公章

2017年10月 31 日 经办网点审核人签章(字)

篇6:新代发工资协议

委托代理协议书

甲方(委托方):XX人民政府

乙方(代理方):

甲乙双方本着平等、互利的原则,根据《中华人民共和国合同法》及其他相关规定,经友好协商,就甲方委托乙方代理划款达成如下协议,并共同遵守。

第一条 本协议所称代理划款是指:甲方将代理资金存入双方指定的代理资金暂存户,同时向乙方提供符合乙方要求的代理明细文件和付款凭证,乙方根据甲方提供的明细文件和付款凭证办理付款和批量入帐。

第二条 委托代理业务范围

甲方委托乙方代理业务的项目包括:代发低保。

第三条 甲乙双方需指定专人作为办理代理业务的联系人,负责代理资料的交接。

甲方联系人:,身份证号码:。乙方联系人:,身份证号码:。

第四条 甲乙双方指定以下帐户做为代理资金暂存户:

户名: 代理业务资金暂存户开户机构: XX信用社

第五条 代理数据资料要求

(一)为保证甲方资金安全,甲方向乙方提供的代理电子文档和纸质文件,必须是由乙方提供的加密客户端软件生成和打印,文件内容由姓名、证件类型、证件号码、帐号、金额组成,每栏一户,每栏的各项目之间用“,”分隔,具体格式由乙方提供。

(二)甲方提供的代理明细文件要求全部有帐号,没有帐号的应先开户后再办理委托代理业务。

第六条 代理划款业务的办理流程

(一)甲方将代理资金划到双方指定的代理资金暂存户上。

(二)甲方向乙方提供加密明细电子文件1份、“代理数据汇总交接单”2份和“代理数据明细表”1份。其中“代理数据汇总交接单”上,甲方应填写“代理单位报送人”栏目,并加盖单位公章,乙方应填写“业务交接时间”和“银行方交接人员”栏目,并退还甲方1份。

(三)甲方向乙方提供与代理金额相同的付款凭证。

账号:XXXX0***003

(四)乙方根据甲方提供的付款凭证和代理文件办理入帐。

(五)对入帐不成功的帐户,乙方将入帐不成功的资金转入双方指定代理资金暂存户,并将入帐不成功明细清单交由甲方。

第七条 代理费用

(一)乙方为甲方办理代理付款业务的同时,甲方需向乙方支付代理费用,费率为 每户壹元,如有变动,双方另行协商。

甲方付代理手续费划入乙方如下帐户:

开户行:XX银行。

摘要栏请注明:**年**月至**年**月,**项目代理手续费字样。

第八条 权利与义务

一、乙方按照相关法规开展代理工作,在代理过程中,乙方不垫款。

二、在甲方资金到帐,代理文件正确的前提下,乙方保证三天内办理代理资金入帐,节假日顺延。

三、乙方不负责对甲方提供的明细文件进行核对,如因甲方提供的电子文档错误或电子文档与纸质文档不符造成的后果由甲方负责。如乙方发现甲方提供的数据资料有错误,造成不能办理代理明细入帐,应于3个工作日内通知甲方联系人。

四、乙方有义务向甲方就代理业务的办理和代理客户端软件的使用提供必要的培训,有义务协助甲方查询代理入帐失败的原因和提供入帐失败清单,及其他与甲方有关的代理查询服务。

五、甲方不得将乙方提供客户端加密软件用作其他用途,不得随意复制、传播。由此而产生的后果乙方不负任何责任,并保留向甲方的追索权。

六、甲方保证向乙方提供的数据、资料全部是由乙方提供的专用客户端软件生成。如因甲方提供的数据、资料错误造成的后果由甲方承担。

七、甲方保证其代理资金为合法来源,代理明细帐户为合法帐户,代理行为为合法行为,不涉及洗钱、公款私存等违规、违法行为。

八、甲方保证按期支付乙方代理手续费。

九、甲乙双方应按会计要求保存代理业务相关资料。

十、甲乙双方应互守对方的商业秘密,不得向任何第三方提供客户数据和资料,如有泄密发生,由泄密方负全部责任。

第九条 违约责任

一、在甲方资金到位,代理数据、资料正确的前提下,乙方未按时入账,甲方可拒付本次代理手续费。乙方并应继续办理本次代理。收款人户名: 代理业务手续费收款账号: XXXX0***000

二、甲方未按期支付代理手续费,从超期之日起每日向甲方支付未付手续费金额的1%,直至结清为止。乙方有权终止本代理合同的履行。

三、因不可抗力不能履行合同的,根据不可抗力的影响,部分或者全部免除责任,但法律另有规定的除外。

四、本协议所称不可抗力,是指不能预见,不能避免并不能克服的客观情况。

第十条 本协议从双方代表人签字盖章之日起生效。本协议到期后,如需继续履行,则应重新签订。

第十一条 协议变更和终止

一、协议履行期间,如遇与协议生效后颁布的有关政策、法律、规定不符的,甲乙双方须协商解决,予以变更。

二、本协议终止后,甲乙双方应对委托代理期间发生的应尽未尽委托代理事项负责结清。

三、如甲乙双方中一方单方面违反本协议双方约定事项,另一方有权提前终止本协议。

第十二条 本协议一式两份,甲乙双方各执一份,具有同等法律效力。

甲方(公章):乙方(公章):

负责人(或授权代理人):负责人(或授权代理人):

篇7:代发工资业务协议(共)

甲方:

乙方:农村信用合作联社

经甲乙双方友好协商,甲方委托乙方利用农信网点为甲方提供代发甲方职工工资业务,并共同遵守如下协议:

第一条 甲方指定乙方为代发工资业务的主办银行,乙方的()分社为代发工资业务的主办储蓄所。

第二条 甲方在乙方主办网点开立职工个人储蓄卡存款帐户用于转入工资款和支付甲方职工工资。

每三条 职工用卡均应遵守河南省农村信用社金燕卡章程约定。

第四条 甲方应每月日向乙方传递代发工资清单。

第五条 甲方应于每月日将工资款转到主办所,主办所于到帐次日将工资款项记入职工工资帐户。

第六条 乙方第一次代发甲方工资(或以后新增员工)时,甲方应提供员工身份证明的复印件及联系电话和住址,并对其真实性负责。

第七条 乙方收到甲方转交的银行卡(折)及其他提示性文件要保证交给持卡人,并对未交付产生的不良后果负责。

第八条 乙方应收到甲方工资款后次日根据工资清单记帐,保证甲方职工第三日后取款。

第九条 甲方提供的职工工资清单应具有以下要素:1.职工编号;2.职工姓名;3.职工工资户帐号;4.职工工资额;5.工资额合计;6,单位财务公章及编编制人名章。(以上要素中第1,2,3点不应更改,如有新增应按职工编号顺加;如有减少当月注明,次月工资额为0。)

第十条 甲方如有职工离职,应提前通知乙方。

第九条 乙方不向职工提供工资构成的明细查询。

第十条 因甲方提供的工资清单有误造成乙方代发工资的错误由甲方承担责任。

第十一条 在协议执行期间,甲乙双方中的任何一方不得擅自变更或终止协议,如一方出现违约,另一方有权随时终止协议,由此造成的损失由违约方承担。

第十二条 对代发工资过程中出现的问题及本协议未尽事宜,甲乙双方应及时协商解决。

第十三条:本协议于年月起执行。

第十四条:本协议一式二份,甲乙双方各执一份。

甲方(签章):乙方(签章):

负责人:负责人:

篇8:工资代发协议简单

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一个传输简单文件的协议,它是基于U D P协议实现的一种传输协议。TFTP协议是FTP(File Transfer Protocol)的简化版本,不提供目录浏览,只能完成发送和接收功能。它虽然不提供像FTP那样强大的功能,但是它传送数据长度固定且较小,是一个非常易用的、紧凑的协议,很适合在一些上传下载的场合使用。本文通过研究TFTP协议,设计了基于TFTP协议的简单文件传输系统,实现了多客户端与服务器的文件传输功能,并解决了丢包、超时等问题,具有一定的容错能力。

1 TFTP协议简介

利用TFTP简单文件传输协议可以实现TFT server与TFTP client之间的文件传输,包括多客户的下载和上传请求。TFTP传输文件的包的大小最大为512字节,如果在传输过程中,发现包数据小于512字节,则默认为该文件传输完毕[1]。

在TFTP文件的传输过程中,通常都要求有一定的容错能力。大部分的错误都会导致连接中断。假如错误由一个错误的数据包引起,则这个包将不被确认,也不会被重新发送,因此,另一方将无法接收到。如果错误包丢失,则将使用超时机制。错误主要由下面三种情况引起:1)不能满足请求,如文件不存在,访问受限等;2)收到的数据包内容错误,这种错误不能由延时或重发解释,如格式不正确的包;3)对需要资源的访问丢失,如硬盘满、访问拒绝。

2 基于TFTP协议的简单文件传输系统的体系结构

基于TFTP协议的简单文件传输系统实现多客户端和服务器之间的传输,其体系结构如图1所示。

3 基于TFTP协议的简单文件传输系统的通信流程设计

3.1 上传/下载功能的工作流程

系统的任何传输都是从一个上传或下载文件的请求开始,它表示通信的建立。客户端向服务端的默认服务端口发送一个上传或下载文件的请求,如果服务器接受此请求,则它会打开另外一个端口(假设2045端口)专门用于处理此客户端的请求,直到通信完成后释放20245端口,服务器端的默认服务端口则继续等待其它客户端的请求。数据以定长512字节传输,服务器发出下一个数据包之前必须得到客户对上一个数据包的确认。如果一个数据包小于512字节(包括0字节),则表示传输结束。如果数据包在传输过程中丢失,发出方会在超时后重新传输最后一个未被确认的数据包。

通信的双方都可以是数据的发送者与接收者,一方传输数据并接收应答,另一方发出应答并接收数据。其文件上传/下载的通信流程如图2、图3所示。

3.2 通信关闭及错误处理

一般情况下,通信在最后一个数据包发送完毕并且得到ACK回复后,通信正常关闭。简单文件传输系统的两端各自实现超时重传,如果发送端超时,它将重传丢失的数据块。如果负责确认的一端超时,它将重传丢失的确认。让两端都参与重传有助于保证在丢失单个分组时传送不会失败。

在传输过程中,如果出现错误,服务器端会向客户端发送一个ERROR包,如果客户端收到ERROR包,则通信关闭,如果客户端没有收到,则需要启动超时检测机制。对于ERROR包,服务器端和客户端都不会重传,也不需要ACK确认。

4 基于TFTP协议简单文件传输系统的实现

4.1 客户端实现

客户端主要实现向服务器端发送上传/下载文件请求并实现上传/下载的功能。系统首先初始化客户端程序,创建请求处理任务,然后根据上传/下载命令执行不同的任务。客户端执行流程如图4所示。

4.1.1 文件上传功能的实现

文件上传功能的执行流程如图5所示。

(1)客户端向服务器端发送WRQ写请求报文;

(2)服务器端创建Replysocket、分配新的端口,并发送ACK给客户端;

(3)客户端接收报文,更改socket端口,从文件中读取数据,并发送给服务器端;

(4)服务器端收到数据包后,解析数据并存储到本地文件,并发送ACK给客户端;

(5)客户端接收ACK报文,从文件中读取数据,并发送给服务器端。如此进行,直到文件上传完毕。

图5文件上传功能的执行流程(参见下页)

4.1.2 文件下载功能的实现

文件下载功能的执行流程如图6所示。

(1)客户端向服务器端发送RRQ读请求报文;

(2)服务器端创建Replysocket、分配新的端口,并发送数据给客户端;

(3)客户端接收报文,更改socket端口,解析数据并存储到本地文件,返回ACK;

(4)服务器端收到ACK后,发送下一个数据包;

(5)客户端接收报文,解析数据并存储到本地文件,返回ACK。如此进行,直到文件下载完毕。

图6下载文件功能的执行流程(参见下页)

4.2 服务器端实现

服务器端主要实现响应多个客户端上传/下载文件请求的功能。为了实现对客户端请求及时响应而又不影响其他客户端请求的功能,服务器端采取了多种策略来实现,如采用为客户端重新分配socket和端口、创建链表来保存socket描述信息、消息重传、超时控制等。服务器端执行流程如图7所示。

图7服务器端执行流程(参见右栏)

首先,服务器端初始化一个Msocket,用来响应客户端的请求。如果客户端请求到来,服务器端则会为它重新创建一个Replysocket,并分配新的端口,将其描述信息保存在连接信息队列里。然后分析该请求类型,如果是下载请求,则启动一个下载文件任务;如果是上传请求,则启动一个上传文件任务。其上传/下载文件任务的具体执行过程类似客户端的文件上传/下载功能,这里不再赘述。

5 小结

本文通过研究TFTP协议,实现了基于TFTP协议的简单文件传输系统。TFTP服务器端通过采取创建Replysocket和分配新端口等措施实现了多客户端与服务器的文件传输功能。该系统通过采取超时重传、socket信息保存、上一条消息暂存等方法解决了丢包、多任务执行等问题,具有一定的容错能力。下一步的任务就是实现基于TFTP协议的跨平台的简单文件传输系统,使之无障碍地应用到Vx Works、windows等多种操作系统之上。

参考文献

上一篇:高风亮节形容的是什么样的人下一篇:老子道家思想论文