tftp下载及协议

来源:互联网 发布:保留数据重置win10 编辑:程序博客网 时间:2024/06/05 12:50
读写请求
1下载

2上传 文件名(test.jpg,长度8) 0 octet 0  


将上述请求发送至69端口,tftp服务器新开一个端口用于发送数据包


数据包

3数据包(2个字节) 块序号(包编号,2个字节) 数据(512个字节)

**传输大文件时块序号超过65535时重新从0开始,即if num==65536:num=0

5错误(2字节) 差错码(错误类型,2字节) 差错内容(string)

回应ACK

4确认包 块序号

ps:当数据包小于516(2+2+512)字节时,表示下载结束!



ps:如何让1、2、3、4或5占两个字节?

import struct

pack,unpack
!:按大端序(大端(网络字节序)和小端(家用笔记本))
ps:大端:高位数据放在低位地址;小端相反。


*struct 类型表*
Format C Type Python type Standard sizeNotes
x pad byte no value  
c char string of length 1 1 
b signed char integer 1 (3)
B unsigned charinteger 1(3)
? _Bool bool 1 (1)
h short integer 2 (3)
H unsigned shortinteger 2(3)
i int integer4 (3)
I unsigned intinteger 4(3)
l long integer 4 (3)
L unsigned longinteger 4(3)
q long long integer 8 (2), (3)
Q unsigned long longinteger 8(2), (3)
f float float 4 (4)
d double float 8 (4)
s char[] string 1  
p char[] string  
P void * integer (5), (3)


#只要是向网络上发送 多个字节表示1个数值的这样的数据,那么就需要pack
组包struct.pack("!H8sb5sb",1,"test.jpg",0,"octet",0)返回获取到的数据
ps:python2网络这块可以直接传参字符串,python3需要先编码


#只要是从网络收到了一个 多个字节表示一个值的这样的数据,那么就需要对这个数据进行unpack解析
解包struct.unpack("!HH",获取到的数据)返回一个元组



原创粉丝点击