TFTP协议
TFTP:Trivial File Transfer Protocol (简单文件传输协议)
- 最初打算用于引导无盘系统
- 是一种停止等待协议
- 优点在于实现的简单,而非高吞吐量
- 使用不可靠的UDP,因此必须自己处理分组丢失和重复
- TFTP报文中没有检验和,依赖UDP的检验和保证数据传输的正确性;
“文件名”:要读写的服务器文件
“模式”(netascii或octet):文件名是“CR/LF”结尾的字符串或者字节流
“差错信息”:是一个字符串
读请求(RRQ)
系统正常引导下,向TFTP服务器发送一个读请求(RRQ),如果文件可读:
- 服务器发送块编号=1的数据分组;客户端响应块编号=1的ACK(应答,表示收到)
- 服务器发送块编号=2的数据分组;客户端响应块编号=2的ACK
- 重复直至结束(每个分组均含有512字节的数据,收到不足512字节的数据表示为最后一个分组)
写请求(WRQ)
TFTP客户端发送写请求(WRQ),如果文件可写:
- 服务器发送块编号=0的ACK
- 客户端发送块编号=1的数据分组,服务器响应块编号=1的ACK
- 重复直至结束
差错(ERROR)
当服务器不能处理读/写请求时发送
传输过程中的读/写差错也会导致差错报文
安全性
TFTP协议本身没有提供安全特性,早期黑客利用TFTP获取Unix口令文件,然后猜测口令,现在的TFTP服务器都提供选项来限制访问的目录;
BOOTP协议
BOOTP(Bootstrap Protocol 引导程序协议)用于无盘系统引导时获取自身IP(可取代RARP)
无盘系统使用RARP获取自身IP的缺陷:
- RARP只能返回IP地址
- RARP不会被路由转发
BOOTP使用UDP,通常与TFTP协同工作;
当客户使用BOOTP进行引导时,发送请求给服务器(链路层广播,目的IP:255.255.255.255,源IP:0.0.0.0)获取本身IP地址和引导文件路径,然后再用TFTP读取该文件;