前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TFTP:简单文本传输协议的数据包格式解析

TFTP:简单文本传输协议的数据包格式解析

作者头像
望月从良
发布2019-06-02 23:40:25
2.5K0
发布2019-06-02 23:40:25
举报
文章被收录于专栏:Coding迪斯尼Coding迪斯尼

本节我们看看TFTP数据包的组装方式,为我们代码实现该协议奠定基础。TFTP协议总共有5中不同数据包,分别对应读请求,写请求,数据块,接收回应(ACK),以及错误。前两种数据包格式一样,只不过某些值域设置有差别,剩下的三种数据包格式各不相同。但无论哪一种数据包,他们都包含一个值域叫操作码,用来定义该数据包属于那种类型。

我们先看读请求和写请求数据包的格式,首先是2字节表示操作码,它用来表示当前数据包的类型,取值1表示该数据包是个读请求,2表示该数据包是;接下来是可变长字段,它用来表示要读取或上传的文件名,它使用ASCII码并以0表示结尾;第三个字段叫Mode,也是可变长字段,用来表示传输文件的数据类型,如果传输的是字符串文件,那么它填写字符串”netascii”,如果传输的是二进制文件,那么它填写字符串”octet”,这些字符串都以0结尾,其结构用下图表示:

我们看看对应的wireshak抓包

接着我们看看传输数据块的数据包,它头2字节也是操作码,取值3用于表示数据包用于数据块传输,接下来是2字节,用于表示数据块编号,最后是可变长字段Data,用于装载数据块,该数据包的格式如下:

我们看看对应的wireshark抓包:

然后是应答数据包,它开始2字节也是操作码,取值4,接下来2自己拥有表示接收到的数据块编号,相应结构如下图:

最后一个是错误数据报,它首2字节表示操作码,取值5;接下来2字节表示错误码,0表示未知错误,1表示文件不存在,2表示权限不足,3表示磁盘已满,具体的错误码我们在实践时再具体分析;接下来是可变长字段,它用字符串的形式描述具体错误,该数据包的结构如下图:

它对应的wireshark抓包如下:

接下来我们看看如何代码实现TFTP协议。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-29,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 Coding迪斯尼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com