FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。

IIS7服务器管理工具可以批量管理、定时上传下载、同步操作、数据备份、到期提醒、自动更新。IIS7服务器管理工具适用于Windows操作系统和liunx操作系统;支持Ftp客户端批量操作。

下载地址:IIS7服务器管理工具

1 FTP基本工作原理

  FTP屏蔽了各计算机系统的细节,因而适合在异构网络中任意计算机之间传送文件。FTP只提供文件传送的一些基本服务,它使用TCP可靠地运输服务,FTP主要功能是减小或消除在不同系统下处理文件的不兼容性。

  FTP使用客户端-服务器模型,一个FTP服务器进程可以为多个客户进程提供服务。FTP服务器有两大部分组成:一个主进程,负责接受新的请求;还有若干从属进程,负责处理单个请求。主进程工作步骤

  • 打开熟知端口(21),使客户进程能够连接上
  • 等待客户进程发送连接请求
  • 启动从属进程处理客户进程发送的连接请求,从属进程处理完请求后结束,从属进程在运行期间可能根据需要可创建其他一些子进程
  • 回到等待状态,继续接受其他客户进程发起的请求,主进程与从属进程的处理是并发进行的

FTP工作时情况

  FTP控制连接在整个会话期间都保持打开,只用来发送连接/传送请求。当客户进程向服务器发送连接请求时,寻找连接服务器进程的熟知端口21,同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。接着,服务器进程用自己传送数据的熟知端口20与客户进程所提供的端口号码建立数据传送连接,FTP使用了2个不同的端口号,所以数据连接和控制连接不会混乱。

1.1 FTP数据表示

  FTP协议规定了控制协议传送与存储的多种选择,在以下4个方面必须做出一个选择。

  • 文件类型:ASCII码文件(默认的)/ 图像文件类型(二进制的)/ 本地文件类型(用于在具有不同字节大小主机间传送二进制数据)
  • 格式控制:该选项针对ASCII类型文件适用,非打印(默认选择,文件中不包含垂直格式信息)/ 远程登录格式控制
  • 结构:文件结构(默认选择,文件被认为是一个连续的字节流,不存在内部的文件结构)/ 记录结构(用于文本文件)
  • 传输方式:流方式(模式选择,文件以字节流方式传输,对于文件结构,发方在文件尾提示关闭数据连接,对于记录结构,有专用的两字节序列码记录结束和文件结束)/ 块方式(文件以一系列块来传送,每块前面有一个或多个首部字节)/ 压缩方式

1.2 FTP命令和应答

  命令和应答在客户和服务器的控制连接上以 NVT ASCII码形式传送。这就要求在每行结尾都要返回C R、 L F对(也就是每个命令或每个应答)。这些命令都是3或4个字节的大写ASCII字符,其中一些带选项参数。从客户向服务器发送的FTP命令超过30种。下图是比较常用的几种命令:

  应答都是A S C I I码形式的3位数字,并跟有报文选项。其原因是软件系统需要根据数字代码来决定如何应答,而选项串是面向人工处理的。由于客户通常都要输出数字应答和报文串,一个可交互的用户可以通过阅读报文串(而不必记忆所有数字回答代码的含义)来确定应答的含义。

2 FTP工作模式

  FTP有两种工作模式,分别是主动模式(PORT)和被动模式(PASV)两种模式,这两种模式是按照FTP服务器的“角度”来说的,更通俗一点说就是:在传输数据时,如果是服务器主动连接客户端,那就是主动模式;如果是客户端主动连接服务器,那就是被动模式。

3 关于FTP经典的问题

3.1 如何知道FTP传送一个文件结束?

  这个问题比较经典,也是一次面试被问到的问题。前面说过,通用传输方式是流方式,并且文件的结尾是以关闭数据连接为标志,这意味着对每一个文件传输或目录列表来说都要建立一个全新的数据连接。其一般过程如下:

  1. 正由于是客户发出命令要求建立数据连接,所以数据连接是在客户的控制下建立的。
  2. 客户通常在客户端主机上为所在数据连接端选择一个临时端口号。客户从该端口发布一个被动的打开。
  3. 客户使用P O RT命令从控制连接上把端口号发向服务器。
  4. 服务器在控制连接上接收端口号,并向客户端主机上的端口发布一个主动的打开。服务器的数据连接端一直使用端口 2 0。

  图27- 4给出了第 3步执行时的连接状态。假设客户用于控制连接的临时端口是 11 7 3,客户用于数据连接的临时端口是 11 7 4。客户发出的命令是PORT命令,其参数是6个ASCII中的十进制数字,它们之间由逗点隔开。前面 4个数字指明客户上的 I P地址,服务器将向它发出主动打开(本例中是 140.252.13.34),而后两位指明16 bit端口地址。由于16 bit端口地址是从这两个数字中得来,所以其值在本例中就是 4×256+150=1174。
  图27-5给出了服务器向客户所在数据连接端发布主动打开时的连接状态。服务器的端点是端口2 0。

  服务器总是执行数据连接的主动打开。通常服务器也执行数据连接的主动关闭,除非当客户向服务器发送流形式的文件时,需要客户来关闭连接(它给服务器一个文件结束的通知)。

