TFTP原理

合集下载

TFTP协议分析

TFTP协议分析

TFTP协议分析一、介绍TFTP(Trivial File Transfer Protocol)是一种简单的文件传输协议,用于在计算机网络中进行文件的读取和写入操作。

它是基于UDP协议的,通常用于在局域网中进行小文件的快速传输。

TFTP协议具有简单、轻量级的特点,适用于资源有限的设备和网络环境。

二、协议内容1. 数据包格式TFTP协议使用5种不同类型的数据包进行通信,分别是读请求(RRQ)、写请求(WRQ)、数据(DATA)、确认(ACK)和错误(ERROR)。

- 读请求(RRQ)和写请求(WRQ)数据包格式如下:- 2字节:操作码(RRQ为1,WRQ为2)- 字符串:文件名- 字符串:传输模式(如"octet"表示二进制传输)- 数据(DATA)数据包格式如下:- 2字节:操作码(3)- 2字节:块编号- n字节:数据块- 确认(ACK)数据包格式如下:- 2字节:操作码(4)- 2字节:块编号- 错误(ERROR)数据包格式如下:- 2字节:操作码(5)- 2字节:错误编号- 字符串:错误消息2. 连接建立过程TFTP协议使用UDP作为传输层协议,因此不需要进行连接建立过程。

客户端向服务器发送读请求(RRQ)或写请求(WRQ)数据包,服务器收到请求后根据请求的文件名和传输模式进行相应的操作。

3. 数据传输过程TFTP协议使用数据(DATA)和确认(ACK)数据包进行文件的传输。

服务器将文件分成固定大小的数据块,每个数据块包含一个块编号和实际数据。

客户端接收到数据后发送确认(ACK)数据包告知服务器已成功接收,服务器收到确认后继续发送下一个数据块。

4. 错误处理TFTP协议使用错误(ERROR)数据包来处理错误情况。

当服务器或客户端遇到错误时,会发送一个错误数据包给对方,其中包含错误编号和错误消息。

接收方收到错误数据包后会终止传输并根据错误消息进行相应的处理。

三、应用场景TFTP协议主要应用于需要快速传输小文件的场景,例如固件升级、配置文件的备份和恢复等。

FTP和TFTP技术介绍

FTP和TFTP技术介绍

FTP和TFTP技术介绍FTP(File Transfer Protocol)是Internet上的一种标准协议,用于在计算机之间传输文件。

它是一个基于客户端-服务器架构的协议,客户端通过FTP客户端软件连接到服务器,并进行文件的读取、写入和删除等操作。

FTP协议有两种工作模式:主动模式和被动模式。

主动模式中,客户端在数据传输之前先与服务器建立控制连接,然后服务器会通过不同的数据端口向客户端传输数据。

被动模式中,客户端在控制连接上发起数据连接请求,然后服务器会在不同的数据端口监听连接并传输数据。

FTP协议支持匿名访问,即允许用户以匿名身份登录到服务器,只需提供一个用户名为"anonymous"和密码为电子邮件地址的特定格式即可。

除了匿名访问外,FTP还支持用户账户登录验证,以提供更安全的数据传输。

FTP协议提供了许多操作命令,例如:2.PUT:将文件从客户端上传到服务器。

3.DELETE:删除服务器上的文件。

4.RENAME:重命名服务器上的文件。

5.MKDIR:在服务器上创建目录。

6.LIST:列出服务器上的文件和目录等。

TFTP(Trivial File Transfer Protocol)是FTP的简化版本,通常用于局域网(LAN)内部的文件传输。

TFTP协议不需要用户身份验证,也没有列出文件和目录的能力。

TFTP协议使用UDP(User Datagram Protocol)作为传输协议,而不是TCP(Transmission Control Protocol)。

UDP是一种无连接的传输协议,与TCP相比,具有较低的开销和更快的传输速度,但不提供可靠的数据传输和错误检测。

TFTP协议的工作方式也很简单,客户端通过TFTP客户端软件连接到TFTP服务器,并进行文件的读取和写入操作。

TFTP使用固定的端口号69,客户端通过发送读请求(RRQ)或写请求(WRQ)来初始化文件传输,在服务器的响应中包含文件数据或错误信息。

Tftp服务器配置与使用

Tftp服务器配置与使用

Tftp 服务器配置与使用TFTP (Trivial File Transfer Protocol,简单文件传输协议) 是TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。

