当前位置: 首页 > news >正文

FTP与TFTP

文件传输协议如今有了很大的广泛,他屏蔽了计算机内部的实现细节,因为可以适用于各种计算机之间文件的传输。

文件咋网络中传输其实是一件很复杂的事情,涉及的问题有很多,比如

(1)计算机存储数据的格式不同

(2)不同的文件和目录命名的格式不同

(3)访问控制方法不同

(4)对于不同的计算机,可能操作的命令也不同

FTP特点:

FTP使用了tcp协议实现,解决了在不同操作系统上传输文件的兼容性,FTP使用CS方式。一个服务器可以服务多个客户端,一个服务器分为两发进程,一个是主进程,用来接通新的请求,一个是从属进程,用来处理的单个请求

 

主进程的工作步骤:

打开熟知端口,使得客户端能够连接诶上

如果有客户发出连接请求,启动从属进程,从属进程解决完了后就可以终止了,在这期间从属进程可能还会创建一些其他的进程,主进程回到等待状态,继续等待其他进程的到来,主进程和从属进程是并发执行的

 

两个连接,两个进程:

控制连接是一直打开的,FTP通过控制连接发送请求,服务器控制进程收到后创建数据传送进程和数据连接,数据传送进程结束后,关闭数据连接

 

 两个端口

当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口(21),同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。 接着,服务器进程用自己传送数据的熟知端口(20)与客户进程所提供的端口号码建立数据传送连接。 由于 FTP 使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。

使用两个端口的好处

使协议更加简单和更容易实现。 在传输文件时还可以利用控制连接(例如,客户发送请求终止传输)

 

 

 

NFS 采用另一种思路

 

NFS 允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。 NFS 可使用户只复制一个大文件中的一个很小的片段,而不需要复制整个大文件。 对于上述例子,计算机 A 的 NFS 客户软件,把要添加的数据和在文件后面写数据的请求一起发送到远地的计算机 B 的 NFS 服务器。NFS 服务器更新文件后返回应答信息。 在网络上传送的只是少量的修改数据。

 

TFTP 是一个很小且易于实现的文件传送协议。 TFTP 使用客户服务器方式和使用 UDP 数据报,因此 TFTP 需要有自己的差错改正措施。 TFTP 只支持文件传输而不支持交互。 TFTP 没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。

 

TFTP的优点:

可以进行广播UDP

代码内存空间小

交通方便‘’

 

特点:

每次传输的数据报文有512字节,最后一次可以不足

数据报文按顺序编号

支持二进制传输

可对文件进行读写,

开销小(瘦不简单)

 

TFTP 的工作很像停止等待协议

发送完一个文件块后就等待对方的确认,确认时应指明所确认的块编号。 发完数据后在规定时间内收不到确认就要重发数据 PDU。 发送确认 PDU 的一方若在规定时间内收不到下一个文件块,也要重发确认 PDU。这样就可保证文件的传送不致因某一个数据报的丢失而告失败。

在一开始工作时。TFTP 客户进程发送一个读请求 PDU 或写请求 PDU 给 TFTP 服务器进程,其熟知端口号码为 69。 TFTP 服务器进程要选择一个新的端口和 TFTP 客户进程进行通信。 若文件长度恰好为 512 字节的整数倍,则在文件传送完毕后,还必须在最后发送一个只含首部而无数据的数据 PDU。 若文件长度不是 512 字节的整数倍,则最后传送数据 PDU 的数据字段一定不满512字节,这正好可作为文件结束的标志。

转载于:https://www.cnblogs.com/wangsicongde/p/7599351.html

相关文章:

  • Android通过Gradle发布开源项目到binary/Jcenter
  • 针对通过 SSH 连接到 Azure Linux VM 时发生的失败、错误或被拒绝问题进行故障排除...
  • bootstrap-table使用总结
  • Tensorflow CNN入门
  • charles抓包并分析问题
  • Veeam任命新的中国区总经理 坚信可用性领域大有可为
  • spring常用注解
  • 学习笔记之Python 3 教程
  • iOS APP原生一维码、二维码扫描使用介绍
  • 新的博客
  • tcp/ip 简介
  • TP框架中多条件筛选
  • 使用epoll方式监控键盘等设备输入
  • Pandas时间序列
  • Centos_7安装python-pip
  • [译]CSS 居中(Center)方法大合集
  • es6(二):字符串的扩展
  • export和import的用法总结
  • JS字符串转数字方法总结
  • MYSQL 的 IF 函数
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • PAT A1120
  • Promise面试题,控制异步流程
  • 前端知识点整理(待续)
  • 区块链共识机制优缺点对比都是什么
  • 如何利用MongoDB打造TOP榜小程序
  • 微服务框架lagom
  • 如何用纯 CSS 创作一个货车 loader
  • ​Java并发新构件之Exchanger
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​低代码平台的核心价值与优势
  • #define与typedef区别
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (2)STL算法之元素计数
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (ZT)出版业改革:该死的死,该生的生
  • (多级缓存)多级缓存
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (转)nsfocus-绿盟科技笔试题目
  • (转)甲方乙方——赵民谈找工作
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .net中调用windows performance记录性能信息
  • [20150904]exp slow.txt
  • [Angularjs]asp.net mvc+angularjs+web api单页应用
  • [BeginCTF]真龙之力
  • [C#]winform部署yolov9的onnx模型
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [EMWIN]FRAMEWIN 与 WINDOW 的使用注意
  • [flink总结]什么是flink背压 ,有什么危害? 如何解决flink背压?flink如何保证端到端一致性?
  • [Geek Challenge 2023] web题解
  • [hdu 1247]Hat’s Words [Trie 图]
  • [LeetCode]Pow(x,n)