Python socket之tftp协议

Posted lmix

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python socket之tftp协议相关的知识,希望对你有一定的参考价值。

1. TFTP协议介绍

TFTP(Trivial File Transfer Protocol,简单文件传输协议)

是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议

特点:

  • 简单
  • 占用资源小
  • 适合传递小文件
  • 适合在局域网进行传递
  • 端口号为69
  • 基于UDP实现

2. TFTP下载过程

TFTP服务器默认监听69号端口

当客户端发送“下载”请求(即读请求)时,需要向服务器的69端口发送

服务器若批准此请求,则使用一个新的、临时的 端口进行数据传输

技术分享图片

当服务器找到需要现在的文件后,会立刻打开文件,把文件中的数据通过TFTP协议发送给客户端

如果文件的总大小较大(比如3M),那么服务器分多次发送,每次会从文件中读取512个字节的数据发送过来

因为发送的次数有可能会很多,所以为了让客户端对接收到的数据进行排序,所以在服务器发送那512个字节数据的时候,会多发2个字节的数据,用来存放序号,并且放在512个字节数据的前面,序号是从1开始的

因为需要从服务器上下载文件时,文件可能不存在,那么此时服务器就会发送一个错误的信息过来,为了区分服务发送的是文件内容还是错误的提示信息,所以又用了2个字节 来表示这个数据包的功能(称为操作码),并且在序号的前面

技术分享图片

注:1.数据包格式是字符串形式

2.需要表明大小端

3.其中定义数据包时的内存大小需要用struct模块格式化

 

以上是关于Python socket之tftp协议的主要内容,如果未能解决你的问题,请参考以下文章

Python 之 网络编程——SOCKET开发

TFTP 与 FTP的区别

TFTP服务[精简版]:简单文件传输协议

运维自动化系统部署

计算机网络——运用层(FTP&TFTP文件传送协议)

Linux-FTP