它基于UDP 协议而实现,端口号为69。

此协议设计是基于实现小文件传输的目的。

因此它不具备通常的FTP 的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证。

在嵌入式开发中,TFTP 服务常用于通过网线从PC 服务端的TFTP 目录中下载镜像文件到目标开发板中,以待烧写或运行.使用这种方式下载文件,操作方便,并且速度也较快.第一步:在终端下首先查看是否已安装tftp 服务器和客户端组件验证命令如下:[root@localhost ~]#rpm —qa | grep tftp需要出现如下已安装组件:tftp —0.39- 1 。

i386tftp-server —0.39 —1 。

i386第二步:安装tftp 组件如果没有安装tftp 组件,从linux 光盘中找到tftp 组件的rpm 包,分别为tftp-0。

39- 1.i386 。

rpm 和tftp—server —0.39- 1 。

i386 。

rpm.进入共享文件夹MyShare,将tftp 组件的rpm 包拷贝到根目录下的home 目录中,使用命令rpm —ivh [软件包的完整路径],完成安装。

[root@localhost home] #cp —rf /mnt/hgfs/MyShare/tftp_rpm ./[root@localhost home] # cd tftp_rpm[root@localhost tftp_rpm]#rpm —ivh [root@localhost tftp_rpm] #rpm —ivh tftp —server-0。

39- 1.i386 。

rpm tftp —0.39- 1.i386 。

tftp命令用法

tftp命令用法

tftp命令用法TFTP(TrivialFileTransferProtocol)是一种简单文件传输协议,用于在计算机网络之间传输文件。

TFTP提供了一种简单的文件传输,不需要复杂的登录和认证过程即可实现文件传输。

TFTP运行在UDP协议之上,所以它的传输速度要比TCP/IP的传输速度慢。

TFTP最初是由网络设备厂商研发的一种文件传输协议,以解决在网络管理中的文件传输问题。

该协议的优势在于它可以节省其他文件传输协议需要消耗的资源,如登录认证和验证等。

因此,TFTP在网络管理方面比较流行。

《TFTP命令用法》TFTP命令可以用来从服务器上复制文件、从服务器上删除文件、上传文件、以及更改文件大小。

TFTP命令主要有以下几种:get:从远程服务器复制一个文件put:将文件上传到远程服务器del:从远程服务器删除一个文件rename:更改文件名dir:列出远程服务器上的文件mkdir:在远程服务器上创建一个文件夹rmdir:在远程服务器上删除一个文件夹modify:修改文件大小dir -R:列出远程服务器上的文件及子文件夹TFTP命令的使用需要指定一些参数,这些参数包括:-a:如果指定,则传输文件时不检查权限-s:指定使用字符模式传输文件-b:指定使用块模式传输文件-t:指定传输的文件类型,可选值有文本文件和二进制文件-f:指定本地文件名-r:指定远程文件名-l:指定文件大小关于TFTP命令的使用,还有一些其他可选参数,可以使用help 命令查看详细信息。

TFTP具有很多优点,占用资源少,不需要登录和认证,可以实现简单快速的文件传输。

但是,由于它运行在UDP层上,传输速度比TCP/IP慢,也不适合传输大文件和跨越网络的文件传输。

此外,TFTP 服务不支持多用户,不支持加密传输,也无法提供可靠的数据传输,因此对于安全性要求较高的文件传输,不太合适。

TFTP命令的使用简单,但是需要掌握一定的参数,可以提供准确的指令,来实现期望的文件传输。

tftp协议的实现

tftp协议的实现

tftp协议的实现一、tftp协议介绍TFTP是一个传输文件的简单协议,它其于UDP协议而实现,但是我们也不能确定有些TFTP协议是基于其它传输协议完成的。

此协议设计的时候是进行小文件传输的。

因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据。

传输中有三种模式:netascii,这是8位的ASCII码形式,另一种是octet,这是8位源数据类型;最后一种mail已经不再支持,它将返回的数据直接返回给用户而不是保存为文件。

二、基于TFTP协议的网络数据包格式---------------------------------------------------| Local Medium | Internet | Datagram | TFTP |---------------------------------------------------可以看出,TFTP是应用层的协议,我们在linux进行编程时,只需要把TFTP 包封装好,然后通过UDP协议进行发送或接收进行了。

