TFTP

TFTP

1.tftp服务介绍
    1)TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
    2)tftp服务的端口号为69。
    3)TFTP是一个传输文件的简单协议,它基于UDP协议而实现,可是咱们也不能肯定有些TFTP协议是基于其它传输协议完成的。
    4)此协议设计的时候是进行小文件传输的。所以它不具有一般的FTP的许多功能,它只能从文件服务器上得到或写入文件,不能列出目录,不进行认证,它传输8位数据。
    5)传输中有三种模式:
        1》netascii,这是8位的ASCII码形式;
        2》另外一种是octet,这是8位源数据类型;
        3》最后一种mail已经再也不支持,它将返回的数据直接返回给用户而不是保存为文件。
    
2.tftp传输过程
    1)任何传输起自一个读取或写入文件的请求,这个请求也是链接请求。
    2)若是服务器批准此请求,则服务器打开链接,数据以定长512字节传输。
    3)每一个数据包包括一块数据,服务器发出下一个数据包之前必须获得客户对上一个数据包的确认。
    4)若是一个数据包的大小小于512字节,则表示传输结束。若是数据包在传输过程当中丢失,发出方会在超时后从新传输最后一个未被确认的数据包。
    5)通讯的双方都是数据的发出者与接收者,一方传输数据接收应答,另外一方发出应答接收数据。
    6)大部分的错误会致使链接中断,错误由一个错误的数据包引发。这个包不会被确认,也不会被从新发送,所以另外一方没法接收到。若是错误包丢失,则使用超时机制。
    7)错误主要是由三种状况引发的:
        1》不能知足请求。
        2》收到的数据包内容错误,而这种错误不能由延时或重发解释。
        3》对须要资源的访问丢失(如硬盘满)。
    8)TFTP只在一种状况下不中断链接,这种状况是源端口不正确,在这种状况下,指示错误的包会被发送到源机。

3.tftp特色
    1)因为TFTP使用UDP,而UDP使用IP,IP能够还使用其它本地通讯方法。所以一个TFTP包中会有如下几段:本地媒介头,IP头,数据报头,TFTP头,剩下的就是TFTP数据了。
    2)TFTP在IP头中不指定任何数据,可是它使用UDP中的源和目标端口以及包长度域。
    3)因为TFTP使用的包标记(TID)在这里被用作端口,所以TID必须介于0到65,535之间。
    4)TFTP头中包括两个字节的操做码,这个码指出了包的类型,大致上的TFTP包格式为:| Local Medium | Internet | Datagram | TFTP |
    
4.tftp优势
    1)TFTP可用于UDP环境;好比当须要将程序或者文件同时向许多机器下载时就每每须要使用到TFTP协议。
    2)TFTP代码所占的内存较小,这对于较小的计算机或者某些特殊用途的设备来讲是很重要的,这些设备不须要硬盘,只须要固化了TFTP、UDP和IP的小容量只读存储器便可。当电源接通后,设备执行只读存储器中的代码,在网络上广播一个TFTP请求。网络上的TFTP服务器就发送响应,其中包括可执行二进制程序。设备收到此文件后将其放入内存,而后开始运行程序。这种方式增长了灵活性,也减小了开销。
    
