java网络编程之TFTP(一)

**

TFTP简单文件传输协议

**
TFTP使用了UDP套接字,效率比较高,但是也要求TFTP为数据传输的不可靠负责。

TFTP服务器在69端口上监听到来的数据包,客户端使用一个随机的端口号

TFTP作用:许多无盘工作站使用TFTP来载入它们需要的来自服务器的文件。
每个数据报有一个操作码opcode(16 bits),表示包的类型,有五种
1——RRQ——-请求读
2——WRQ——-请求写
3——DAT——-文件数据
4——ACK——-确认,继续进行传输
5——ERR——–发生错误
TFTP数据报

请求读或写数据报包包括操作码(opcode)、文件名(由0字节终止)和模式串(由0字节终止)
文本文件的模式是netascii ,二进制文件的模式是8位的二进制组(octet)

文件数据报文包括操作码、块编号、数据(0–512字节)

ACK数据报包括操作码、块编号

ERR数据报包括操作码、差错码、差错信息(由0字节终止),用于服务器不能处理读请求或写请求
的情况。在文件传输的过程中的读和写也会导致传送这种报文,接着停止传输。

TFTP的工作过程
TFTP的工作过程很像停止等待协议,发送完一个文件块后就等待对方的确认,确认时应指明所确认的块号。发送完数据后在规定时间内收不到确认,就要重发数据PDU,发送确认PDU的一方若在规定时间内收不到下一个文件块,也要重发确认PDU。这样保证文件的传送不致因某一个数据报的丢失而告失败。

客户端需要执行的任务步骤:
1、发送RRQ或WRQ请求到服务器的69端口
2、等待一个数据包或者是ACK包。这个包将包含一个69以外的新端口号。
3、接收到数据包,就以ACK包响应,接收到ACK包,就发送下一个数据包。
4、准备处理超时错误或者是ERR包

服务器端需要执行的任务步骤:
1、监听69端口上的RRQ或者WRQ请求。
2、对每一个合法请求,创建一个套接字(也可能是一个新线程)。对RRQ请求,以初始的数据包响应,对WRQ请求,发出对第0块的确认。
3、接收到ACK包,以下一个数据包来响应,接收到数据包,以ACK包来响应。
4、准备处理超时错误或者ERR包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值