三、TFTP数据包类型TFTP支持六种类型的包:opcode operation(2bytes)1 Read request (RRQ)2 Write request (WRQ) RRQ/WRQ包(带扩展选项)通过读其RFC文档可以知道:例如:客户端请求服务器端下载文件zImage,其扩展选项opt1 :timeout 5,opt 2 : blksize 1462optcode filename mode opt1 opt2---------------------------------------------------------------------------------1 | zImage\0 | octet\0 | timeout\05\0 | blksize\01462\0 |---------------------------------------------------------------------------------注意:optcode占用2bytes,如果不带扩展选项,opt1,opt2就不需要添加了。

tftp协议

tftp协议

tftp协议TFTP(Trivial File Transfer Protocol)是一种简单的文件传输协议,用于在计算机网络中进行文件传输。

TFTP协议只提供了基本的文件传输功能,因此被称为“Trivial”,但是它具有简洁、高效的特点,在一些特定场景下仍然被广泛应用。

TFTP协议是在UDP(User Datagram Protocol)上实现的,因此它适用于不要求可靠传输的环境。

TFTP协议使用了一个简单的请求-响应模型,它包括两种类型的消息:读请求(RRQ)和写请求(WRQ)。

RRQ用于请求读取文件,而WRQ则用于请求写入文件。

通过这两种请求,客户端和服务器可以互相交换数据。

TFTP协议的数据传输是以数据块(Data Block)为单位进行的,每个数据块包含了一个标识符、一个数据区和一个16位的序列号。

TFTP协议规定了每个数据块的大小为512字节,因此可以按照两个数据块一个数据报的方式进行传输。

TFTP协议通过使用ACK(Acknowledgement)和ERROR消息来确保数据传输的正确性。

当服务器接收到一个数据块后,会向客户端发送一个ACK消息作为响应。

如果出现错误,比如文件不存在或网络故障等,服务器会发送一个ERROR消息通知客户端。

TFTP协议还提供了一种机制来支持文件的分块传输。

当客户端请求读取一个文件时,服务器会将文件分成多个数据块进行传输。

客户端通过不断发送ACK消息来确认收到的数据块,并要求服务器继续发送下一个数据块。

这种分块传输的机制可以减少每个数据块的传输时间,提高文件传输的效率。

TFTP协议的应用场景非常广泛。

它被广泛应用于网络设备的固件更新、操作系统的自动安装以及网络引导等场景中。

由于TFTP协议的实现相对简单,所以它可以很方便地嵌入到各种网络设备中,如路由器、交换机等。

尽管TFTP协议具有一些局限性,比如它没有提供认证、加密和压缩等功能,但是在一些特定的场景下,它仍然是一个非常有用的工具。

TFTP协议分析

TFTP协议分析协议名称:TFTP协议分析协议概述:TFTP(Trivial File Transfer Protocol)是一种简单文件传输协议,用于在计算机网络中进行文件的传输。

它是基于UDP协议的,具有简单、轻量级的特点,适用于小规模网络环境下的文件传输。

协议功能:TFTP协议旨在提供一种简单而有效的方式,用于在网络中传输文件。

它主要包含以下功能:1. 文件传输:TFTP允许客户端向服务器请求文件,并将文件传输到客户端。

2. 文件写入:TFTP允许客户端将文件上传到服务器。

3. 错误处理:TFTP提供了一些错误处理机制,以便在传输过程中发生错误时进行恢复或重新传输。

协议流程:TFTP协议的传输过程可以分为以下几个步骤:1. 客户端发送请求:客户端向服务器发送请求,请求读取或写入文件。

2. 服务器响应:服务器接收到客户端的请求后,根据请求类型进行相应的处理,并向客户端发送响应。

3. 数据传输:如果是读取文件请求,服务器将文件内容分块发送给客户端;如果是写入文件请求,客户端将文件内容分块发送给服务器。

4. 错误处理:如果在传输过程中发生错误,服务器或客户端将发送相应的错误消息,并根据错误类型进行相应的处理。

协议数据包格式:TFTP协议的数据包格式如下所示:1. 读取请求(RRQ)数据包格式:+-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+---~~---+---+| Opcode| Filename | 0 | Mode | 0 | Option 1 | 0 | Option 2 | 0 | ... |+-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+---~~---+---+Opcode:操作码,表示请求类型,1表示读取请求。

Filename:要读取的文件名。

TFTP协议分析

