- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TFTP协议的SDL设计与C实现
实验二 TFTP协议的SDL设计与C实现班级 小班序号 姓名 成绩 一 协议环境分析用户要求连接功能连接管理采用UDP面向无连接方式。安全性要求,只允许合法的用户建立连接,可靠性要求,性能要求。文件传输TFTP没有用户权限管理,用户不需要发送用户名或口令,只有文件的读或写权,权限许可时,文件才能被传输。无证实方式。传输8位数据。通道性质:TFTP客户机和服务器之间的通信是基于UDP/IP协议。工作模式:TFTP不支持交互,也没有命令集,因此不允许用户列出目录的内容或者与服务器进行交互,判断可用的文件名称。TFTP使用客户服务器模式,一般支持两种传输模式:一是,netascii,即8比特ASCII码;二是,Octet,即8比特字节。可对文件进行读或写。二 协议功能分析传输开始于客户端发送一个文件读(下载)或写(上载)请求服务器使用UDP69号端口接收读/写请求,并建立一个新的连接支持两种数据传输模式netascii和octet每次传送的数据PDU包含定长512字节数据,不足512字节视为文件的最后一包数据,表示传输结束。每块数据按序编号,从1开始双方都提供确认机制,都提供超时重传差错包导致传输终止(除源端口错误外),此包无需确认,无需重传无校验机制SDL功能图进程图三 协议结构设计分类接收实体和发送实体分层客户端和服务端用户通道接口子层四 协议机制设计流控机制:每个数据包包括一个数据块,客户只有等到服务器的一个确认包以后才会发送下一个数据包,如果一个数据包小于512字节,则表示传输结束。转发、确认机制:发送者每次只能发送一个包,以使确认机制可以保证以前发送的包都已经收到。在一个传输过程中,通信双方既是发送者又是接收者,一方传输数据接收确认,另一方发送确认接收数据。错误机制:有许多错误可以导致连接终止,错误用发送错误包的形式通知对方,此包不会被确认,也不需要重传。如果错误包丢失,则使用超时机制检测。有以下8种错误:超时机制:如果一个包(数据包或确认包)在传输过程中丢失,定时器将会超时,并重发上一个包五 协议元素设计服务原语和服务原语时序初始连接时需要发出WRQ(请求写入)或RRQ(请求读取),收到一个确定应答,一个确定可以写出的包或应该读取的第一块数据,通常确认包包括要确认的包的包号,每个数据包都与一个块号相对应,块号从1开始而且是连续的。因此对于写入请求的确定是一个比较特殊的情况,因此它的包号是0.如果收到的包是一个错误的包,则这个请求被拒绝。需要四条服务原语:读写请求:WRQ、RRQ(filename文件名,mode文件格式)指示:Data(seqno为序号,data为文件内容)响应:ReadFile_RESP(filename为文件名,mode为文件格式)证实:ACK(seqno为序号+1)五种协议数据单元PDU数据格式读文件请求包:Read request,简写为RRQ,客户端发送RRQ报文,服务器响应DATA报文写文件请求包:Write request,简写为WRQ,存储文件请求,服务器响应块号为0的ACK报文,客户端收到确认后,发送块号为1的第一个数据包文件数据包:DATA,发送数据包,数据用DATA报文发送后,等待ACK报文,如果发送端在超时前收到ACK报文就发送下一个数据块,否则重传未被确认的数据包文确认包:Acknowledgement,简写为ACK,数据确认报文差错包:ERROR,出错报文PDU交换时序正常终止一个包含0~511字节数据的数据包标识传输的结束,此包仍需要一个ACK来确认文件写成功文件读成功异常终止发送错误包导致传输终止,此包无需确认,也不需要重传。源端口错误包除外。。WRQ丢失RRQ丢失读数据包丢失写数据包丢失写ACK丢失读ACK丢失错误终止ACK错误数据包序号错误特殊错误协议状态Ready:开始时无请求IDLE:等待对方发送读写请求WAIT_R_RESP或WAIT_W_RESP:等待传送文件响应原语WAIT_FIRST_P或WAIT_NEXT_P:等待第一个或下一个数据包WAIT_ACK或WAIT_LAST_ACK:等待ACK响应或最后的ACK确认协议事件定时器超时:重发上一条请求原语服务原语:RRQ、WRQ:发送文件读写请求原语ReadFile_IND:请求文件响应原语PDURRQ、WRQ:文件请求读写PDUDATA:数据包PDUERR:文件错误PDUACK:确认包PDU协议变量Filename:字符串型,记录被传送的文件名Tempseqno、sendseqno、recvseqno、seqno:整型,取值范围1到512,记录发送数据包的序列号Mode:字符串型,记录被传送文件的格式Errcode:整型,错误代码,默认为0Errmsg:字符串型,错误消息Length:整
文档评论(0)