网络协议TFTP

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议

特点:
1、简单
2、占用资源小
3、适合传递小文件
4、适合在局域网进行传递
5、端口号为69
6、基于UDP实现

当服务器找到需要现在的文件后,会立刻打开文件,把文件中的数据通过TFTP协议发送给客户端

如果文件的总大小较大(比如3M),那么服务器分多次发送,每次会从文件中读取512个字节的数据发送过来

因为发送的次数有可能会很多,所以为了让客户端对接收到的数据进行排序,所以在服务器发送那512个字节数据的时候,会多发2个字节的数据,用来存放序号,并且放在512个字节数据的前面,序号是从1开始的

因为需要从服务器上下载文件时,文件可能不存在,那么此时服务器就会发送一个错误的信息过来,为了区分服务发送的是文件内容还是错误的提示信息,所以又用了2个字节 来表示这个数据包的功能(称为操作码),并且在序号的前面

操作码 功能
1 读请求,即下载
2 写请求,即上传
3 表示数据包,即DATA
4 确认码,即ACK
5 错误

因为udp的数据包不安全,即发送方发送是否成功不能确定,所以TFTP协议中规定,为了让服务器知道客户端已经接收到了刚刚发送的那个数据包,所以当客户端接收到一个数据包的时候需要向服务器进行发送确认信息,即发送收到了,这样的包成为ACK(应答包)

为了标记数据已经发送完毕,所以规定,当客户端接收到的数据小于516(2字节操作码+2个字节的序号+512字节数据)时,就意味着服务器发送完毕了

TFTP数据包格式如下:

---------------------代码案例实现---------------------

 1 #coding=utf-8
 2
 3 #进行对应包的引用
 4 from socket import *
 5
 6 import struct
 7
 8 import sys
 9
10 #创建一个套接字进行网络通信
11 soc =socket(AF_INET,SOCK_DGRAM)
12
13 #获取对应传递的ip地址参数
14 strIp=sys.argv[1]
15
16 #元组,放对应的ip地址和端口号
17 addr=(strIp,69)
18
19 #参数:现在文件的名字
20 strName=sys.argv[2]
21
22 #进行组包,提交给TFTP服务
23 sendData=struct.pack("!H"+str(len(strName))+"sb5sb",1,strName,0,"octet",0)
24
25 #数据的发送
26 soc.sendto(sendData,addr)
27
28 #初始化文件管理对象
29 fil=‘‘
30
31 #下载后的文件重命名
32 filName=sys.argv[2]
33
34 while True:
35     #接受服务器的相应数据(内容,(ip,端口))
36     recvData,recvAddr=soc.recvfrom(1024)
37
38     #对接受的数据进行处理
39     opkey=struct.unpack("!HH",recvData[:4])
40
41     print(opkey)
42
43     #变量存储序号
44     pNum=opkey[1]
45
46     #3判断,从服务器上下载的数据
47     if opkey[0]==3:
48         #第一次数据传递时,进行对应的文件的创建
49         if pNum==1:
50             fil=open(filName,"w")
51         #数据的写入
52         fil.write(recvData[4:])
53
54         if len(recvData)<516:
55
56             fil.close()
57             print("下载完成!")
58             break
59
60     #5判断,TFTP服务器出现错误
61     if opkey[0]==5:
62         print("运行错误!")
63         break
64
65     #组包
66     ackData=struct.pack("!HH",4,pNum)
67
68     soc.sendto(ackData,recvAddr)
69 soc.close()

模拟实现TFTP下载客户端

---------------------附件struct表--------------------


时间: 2024-10-07 05:03:05

网络协议TFTP的相关文章

[国嵌攻略][068][tftp网络协议实现]

IP协议结构 UDP协议结构 TFTP协议结构 TFTP端口 读写请求端口: 69 其他请求端口:1024~65535 主程序 /******************************************************************** *名称:menu *参数: * none *返回: * none *功能:菜单命令 *********************************************************************/ voi

TFTP网络协议分析

TFTP网络协议分析 周学伟 文档说明:所有函数都依托与两个出口,发送和接收. 1:作为发送时,要完成基于TFTP协议下的文件传输,但前提是知道木的PC机的MAC地址,因为当发送TFTP请求包时必须提供目的主机的MAC地址.则提供串口srcureCRT控制台,首先进行ARP请求包的发送,收到来自客户端的ARP应答包时,提取出目的主机的MAC地址,然后在发送TFTP请求包,等到目的主机返回数据报文后,文件传输即可开始,此过程,可用wireshark抓包工具进行检测. 2:作为接收时,可在DM900