TFTP协议分析协议名称:TFTP协议分析一、引言TFTP(Trivial File Transfer Protocol)是一种简单的文件传输协议,用于在计算机网络中进行文件的读取和写入操作。

该协议基于UDP(User Datagram Protocol)进行数据传输,具有简单、快速的特点,适用于小规模的文件传输。

二、协议目的TFTP协议的主要目的是提供一种简单的机制,使得网络中的终端设备能够快速、可靠地进行文件传输。

通过该协议,用户可以从TFTP服务器读取文件或将文件写入TFTP服务器。

三、协议特点1. 简单性:TFTP协议的设计非常简单,只包含少量的操作码和数据字段,使得实现和使用都非常容易。

2. 基于UDP:TFTP协议使用UDP作为传输层协议,具有较低的开销和快速的传输速度。

3. 无连接性:TFTP协议是一种无连接的协议,不需要建立持久的连接,减少了传输延迟。

4. 可靠性:TFTP协议通过重传机制来保证数据的可靠传输,确保文件的完整性。

四、协议操作TFTP协议定义了以下几种操作码,用于实现文件的读取和写入。

1. 读请求(RRQ)读请求用于从TFTP服务器读取文件。

客户端发送一个读请求给服务器,并指定要读取的文件名和传输模式。

服务器收到请求后,根据文件名查找对应的文件,如果找到则将文件内容分块发送给客户端。

2. 写请求(WRQ)写请求用于将文件写入TFTP服务器。

客户端发送一个写请求给服务器,并指定要写入的文件名和传输模式。

服务器收到请求后,创建一个空文件,并等待客户端发送数据块。

3. 数据(DATA)数据操作码用于在读取或写入文件过程中传输数据。

数据分块的大小为512字节(可根据需求进行调整),每个数据包包含一个数据块编号和实际数据。

4. 确认(ACK)确认操作码用于确认接收到的数据块,并告知发送方可以发送下一个数据块。

接收方在接收到数据后发送一个确认报文,其中包含已接收的数据块编号。

5. 错误(ERROR)错误操作码用于在传输过程中发生错误时通知对方。

TFTP简介

TFTP简介TFTP概述TFTP(Trivial File Transfer Protocol,简单文件传输协议)也是用于在远端服务器和本地主机之间传输文件的,相对于FTP,TFTP没有复杂的交互存取接口和认证控制,适用于客户端和服务器之间不需要复杂交互的环境。

TFTP协议的运行基于UDP协议,使用UDP端口69进行数据传输。

TFTP协议基本操作在RFC1986中进行了描述。

TFTP传输文件有两种模式:●二进制模式,用于传输程序文件(比如后缀名为.app、.bin和.btm的文件)。

●ASCII码模式,用于传输文本格式的文件(比如后缀名为.txt、.bat和.cfg的文件)。

FTP有两种工作方式:主动方式(PORT)和被动方式(PASV)。

●使用主动方式时,FTP客户端使用一个随机端口N(一般大于1024)向FTP服务器的端口21发送连接请求,FTP服务器接受请求,建立一条命令链路来传输控制消息。

同时FTP客户端开始监听另一随机端口P(一般大于1024),并使用PORT命令通知FTP服务器。

当需要传输数据时,FTP服务器从端口20向FTP 客户端的端口P发送连接请求,建立一条数据链路来传输数据。

●使用被动方式时,FTP客户端使用一个随机端口N(一般大于1024)向FTP服务器的端口21发送连接请求,FTP服务器接受请求,建立一条命令链路来传输控制消息。

同时FTP客户端开始监听另一随机端口P(一般大于1024),并使用PASV命令通知FTP服务器,FTP服务器接到PASV命令后,开启一个随机端口Q(一般大于1024),并使用PORT命令通知FTP客户端。

当需要传输数据时,FTP客户端从端口P向FTP服务器Q端口发送连接请求,建立一条数据链路来传输数据。

主动方式和被动方式建立命令链路的方法是相同的,但建立数据链路的方法完全不同,因此两种方式在实际使用中也各有利弊:●使用主动方式传输数据时,FTP服务器需要主动连接FTP客户端的端口,这种请求容易被FTP客户端的防火墙阻塞。

开启TFTP服务器

开启TFTP服务器TFTP(Trivial File Transfer Protocol)是一种简单文件传输协议,用于将文件通过网络从一个设备传输到另一个设备。

TFTP服务器可用于快速、简单地传输文件,特别适用于网络设备的配置、固件更新等场景。

