如何从TFTP服务器下载文件?
|
下载文件是指客户端从 TFTP 服务器上下载文件。本节讲解客户端如何从 TFTP 服务器进行文件下载,以及下载所涉及的各类型的数据包。 工作流程客户端会向 TFTP 服务器发送请求读取(RRQ)数据包,指明要从服务器上读取的文件。如果 TFTP 服务器接收了该请求,将打开连接,向客户端发送请求获取的文件数据。发送的数据包是以定长 512 字节进行传输。如果文件数据大于 512字 节,将分成多个数据包进行传输。 由于每个数据包都需要得到确认,所以发送的每个数据包都包含数据编号,并且从 1 开始进行排序。当发送的数据包小于 512 字节,则表示这是最后一个数据包,传输即将结束。其工作流程如图所示。
上图中显示了客户端从 TFTP 服务器上下载文件信息的工作流程,每个步骤含义如下:
报文格式上图中的工作流程中涉及3种类型的数据包,即 RRQ,DATA 和 ACK。下面介绍这三种类型数据包的报文格式。RRQ 请求报文格式RRQ 类型的请求包是读取服务器上指定文件的信息。因此,该类型数据包的报文中包含了文件名字段。文件信息数据进行传输时需要指定传输模式,因此报文中还包含了模式字段。RRQ 请求包格式如图所示。
每个字段含义如下:
DATA 报文格式DATA 报文是用来传输数据的,因此报文中包含了“数据”字段。由于传输的数据包往往是多个,需要添加对应的编号,因此报文中包含了“数据编号”字段。DATA 报文格式如图所示。
每个字段含义如下:操作码:表示 TFTP 报文类型,这里为 Data Packet,值为 3。 数据编码:数据包对应的编号,从 1 开始进行排序。 数据:传输的文件数据及大小。 ACK 报文格式ACK 是对每个 DATA 包的确认,由于每个 DATA 包的数据编号不同,因此该报文中包含数据编号字段。ACK 报文格式如图所示。
每个字段含义如下:
构建 RRQ 包为了能够更清晰地了解 TFTP 下载文件的整个过程,下面进行文件下载操作。在 netwox 工具中,编号为 165 的模块可以从 TFTP 服务器上下载指定的文件。其语法格式如下: netwox 165 -i IP -F file1 -f file2 参数说明:
【实例】已知 TFTP 服务器的 IP 地址为 192.168.59.135,在该服务器上存在一个 test.txt 文件。在 192.168.59.133 主机上使用 netwox 工具下载该文件。具体步骤如下: 1) 在 TFTP 服务器上查看 test.txt 文件的大小,执行命令如下: root@daxueba:~# du -b test.txt 输出信息如下:1226? ? ? ?test.txt 其中,1226 表示文件大小为字节,test.txt 为文件名称。表示该文件大小为 1226 字节。2) 下载该文件到本地主机,下载后命名为 Test-keep.txt,执行命令如下: root@daxueba:~# netwox 165 -i 192.168.59.135 -F test.txt -f Test-keep.txt 执行命令后没有任何输出信息,但是会成功下载 test.txt 文件。3) 通过抓包查看下载文件整个过程产生的数据包,如图所示。
上图中,第 28~34 个数据包为下载文件整个过程的数据包。第 28 个数据包为客户端构建的 RRQ 请求包。通过包的基本信息可以看到源 IP 地址为 192.168.59.133,目标 IP 地址为 192.168.59.135,Info 列中的信息为 Read Request。 在 Trivial File Transfer Protocol 部分显示了报文格式,含义如下:
Trivial File Transfer Protocol
Opcode: Read Request (1) #操作码,这里值为1,表示是一个RRQ请求
Source File: test.txt #要下载的文件名
Type: octet #数据格式为octet
4) 第 29 个数据包是一个 DATA(传输数据)包,如图所示。
该数据包为 TFTP 服务器返回给客户端的第一个 DATA 包,用来传输文件信息。通过包的基本信息可以看到源 IP 地址为 192.168.59.135,目标 IP 地址为 192.168.59.133,Info 列中的信息为 Data Packet。其报文格式及信息如下:
Trivial File Transfer Protocol
Opcode: Data Packet (3) #操作码,这里值为3,表示是一个DATA包
[Source File: test.txt] #要下载的文件名
Block: 1 #数据编码
Data (512 bytes)
Data: 24377a243224313924302424382436303739313432646165... #数据
[Length: 512] #数据大小
从输出信息可以看到,服务器返回的文件数据信息,这里数据编码为 1,说明这是返回的第一个 DATA 包,数据大小为 512 字节。5) 第 30 个数据包为客户端返回给服务器的确认包,是对服务器发来的 DATA 包的确认,如图所示。
通过包的基本信息可以看到源 IP 地址为 192.168.59.133,目标 IP 地址为 192.168.59.135,Info 列中的信息为Acknowledgement。在报文字段中可以看到,数据编码为 1,表示该包是第一个 DATA 包的确认包。6) 第 31 个数据包为服务器第二次给客户端发送的 DATA 包,如图所示。
通过包的基本信息可以看到源 IP 地址为 192.168.59.135,目标 IP 地址为 192.168.59.133,Info 列中的信息为 Data Packet。在报文字段信息中,可以看到与第 30 个数据包不同的是,这次的数据编码为 2,说明这是发送的第 2 个 DATA 包,数据大小为 512 字节。第 32 个数据包为客户端返回的确认包。 7) 第 33 个数据包为服务器第 3 次给客户端发送的 DATA 包,如图所示。
在报文字段中,可以看到 Block 的值为 3,表示这是第 3 个 DATA 包,Length 的值为 202,表示该数据包大小为 202 字节,它小于 512 字节,说明该 DATA 包是服务器向客户端发送的最后一个 DATA 包。8) 第 34 个数据包为客户端对服务器发送的最后一次确认包,如图所示。
在该数据包的报文字段中可以看到 Block 的值为 3,表示是对最后一个 DARA 包的确认,是客户端发送给服务器的 ACK 包。此时完成了整个文件下载过程。通过前面介绍知道文件 test.txt 大小为 1226 字节,服务器向客户端发送的第 1 个和第 2 个 DATA 包大小都为 512 字节,第 3 个 DATA 包大小为 202,这 3 个 DATA 包大小加起来正好为 1226 字节。 在进行文件下载时,为了判断文件是否在传输过程中有损坏,可以在下载文件时对文件进行 MD5 值校验。netwox 工具的第 176 个模块提供了该功能。它可以从TFTP服务器上下载指定文件并检查文件的 MD5 值。 其语法格式如下: netwox 176 -i IP -F file -s MD5 参数说明:
【实例】以上面实例中的 test.txt 文件为例进行文件下载并检查其 MD5 值。这里假设文件的 MD5 值为 12345678901234567890123456789012,执行命令如下: root@daxueba:~# netwox 176 -i 192.168.59.135 -F test.txt –s "12345678901234567890123456789012" 输出信息如下:MD5 is e68fa2ccc1acea5d1173f2669fbc69e4 instead of 12345678901234567890123456789012 上述输出信息表示给定的值不正确。下载文件的 MD5 值应该为 e68fa2ccc1acea5 d1173f2669fbc69e4。在执行命令时,没有输出结果,表示指定的 MD5 值正确。(编辑:我爱故事小小网_铜陵站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