ftp主动和被动模式_ftp协议,深入理解ftp协议只需3步相关推荐

  1. ftp主动和被动模式_【扫盲】FTP基础知识详解

    关注我,你的眼睛会怀孕 本文主要介绍FTP的工作原理,FTP主动与被动两种工作模式. FTP 简介 FTP协议就是文件传输控制协议.它可以使文件通过网络从一台主机传送到同一网络的另一台主机上,而不受计 ...

  2. FTP主动和被动模式区别?

    [前言] 要弄清FTP主动和被动模式区别,首先需要弄清端口.本质上ftp协议是TCP/IP的上层协议,即应用层协议,也就是说如果要实现一个ftp软件或工具,还是用socket去实现,因此需要弄清soc ...

  3. FTP主动和被动模式区别

    FTP是用来在两台计算机之间传输文件,是互联网中应用非常广泛的服务之一.FTP(File Transfer Protocol)即文件传输协议,是一种基于TCP的协议,采用客户/服务器模式,不支持UDP ...

  4. FTP主动跟被动模式区别

    目录 1.拓扑图 2.FTP协议简介 3.FTP工作原理 3.1.主动连接(PORT) 3.2.被动连接(PASV) 3.3.FTP主动模式穿越SNAT原理 3.4.FTP被动模式穿越DNAT原理 4 ...

  5. FTP主动和被动模式(详解+图示)

    基础知识: FTP只通过TCP连接,没有用于FTP的UDP组件.FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口).通常21端口是命令端口,20端口是数据端口.当 ...

  6. Linux笔记-ftp主动和被动模式下iptables的规则配置

    服务端准备 首先安装vsftpd: yum -y install vsftpd 启动服务: systemctl start vsftpd.service 配置文件目录在:/etc/vsftpd/vsf ...

  7. ftp 追加远程文件_ftp上传,完成ftp定时上传、下载只需3步

    FTP[File Transfer Protocol]中文译为文件传输协议,是Internet上的另一项主要服务,这项服务让使用者能通过Internet来传输各式各样的文件.FTP上传是与WEB上传相 ...

  8. uniapp 定时执行_ftp上传,完成ftp定时上传、下载只需3步

    FTP[File Transfer Protocol]中文译为文件传输协议,是Internet上的另一项主要服务,这项服务让使用者能通过Internet来传输各式各样的文件.FTP上传是与WEB上传相 ...

  9. java ftp定时上传_ftp自动删除,ftp自动删除文件、定时上传文件的方式及java环境配置...

    IIS7服务器管理工具具备所有服务器管理工具的功能,比如批量管理.同时它还有很多的自主研发功能.比如同步操作.到期提醒.数据安全和定期执行.当然适用的系统也有Windows和liunx操作系统.还支持 ...

最新文章

  1. VS2017+mysql5.7 连接数据库生成实体
  2. 关于模板页调用js的问题
  3. golang中的strings.Fields
  4. 互联网1分钟 | 0117 IBM入驻上海张江人工智能岛;IoT业务将成为小米新支撑点
  5. html的选择器child,css child选择器妙用
  6. win7 mysql php apache myadmin_windows下Apache+mysql+php+phpMyAdmin的安装及配置 | 学步园
  7. 通过JavaScript操作HTML中select标签
  8. 【hive】怎么解决Hive中metaData 字符集中文问题?--详细步骤
  9. matlab2014启动很慢,matlab启动慢的解决方法
  10. Python基础学习5 -字符串
  11. TreeSet简单介绍与使用方法
  12. 利用ArcGIS Pro进行时空数据挖掘和可视化呈现
  13. BZOJ2555:SubString(SAM,LCT)
  14. 2000w mysql_MySQL数据库优化(基于酒店2000w条数据)
  15. endnote X7使用方法
  16. 警惕|这类人千万不要转行学IT
  17. 图像处理在医学方面的应用
  18. D语言(dlang)编写单片机(cortex-m系列)应用需要用到的技巧
  19. 阿里P9架构师简述从单机至亿级流量大型网站系统架构的演进过程
  20. 计算机专业大专学校排名河南的,2020河南大专学校排名榜单

热门文章

  1. 函数递归/二分法/列表,字典生成式/三元表达式/匿名函数/内置函数
  2. 第二阶段团队冲刺第九天
  3. c primer plus--运算符、表达式和语句(第5章)--习题
  4. Visual Studio Code 编辑器 使用入门
  5. 获取List对象的泛型类(原创)
  6. YII2 rules 规则验证器
  7. 让jquery构造出类
  8. 推模式下dataset1下显示的是...未找到项目... 问题的解决
  9. MySQL主从复制延迟原因及处理思路
  10. 一次百万长连接压测 Nginx OOM 的问题排查分析