TCP-IP详解卷1-15:TFTP(Trivial File Transfer Protocol):简单文件传送协议

TCP-IP详解卷1-15:TFTP(Trivial File Transfer Protocol):简单文件传送协议

一:介绍
    TFTP是一个传输文件的简单协议,它基于UDP协议而实现。
    此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据。

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

三:协议,五种类型
    1: 读请求格式:IP首部(20B)+UDP首部(8B)+操作码(1: 2B)+文件名(NB)+0(1B)+模式(NB)+0(B)
    2: 写请求格式:IP首部(20B)+UDP首部(8B)+操作码(2: 2B)+文件名(NB)+0(1B)+模式(NB)+0(B)
    3: 数据:      IP首部(20B)+UDP首部(8B)+操作码(3DATA: 2B)+块编号(2B)+数据(0-512B)
    4: 应答:      IP首部(20B)+UDP首部(8B)+操作码(4ACK: 2B)+块编号(2B)
    5: 差错报文:  IP首部(20B)+UDP首部(8B)+操作码(5ERROR: 2B)+差错信息(NB)+0(1B)

        A: 对于1,2。文件字段以0作伪结束。
            模式字段是一个ASCII码串netascii或octet(可大小写任意组合),同样以0字节结束。
            netascii表示数据是以成行的ASCII码字符组成,以两个字节—回车字符后跟换行字符(称为CR/LF)作为行结束符。
            octet则将数据看作8 bit一组的字节流而不作任何解释。
            每个数据分组包含一个块编号字段,它以后要在确认分组中使用
        B: 读流程
            TFTP客户需要发送一个读请求说明要读的文件名和文件模式(mode )。
            如果这个文件能被这个客户读取, TFTP服务器就返回一个块编号为1的数据分组。
            TFTP客户又发送一个块编号为1的ACK。
            TFTP服务器随后发送块编号为2的数据。
            TFTP客户发回块编号为2的ACK。
            重复这个过程直到这个文件传送完。
            除了最后一个数据分组可含有不足512字节的数据,其他每个数据分组均含有5 1 2字节的数据。
            当TFT P客户收到一个不足512字节的数据分组,就知道它收到最后一个数据分组。
        C: 写流程
            写请求的情况下,TFTP客户发送WRQ指明文件名和模式。
            如果该文件能被该客户写,TFTP 服务器就返回块编号为0的ACK包。
            该客户就将文件的头512字节以块编号为1发出。服务器则返回块编号为1的ACK。
        D: 最后一种TFTP报文类型是差错报文,它的操作码为5。
            它用于服务器不能处理读请求或写请求的情况。
            在文件传输过程中的读和写差错也会导致传送这种报文,接着停止传输。

四: 安全性(存在“安全漏洞”)
    1: 由于TFTP是设计用于系统引导进程,它不可能提供用户名和口令。
    2: 因为TFTP没有安全控制机制,因此安全问题应该多加考虑。通常TFTP允许下载数据而不允许上传数据。

你可能感兴趣的:(网络)