看江湖老炮用尽洪荒之力解读网络协议(下)

作者言:老炮总结的有些协议比喻也不是很恰当,毕竟网络协议是一门科学,而江湖规矩是口口相传的道义:如果把此文当成一份凉菜,"老炮如是说"的话语只能做为一点调味,具体调的好不好,老炮也恍惚,老炮只是用心在调,咸了淡了您多包涵,欢迎品尝.上篇叙述了网络协议的上三路,本篇介绍网络协议的下四路.下面看一位老炮如何解读这些网络协议(下)传输层传输层是整个协议层次结构的核心,是惟一负责总体数据传输和控制的一层.它属于OSI模型7层的中间层,网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而

流媒体技术之复习网络协议

在我们认识流媒体的传输协议前,我们需要对OSI和网络协议有一个初步认识. 1,OSI模型的七个层次及其主要功能(见下图) 2,针对于7层模型进行划分协议如下表: 应用层 应用层 表示层 会话层 应用层 1,文件传输协议FTP(File    Transfer Protocol),端口号为21: 2,简单文件传输协议TFTP(Trivial    File Transfer Protocol),端口号为69,针对小文件传输,只能从文件服务器上获得或写入文件,不能列出目录也不能进行认证 ,传输8位数

常见的网络协议有哪些?

原文链接地址:http://blog.sina.com.cn/s/blog_9cf7416701012pw4.html 在网络的各层中存在着许多协议, 它是定义通过网络进行通信的规则, 接收方的发送方同层的协议必须一致,否则一方将无法识别另一方发出的信息, 以这种规则规定双方完成信息在计算机之间的传送过程. 下面就对网络协议规范作个概述: ARP(Address Resolution Protocol)地址解析协议 它是用于映射计算机的物理地址和临时指定的网络地址. 启动时它选择一个协议(网络层

TCP/IP网络协议基础知识集锦[转]

引言 本篇属于TCP/IP协议的基础知识,重点介绍了TCP/IP协议簇的内容.作用以及TCP.UDP.IP三种常见网络协议相关的基础知识. 内容 TCP/IP协议簇是由OSI七层模型发展而来的,之所以存在OSI互联参考模型主要有以下几点好处: 1.用于解决不同厂商的设备互联问题:即兼容性考虑; 2.层次化结构独立性强;可扩展性强; 3.统一标准可以方便学习; TCP/IP模型 TCP/IP模型与OSI模型的相互关系如下图所示: 注释 1.应用层:与OSI的应用层.表示层.会话层相对应,主要作用是

[转] TCPIP 网络协议层对应的RFC文档

TCPIP网络协议层对应的RFC文档 RFC - Request For Comments 请求注解 TCP/IP层 网络协议 RFC文档 Physical Layer Data Link Layer ARP  - Address Resolution Protocol RFC826   ( EN CN ) RARP  - Reverse Address Resolution Protocol RFC903   ( EN CN ) Internet Protocol Layer IP  - In

计算机网络学习(4):网络协议与标准 (未完)

最知名的网络协议就是TCP/IP协议了.事实上,TCP/IP协议是一个协议集,由很多协议组成.TCP和IP 协议是这个协议集中两个,TCP/IP协议集是用这两个协议来命名的. TCP/IP协议集中的每一个协议涉及的功能,都用程序来实现.TCP协议和IP协议有对应的TCP程序和IP程 序. 根据TCP协议我们了解到,网络协议是一个约定,该约定规定了: ① 实现这个协议的程序要完成什么功能: ② 如何完成这个功能: ③ 实现这个功能需要的通讯的报文包的格式. 如果一个网络协议涉及了硬件的功能,通常就

计算机基础--网络协议

一.网络通信原理 网络通信技术是指:通过计算机和网络通讯设备对图形和文字等形式的资料进行采集.存储.处理和传输等,使信息资源达到充分共享的技术.网络,是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的.通信,是人与人之间通过某种媒体进行的信息交流与传递. 网络通信原理也就是网络协议.当今网络协议有很多,局域网中最常用的有三个网络协议:NETBEUI.IPX/SPX和交叉平台TCP/IP,网络协议就是网络之间沟通.交流的桥梁. 二..OSI七层模型简介: O