zoukankan      html  css  js  c++  java
  • c# 实现 ftp

    FTP协议(File Transfer Protocol)即远程文件传输协议,是一个用于简化IP网络上系统之间文件传送的协议,FTP是TCP/IP的一种具体应用,它工作在OSI模型的第 7层,TCP模型的第四层上,即应用层,使用TCP传输而不是UDP,FTP建立的就是一个可靠的连接。采用FTP协议可使 Internet用户高效地从网上的FTP服务器下载大信息量的数据文件,将远程主机上的文件拷贝到自己的计算机上。以达到资源共享和传递信息的目的。由于FTP的使用使得Internet上出现大量为用户提供的下载服。Internet成为了一个巨型的软件仓库。将使用两条单独的TCP连接,一条专用于发送FTP命令,称为控制连接,另一条则专用于传递数据, 称为数据连接。

    1)控制连接

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

    2)数据连接

    FTP控制连接建立之后,即可开始传输文件,传输文件的连接称为FTP数据连接。FTP数据连接就是FTP传输数据的过程,它有两种传输模式

    PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。(这是大多数ftp客户端的传输模式)

    PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。

    主要用到的FTP命令:

    命令   描述

    ABOR   中断数据连接程序

    CDUP <dir path>   改变服务器上的父目录

    CWD <dir path>    改变服务器上的工作目录

    DELE <filename>   删除服务器上的指定文件

    LIST <name>   如果是文件名列出文件信息,如果是目录则列出文件列表

    MODE <mode>   传输模式(S=流模式,B=块模式,C=压缩模式)

    MKD <directory>   在服务器上建立指定目录

    NLST <directory> 列出指定目录内容

    NOOP   无动作,除了来自服务器上的承认

    PASS <password>   系统登录密码

    PASV   请求服务器等待数据连接

    PORT <address>    IP 地址和两字节的端口 ID

    PWD    显示当前工作目录

    QUIT   从 FTP 服务器上退出登录

    REIN   重新初始化登录状态连接

    REST <offset>     由特定偏移量重启文件传递

    RETR <filename>   从服务器上找回(复制)文件

    RMD <directory>   在服务器上删除指定目录

    RNFR <old path>   对旧路径重命名

    RNTO <new path>   对新路径重命名

    SMNT <pathname>   挂载指定文件结构

    STAT <directory> 在当前程序或目录上返回信息

    STOR <filename>   储存(复制)文件到服务器上

    STOU <filename>   储存文件到服务器名称上

    STRU <type>   数据结构(F=文件,R=记录,P=页面)

    TYPE <data type> 数据类型(A=ASCII,E=EBCDIC,I=binary)

    USER <username>> 系统登录的用户名

    这里着重介绍一下

    FTP 响 应 码


    响应代码   解释说明

    110    新文件指示器上的重启标记

    120    服务器准备就绪的时间(分钟数)

    125    打开数据连接,开始传输

    150    打开连接

    200    成功

    202    命令没有执行

    211    系统状态回复

    212    目录状态回复

    213    文件状态回复

    214    帮助信息回复

    215    系统类型回复

    220    服务就绪

    221    退出网络

    225    打开数据连接

    226    结束数据连接

    227    进入被动模式(IP 地址、ID 端口)

    230    登录因特网

    250    文件行为完成

    257    路径名建立

     

    响应代码   解释说明

    331    要求密码

    332    要求帐号

    350    文件行为暂停

    421    服务关闭

    425    无法打开数据连接

    426    结束连接

    450    文件不可用

    451    遇到本地错误

    452    磁盘空间不足

    500    无效命令

    501    错误参数

    502    命令没有执行

    503    错误指令序列

    504    无效命令参数

    530    未登录网络

    532    存储文件需要帐号

    550    文件不可用

    551    不知道的页类型

    552    超过存储分配

    553    文件名不允许

  • 相关阅读:
    C#中的扩展方法详解
    MVC Razor模板引擎 @RenderBody、@RenderPage、@RenderSection及Html.RenderPartial、Html.RenderAction
    @html.ActionLink的几种参数格式
    MVC session过期如何处理跳转
    LINQ to SQL和Entity Framework对比与关联
    ASP.Net 更新页面输出缓存的几种方法
    asp.net缓存
    ASP.NET应用程序与页面生命周期
    两种图片延迟加载的方法总结jquery.scrollLoading.js与jquery.lazyload.js
    测试入门知识
  • 原文地址:https://www.cnblogs.com/haiyabtx/p/2701755.html
Copyright © 2011-2022 走看看