⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftp.txt

📁 本程序为在linux下实现FTP传输文件的实现
💻 TXT
📖 第 1 页 / 共 5 页
字号:
215 系统类型回复 
220 服务就绪 
221 退出网络 
225 打开数据连接 
226 结束数据连接 
227 进入被动模式(IP 地址、ID 端口) 
230 登录因特网 
250 文件行为完成 
257 路径名建立 
331 要求密码 
332 要求帐号 
350 文件行为暂停 
420 不能打开数据连接421 服务关闭 
425 无法打开数据连接 
426 结束连接 
450 文件不可用 
451 遇到本地错误 
452 磁盘空间不足 
500 无效命令 
501 错误参数 
502 命令没有执行 
503 错误指令序列 
504 无效命令参数 
530 未登录网络 
532 存储文件需要帐号 
550 文件不可用 
551 不知道的页类型 
552 超过存储分配 
553 文件名不允许 
 
 
                                                                         RFC 959                                                     October 1985File Transfer Protocol
         CDUP - Change to Parent Directory         SMNT - Structure Mount         STOU - Store Unique         RMD - Remove Directory         MKD - Make Directory         PWD - Print Directory         SYST - System      5.3.1.  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>            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>Postel & Reynolds                                              [Page 47]                                                                        RFC 959                                                     October 1985File Transfer Protocol      5.3.2.  FTP COMMAND ARGUMENTS         The syntax of the above argument fields (using BNF notation         where applicable) is:            <username> ::= <string>            <password> ::= <string>            <account-information> ::= <string>            <string> ::= <char> | <char><string>            <char> ::= any of the 128 ASCII characters except <CR> and            <LF>            <marker> ::= <pr-string>            <pr-string> ::= <pr-char> | <pr-char><pr-string>            <pr-char> ::= printable characters, any                          ASCII code 33 through 126            <byte-size> ::= <number>            <host-port> ::= <host-number>,<port-number>            <host-number> ::= <number>,<number>,<number>,<number>            <port-number> ::= <number>,<number>            <number> ::= any decimal integer 1 through 255            <form-code> ::= N | T | C            <type-code> ::= A [<sp> <form-code>]                          | E [<sp> <form-code>]                          | I                          | L <sp> <byte-size>            <structure-code> ::= F | R | P            <mode-code> ::= S | B | C            <pathname> ::= <string>            <decimal-integer> ::= any decimal integer


http://www.dvol.cn/news/text_detail.asp?id=1428
实例解析FTP 73条指令
  首先要提到的是这里的内网是指一般我们网吧内部环境的内网,对局域网内网我没什么好说的,愿花钱的去
DNS0755好了。一个基本条件:一个公网IP,对网关有操作权限。
FTP服务器端192.168.0.100,我选用Win2K+Serv-U 4.1.0.0,很普通常用的一个组合网关是最简单的双网卡PC,
一接外网一接内网,这里假设外网IP为218.4.218.4,内网IP为192.168.0.1。

提一些概念性的东东:

    一次完整的FTP会话,包含有两个连接,一个称之为命令通道,一个称之为数据通道。命令通道用来传递一些"命令"和反馈,包括用户名密码登陆,而且众所周知是明文数据通道用来传递实际数据----列目录、文件传输,一旦需要列目录或文件传输,数据通道就会被建立起来,这里分两种方式,一是 PORT二是PASV。
    你会在因特网上找到许多FTP服务器,有的要么只支持PORT,有的要么只支持PASV,有的是因为考虑安全因素,有的是因为条件限制等等。我想把我的FTP做成PORT和PASV方式都能支持的,这样不会使客户端在连接上受到困扰,特别是一些新手,对于PORT和PASV的定义,比较容易理解的解释是针对FTP服务端而言的:

    PORT是主动模式,在建立数据通道时,服务端去连接别人;
    PASV是被动模式,在建立数据通道时,服务端被别人连接;

    建立数据通道时,用PORT模式还是PASV模式,选择权在于FTP客户端。