本文将为您介绍如何开启TFTP服务器。

步骤一:准备工作在开始之前,确保您的计算机已经安装了TFTP服务器软件。

Windows操作系统默认是不带有TFTP服务器功能的,您可以从网络上下载并安装各种TFTP服务器软件,如PumpKIN、Tftpd64等。

这些软件通常提供免费版和付费版,您可以根据个人需求选择适合自己的版本。

步骤二:安装TFTP服务器软件下载并安装TFTP服务器软件。

根据软件提供的安装向导,选择您的安装目录以及其他配置选项。

一般情况下,保持默认设置即可。

步骤三:配置TFTP服务器配置TFTP服务器是使用TFTP服务器软件的关键步骤。

通常,您需要指定TFTP服务器监听的IP地址以及服务器的根目录。

1. 打开TFTP服务器软件。

2. 在软件界面中,找到配置选项(可能被称为“Settings”、“Options”等)。

3. 在配置选项中,找到服务器设置(可能位于“Server”、“General”或类似的位置)。

4. 在服务器设置中,指定TFTP服务器监听的IP地址。

有些软件可能支持绑定到所有IP地址或指定特定的IP地址,您可以根据需要进行配置。

5. 指定TFTP服务器的根目录,即用于存储文件的目录。

可以选择系统默认的目录,也可以指定其他目录。

6. 根据软件的指导,保存配置改动并重启TFTP服务器。

步骤四:测试TFTP服务器完成配置后,您需要测试TFTP服务器是否正常工作。

在测试之前,请确保网络连接正常。

1. 打开命令行界面(可以使用Windows的cmd命令或其他终端工具)。

2. 输入命令`ping IP地址`,其中IP地址是指您配置的TFTP服务器IP地址。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目的 TFTP是一个传输文件的简单协议,它基于UDP协议而实现,但是我们也不能确定有些TFTP协议是基于其它传输协议完成的。此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据。传输中有三种模式:netascii,这是8位的ASCII码形式,另一种是octet,这是8位源数据类型;最后一种mail已经不再支持,它将返回的数据直接返回给用户而不是保存为文件。

编辑本段概况

任何传输起自一个读取或写入文件的请求,这个请求也是连接请求。如果服务器批准此请求,则服务器打开连接,数据以定长512字节传输。每个数据包包括一块数据,服务器发出下一个数据包以前必须得到客户对上一个数据包的确认。如果一个数据包的大小小于512字节,则表示传输结束。如果数据包在传输过程中丢失,发出方会在超时后重新传输最后一个未被确认的数据包。通信的双方都是数据的发出者与接收者,一方传输数据接收应答,另一方发出应答接收数据。大部分的错误会导致连接中断,错误由一个错误的数据包引起。这个包不会被确认,也不会被重新发送,因此另一方无法接收到。如果错误包丢失,则使用超时机制。错误主要是由下面三种情况引起的:不能满足请求,收到的数据包内容错误,而这种错误不能由延时或重发解释,对需要资源的访问丢失(如硬盘满)。TFTP只在一种情况下不中断连接,这种情况是源端口不正确,在这种情况下,指示错误的包会被发送到源机。这个协议限制很多,这些都是为了实现起来比较方便而进行的。

编辑本段特点

因为TFTP使用UDP,而UDP使用IP,IP可以还使用其它本地通信方法。因此一个TFTP包中会有以下几段:本地媒介头,IP头,数据报头,TFTP头,剩下的就是TFTP数据了。TFTP在IP头中不指定任何数据,但是它使用UDP中的源和目标端口以及包长度域。由TFTP使用的包标记(TID)在这里被用做端口,因此TID必须介于0到65,535之间。对它的初始化我们在后面讨论。TFTP头中包括两个字节的操作码,这个码指出了包的类型,下面我们看看大体上的TFTP包格式,相关的内容我们在后面的章节中进行讨论。 --------------------------------------------------- | Local Medium | Internet | Datagram | TFTP | --------------------------------------------------- 图3-1: 包头次序

编辑本段初始连接

