目录

TFTP

FTP

简介

工作原理

登录

传输

数据传输模式

参考


TFTP

TFTP比较简单,简单介绍一下。

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

TFTP的主要特点是:
(1)每次传送的数据报文中有512字节的数据,但最后一次可不足512字节。
(2)数据报文按序编号,从1开始。
(3)支持ASCII码或二进制传送。
(4)可对文件进行读或写。
(5)使用很简单的首部。

FTP

简介

FTP(File Transfer Protocol,文件传送协议)是互联网上使用得最广泛的文件传送协议。FTP提供交互式的访问,使用TCP实现可靠传输,采用客户/服务器模式,允许客户指明文件的类型与格式(如指明是否使用ASCII码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令),FTP屏蔽了计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件

文件传输协议的目标是:

  • 促进文件(计算机程序和/或数据)的共享
  • 鼓励间接或通过程序使用远程计算机
  • 保护用户免受主机之间文件存储系统的变化
  • 可靠有效地传输数据

一般我们熟知的都是21端口,还有以下分类:

主动FTP(PORT)
     命令连接:客户端 >1023端口 -> 服务器 21端口
     数据连接:客户端 >1023端口 <- 服务器 20端口

被动FTP(PASV)
     命令连接:客户端 >1023端口 -> 服务器 21端口
     数据连接:客户端 >1023端口 -> 服务器 >1023端口

工作原理

登录

使用用户名&密码进行登录

匿名FTP:对于一些提供公众文件拷贝服务的FTP服务器,使用匿名方式,即不需要登录。

传输

一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。
主进程的工作步骤如下:

  1. 打开熟知端口(端口号为21),使客户进程能够连接上。
  2. 等待客户进程发出连接请求。
  3. 启动从属进程处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程
  4. 回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发进行的。

FTP使用的两个TCP连接

在进行文件传输时,FTP的客户和服务器之间要建立两个并行的TCP连接控制连接数据连接控制连接在整个会话期间一直保持打开,FTP客户所发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。实际用于传输文件的是数据连接(一般使用端口20)。服务器端的控制进程在接收到FTP客户发送来的文件传输请求后就创建数据传送进程数据连接,用来连接客户端和服务器端的数据传送进程。数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。由于FTP使用了一个分离的控制连接,因此FTP的控制信息是带外(out of band)传送的。

NFS:FTP协议中,如果客户端A想要修改服务器端B中的某个文件,需要下载B中的文件,修改后再进行上传,传输过程浪费了很多时间。而NFS则采用另一种思路,NFS允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。这样,NFS可使用户只复制一个大文件中的一个很小的片段,而不需要复制整个大文件。对于上述例子,计算机A中的NFS客户软件,把要添加的数据和在文件后面写数据的请求一起发送到远地的计算机B中的NFS服务器,NFS服务器更新文件后返回应答信息,在网络上传送的只是少量的修改数据。

数据传输模式

ASClI模式

假定正在传输的文件为简单的ASClI码文本,此时ftp通常会自动地调整文件内容以便于把文件解释成另外一台计算机存储文本文件的格式(例如,互换WINDOWS和UNIX的行结束符)。

二进制模式

在二进制传输中,保存文件的位序,以便拷贝和原始文件是逐位一一对应的。

更多模式可参考RFC959-DataTransfer。

参考

《TCP/IP详解I》第27章

《计算机网络第7版 谢希仁》6.2

RFC 959

RFC1350

网络-FTP协议与TFTP协议相关推荐

  1. 上传文件到tftp服务器,网络基础知识:TFTP协议之上传文件

    原标题:网络基础知识:TFTP协议之上传文件 上传文件指的是客户端将本地上的文件上传到TFTP服务器上.下面介绍客户端如何进行文件上传,以及上传时所涉及的各类型数据包. 1.工作流程 客户端会向TFT ...

  2. TFTP协议(1)TFTP协议介绍(包括:TFTP的五种报文/报文字段扩展/TFTP的流量控制,差错控制/UDP sendto,recvfrom接口)

    TFTP协议(1)TFTP协议介绍(包括:TFTP的五种报文/报文字段扩展/TFTP的流量控制,差错控制/UDP sendto,recvfrom接口) 1. TFTP协议 1.1 TFTP 背景 1. ...

  3. TFTP协议分析与实现

    闲暇之余做一个模块化的TFTP DEMO程序,记录一下. 1.TFTP协议与功能点介绍: TFTP采用UDP协议进行TFTP协议的文件传输,其默认的协议socket为:UDP + port 69:UD ...

  4. FTP、TFTP、HTTP、SMTP、DHCP、Telnet、DNS、SNMP(网络协议:应用层协议)

    面试和笔试中,如果记住下面这张图,基本就能解决网络协议中70%的问题.需要记住: OSI模型和TCP/IP模型每一层名称: 每一层对应有哪些协议,或者说给出该协议要知道对应那一层: 该协议是基于TCP ...

  5. 【网络】tftp协议、简单实用tftpd32工具在主机和虚拟机之间传输文件

    TFTP协议的简单了解学习以及使用 一.前言 在公司里,给设备进行升级的时候使用了一个tftp传输文件工具(Tftpd32),笔记本接上和设备在同一网络下的网线(使二者在同一个局域网下),然后配置Tf ...

  6. 初入网络系列笔记(6)TFTP协议

    一.借鉴说明,本博文借鉴以下博文 1.锤子,FTP协议,http://www.cnblogs.com/loadrunner/archive/2008/01/09/1032264.html 2.suna ...

  7. 网络编程——TFTP协议(基于UDP)

    目录 1. tftp协议概述 2. tftp下载模型 3. tftp协议分析 代码 1. tftp协议概述 简单文件传输协议,适用于在网络上进行文件传输的一套标准协议,使用UDP传输 特点: 是应用层 ...

  8. LinuxC语言简单实现客户端使用TFTP协议文件下载-网络编程-应用层

    目录 编写客户端,使用TFTP协议,完成文件下载的功能. 1.安装tftpd32 2.TFTP协议 3.打开服务器tftpd32 4.客户端 代码实现 执行结果 注意 6.非原创 编写客户端,使用TF ...

  9. SSH、SFTP、FTP、Telnet、SCP、TFTP协议的原理

    一.SSH协议 1.什么是SSH? SSH全称 安全外壳协议(Secure Shell),,是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境. 如果一个用户从本地计算机,使用S ...

最新文章

  1. 李德毅院士《探索新一代人工智能产业发展》
  2. 后端传前端中文显示都是问好_前后端分离,后台返回的数据前端没法写,怎么办?...
  3. 【AI-1000问】为什么LeNet5倒数第二个全连接层维度为84?
  4. linux安装java_linux中替换系统自带的OpenJDK
  5. POJ 3186Treats for the Cows(区间DP)
  6. 完美解决你使用eclipse编辑jsp、js文件时,经常出现卡死的问题
  7. centos移动文件到指定目录_Dynamo批量分离中心文件并另存到指定目录
  8. Magento教程 12:Magento快速上传大量商品的方法
  9. 关于分布式事务的几个问题
  10. 下面的程序可以从0....n-1中随机等概率的输出m个不重复的数。(假设nm)
  11. google地图网页版_谷歌收录查询方法大全,如何让Google快速收录网页?
  12. 使用python来读取超大型文件数据
  13. 扩展php-bcmath,centos安装PHP扩展(bcmath)
  14. 黑马程序员,黑马论坛---云2期,已就业45人,平均薪水6806【8月23日更新】
  15. 生物信息学biojava|从本地读取并解析遍历genbank文件|从genbank中提取CDS等注释信息
  16. 移动端cpu天梯图2020_台式机CPU天梯图(十月)
  17. python--转换wrf输出的风场数据为网页可视化的json格式
  18. smartforms以PDF打印预览
  19. 马尔萨斯模型的分析和应用
  20. win2012R2安装KB2919355 补丁的问题

热门文章

  1. SQL性能优化中的底层概念,时间复杂度,算法和数据结构,数据库组成,查询优化和表关联原理.
  2. 解决腾讯云服务器存在端口(6379)对外攻击行为
  3. 单手锻炼的4个经典动作
  4. linux心跳检测脚本
  5. 如果linux虚拟机没网络网卡怎么办检查没ens33网卡
  6. 功能强大的国产Api管理工具
  7. 一粒云Server 安装指南
  8. BPlayers区块链技术入门简介
  9. PTA 7-1 在数组中查找指定元素 (10 分)
  10. Android——动画学习,界面切换