上图中显示了客户端从 TFTP 服务器上下载文件信息的工作流程,每个步骤含义如下:
每个字段含义如下:
每个字段含义如下:
每个字段含义如下:
上图中,第 28~34 个数据包为下载文件整个过程的数据包。第 28 个数据包为客户端构建的 RRQ 请求包。
该数据包为 TFTP 服务器返回给客户端的第一个 DATA 包,用来传输文件信息。通过包的基本信息可以看到源 IP 地址为 192.168.59.135,目标 IP 地址为 192.168.59.133,Info 列中的信息为 Data Packet。
通过包的基本信息可以看到源 IP 地址为 192.168.59.133,目标 IP 地址为 192.168.59.135,Info 列中的信息为Acknowledgement。在报文字段中可以看到,数据编码为 1,表示该包是第一个 DATA 包的确认包。
通过包的基本信息可以看到源 IP 地址为 192.168.59.135,目标 IP 地址为 192.168.59.133,Info 列中的信息为 Data Packet。
在报文字段中,可以看到 Block 的值为 3,表示这是第 3 个 DATA 包,Length 的值为 202,表示该数据包大小为 202 字节,它小于 512 字节,说明该 DATA 包是服务器向客户端发送的最后一个 DATA 包。
在该数据包的报文字段中可以看到 Block 的值为 3,表示是对最后一个 DARA 包的确认,是客户端发送给服务器的 ACK 包。此时完成了整个文件下载过程。
浙公网安备 33038102330570号