现在要做的,就是端口映射了,最基本的是命令通道的映射,这里选用默认的21,我想把在网关外网接口收到的对218.4.218.4端口21的连接请求,转发到192.168.0.100的21端口去。
Win2K网关
    系统自带简单的端口转发程序,就是能给我们提供连接共享的ICS/RRAS,这两种方式原理是一样的,而且都能提供这类业务的端口转发设置过程比较简单,我也不抓图了,以前有过很多。
    就是在"服务与端口"中,注册一条类似"公用网络与端口218.4.218.4:21 To 专用网络与端口192.168.0.100:21"这样格式的规则设置好后,别人就能访问你的内网FTP服务器了,但你很快会发现你的FTP服务器只支持 PORT方式,如果客户端也在内网环境则PORT方式也用不了了这是为什么呢?我们来分析一下,因为在PASV方式,服务器接到客户端的PASV命令后,会指定一个本地的随机端口来作为PASV端口,并通知客户端,然后等待客户端的连接,在通知消息里包含有FTP服务器的IP地址和打开的PASV端口,我 FTP服务器的IP地址是什么?
    现在是192.168.0.100,那么对方收到的PASV通知将是这样格式的227 Entering Passive Mode (192,168,0,100,m,n)mn是定义了PASV端口的值,计算方式是m*256+m,如果这里m是10而n是20,那么PASV端口就是 2580客户端收到这条通知后,当它想发起数据通道的连接,它会向192.168.0.100:2580这个目标地址发送SYN请求,毫无疑问将不会收到应答,因为这个IP在公共网络事实上是不存在的解决的办法是让FTP服务器发送带公网IP的PASV通知,我们的Serv-U支持这个功能。

    然后在网关上把需要打开的PASV端口跟21端口一样做映射到192.168.0.100
你也许会疑惑了,PASV是服务器动态打开的随机端口,我怎么会知道它会用哪个?怎么映射啊?没有问题,Serv-U同样可以定义每次使用固定的PASV端口,当然为了同时承接多个连接会话,你需要多设置几个成一段,然后在网关上一一对应映射到FTP服务器上去,图中设置了20个。




绝对经典的ftp命令大全

FTP命令是Internet用户使用最频繁的命令之一,不论是在DOS还是UNIX操作系统下使用FTP,都会遇到大量的FTP内部命令。 熟悉并灵活应用FTP的内部命令,可以大大方便使用者,并收到事半功倍之效。 


FTP的命令行格式为: ftp -v -d -i -n -g [主机名] ,其中 


-v 显示远程服务器的所有响应信息; 

-n 限制ftp的自动登录,即不使用; 

.n etrc文件; 

-d 使用调试方式; 

-g 取消全局文件名。 

ftp使用的内部命令如下(中括号表示可选项): 

