zoukankan      html  css  js  c++  java
  • FTP应答码

    FTP协议

    1.  文件传输

     

    文件传输服务是网络互联环境所必需的一种服务,当前网络中文件传输最主要的传输方式是使用FTP协议。

     

    FTP,全称File Transfer Protocol,中文名为文件传输协议,它可以在网络中传输电子文档、图片、声音、影视、程序及程序等多种类型的文件。如果用户需要将文件从自己的计算机上发送到另一台计算机上,可使用FTP上传(upload)或(put)操作,而更多种的情况是用户使用FTP下载(download)或获取(get)操作从FTP服务器上下载文件。

     

    2.  FTP工作原理

    一个完整的FTP文件传输需要建立两种类型的连接,一种为文件传输下命令,称为控制连接,另一种实现真正的文件传输,称为数据连接。

    1)      控制连接

    客户端希望与FTP服务器建立上传下载的数据传输时,它首先向服务器的TCP 21端口发起一个建立连接的请求,FTP服务器接受来自客户端的请求,完成连接的建立过程,这样的连接就称为FTP控制连接。

    2)      数据连接

    FTP控制连接建立之后,即可开始传输文件,传输文件的连接称为FTP数据连接。FTP数据连接就是FTP传输数据的过程,它有两种传输模式:主动传输模式(PORT)和被动传输模式(PASSIVE,简称PASV)。主动传输模式下,FTP服务器使用20端口与客户端的暂时端口进行连接,并传输数据,客户端只是处于接收状态。被动传输模式下,FTP服务器打开一个暂态端口等待客户端对其进行连接,并传输数据,服务器并不参与数据的主动传输,只是被动接受。

    FTP两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)

        在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。

        在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。

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

        被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。

    ?

     

    区别在于:

    主动模式是client bind a port,然后server从server的20port把数据写道client开的port上来。

    被动模式是client要求server开一个port,然后client连那个port把数据取回来。

     

    简明一点就是:

    主动模式是server把数据写道client。

    被动模式是client去server端把数据去回来.

     

     

    3.  FTP命令

    FTP常见的命令如表1所示。

     

    命令

    描述

    USER

    为用户验证提供用户名

    PASS

    为用户验证提供密码

    PWD

    输出FTP服务器的当前工作目录

    TYPE

    设置传输的文件类型

    SYST

    获取FTP服务器的操作系统

    LIST

    获取FTP服务器上当前目录的文件列表

    PORT

    指定使用主动模式进行数据传输

    PASV

    指定使用被动模式进行数据传输

    HELP

    从FTP服务器上获取帮助文件

    STOR

    从客户端上传指定的文件到FTP服务器

    RETR

    从FTP服务器下载指定的文件到客户端

    DELE

    删除FTP服务器上指定的文件

    MKD

    在FTP服务器上新建目录

     

     

    RMD

     

    删除FTP服务器上的指定目录

     

     

    QUIT

     

    退出关闭FTP连接

    (表1 FTP常见命令)

    4.  FTP应答

    从上面的分析及截图中我们可以知道,对客户端发出的所有命令,FTP服务器都会对其做出应答,

    ftp应答码及其意义
    110      重新启动标记应答。在这种情况下文本是确定的,它必须是:MARK yyyy=mmmm,其中yyyy是用户进程数据流标记,mmmm是服务器标记。
    120      服务在nnn分钟内准备好
    125      数据连接已打开,准备传送
    150      文件状态良好,打开数据连接
    200      命令成功
    202      命令未实现
    211      系统状态或系统帮助响应
    212      目录状态
    213      文件状态
    214      帮助信息,信息仅对人类用户有用
    215      名字系统类型
    220      对新用户服务准备好
    221      服务关闭控制连接,可以退出登录
    225      数据连接打开,无传输正在进行
    226      关闭数据连接,请求的文件x作成功
    227      进入被动模式
    230      用户登录
    250      请求的文件x作完成
    257      创建"PATHNAME"
    331      用户名正确,需要口令
    332      登录时需要帐户信息
    350      请求的文件x作需要进一步命令
    421      不能提供服务,关闭控制连接
    425      不能打开数据连接
    426      关闭连接,中止传输
    450      请求的文件x作未执行
    451      中止请求的x作:有本地错误
    452      未执行请求的x作:系统存储空间不足
    500      格式错误,命令不可识别
    501      参数语法错误
    502      命令未实现
    503      命令顺序错误
    504      此参数下的命令功能未实现
    530      未登录
    532      存储文件需要帐户信息
    550      未执行请求的x作
    551      请求x作中止:页类型未知
    552      请求的文件x作中止,存储分配溢出
    553      未执行请求的x作:文件名不合法

  • 相关阅读:
    java 静态方法分析
    编译时常量与运行时常量
    springboot+elasticsearch配置实现
    spring+mybatise注解实现
    @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
    @RequestBody 的正确使用办法
    springboot+jps+druid项目搭建
    python 源码安装
    liunx 时间ntp同步服务器
    spring 定时任务corn表达式
  • 原文地址:https://www.cnblogs.com/cpcpc/p/2123074.html
Copyright © 2011-2022 走看看