5.初始连接
    1)初始链接时候须要发出WRQ(请求写入远程系统)或RRQ(请求读取远程系统),收到一个肯定应答,一个肯定能够写出的包或应该读取的第一块数据。
    2)一般确认包包括要确认的包的包号,每一个数据包都与一个块号相对应,块号从1开始并且是连续的。所以对于写入请求的肯定是一个比较特殊的状况,所以它的包的包号是0。
    3)若是收到的包是一个错误的包,则这个请求被拒绝。
    4)建立链接时,通讯双方随机选择一个TID,由于是随机选择的,所以两次选择同一个ID的可能性就很小了。
    5)每一个包包括两个TID,发送者ID和接收者ID。这些ID用于在UDP通讯时选择端口,请求主机选择ID的方法上面已经说过了,在第一次请求的时候它会将请求发到TID 69,也就是服务器的69端口上。应答时,服务器使用一个选择好的TID做为源TID,并用上一个包中的TID做为目的ID进行发送。这两个被选择的ID在随后的通讯中会被一直使用。
    6)下例是一个写入的例子,其中WRQ,ACK和DATA表明写入请求,确认和数据。
        1》主机A向主机B发出WRQ,其中端口为69。
        2》B机向A机发出ACK,块号为0,包括B和A的TID
            此时链接创建,第一个数据包以序列号1从主机开始发出。之后两台主机要保证以开始时肯定的TID进行通讯。
            若是源ID与原来肯定的ID不同,这个包会被认识为发送到了错误的地址而被抛弃。错误的包是被发送到正确端口的,可是包自己有错误。
            设想发送方发出一个请求,这个请求在网络的那个设备中被复制成两个包,接收方前后接收到两个包。接收方会认为为这是两个独立的请求,会返回两个应答。
            当这两个应答其中之一被接收到时,链接已经创建。第二个应答再到达时,这个包会被抛弃,而不会由于接收到第二个应答包而致使第一个创建的链接失败。
6.正常终止
    1)传输的结束由DATA数据标记,其包括0-511个字符。这个包能够被其它数据包确认。
    2)接收方在发出对最后数据包的确认后能够断开链接,固然,适当的等待是比较好的,若是最后的肯定包丢失能够再次传输。
    3)若是发出确认后仍然收到最后数据包,能够肯定最后的确认丢失。发送最后一个DATA包的主机必须等待对此包的确认或超时。
    4)若是响应是ACK,传输完成。若是发送方超时并不许备从新发送而且接收方有问题或网络有问题时,发送也正常结束。固然实现时也能够是非正常结束,但不管如何链接都将被关闭。
    
7.早终结
    若是请求不能被知足,或者在传输中发生错误,须要发送ERROR包。这仅是一种传输友好的方式,这种包不会被确认也不会被从新传输,所以这种包可能永远不会被接收到。所以须要用超时来侦测错误。

8.TFTP数据包
    TFTP支持五种类型的包,已经说明这五种类型的包:
    包头中包括了这个包所指定的操做码。
        opcode operation
        1.Read request (RRQ)
        2.Write request (WRQ)
        3.Data (DATA)
        4.Acknowledgment (ACK)
        5.Error (ERROR)

9.tftp命令
    man tftp
    tftp - Trivial File Transfer Protocol client
    tftp是一个客户端,是一个不重要轻量级的文件传输协议,用于传输文件到远程主机上或从远程机器上下载数据。
    tftp [-4][-6][-v][-l][-m mode] [host [port]] [-c command]

10.in.tftpd命令
    man in.tftpd
    tftpd - Trivial File Transfer Protocol server
    in.tftpd [options...]  directory...
    
11.tftp实现
    tftp包有:tftp,tftp-server
    rpm -ql tftp
        /usr/bin/tftp
        /usr/share/doc/tftp-0.49
        /usr/share/doc/tftp-0.49/CHANGES
        /usr/share/doc/tftp-0.49/README
        /usr/share/doc/tftp-0.49/README.security
        /usr/share/doc/tftp-0.49/README.security.tftpboot
        /usr/share/man/man1/tftp.1.gz
    rpm -ql tftp-server
        /etc/xinetd.d/tftp
        /usr/sbin/in.tftpd
        /var/lib/tftpboot(库)
        /usr/share/doc/tftp-server-0.49
        /usr/share/doc/tftp-server-0.49/CHANGES
        /usr/share/doc/tftp-server-0.49/README
        /usr/share/doc/tftp-server-0.49/README.security
        /usr/share/doc/tftp-server-0.49/README.security.tftpboot
        /usr/share/man/man8/in.tftpd.8.gz
        /usr/share/man/man8/tftpd.8.gz
相关文章
相关标签/搜索