1.![cmd[args}:在本地机中执行交互shell,exit回到ftp环境,如:!ls*.zip. 

2.$Content$nbsp;macro-ame[args]:执行宏定义macro-name. 

3.account[password]:提供登录远程系统成功后访问系统资源所需的补充口令。 

4.append local-file[remote-file]:将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。 

5.ascii:使用ascii类型传输方式。 

6.bell:每个命令执行完毕后计算机响铃一次。 

7.bin:使用二进制文件传输方式。 

8.bye:退出ftp会话过程。 

9.case:在使用mget时,将远程主机文件名中的大写转为小写字母。 

10.cd remote-dir:进入远程主机目录。 

11.cdup:进入远程主机目录的父目录。 

12.chmod mode file-name:将远程主机文件file-name的存取方式设置为mode,如: chmod 777 a.out 。 

13.close:中断与远程服务器的ftp会话(与open对应)。 

14.cr:使用asscii方式传输文件时,将回车换行转换为回行。 

15.delete remote-file:删除远程主机文件。 

16.debug[debug-value]:设置调试方式, 显示发送至远程主机的每条命令,如: deb up 3,若设为0,表示取消debug。 

17.dir[remote-dir][local-file]:显示远程主机目录,并将结果存入本地文件local-file。 

18.disconnection:同close。 

19.form format:将文件传输方式设置为format,缺省为file方式。 

20.get remote-file[local-file]: 将远程主机的文件remote-file传至本地硬盘的local-file。 

21.glob:设置mdelete,mget,mput的文件名扩展,缺省时不扩展文件名,同命令行的-g参数。 

22.hash:每传输1024字节,显示一个hash符号(#)。 

23.help[cmd]:显示ftp内部命令cmd的帮助信息,如:help get。 

24.idle[seconds]:将远程服务器的休眠计时器设为[seconds]秒。 

25.image:设置二进制传输方式(同binary)。 

26.lcd[dir]:将本地工作目录切换至dir。 

27.ls[remote-dir][local-file]:显示远程目录remote-dir, 并存入本地文件local-file。 

28.macdef macro-name:定义一个宏,遇到macdef下的空行时,宏定义结束。 

29.mdelete[remote-file]:删除远程主机文件。 

30.mdir remote-files local-file:与dir类似,但可指定多个远程文件,如: mdir *.o.*.zipoutfile 。 

31.mget remote-files:传输多个远程文件。 

32.mkdir dir-name:在远程主机中建一目录。 

33.mls remote-file local-file:同nlist,但可指定多个文件名。 

34.mode[modename]:将文件传输方式设置为modename, 缺省为stream方式 

35.modtime file-name:显示远程主机文件的最后修改时间。 

36.mput local-file:将多个文件传输至远程主机。 

37.newer file-name: 如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件。 

38.nlist[remote-dir][local-file]:显示远程主机目录的文件清单,并存入本地硬盘的local-file。 

39.nmap[inpattern outpattern]:设置文件名映\*机制, 使得文件传输时,文件中的某些字符相互转换,如:nmap $1.$2.$3[$1,$2].[$2,$3],则传输文件a1.a2.a3时,文件名变为a1,a2。该命令特别适用于远程主机为非UNIX机的情况。 

40.ntrans[inchars[outchars}:设置文件名字符的翻译机制,如ntrans1R,则文件名LLL将变为RRR。 

41.open host[port]:建立指定ftp服务器连接,可指定连接端口。 

42.passive:进入被动传输方式。 

43.prompt:设置多个文件传输时的交互提示。 

44.proxy ftp-cmd:在次要控制连接中,执行一条ftp命令, 该命令允许连接两个ftp服务器,以在两个服务器间传输文件。第一条ftp命令必须为open,以首先建立两个服务器间的连接。 

45.put local-file[remote-file]:将本地文件local-file传送至远程主机 

46.pwd:显示远程主机的当前工作目录。 

47.quit:同bye,退出ftp会话。 

48.quote arg1,arg2...:将参数逐字发至远程ftp服务器,如:quote syst. 

49.recv remote-file[local-file]:同get。 

50.reget remote-file[local-file]:类似于get,但若local-file存在,则从上次传输中断处续传。 

51.rhelp[cmd-name]:请求获得远程主机的帮助。 

52.rstatus[file-name]:若未指定文件名,则显示远程主机的状态,否则显示文件状态。 

53.rename[from][to]:更改远程主机文件名。 

54.reset:清除回答队列。 

55.restart marker:从指定的标志marker处,重新开始get或put,如:restart 130。

56.rmdir dir-name:删除远程主机目录。 

57.runique:设置文件名唯一性存储,若文件存在,则在原文件后加后缀..1,.2等。 

58.send local-file[remote-file]:同put。 

59.sendport:设置PORT命令的使用。 

60.site arg1,arg2...:将参数作为SITE命令逐字发送至远程ftp主机。 

61.size file-name:显示远程主机文件大小,如:site idle 7200。 

62.status:显示当前ftp状态。 

63.struct[struct-name]:将文件传输结构设置为struct-name, 缺省时使用stream结构。 

64.sunique:将远程主机文件名存储设置为唯一(与runique对应)。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -