TFTP协议

1:TFTP的概念

简单文本传输协议,主要用于UDP实现,实现简单,不考虑高吞吐量

2:协议

UDP(首部)|操作码(1:RRQ表示一个读请求|2:WRQ表示一个写请求|3:表示一个后面跟数据的TFTP字段|4:ACK,表示一个应答|5:error表示一个错误,在读写过程中都可能引起错误)|...........

2.1:当操作码位1或者是2的时候:表示一个读请求或者一个写请求

2.2:文件名0(文件名不限长度,文件名后面加一个0表示结束)|模式(是一个ASCII码串,netascii或octet,也是以0结束)

2.3:当操作码是3时表示后面跟的是一个数据:

2.4:块编号(不管是读写,这个块编号表示现在数据进行到哪个位置,两个字节)|数据(0-512字节)

2.5:当操作码是4的时候表示一个ACK

2.6:块编号(读的时候,客户发ACK表示应该读取哪一块/写的时候,服务器返回ACK表示此块已经写完)

3:一个列子

bsdi.1106>svr4.tftp:19 RRQ "test1.c"

svr4.1077>bsdi.1106:udp 516(这里表示的是TFTP报文的长度)

bsdi.1106>svr4.1077:udp 4

为什么在开始的时候svr4利用的是知名端口号,而在下方的几条报文中,利用的是随机的端口号,因为TFTP在接受一条请求的时候,后期要分配一个随机的端口,以此准备接受下一次的TFTP请求








原文地址:https://www.cnblogs.com/SmileLion/p/5863543.html