精华内容
下载资源
问答
  • FTP协议分析

    2018-01-11 16:12:55
    主要是FTP协议分析实验,通过模拟实验进行交换机配置,FenixFTP协议工作原理。
  • 计算机网络ftp协议

    2018-11-28 15:32:21
    关于ftp客户端的实现,有源码,文档,以及ppt,还有服务端软件,方便测试与演示。
  • 基于Ftp协议文件传输-附件资源
  • 湘潭大学 网络协议TCP/IP实验四FTP 协议分析实验报告,仅供参考
  • FTP协议的实现源代码

    2018-01-05 10:57:18
    有关于ftp协议下载等功能的客户端此客户端利用mfc来实现漂亮的用户界面
  • NULL 博文链接:https://j2ee2009.iteye.com/blog/665917
  • 本应用程序用C++编写利用MFC编写框架,实现ftp的基本功能:下载,上传,上下级目录,查询,删除,重命名等功能,压缩文件里包含源码,设计文档,以及服务器端应用程序,包你管用,不会用的可以找我。
  • JAVA实现FTP协议文件上传
  • FTP协议

    千次阅读 2020-06-19 16:14:36
    FTP协议被广泛使用在互联网上的文件传输。使用客户端/服务器模式,基于TCP传输;工作在OSI七层模型的应用层。 协议概述 FTP采用双TCP连接方式 控制连接使用TCP端口号21 用于在FTP客户端和FTP服务器之间传输FTP...

    目录

    协议背景

    协议概述

    FTP采用双TCP连接方式

    FTP有两种文件传输模式

    FTP采用两种数据传输方式

    工作过程

    主动模式

    被动模式

    抓包分析

    主动模式

    被动模式

     关于FTP的几个问题


    协议背景

    为了提高文件的共享性,在本地主机和远程主机之间高效传送数据。FTP协议被广泛使用在互联网上的文件传输。使用客户端/服务器模式,基于TCP传输;工作在OSI七层模型的应用层。


    协议概述

    FTP采用双TCP连接方式

    控制连接使用TCP端口号21

    用于在FTP客户端和FTP服务器之间传输FTP控制命令及命令执行信息。控制连接在整个FTP会话期间一直保持打开

    数据连接使用TCP端口号20

    用于传输数据,包括数据上传、下载、文件列表发送等。数据传输结束后数据连接将终止。

    FTP有两种文件传输模式

    ASCII模式是默认的文件传输模式,主要特点是:

    本地文件转换成标准的ASCII码再传输

    适用于传输文本文件

    二进制流模式也称为图像文件传输模式,主要特点是:

    文件按照比特流的方式进行传输

    适用于传送程序文件

    FTP采用两种数据传输方式

    主动方式

    被动方式


    工作过程

    主动模式

    在建立数据连接的过程中,由服务器主动发起连接,因此被称为主动方式。主动方式也称为PORT方式,是FTP协议最初定义的数据传输连接方式,主要特点是:

    1. FTP客户端通过向FTP服务器发送PORT命令,告诉服务器该客户端用于传输数据的临时端口号
    2. 当需要传送数据时,服务器通过TCP端口号20与客户端的临时端口建立数据传输通道,完成数据传输

    被动模式

    在整个过程中,由于服务器总是被动接收客户端的数据连接,因此被称为被动方式。被动方式也称为PASV方式,被动方式的主要特点是:

    1. FTP客户端通过向FTP服务器发送PASV命令,告诉服务器进入被动方式。服务器选择临时端口号并告知客户端
    2. 当需要传送数据时,客户端主动与服务器的临时端口号建立数据传输通道,完成数据传输。


    抓包分析

    主动模式

    被动模式


     关于FTP的几个问题

    1、从哪个角度来看待主动和被动

    本质上看,这个主动被动是站在服务端的角度来定义的。是指的谁来发起数据通道的建立,如果是服务端,就是主动模式(我是服务端,我主动来与客户端发起数据通道的建立);如果是客户端来发起数据通道建立,就是被动模式(服务端被动等待客户端来发起数据通道的建立)。

    2、选择模式是服务器还是客户端

    一般FTP服务器都会设置两者模式都支持的。FTP在建立过程中,在命令通道建立完后,由客户端决定采用主动还是被动模式,客户端会通过发送PASS(主动)还是PORT(被动)来告知服务器。

    3、主动、被动模式在边界设备做NAT连接跟踪、防火墙端口/连接控制等网络中可能会遇到不能通过的问题

    采用哪种模式来解决这个问题,通常是FTP服务端来想办法,因为客户端网络边界千差万别不好控制(很难做到让服务器能主动连接客户端数据通道端口),所以服务端要解决让客户端来连接自己数据通道(被动模式),服务端边界设备要支持FTP协议ALG(应用级网关)来支持数据通道的端口识别和控制。

    4、为什么会有主动模式和被动模式

    主动模式对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。

    被动模式对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

    5、主动被动模式会有哪些网络要求

    主动模式是由服务器向客户端发起连接请求,客户端需要放开这个高位端口;被动模式中客户端要连接到服务器的一个随机高位端口,就需要服务端的防火墙放开这个FTP的高位端口。

     

    展开全文
  • ftp服务器端和客户端都有,代码比较简单。演示的时候需要客户端和服务器端配合(或者用windows自带的客户端也行)。里面有.project文件,可以直接在eclipse中运行。
  • 为降低文件传输协议的使用难度,分析了FTP协议的基本功能要求;提出了文件发送和文件接收的2项基本功能;设计了一种仅实现文件发送与文件接收功能的简化 FTP协议的组件化封装方案,通过对文件传输库的抽象与简化,...
  • FTP协议的实现.zip

    2020-06-22 08:03:41
    基于Java实现的FTP协议, 计算机网络 课程设计, 大作业。内附有代码,文档和PPT。 图形化界面是采用Java自带的Swing,比较简单。
  • 一个简单的代码,基本功能都已实现,可以根据自己需求修改。
  • 主要介绍了Java语言实现简单FTP软件的第一篇,针对FTP协议进行分析,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • FTP协议实现程序

    2012-11-14 09:58:24
    用C++实现了FTP协议 FTP(File Transfer Protocol, FTP)是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来...
  • HTTP与FTP协议基础.pdf

    2018-04-08 21:22:36
    http协议与 ftp协议_计算机软件及应用_IT/计算机_专业资料。http 协议与 ftp 协议什么是 http 协议 超文本传输协议(HTTP,HyperText Transfer Protocol...
  • 一个FTP协议的客户端和服务器.rar
  • 计算机网路 原创实验报告 观察 TCP 报文段并监听分析 FTP 协议,计算机网络实验课作业
  • 本节我们看看ftp协议的数据包格式,同时使用代码加以实现。首先我们现在机器上安装ftp服务器,我在自己的机器上安装了QuickFTP Server,它是我随便找来的一款Mac ftp服务器,如下图所示,我将连接端口设置为2100,...
  • 网络协议之FTP协议

    千次阅读 2020-05-10 20:42:45
    1、什么是FTP协议? FTP 是File Transfer Protocol(文件传输协议)。用于ftp客户端和ftp服务器之间进行文本、文件传输的协议。与http的短连接不同,FTP协议是一种基于socket的长连接。 2、FTP协议的原理 FTP协议...

    1、什么是FTP协议?

    FTP 是File Transfer Protocol(文件传输协议)。用于ftp客户端和ftp服务器之间进行文本、文件传输的协议。与http的短连接不同,FTP协议是一种基于socket的长连接。

    2、FTP协议的原理

    FTP协议实际上是工作在TCP/IP协议族的应用层,其传输层协议是TCP协议。可以知道,他的文件传输是可靠的。

    FTP的工作流程大致分为四步:

    1. 启动FTP。ftp的客户端启动一个socket连接到服务器。
    2. 建立控制连接。客户端和服务器通过三次握手过程(21端口),建立连接,用于传输ftp协议的命令。
    3. 建立数据连接。客户端和服务器建立数据连接(分为主动模式和被动模式),用户文件的传输。
    4. 关闭FTP。ftp客户端清空数据流,并且关闭Socket。

    3、FTP协议的工作详解。

    1、FTP协议的工作流程中为什么有控制连接和数据连接?

    FTP协议的控制链接是用于客户端向服务器发送ftp的命令用的,只要不想关闭FTP客户端,就会一直保持该连接,用户之后的命令交互。而数据连接,则是区别于控制链接之外的,用户传输文件用的socket连接,当传输文件结束时,就关闭连接。

    2、数据连接的主动模式和被动模式?

    FTP的数据连接过程中的主动模式和被动模式,是相对于FTP服务器来说都。

    主动模式:FTP客户端在客户端建立一个socket,端口为B,并通过FTP控制连接的通道发送PORT命令,告诉FTP服务器:“客户端已经对B端口进行了监听”;然后FTP服务器主动与FTP客户端的B端口建立连接。

    è¿éåå¾çæè¿°

    被动模式:FTP客户端通过FTP的控制连接的通道,发送PASV命令,告诉FTP服务器:“我要建立数据连接”;然后FTP服务器会随机启动一个端口X的监听,并在返回信息中告诉FTP客户端:“可以与X端口建立连接”;最后,FTP客户端主动与FTP服务器的X端口建立连接。

    è¿éåå¾çæè¿°

    4、FTP协议的命令大全

    FTP COMMANDS
    
             The following are the FTP commands:
    
                USER <SP> <username> <CRLF>       登录的用户名
                PASS <SP> <password> <CRLF>       密码
                ACCT <SP> <account-information> <CRLF>
                CWD  <SP> <pathname> <CRLF>       改变当前目录
                CDUP <CRLF>                       返回上级目录
                SMNT <SP> <pathname> <CRLF>
                QUIT <CRLF>                       退出
                REIN <CRLF>                       重新登录
                PORT <SP> <host-port> <CRLF>
                PASV <CRLF>                       获取数据传输端口
                TYPE <SP> <type-code> <CRLF>      设置数据交换的类型{A(SCII),E(BCDIC),I(mage),L(ocal byte size)}
                STRU <SP> <structure-code> <CRLF>
                MODE <SP> <mode-code> <CRLF>
                RETR <SP> <pathname> <CRLF>
                STOR <SP> <pathname> <CRLF>       用覆盖方式上传一个文件到服务器
                STOU <CRLF>
                APPE <SP> <pathname> <CRLF>       用追加方式上传一个文件到服务器
                ALLO <SP> <decimal-integer>
                    [<SP> R <SP> <decimal-integer>] <CRLF>
                REST <SP> <marker> <CRLF>         指定重新下在的字节数
                RNFR <SP> <pathname> <CRLF>       指定需要改名的原文件
                RNTO <SP> <pathname> <CRLF>       指定需要改名的新文件名
                ABOR <CRLF>                       取消前一指令
                DELE <SP> <pathname> <CRLF>       在服务器上删除指定文件
                RMD  <SP> <pathname> <CRLF>       在服务器上删除指定目录
                MKD  <SP> <pathname> <CRLF>       在服务器上创建目录       
                PWD  <CRLF>                       显示当前目录
                LIST [<SP> <pathname>] <CRLF>     列出当前目录下所有文件和子目录
                NLST [<SP> <pathname>] <CRLF>     列出当前目录下所有文件和子目录的名字
                SITE <SP> <string> <CRLF>
                SYST <CRLF>
                STAT [<SP> <pathname>] <CRLF>
                HELP [<SP> <string>] <CRLF>       获取帮助
                NOOP <CRLF>
    
    FTP Security commands and arguments
    
          AUTH <SP> <mechanism-name> <CRLF>
          ADAT <SP> <base64data> <CRLF>
          PROT <SP> <prot-code> <CRLF>
          PBSZ <SP> <decimal-integer> <CRLF>
          MIC <SP> <base64data> <CRLF>
          CONF <SP> <base64data> <CRLF>
          ENC <SP> <base64data> <CRLF>
    

    1.访问命令:

    USER <username>    用于指定登录的用户名,以便服务器进行身份验证。USER命令通常是控制连接建立后发出的第一个命令。
    PASS <password>    用于指定用户密码,该命令用于登录用户命令之后。
    REIN    重新初始化用户信息,该命令会终止当前 USER的传输,也会终止正在传输的数据,然后重置所有参数,并打开控制连接,以便客户端再次发出USER命令。
    QUIT    关闭与服务器之间的连接。


    2.模式设置命令

    PASV    告诉服务器,让FTP服务器在指定的数据端口进行监听,被动接受客户端的请求。是默认模式。
    PORT <address>    告诉FTP服务器,客户端监听的端口号是address,FTP服务器采用主动模式连接客户端。
    TYPE <data type>    指定要传输的数据类型,有ASCLL和二进制。
    MODE <mode>    指定传输模式,S(流),B(块),C(压缩)。

    3.文件管理命令

    CWD <directory>    用户可以在不同的目录或数据集下工作而不改变登录信息,directory一般是用户名与系统相关的文件集合。
    PWD    返回当前工作目录。
    MKD <directory>>    在指定目录下创建新目录,directory表示指定目录的字符串。
    CDUP    回到上层目录。
    RMD <directory>    删除指定目录。
    LIST <name>    返回指定路径下的子目录及文件列表,name为路径,若省略,返回当前路径下的文件列表。
    NLIST <directory>    返回指定路径下的目录列表,省略路径时,返回当前目录。
    RNFR <old path>    重新命名文件,该命令的下一条命令用RNTO指定新的文件名。
    RNTO <new path>    和RNFR命令共同完成对文件的重命名。
    DELE <filename>    删除指定路径下的文件。

    4.文件传输命令

    RETR <filename>    下载指定路径的文件。
    STOR <filename>    上传一个指定的文件,并将其存储在指定的位置,如果文件已经存在,原文件被覆盖,如果文件不存在,则创建新文件。

     

    更多内容请关注微信公众号“外里科技

    官方公众号外里科技
    运营公众号英雄赚
    微信wxid_8awklmbh1fzm22
    QQ1247408032
    开源代码https://gitee.com/B_T/beimi

     

    展开全文
  • ftp协议详解

    千次阅读 2019-03-02 11:13:20
    一、Windows下搭建FTP服务器,抓取FTP数据包 1、 2、 3、 4、 5、IP地址填写自己本机的IP地址 6、勾选了匿名就不用输入密码了 7、 8、抓包 二、linux下FTP抓包 先检查有没有安装FTP 没有...

    一、Windows下搭建FTP服务器,抓取FTP数据包

    1、

    2、

    3、

    4、

    5、IP地址填写自己本机的IP地址

    6、勾选了匿名就不用输入密码了

    7、

    8、抓包

    二、linux下FTP抓包

    先检查有没有安装FTP

    没有的话执行下面命令安装

    yum install vsftpd -y

    通过/etc/vsftpd/vsftpd.conf 文件来设置FTP

    pasv_enable=NO     (passive模式关闭)
    pasv_min_port=3000
    pasv_max_port=4000
    port_enable=YES    (active模式开启)
    connect_from_port_20=YES  (即默认情况下,FTP PORT主动模式进行数据传输时使用20端口(ftp-data)。YES使用,NO不使用。)

    配置完之后 service vsftpd restart 重启ftp服务,然后用tcpdump抓包就可以了。

    三、FTP协议

    FTP采用被动模式。

    主动模式(PORT)

    如下图所示,用户主机直接暴露在互联网中,用户连接FTP SERVER使用主动模式遵循以下一个过程:

    用户主机一个随机端口连接FTP SERVER的TCP21端口进行协商;

    用户主机告诉FTP SERVER,我的XXXX端口已经打开,你可以放心大胆的连过来;

    然后FTP SERVER就用TCP20端口连接用户主机的XXXX端口,数据传输开始。

    被动模式(PASV)

    当用户主机前端多了一道防火墙(客户机使用地址转换接入互联网),事情就变的复杂了,首先,主动模式是FTP SERVER连接客户机,防火墙肯定不干;即便乐意干客户机与服务器协商的XXXX端口也是随机端口,你让迷茫的防火墙情何以堪,这时就需要客户端软件使用被动模式主动连接防火墙,这么一来正合防火墙的胃口。

    客户端使用被动模式遵循以下过程:

    首先用户使用随机端口连接FTP SERVER的TCP 21端口进行协商;

    FTP SERVER告诉客户机:我的XXXX端口开放了,你连过来吧;

    客户机使用一个随机端口连接FTPSERVER的XXXX端口传输数据。

    设置被动模式和主动模式

    FTP协议概述

    默认端口数据连接用20号端口,控制连接用21号端口。FTP协议的底层协议是TCP协议。此外它还需要安装dns服务。

    ftp客户端命令

    命令描述
    ABOR(ABORT)此命令使服务器终止前一个FTP服务命令以及任何相关数据传输。
    ACCT(ACCOUNT)此命令的参数部分使用一个Telnet字符串来指明用户的账户。
    ADAT(AUTHENTICATION/SECURITY DATA)认证/安全数据
    ALLO为接收一个文件分配足够的磁盘空间
    APPE增加
    AUTH认证/安全机制
    CCC清除命令通道
    CDUP改变到父目录
    CONF机密性保护命令
    CWD改变工作目录
    DELE删除文件
    ENC隐私保护通道
    EPRT为服务器指定要连接的扩展地址和端口
    EPSV进入扩展被动模式
    FEAT获得服务器支持的特性列表
    HELP如果指定了命令,返回命令使用文档;否则返回一个通用帮助文档
    LANG语言协商
    LIST如果指定了文件或目录,返回其信息;否则返回当前工作目录的信息
    LPRT为服务器指定要连接的长地址和端口
    LPSV进入长被动模式
    MDTM返回指定文件的最后修改时间
    MIC完整性保护命令
    MKD创建目录
    MLSD如果目录被命名,列出目录的内容
    MLST提供命令行指定的对象的数据
    MODE设定传输模式(流、块或压缩)
    NLST返回指定目录的文件名列表
    NOOP无操作(哑包;通常用来保活)
    OPTS为特性选择选项
    PASS认证密码
    PASV进入被动模式
    PBSZ保护缓冲大小
    PORT指定服务器要连接的地址和端口
    PROT数据通道保护级别
    PWD打印工作目录,返回主机的当前目录
    QUIT断开连接
    REIN重新初始化连接
    REST从指定点重新开始传输
    RETR传输文件副本
    RMD删除目录
    RNFR从...重命名
    RNTO重命名到...
    SITE发送站点特殊命令到远端服务器
    SIZE返回文件大小
    SMNT挂载文件结构
    STAT返回当前状态
    STOR接收数据并且在服务器站点保存为文件
    STOU唯一地保存文件
    STRU设定文件传输结构
    SYST返回系统类型
    TYPE设定传输模式(ASCII/二进制).
    USER认证用户名
    XCUP改变之当前工作目录的父目录
    XMKD创建目录
    XPWD打印当前工作目录
    XRCP
    XRMD删除目录
    XRSQ
    XSEM发送,否则邮件
    XSEN发送到终端

    ftp响应码

    1xx - 肯定的初步答复
    这些状态代码指示一项操作已经成功开始,但客户端希望在继续操作新命令前得到另一个答复。 • 110 重新启动标记答复。 
    • 120 服务已就绪,在 nnn 分钟后开始。 
    • 125 数据连接已打开,正在开始传输。 
    • 150 文件状态正常,准备打开数据连接。 

    2xx - 肯定的完成答复
    一项操作已经成功完成。客户端可以执行新命令。 • 200 命令确定。 
    • 202 未执行命令,站点上的命令过多。 
    • 211 系统状态,或系统帮助答复。 
    • 212 目录状态。 
    • 213 文件状态。 
    • 214 帮助消息。 
    • 215 NAME 系统类型,其中,NAME 是 Assigned Numbers 文档中所列的正式系统名称。 
    • 220 服务就绪,可以执行新用户的请求。 
    • 221 服务关闭控制连接。如果适当,请注销。 
    • 225 数据连接打开,没有进行中的传输。 
    • 226 关闭数据连接。请求的文件操作已成功(例如,传输文件或放弃文件)。 
    • 227 进入被动模式 (h1,h2,h3,h4,p1,p2)。 
    • 230 用户已登录,继续进行。 
    • 250 请求的文件操作正确,已完成。 
    • 257 已创建“PATHNAME”。 

    3xx - 肯定的中间答复
    该命令已成功,但服务器需要更多来自客户端的信息以完成对请求的处理。 • 331 用户名正确,需要密码。 
    • 332 需要登录帐户。 
    • 350 请求的文件操作正在等待进一步的信息。 

    4xx - 瞬态否定的完成答复
    该命令不成功,但错误是暂时的。如果客户端重试命令,可能会执行成功。 • 421 服务不可用,正在关闭控制连接。如果服务确定它必须关闭,将向任何命令发送这一应答。 
    • 425 无法打开数据连接。 
    • 426 Connection closed; transfer aborted. 
    • 450 未执行请求的文件操作。文件不可用(例如,文件繁忙)。 
    • 451 请求的操作异常终止:正在处理本地错误。 
    • 452 未执行请求的操作。系统存储空间不够。 

    5xx - 永久性否定的完成答复
    该命令不成功,错误是永久性的。如果客户端重试命令,将再次出现同样的错误。 • 500 语法错误,命令无法识别。这可能包括诸如命令行太长之类的错误。 
    • 501 在参数中有语法错误。 
    • 502 未执行命令。 
    • 503 错误的命令序列。 
    • 504 未执行该参数的命令。 
    • 530 未登录。 
    • 532 存储文件需要帐户。 
    • 550 未执行请求的操作。文件不可用(例如,未找到文件,没有访问权限)。 
    • 551 请求的操作异常终止:未知的页面类型。 
    • 552 请求的文件操作异常终止:超出存储分配(对于当前目录或数据集)。 
    • 553 未执行请求的操作。不允许的文件名。 
    常见的 FTP 状态代码及其原因
    • 150 - FTP 使用两个端口:21 用于发送命令,20 用于发送数据。状态代码 150 表示服务器准备在端口 20 上打开新连接,发送一些数据。 
    • 226 - 命令在端口 20 上打开数据连接以执行操作,如传输文件。该操作成功完成,数据连接已关闭。 
    • 230 - 客户端发送正确的密码后,显示该状态代码。它表示用户已成功登录。 
    • 331 - 客户端发送用户名后,显示该状态代码。无论所提供的用户名是否为系统中的有效帐户,都将显示该状态代码。 
    • 426 - 命令打开数据连接以执行操作,但该操作已被取消,数据连接已关闭。 
    • 530 - 该状态代码表示用户无法登录,因为用户名和密码组合无效。如果使用某个用户帐户登录,可能键入错误的用户名或密码,也可能选择只允许匿名访问。如果使用匿名帐户登录,IIS 的配置可能拒绝匿名访问。 
    • 550 - 命令未被执行,因为指定的文件不可用。例如,要 GET 的文件并不存在,或试图将文件 PUT 到您没有写入权限的目录。

    ftp协议格式

    1、请求格式

    请求命令<sp>命令参数<\r\n>

    或者

    请求命令<\r\n>

    命令参数根据不同的命令可以为空。

     

    例如,list命令没有参数后面直接就是\r\n,retr命令后面要跟一个空格然后加上参数才行。

    补充:

    1、port ,pasv命令的回复计算数据传输端口

    1、通过下面报文可以看出,客户端发送pasv命令就,服务器进入被动模式,根据ftp协议,服务器会告诉客户端服务器用什么地址和端口来传输数据,由上图可以看出服务器采用的地址为192.168.1.212 ,端口的计算公式为 57 * 256 + 125 = 14717.

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

    2、ALG相关

    普通NAT实现了对UDP或TCP报文头中的的IP地址及端口转换功能,但对应用层数据载荷中的字段无能为力,在许多应用层协议中,比如多媒体协议(H.323、SIP等)、FTP、SQLNET等,TCP/UDP载荷中带有地址或者端口信息,这些内容不能被NAT进行有效的转换,就可能导致问题。而NAT ALG(Application Level Gateway,应用层网关)技术能对多通道协议进行应用层报文信息的解析和地址转换,将载荷中需要进行地址转换的IP地址和端口或者需特殊处理的字段进行相应的转换和处理,从而保证应用层通信的正确性。FTP应用就由数据连接和控制连接共同完成,而且数据连接的建立动态地由控制连接中的载荷字段信息决定,这就需要ALG来完成载荷字段信息的转换,以保证后续数据连接的正确建立。

    展开全文
  • linux c 通过FTP 协议上传文件 源码 亲测可用
  • android bluetooth FTP协议文档
  • 采用C#语言,实现通过FTP协议获取服务器的文件列表和下载文件-Using C# language, to achieve access to the server via FTP protocol file list and download files
  • FTP协议简介

    千次阅读 2020-01-05 14:50:07
    1. FTP协议概述 FTP协议的英文全称为File Transfer Protocol, 简称为FTP, 它是从一个主机向一个主机传输文件的协议。 FTP协议中客户端和服务器进行文件交互的方式如下图1所示,FTP客户端包含两部分:用户接口和...

    1. FTP协议概述

    FTP协议的英文全称为File Transfer Protocol, 简称为FTP, 它是从一个主机向一个主机传输文件的协议。
    FTP协议中客户端和服务器进行文件交互的方式如下图1所示,FTP客户端包含两部分:用户接口客户端接口。 用户接口用来和用户进行人机交互,而客户端接口则负责FTP协议相关的处理。
    图一

    2. FTP协议交互步骤

    例如一个用户想把远程FTP服务器上的某个文件下载到本地,需要如下几个流程:

    • 首先用户通过FTP用户接口输入命令,让客户端接口连接到远方的FTP服务器主机上
    • 连接成功后,FTP服务器一般要求客户端输入用户名和密码(假设不支持匿名登陆),在得到有效的用户名和密码后完成了正常登录过程,之后便可以进行文件的上传下载操作;
    • 进入相应的目录,选择特定的文件;
    • 在客户端的用户接口使用FTP命令进行文件的下载,服务器端在收到下载信息后开始进行文件的传输;
    • 文件传输完毕后,客户端和服务器关闭连接。

    3. FTP工作模式

    FTP协议的工作模式可以分为主动模式被动模式,两者的主要区别在于数据连接建立方式不同:

    主动模式: 客户端连接成功后,主动告诉服务器数据连接的端口
    被动模式:客户端连接成功后,在进行数据传输时临时连接服务器的20端口,利用此端口进行数据的传输。

    3.1 FTP控制连接

    FTP协议是基于TCP连接进行通信的,但它不同于HTTP,TELNET等协议。 他们之间最大的差别在于:FTP协议是使用两个并行的连接来传输文件的, 一个为控制连接, 另一个为数据连接
    控制连接:用来在客户端和服务器之间传输控制信息。如:登陆认证时的用户名和密码上传下载文件切换目录等,也就是说和FTP协议相关的命令都是通过控制连接在实现的;
    数据连接:主要用来实现文件的传输。如上传下载的文件内容都是通过该TCP连接上进行的。
    在这里插入图片描述
    当FTP客户端要与远程的FTP服务器端建立TCP连接的时候,客户端首先是连接FTP服务器的21端口。TCP的三次握手成功后,连接成功建立,之后客户端会将登陆使用的用户名和密码通过刚建立的控制连接发送到服务器端,服务器在验证用户名和密码合法后,客户端登陆成功,FTP控制连接会话便成功建立,至此可以进行FTP命令的交互。

    3.2 FTP主动模式

    主动模式又叫做标准模式PORT模式

    FTP主动模式下:FTP客户端作为数据连接的服务器端,而FTP服务器端作为数据连接客户端

    FTP客户端与服务器端建立完控制连接后,客户端建立数据连接的TCP服务器端并打开监听,并通过PORT命令告知FTP服务器端要连接的端口。 主动模式遵循以下一个步骤:

    • FTP 客户端连接FTP服务器端的21端口,建立控制连接
    • FTP客户端在某个端口连接TCP服务器,并进行监听FTP服务器端发送来的数据连接请求。建立完毕后,通过PORT命令通知FTP服务器端要连接的监听端口;
    • FTP服务器端通过20端口,与FTP服务器的数据连接监听端口进行连接;
    • 通过新建立的数据连接通道进行文件的传输通信;
    • 传输完毕后自动关闭数据连接。

    3.3 FTP被动模式

    被动模式又叫做PASV模式

    FTP被动模式下:FTP服务器端和FTP客户端同时为数据连接和控制连接的服务器端和客户端

    FTP客户端与服务器端建立完控制连接后,不再由客户端建立TCP服务器然后发送PORT命令告知FTP服务器,而是发送PASV命令。FTP服务器在收到此命令后会在高端口上随机选择一个未使用的端口并建立TCP服务器监听该端口,然后告知FTP客户端端口号信息。客户端在这个端口上和服务器连接数据连接并进行通信。

    • FTP 客户端连接FTP服务器端的21端口,建立控制连接
    • FTP客户端通过PASV命令通知FTP服务器端采用被动模式
    • FTP服务器端在高端口上随机选择一个端口,并建立TCP服务器监听之,然后对PASV 做出应答将端口告知客户端;
    • FTP客户端连接FTP服务器端监听的数据连接端口,并进行文件的传输。
    • 传输完毕自动关闭数据连接。

    4. FTP协议的传输方式

    FTP协议的传输方式有两种:ASCII传输模式二进制数据传输模式
    简单的说ASCII传输模式用来传输文本文件, 二进制传输模式用来传输可执行文件,程序,数据库,压缩包等。
    例如查看一个目录使用的为ASCII传输模式,因为目录是以普通的文本文件进行传输的:
    在这里插入图片描述
    在这里插入图片描述
    而下载一个文件(包括txt类型的文本文件),文件的内容是以二进制模式进行传输的
    在这里插入图片描述

    5. FTP协议交互流程

    下面只是对自己搭建的FTP服务器交互流程的一个wireshark抓包记录。

    5.1 匿名登陆

    从下图可以看出,FTP服务器不允许匿名登陆:
    在这里插入图片描述
    #### 5.2 实名登陆
    使用允许的战账户和密码进行登陆,成功登陆后可以看到根目录信息。这里根目录信息是在被动模式,通过ascii传输方式进行传输的。
    在这里插入图片描述

    5.3 获取到的目录信息

    在这里插入图片描述

    5.4 切换目录

    这里从根目录切换到到pdf目录,
    在这里插入图片描述

    5.4 下载文件

    控制连接
    在这里插入图片描述
    数据连接在这里插入图片描述

    6. FTP协议常用命令

    使用Serv-U搭建的FTP服务器,下面的图片也是从Serv-U上截的图:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 中文FTP协议

    2015-08-06 20:50:59
    中文FTP协议文档。标准文档。适合用来做FTP客户端等开发。
  • Unix上可以正常使用的FTP函数
  • java代码实现FTP协议

    千次阅读 2020-02-29 17:44:05
    前几节我们完成了ftp协议的主要讲解,同时使用wireshark抓包了解ftp数据协议包的特征,本节我们使用代码完成ftp协议,代码将模仿ftp客户端,它与服务器建立连接后,使用用户名和密码登陆服务器,然后获得服务器的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 222,621
精华内容 89,048
关键字:

ftp协议