精华内容
下载资源
问答
  • 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来完成载荷字段信息的转换,以保证后续数据连接的正确建立。

    展开全文
  • FTP协议详细解析

    千次阅读 2018-12-28 15:51:16
    FTP(File Transfer Protocol)协议,文件传输协议。提供交互式的访问,对传输文件的格式和类型有分类,允许文件具有存取权限。适合异构网络任意计算机的传送。 FTP有以下基本功能: 1.提供不同种类主机系统(硬,...

    FTP的工作原理

    FTP(File Transfer Protocol)协议,文件传输协议。提供交互式的访问,对传输文件的格式和类型有分类,允许文件具有存取权限。适合异构网络任意计算机的传送。

    FTP有以下基本功能
    1.提供不同种类主机系统(硬,软件体系等都可以不同)之间的文件传输能力。
    2.以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力。
    3.以匿名FTP的方式提供公用文件共享的能力。

    FTP采用C/S架构,使用TCP可靠的传输服务。一个FTP服务器进程可同时为多个客户进程提供服务,FTP服务器检查有两大部分组成:一个主进程,负责接收新的请求,另外有若干的从属进程,负责处理单个请求,工作步骤如下:
    1.打开熟知端口21(控制端口),使客户进程能够连接上,
    2.等待客户进程发链接请求。
    3.启动从属进程来处理客户进程发来的请求。主进程与从进程并发执行,从属进程对客户进程的请求处理完毕后即终止。
    4.回到等待状态,继续接收其他客户进程的请求。

    控制连接和数据连接

    FTP在工作时使用两个并行的TCP链接,一个是控制连接(端口号21),一个是数据连接(端口号20)。使用两个不同的端口号可使协议更加简单和更容易实现。
    在这里插入图片描述

    1.控制连接
    服务器在监听21好端口,等待客户连接,建立在这个端口上的了连接称为控制连接,控制连接用来传输控制信息(如连接请求,传送请求等)。并且控制信息都是以7位ASCII格式传送的。控制连接一直保持打开状态。

    2.数据连接
    服务器端控制进程在接收到传输请求之后创建“数据传送进程”和“数据连接”,数据连接用来连接客户端和服务期端的数据传送进程,数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。
    因为FTP使用了一个分离的控制连接,所以也称FTP的控制信息是带外(out-of-band)传送的。修改文件需要将此文件传送本地进行修改在进行覆盖。
    网络文件系统NFS允许进程打开一个远程文件,并在该文件的某个特定位置开始读写数据,这样,NFS可使用用户复制一个大文件中的一个很小的片段,而不是需要复制整个大文件。

    展开全文
  • FTP协议分析

    2018-01-11 16:12:55
    主要是FTP协议分析实验,通过模拟实验进行交换机配置,FenixFTP协议工作原理。
  • 本节我们看看ftp协议的数据包格式,同时使用代码加以实现。首先我们现在机器上安装ftp服务器,我在自己的机器上安装了QuickFTP Server,它是我随便找来的一款Mac ftp服务器,如下图所示,我将连接端口设置为2100,...
  • 一、FTP协议简介 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同...

    一、FTP协议简介

    FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:”下载”(Download)和”上传”(Upload)。”下载”文件就是从远程主机拷贝文件至自己的计算机上;”上传”文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

    二、FTP Server的用户分类及权限归属

    在考虑FTP服务器安全性工作的时候,第一步要考虑的就是谁可以访问FTP服务器。以下有三种客户可以访问FTP Server:
    一类是Real帐户。这类用户是指在FTP服务上拥有帐号。当这类用户登录FTP服务器的时候,其默认的主目录就是其帐号命名的目录。但是,其还可以变更到其他目录中去。如系统的主目录等等。
    第二类帐户是Guest用户。在FTP服务器中,我们往往会给不同的部门或者某个特定的用户设置一个帐户。但是,这个账户有个特点,就是其只能够访问自己的主目录。服务器通过这种方式来保障FTP服务上其他文件的安全性。拥有这类用户的帐户,只能够访问其主目录下的目录,而不得访问主目录以外的文件。
    第三类帐户是Anonymous(匿名)用户,这也是我们通常所说的匿名访问。这类用户是指在FTP服务器中没有指定帐户,但是其仍然可以进行匿名访问某些公开的资源。

    三、写一个简单的ftp协议

    下面我们写一个简单的匿名用户可以访问的ftp协议,前两种账户的功能我会在后续博客中逐一完善。在写一个ftp协议之前你需要了解以下几点:

    1. ftp作为一个服务器端和客户端相互传输文件的协议,我们在写的时候就要分别写服务器端程序server_ftp.py和客户端程序client_ftp.py。
    2. 我们要实现多个客户端可以同时访问服务器端,所以要通过多线程的方式来使得多个客户端访问,在这里我们服务器端通过socketserver来写。

    3. 最后通过将一个txt文件通过客户端上传到服务器端来验证所写代码的准确性。在下面的代码中我会详细备注每条语句完成的功能。


    客户端代码:

    import socket  #导入socket模块,用来实现socket通信
    import os      #导入os模块,主要用来调用系统命令,获得路径
    import json    #导入json模块,将字符串形式的json数据转化为字典,也可以将Python中的字典数据转化为字符串形式的json数据
    
    class FtpClient(object ):  
        def __init__(self):
            self.client=socket.socket() #声明客户端利用socket通信
    
        def help(self):     #写一个打印一些指令的帮助信息函数,
            msg='''
            ls
            pwd
            cd../..
            get filename
            put filename
            '''
    
        def connect(self,ip,port):   #定义一个连接服务器函数,调用client.connect()方法,连接服务器端
            self.client.connect((ip,port))
    
    
        def interactive(self):  #定义一个与服务器交互的函数
            while True:
                cmd=input('>>').strip() #用户在客户端输入指令,strip()去掉用户输入指令的空格和换行符
                if len(cmd)==0:continue
                cmd_str=cmd.split()[0]  #拆分指令的第一个字符赋给cmd_str,永远都是指令help()
                #反射 
                if hasattr(self,'cmd_%s'%cmd_str ): #hasattr() 函数用于判断对象是否包含对应的属性
                    func=getattr(self,'cmd_%s'%cmd_str)  # 函数用于返回一个对象属性值
                    func(cmd)  #取到help中的指令 ls,pwd,get ,put。然后传入后面的 filename,这样后面的函数名字就叫做cmd_put  cmd_get...
                else:
                    self.help()
    
    
        def cmd_put(self,*args): #写一个通过客户端上传文件的函数,*args为了接收更多数据
            #上传一个文件
            cmd_split= args[0].split() #将传入的第一个参数赋值给cmd_split,变为列表
            if len(cmd_split)>1:  #这里大于1 因为最后我们输入put filename.txt进行验证,由于存在put所以大于1
                filename=cmd_split[1]
                if os.path.isfile(filename): #判断要上传的文件是否存在
                    filesize=os.stat(filename).st_size  #获取文件大小
    
                    #发送文件大小,文件名,进行的操作(这里我们默认put上传数据)给服务器,所以写成json字典形式,需要扩展直接在这加
                    msg_dic={
                        'action':'put',
                        'filename':filename,  
                        'size':filesize
                    }
                    self.client.send(json.dumps(msg_dic).encode('utf-8'))#发给服务器端,json.dumps()字典转换为json格式
                    server_response=self.client.recv(1024) #等待服务器响应
                    f=open(filename ,'rb') #打开文件,发送给服务器
                    for i in f:
                        self.client.send(i)
                    else:
                        print('文件传输完毕')
                        f.close()
                else:
                    print(filename ,'is not exist')
    
        def cmd_get(self):  #定义一个从服务器下载文件函数,这里和上面大同小异,先不写
            pass
    
    ftp=FtpClient() #实例化
    ftp.connect('localhost',9999)  #连接服务器端口
    ftp.interactive()  #调用和服务器交互函数

    服务器端代码

    import socketserver  #利用socketserver来写
    import json ,os
    #自己写一个请求处理类,继承BaseRequestHandler
    class MyTCPHandler(socketserver.BaseRequestHandler):
    
        def put(self,*args):
            #接收客户端文件
            cmd_dic=args[0] 
            filename=cmd_dic['filename'] #获取文件名
            filesize=cmd_dic['size']     #获取文件大小
            if os.path.isfile(filename ):  #如果已经存在上传文件,新建一个文件
                f=open(filename+'.new','wb')
            else:
                #如果不存在 给客户端响应上传
                f=open(filename ,'wb')
            self.request.send(b'200 ok')  #响应客户端
            received_size=0
            while received_size < filesize :   #循环接收文件
                data=self.request.recv(1024)
                f.write(data)
                received_size +=len(data)
            else:
                print('file[%s] has overload..'%filename )  #文件传输完成
    
    
        #跟客户端的交互在handle中
        def handle(self):
            while True :
                try:
                    self.data=self.request.recv(1024).strip()
                    #format格式化 打印客户端ip地址
                    print('{}wrote:'.format(self.client_address[0]))  
                    print(self.data)
    
                    cmd_dic=json.loads(self.data.decode())#json字符串转为字典
                    action=cmd_dic['action']   #获取进行的操作 这里默认是put
                    #反射
                    if hasattr(self,action ):  #判断put操作是否存在
                        func=getattr(self ,action )
                        func(cmd_dic)
    
                except ConnectionResetError as e:
                    print(e)
                    break
    
    if __name__ =='__main__':
        HOST,POST='localhost',9999
        # 实例化TCPServer
        server=socketserver.ThreadingTCPServer((HOST,POST),MyTCPHandler )  #ThreadingTCPServer:多线程,多个客户端可以请求
        #这样此服务器就可以让多个客户端连接 
        #处理多个请求
        server.serve_forever()
    

    运行结果

    我们把需要测试的文件lianxiren.txt放在客户端目录下,先运行服务器,在运行客户端,并且输入put lianxiren.txt 可以发现文件传输完成,在服务器的文件夹中会发现传输过去的txt文件。
    这里写图片描述

    展开全文
  • FTP协议的实现源代码

    2018-01-05 10:57:18
    有关于ftp协议下载等功能的客户端此客户端利用mfc来实现漂亮的用户界面
  • 湘潭大学 网络协议TCP/IP实验四FTP 协议分析实验报告,仅供参考
  • JAVA实现FTP协议文件上传
  • 一张图解释FTP协议

    2017-01-18 16:16:44
  • FTP协议实现程序

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

    千次阅读 2019-07-14 19:28:07
    用C语言实现FTP协议客户端的主要功能 开源一款ftp软件——filezilla SFTP和FTP  在Linux环境下,一般通过第三方的SSH工具连接到Linux,当需要传输文件到Linux服务器当中,很多人习惯用ft...
  • HTTP与FTP协议基础.pdf

    2018-04-08 21:22:36
    http协议与 ftp协议_计算机软件及应用_IT/计算机_专业资料。http 协议与 ftp 协议什么是 http 协议 超文本传输协议(HTTP,HyperText Transfer Protocol...
  • android bluetooth FTP协议文档
  • 中文FTP协议

    2015-08-06 20:50:59
    中文FTP协议文档。标准文档。适合用来做FTP客户端等开发。
  • FTP协议简介

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

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

    千次阅读 2019-06-30 13:00:43
    文件传输协议有基于TCP的FTP和基于UDP的简单文件传输协议TFTP,它们都是文件共享协议中的一大类,即复制整个文件,其特点是:若要存取一个文件,就必须先获得一个本地的文件副本。如果要修改文件,只能对文件的副本...
  • 网络协议之FTP协议

    千次阅读 2020-05-10 20:42:45
    1、什么是FTP协议? FTP 是File Transfer Protocol(文件传输协议)。用于ftp客户端和ftp服务器之间进行文本、文件传输的协议。与http的短连接不同,FTP协议是一种基于socket的长连接。 2、FTP协议的原理 FTP协议...
  • 主要介绍了基于python实现FTP文件上传与下载操作(ftp&sftp协议),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • ftp协议及简单配置

    千次阅读 2019-08-05 22:10:01
    古老到他的安全性在现在已经不能保证,在互联网刚刚兴起的时候,为了实现不同主机间的文件传输,由此ftp服务应运而生,在那时,网络运营还是一个问题,所以ftp协议就致力于传输文件,以至于它没有一丝丝防范性,安全...
  • ftp协议详解ftp协议详解ftp协议详解ftp协议详解ftp协议详解ftp协议详解ftp协议详解ftp协议详解ftp协议详解
  • Unix上可以正常使用的FTP函数
  • ftp协议及常用命令

    千次阅读 2020-01-14 13:57:17
    FTP协议 FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP...
  • Ftp协议分析实验报告

    2013-04-17 13:20:25
    计算机网络实验课第一次实验报告,Ftp协议分析实验报告
  • FTP底层通过TCP实现。 FTP采用两个TCP连接,一个作为命令通道(端口号一般是21,用于登陆,删除文件,改变目录操作),一个作为数据通道(用于目录列出,上传下载文件)。 以下实验,通过FileZilla Server和TCP...
  • 深入理解FTP协议

    2019-03-22 10:24:27
    文件传输协议FTP(File Transfer Protocol)是因特网中使用最广泛的文件传输协议,文件传输协议有基于TCP的FTP和基于UDP的简单文件传输协议TFTP,它们都是文件共享协议中的一大类。本文档带你认识FTP的工作原理,以及...
  • FTP协议报文详解及FTP穿越NAT

    万次阅读 多人点赞 2019-04-04 15:16:36
    2、FTP协议简介 3、FTP工作原理 3.1、主动连接(PORT) 3.2、被动连接(PASV) 3.3、FTP主动模式穿越SNAT原理 3.4、FTP被动模式穿越DNAT原理 4、问题思考 4.1、主动模式和被动模式是谁决定的 4.2、主动模式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 238,348
精华内容 95,339
关键字:

ftp协议格式