让你全方位了解tftp协议,学tftp协议不再难

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,端口号为69,是一种高效的文件传输方式。

其目标是在UDP之上建立一个类似于FTP的但仅支持文件上传和下载功能的传输协议,所以它是基于FTP协议或其它协议而实现,使用UDP数据包,但是需要自己的差错改正措施。TFTP只支持文件传输而不支持交互,只能简单的进行小型文件的传输,从服务器上获得或者说是下载文件,但它不包含FTP协议中的目录操作和用户权限等内容。

因为TFTP是设计在UDP上层的协议,并且报文是基于网络协议,属于数据包将拥有一个网络包头,报文头,和TFTP头,另外数据包有可能还有其他的头(例如LNI,ARPA头等等)来允许他们通过本地的传输媒体。TFTP不需要制定任何的网络头的值。另外报文头数据源和目标端口字段用于TFTP,长度字段但应tftp包的大小。用于TFTP的传输id(tid)会传到报文层当作端口使用,因此必须是0~65535(16位,2个字节)

TFTP没有庞大的指令集,无法列目录和获得用户身份鉴别,与FTP相似,TFTP传输过程中也有传输模式之分,模式的意思是如何解释数据包里的内容,比如是字符串还是二进制等。目前有三种模式:

(1) netascii型:一种修改的8bit ascii码

(2) octet型:即binary普通的二进制型

(3) mail型:过时,不再使用

另外,通讯双方也可以自定义所需的传输模式。

通信流程为:

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

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

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

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

注意:

发送者要做的:发送数据->接受->回应包;

接受者要做的:发送回应包->接受数据。

一旦发送请求(写文件请求或者读文件请求),传输就已经建立,并且收到写的回应包,或读取第一个数据的肯定答复;为了建立连接,连接的每一段都会为自己在传输期间选则传输id(tid)。

TFTP总结:

整体上来说,TFTP的一个重要特点就是简单及易于实现,这也是设计TFTP协议的一个初衷。

优点是:

(1)每个数据包大小固定,这样在内存分配处理的时候比较直接

(2)实现简单

(3)每个数据包都有确认机制,可以实现一定程度的可靠性

缺点:

(1)传输效率不高

(2)滑动窗口机制太简单,并且该窗口仅有一个包的大小

(3)超时处理机制并不完善

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。(点击找小助理领取)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值