初始连接时候需要发出WRQ(请求写入远程系统)或RRQ(请求读取远程系统),收到一个确定应答,一个确定可以写出的包或应该读取的第一块数据。通常确认包包括要确认的包的包号,每个数据包都与一个块号相对应,块号从1开始而且是连续的。因此对于写入请求的确定是一个比较特殊的情况,因此它的包的包号是0。如果收到的包是一个错误的包,则这个请求被拒绝。创建连接时,通信双方随机选择一个TID,因此是随机选择的,因此两次选择同一个ID的可能性就很小了。每个包包括两个TID,发送者ID和接收者ID。这些ID用于在UDP通信时选择端口,请求主机选择ID的方法上面已经说过了,在第一次请求的时候它会将请求发到TID 69,也就是服务器的69端口上。应答时,服务器使用一个选择好的TID作为源TID,并用上一个包中的TID作为目的ID进行发送。这两个被选择的ID在随后的通信中会被一直使用。下例是一个写入的例子,其中WRQ,ACK和DATA代表写入请求,确认和数据。

编辑本段相关应用

1. 主机A向主机B发出WRQ,其中端口为69 2. B机向A机发出ACK,块号为0,包括B和A的TID 此时连接建立,第一个数据包以序列号1从主机开始发出。以后两台主机要保证以开始时确定的TID进行通信。如果源ID与原来确定的ID不一样,这个包会被认识为发送到了错误的地址而被抛弃。错误的包是被发送到正确端口的,但是包本身有错误。设想发送方发出一个请求,这个请求在网络的那个设备中被复制成两个包,接收方先后接收到两个包。接收方会认为为这是两个独立的请求,会返回两个应答。当这两个应答其中之一被接收到时,连接已经建立。第二个应答再到达时,这个包会被抛弃,而不会因为接收到第二个应答包而导致第一个建立的连接失败。 5. TFTP包 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)的格式如上所示。文件名是NETASCII码字符,以0结束。而MODE域包括了字符串"netascii","octet"或"mail",名称不分大小写。接收到NETASCII格式数据的主机必须将数据转换为本地格式。OCTET模式用于传输文件,这种文件在源机上以8位格式存储。假设每个机器都存在一个8位的格式,这样的假设是最一般的。比如DEC-20,这是一种36位机,我们可以假设它是4个8位外加另外4位而构成。如果机器收到OCTET格式文件,返回时必须与原来文件完全一样。在使用MAIL模式时,用户可以在FILE处使用接收人地址,这个地址可以是用户名或用户名@主机的形式,如果是后一种形式,允许主机使用电子邮件传输此文件。如果使用MAIL类型,包必须以WRQ开始,否则它与NETASCII完全一样。我们的讨论建立在发送方和接收方都在相同模式的情况下,但是双方可以以不同的模式进行传输。例如一个机器可以是一台存储服务器,这样一台服务器需要将NETASCII格式转换为自己的格式。另外,我们可以设想DEC-20这种机器,它使用36位字长,用户这边可以使用特殊的机制一次读取36位,而服务器却可以仍然使用8位格式。在这两种情况下,我们看到了两台机器使用不同格式的情况。可以在两台主机间定义其它的传输方式,但是定义要小心,因为这种传输方式不为人知,而且也没有权威机构为其指定名称或定义它的模式。 2.bytes 2 bytes n bytes ---------------------------------- | 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数据包确认,WRQ数据包的包号为0。 2.bytes 2 bytes string 1 byte ----------------------------------------- | Opcode | ErrorCode | ErrMsg | 0 | ----------------------------------------- Figure 5-4: ERROR包 一个ERROR包,它的操作码是5,它的格式如上所示。此包可以被其它任何类型的包确认。错误码指定错误的类型。错误的值和错误的意义在附录中。错误信息是供程序员使用的。

编辑本段正常终止

传输的结束由DATA数据标记,其包括0-511个字符。这个包可以被其它数据包确认。接收方在发出对最后数据包的确认后可以断开连接,当然,适当的等待是比较好的,如果最后的确定包丢失可以再次传输。如果发出确认后仍然收到最后数据包,可以确定最后的确认丢失。发送最后一个DATA包的主机必须等待对此包的确认或超时。如果响应是ACK,传输完成。如果发送方超时并不准备重新发送并且接收方有问题或网络有问题时,发送也正常结束。当然实现时也可以是非正常结束,但无论如何连接都将被关闭。

编辑本段早终结

如果请求不能被满足,或者在传输中发生错误,需要发送ERROR包。这仅是一种传输友好的方式,这种包不会被确认也不会被重新传输,因此这种包可能永远不会被接收到。因此需要用超时来侦测错误。

编辑本段其它相关

I. 附录 包头的次序 2.bytes

相关文档
最新文档