UNIT10 Trivial File Transfer Protocol

一、TFTP是一个很小且易于实现的文件传送协议

1FTP的简化版本没有一个庞大的命令集

不支持交互

1980年定义

占内存很小

不能列出目录

不能进行身份鉴别

只支持对文件进行读/写传输

2、停止/等待,C/S协议

①发送完一个文件块后就等待对方的确认,确认时应指明所确认的块编号。

②发完数据后在规定时间内收不到确认就要重发数据PDU。

③发送确认PDU的一方若在规定时间内收不到下一个文件块,也要重发确认PDU。这样就可保证文件的传送不致因某一个数据报的丢失而告失败。

3基于UDP因此TFTP需要有自己的差错控制(表现为步锁)。

①客户进程发送一个读/写请求PDU给TFTP服务器进程,其熟知端口号码为69。

②服务器进程要选择一个新端口和TFTP客户进程进行通信。

③最后传送数据PDU的数据字段一定不满512字节,这正好可作为文件结束的标志。

④若文件长度为512B的整数倍,还必须在最后发送一个只含首部而无数据的数据PDU。

二、TFTP 协议的封装形式和5种PDU

0、模式字段是一个netascii或octet,同样以0字节结束。

1、Read ReQuest(=1)和Write ReQuest(=2)使用相同格式。

2、Data PDU(操作码=3)

初始块号被设置成1,为初始的DATA分组报文。每一个附加的分组报文将增加1。

每次传送的数据PDU中有512Bytes的数据,如果数据段少于512字节,则表明来自文件的最后一个数据块。如果正好是512字节长,必须传送额外的0长度数据块。

3、Ack确认(Acknowledgment 操作码=4)分组报文

     块号段包含正在被确认的DATA报文的块号;若确认信号是回答一个WRQ的,则块号将被设置成0,表明数据的传输可以开始。

4、Err出错(Error操作码=5), 出错代码给出出错类型值

     出错消息以NETASCII格式储存,出错消息总是以一个“0”来作为结尾标志。出错代码描述:

0

没有定义的错误

4

非法的TFTP操作

1

文件没找到

5

未知的传输ID(端口号)

2

权限不足

6

文件已存在

3

磁盘已满或分区表溢出

7

没有这个用户

5、TFTP 报文分析

 

三、linux下TFTP安装与使用

1、安装这2个软件,一个是服务端,一个是客户端

    tftp-0.39-2.i386.rpm;tftp-server-0.39-2.i386.rpm

2、修改/etc/xinetd.d/tftp配置文件

说明:参数-s指定chroot,-c指定了可以创建文件。

3、创建tftp根目录,启动tftp-server。

#chmod -R 777 /tftp_root

#chkconfig tftp on; service xinetd restart

#netstat -uan|grep 69

Chmod -R 777 /tftpboot

4、测试如下

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值