TFTP包
来源:互联网 发布:get软件是真鞋么 编辑:程序博客网 时间:2024/05/10 03:50
TFTP支持五种类型的包,我们在以上已经说明这五种类型的包:
opcode operation
1.Read request (RRQ)
2.Write request (WRQ)
3.Data(DATA)
4.Acknowledgment(ACK)
5.Error(ERROR)
包头中包括了这个包所指定的操作码。
--------------------------------------------
| 2 Bytes| string |1 byte| string| 1 byte|
| Opcode | Filename | 0 | Mode | 0 |
--------------------------------------------
Figure 5-1: RRQ/WRQ包
RRQ和WRQ包(代码分别为1和2)的格式如上所示。
Filename是NETASCII码字符, 以0结束。
MODE域包括字符串"netascii","octet"或"mail",名称不分大小写,以0结束。
l 接收到NETASCII格式数据的主机必须将数据转换为本地格式。
l OCTET模式用于传输文件,这种文件在源机上以8位格式存储。假设每个机器都存在一个8位的格式,这样的假设是最一般的。比如 DEC-20,这是一种36位机,我们可以假设它是4个8位外加另外4位而构成。如果机器收到OCTET格式文件,返回时必须与原来文件完全一样。
l 在使用MAIL模式时,用户可以在FILE处使用接收人地址,这个地址可以是用户名或用户名@主机的形式,如果是后一种形式,允许主机使用电子邮件传输此文件。
如果使用MAIL类型,包必须以WRQ开始,否则它与NETASCII完全一样。我们的讨论建立在发送方和接收方都在相同模式的情况下,但是双方可以以不同的模式进行传输。例如一个机器可以是一台存储服务器,这样一台服务器需要将NETASCII格式转换为自己的格式。另外,我们可以设想DEC-20这种机器,它使用36位字长,用户这边可以使用特殊的机制一次读取36位,而服务器却可以仍然使用8位格式。在这两种情况下,我们看到了两台机器使用不同格式的情况。可以在两台主机间定义其它的传输方式,但是定义要小心,因为这种传输方式不为人知,而且也没有权威机构为其指定名称或定义它的模式。
blksize 1462
-------------------------------------------------------------------
|optcode| filename |mode | opt1 | opt2 |
-------------------------------------------------------------------
| 1 | zImage\0 | octet\0 | timeout\0 5 \0 | blksize\0 1462 \0 |
-------------------------------------------------------------------
注意:optcode占用2bytes,如果不带扩展选项,opt1,opt2就不需要添加了。如果使用扩展选项,每个扩展选项以NULL结束.
----------------------------
| 2 Bytes| 2 bytes | n byte|
| Opcode | Block # | Data |
----------------------------
Figure 5-2: DATA包
数据在数据包中传输,其格式如上图所示。数据包的OP码为3,它还包括有一个数据块号和数据。数据块号域从1开始编码,每个数据块加1,这样接收方可以确定这个包是新数据还是已经接收过的数据。数据域从0字节到512字节。如果数据域是512字节则它不是 最后一个包,如果小于512字节则表示这个包是最后一个包。除了ACK和用于中断的包外,其它的包均得到确认。发出新的数据包等于确认上次的包。WRQ和 DATA包由ACK或ERROR数据包确认,而RRQ数据包由DATA或ERROR数据包确认。下图即是一个ACK包,操作码为4。其中的包号为要确认的数据包的包号。
--------------------
| 2 Bytes| 2 bytes |
| Opcode | Block # |
--------------------
Figure 5-3: ACK包
WRQ数据包被ACK数据包确认,它的操作码是4,WRQ数据包的包号为0。
--------------------------------------
| 2 Bytes| 2 bytes | string |1 byte|
| Opcode | ErrorCode | ErrMsg | 0 |
--------------------------------------
Figure 5-4: ERROR包
一个ERROR包,它的操作码是5,它的格式如上所示。此包可以被其它任何类型的包确认。错误码指定错误的类型。错误的值和错误的意义在附录中。错误信息是供程序员使用的。- TFTP包
- Tftp
- tftp
- tftp
- tftp
- tftp
- TFTP
- tftp
- tftp
- tftp
- tftp
- TFTP
- tftp
- Tftp
- tftp
- tftp
- tftp
- tar 解压通过tftp传输的包时出现了 Skipping to next header错误
- Hadoop学习2_Hadoop完全分布式的Eclipse开发环境配置
- FZU 2020-组合(Lucas定理+逆元解决大组合数求模)
- HDU 1019 Least Common Multiple(数论)
- ios开发之 时间日期差计算
- zzuli OJ 1028: I love 闰年!
- TFTP包
- 【codevs1040】【01NOIPTG】统计单词个数,字符串的划分DP
- canvas arc画圆遇到的问题
- 全局变量和局部变量在内存里的区别
- found for dependency: expected at least 1 bean which qualifies as autowire @Resource时导入的包错了,应该导入
- Maven学习总结(二)——Maven项目构建过程练习
- string类型
- zzuli OJ 1029: 三角形判定
- 困难的事