网络协议TFTP
2016-09-07 23:51
225 查看
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议。和使用TCP的文件传输协议(FTP)不同,为了保持简单短小,TFTP使用了UDP。TFTP的实现(和它所需要的UDP、IP、和设备驱动程序)可以放入只读存储器中
TFTP是一个简单的协议,适合于只读存储器,仅用于无盘系统进行系统引导,它只使用几种报文格式,是一种停止等待协议
特点:
1、简单
2、占用资源小
3、适合传递小文件
4、适合在局域网进行传递
5、端口号为69
6、基于UDP实现
缺陷:
TFTP分组中并不提供用户名和口令。这是TFTP的一个特性(即"安全漏洞")。由于TFTP是设计用于系统引导进程,它不可能提供用户名和口令。
目前大多数TFTP服务器提供了一个选项来限制只能访问特定目录下的文件,这个目录中只包含无盘系统进行系统引导时所需的文件
模拟实现TFTP下载客户端
---------------------附件struct表--------------------
TFTP是一个简单的协议,适合于只读存储器,仅用于无盘系统进行系统引导,它只使用几种报文格式,是一种停止等待协议
特点:
1、简单
2、占用资源小
3、适合传递小文件
4、适合在局域网进行传递
5、端口号为69
6、基于UDP实现
缺陷:
TFTP分组中并不提供用户名和口令。这是TFTP的一个特性(即"安全漏洞")。由于TFTP是设计用于系统引导进程,它不可能提供用户名和口令。
目前大多数TFTP服务器提供了一个选项来限制只能访问特定目录下的文件,这个目录中只包含无盘系统进行系统引导时所需的文件
#coding=utf-8 #进行对应包的引用 from socket import * import struct import sys #创建一个套接字进行网络通信 soc =socket(AF_INET,SOCK_DGRAM) #获取对应传递的ip地址参数 strIp=sys.argv[1] #元组,放对应的ip地址和端口号 addr=(strIp,69) #参数:现在文件的名字 strName=sys.argv[2] #进行组包,提交给TFTP服务 sendData=struct.pack("!H"+str(len(strName))+"sb5sb",1,strName,0,"octet",0) #数据的发送 soc.sendto(sendData,addr) #初始化文件管理对象 fil='' #下载后的文件重命名 filName=sys.argv[2] while True: #接受服务器的相应数据(内容,(ip,端口)) recvData,recvAddr=soc.recvfrom(1024) #对接受的数据进行处理 opkey=struct.unpack("!HH",recvData[:4]) print(opkey) #变量存储序号 pNum=opkey[1] #3判断,从服务器上下载的数据 if opkey[0]==3: #第一次数据传递时,进行对应的文件的创建 if pNum==1: fil=open(filName,"w") #数据的写入 fil.write(recvData[4:]) if len(recvData)<516: fil.close() print("下载完成!") break #5判断,TFTP服务器出现错误 if opkey[0]==5: print("运行错误!") break #组包 ackData=struct.pack("!HH",4,pNum) soc.sendto(ackData,recvAddr) soc.close()
模拟实现TFTP下载客户端
---------------------附件struct表--------------------
相关文章推荐
- tftp网络协议实现
- [国嵌攻略][068][tftp网络协议实现]
- TFTP网络协议分析---15
- 网络协议
- Java学习系列(十八)Java面向对象之基于UDP协议的网络通信
- 6.3 配置网络协议的安全性
- 网络基础与协议入门——(2)TCP协议重点
- 第7章 网络层协议(4)_IGMP协议
- JavaWeb笔记之快速了解网络协议
- Web开发基础之“网络协议”
- DHCP 动态域名解析 网络协议
- SQL Server 2008网络协议深入理解
- mysql protocal协议 tcpdump网络传输字节分析
- 一步一步开发sniffer(Winpcap+MFC)(四)要想从此过,留下协议头——各层网络协议头的实现
- 清晰理解互联网络协议
- linux网络编程之socket(五):tcp流协议产生的粘包问题和解决方案
- 网络协议笔记
- Wireshark(2):应用Wireshark观察基本网络协议
- 网络 协议与分层结构 的学习心得