1,接着上一篇描述bootp,我们现在了解一下tftp协议。
先来看看tftp的五种报文格式
操作码补充说明:
读文件请求包:Read request,简写为RRQ,对应Opcode字段值为1
写文件请求包:Write requst,简写为WRQ,对应Opcode字段值为2
文件数据包:Data,简写为DATA,对应Opcode字段值为3
回应包:Acknowledgement,简写为ACK,对应Opcode字段值为4
错误信息包:Error,简写为ERROR,对应Opcode字段值为5
数据结构
//tftp
#define DATA_SIZE 512
struct tftpx_packet{
ushort cmd;
union{
ushort code;
ushort block;
// For a RRQ and WRQ TFTP packet
char filename[2];
};
char data[DATA_SIZE];
};
其他的报文和bootp的ip首部+udp 首部一致,现在我们来看看报文。
1,tftp request报文。
2,数据报文:
3,ack报文:
T F T P的数据交换过程时,要注意的是这儿的客户在整个传输过程中使用T F T P的知名端口( 6 9)。
那么问题来了,TFTP 服务器如何能将一个响应直接送回 BOOTP 客户?