您的位置:首页 > 编程语言 > PHP开发

tftp文件传输协议

2019-08-15 15:53 1056 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_44131010/article/details/99638423

参考链接:https://blog.csdn.net/yanhuatangtang/article/details/77309098
https://blog.csdn.net/zlj_fly/article/details/40227623
TFTP是一种简单的文件传输协议。目标是在UDP之上上建立一个类似于FTP的但仅支持文件上传和下载功能的传输协议,所以它不包含FTP协议中的目录操作和用户权限等内容。
在项目中udp环境下需要进行文件传输,一种高效的文件传输。文件传输一般会想到FTP 和TFTP,但考虑限制条件,所以采用TFTP。
client - server:(C/S结构)是大家熟知的客户机和服务器结构。
需要掌握三次握手原理。

1、从tftp服务器上下载文件:

把数据发送给别人,自己就是服务器;别人要发送数据,别人就是服务器; 服务器----发送数据
服务器的69端口只接受下载请求,确认包都要在随机端口中确认。

需要满足tftp协议

a、创建一个空文件

b、向文件中写入数据

c、关闭

操作码	功能
1	读请求,即下载
2	写请求,即上传
3	表示数据包,即DATA
4	确认码,即ACK
5	错误

TFTP的通信流程

TFTP共定义了五种类型的包格式,格式的区分由包数据前两个字节的Opcode字段区分,分别是:

· l 读文件请求包:Read request,简写为RRQ,对应Opcode字段值为1

· l 写文件请求包:Write requst,简写为WRQ,对应Opcode字段值为2

· l 文件数据包:Data,简写为DATA,对应Opcode字段值为3

· l 回应包:Acknowledgement,简写为ACK,对应Opcode字段值为4

· l 错误信息包:Error,简写为ERROR,对应Opcode字段值为5

过程:

1、由客户端发起读文件/写文件的请求,同时可以进行请求连接

2、服务器监听到请求,打开连接,并向客户端发送文件,以每个定长为512字节的块进行发送。每个数据包包含一个数据块,在发送下一个包的时候必须被客户端确认回应一个回应包。

3、当发现某个数据包小于512个字节,说明传输终止。

4、如果出现网络丢包,收件方(客户端)会超时,并且重传最后的接收包(可以是数据包或者回应包),因此这将可以让发送者重新发送丢失包。当之前的包已经接受成功之后,发送者只需要保持一个重传包。注意 发送者 要做的事情:发送数据,接受 回应包;接受者要做的:发送回应包,接受数据。如下图所示:

读请求和写请求的回应是不一样的下图是读请求

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: