前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文件传输协议FTP

文件传输协议FTP

作者头像
十二惊惶
发布2024-02-28 20:49:18
910
发布2024-02-28 20:49:18
举报

文件传输协议FTP

[TOC]

代码语言:javascript
复制
#	掌握FTP的工作原理
#	掌握FTP常用命令的使用方法及用途

TFP简介:

FTP (File Transfer Protocol)服务:

FTP是TCP/IP网络上两台计算机之间传送文件的协议,它是在Internet上最早使用的协议之一。

FTP客户机可以给服务器发出命令来下载文件、上传文件、创建或改变服务器上的目录

  • 原来的FTP软件多是命令行操作,有了像Filezilla这样的图形界面软件,使用FTP传输变得方便易学。
  • 大多数FTP服务面向大众,不需要身份认证,即“匿名FTP服务器”。

FTP协议是应用层的协议,它基于运输层,负责进行文件的传输

  • FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理。
  • FTP服务一般运行在TCP的20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的入口

两种TCP连接

控制连接:建立之后一直持续到客户和服务器间的通信完成为止,用于传送控制命令,服务器使用21号端口

数据连接:根据通信的需要随时建立和释放,用于数据传输,服务器通常使用20号端口

控制连接:

创建步骤:服务器在熟知端口21发出被动打开,等待客户,客户使用临时端口发出主动打开。

数据连接:
  • 主动模式(PORT)由服务器端向客户端发起数据连接
  • 被动模式(PASV)由客户端向服务器端发起数据连接

主动模式是服务器主动连接客户的数据端口,被动模式是服务器被动地等待客户连接自己的数据端口

主动模式下的FTP服务

PORT(主动)模式的默认数据端口是20,控制端口是21

  • 连接过程
    • 连接时,客户端使用随机的端口N(N>1024)连接服务器的控制端口21建立控制连接
    • 然后客户端开放N+1号端口进行监听,并通过控制连接向服务器发送命令PORT N+1
    • 服务器用自己的数据端口20连接到客户端的N+1端口,建立数据连接。
主动模式存在的问题:

PORT(主动)模式发送端口给服务器,由服务器连回客户端

  1. 如果客户端有防火墙,这样的连接会被认为是外部主机试图连接内部的主机,通常情况下是不允许的
  2. 为了解决这个问题,引入了PASV(被动)模式。
被动模式下的FTP服务
  • 连接过程
    • 连接时,客户端使用一个随机的端口N(N>1024)连接服务器的21端口建立控制连接
    • 通过控制连接向服务器发送命令PASV (被动模式)。
    • 服务器使用一个随机的数据端口M(M>1024)并通过控制连接发回客户端
    • 客户端用数据端口N+1连接服务器的端口M。

    由于是客户端主动发起数据连接,这样就解决了防火墙带来的问题。

FTP通信:

控制连接上的通信:FTP使用NVT ASCII字符集在控制连接上通信。通信过程使用命令和响应来完成,命令和响应都是一个短行,因此不必考虑它的文件结构。每一行以回车换行结束

数据连接上的通信:在传送数据之前,客户使用控制连接来做传输准备,定义文件类型、数据结构、传输方式

文件类型
  1. ASCII文件:传送文本文件的默认格式。每一个字符使用NVT ASCII进行编码。发送端把文件从它自己的表示转换成NVT ASCII字符,而接收端从NVT ASCII字符转换成它自己的字符
  2. EBCDIC文件:若连接的一端或两端使用EBCDIC编码,则可使用EBCDIC编码传送文件
  3. 图像文件:传送二进制文件的默认格式。这种文件是作为连续的比特流传送而没有任何解释或编码。在大多数情况下它用来传送二进制文件,如已编译的程序。
数据结构
  • 文件结构(默认)︰这种文件没有结构,它是连续的字节流
  • 记录结构:这种文件划分为一些记录,这只能用于文本文件
  • 页面结构:这种文件划分为一些页面,每一个页面有页面号和页面首部。页面可以随机地或顺序地进行存取
传输方式

流方式:这是默认方式。数据作为连续的字节流从FTP交付给TCP。TCP负责把数据划分为适当大小的报文。若数据是简单的字节流(文件结构),就不需要文件结束符。若数据划分为记录(记录结构),则每一个记录有1字节的记录结束(EOR)字符,而在文件的结束处有文件结束(EOF)字符。

块方式:数据可以按块从FTP交付给TCP。每一个块的前面有3字节首部。第一个字节叫做块描述符,后两个字节定义块的大小,以字节为单位。

压缩方式:若文件很大,数据可进行压缩。通常使用的压缩方法是游程长度编码。数据单元的连续出现数可以用一个“出现”和“重复数”来替换。在文本文件中,这通常是空格。在二进制文件中,空字符常常被压缩。

文件传送

从服务器把文件复制到客户端叫做读取文件,使用RETR命令完成

从客户端把文件复制到服务器叫做存储文件,使用STOR命令完成。

从服务器向客户端发送目录列表或文件名,使用LIST命令完成。FTP把目录或文件名列表当作文件,在数据连接上发送。

FTP响应与命令:

FTP使用控制连接在客户进程和服务器进程之间完成交互操作,客户端向服务器发送命令,服务器给客户返回响应

命令
  • 命令形式是ASCII大写字符,后面的变量可以有,也可以没有。
  • 命令可以粗略地划分为6组:接口命令、文件管理命令、数据格式化命端口定义命令、文件传送命令以及杂项命令。
响应

每一个FTP命令都应该有响应。响应由两个部分组成:3个数字以及跟随在后面的文本。数字部分定义代码,文本部分定义所需的参数或额外的解释

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-11-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文件传输协议FTP
    • TFP简介:
      • 两种TCP连接
        • 主动模式下的FTP服务
        • 被动模式下的FTP服务
      • FTP通信:
        • 文件类型
        • 数据结构
        • 传输方式
        • 文件传送
      • FTP响应与命令:
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档