关于FTP的学习

原创 2007年10月15日 15:01:00

基础知识:
FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。

FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。

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

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

从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂xing就在于此。

因为PORT方式在传送数据时,由服务器主动连接客户端,所以,如果客户端在防火墙或NAT网关后面,用PORT方式将无法与Internet上的FTP服务器传送文件。这种情况需要使用PASV方式。几乎所有的ftp客户端软件都支持这两种方式。特殊的典型例子是ie,ie默认是用PORT方式的。如果要在ie里启用PASV方式,请打开ie,在菜单里选择:工具 -> Internet选项 -> 高级,在“使用被动ftp”前面打上钩(需要IE6.0以上才支持)。

PASV方式设置:

  所有FTP服务器软件都支持PORT方式。大部分FTP服务器软件PORT方式和PASV方式都支持。Serv-U默认配置下两种方式都支持。如果使用PASV方式,请打开Serv-U,进入 Domains -> (你的域名) -> Settings -> Advanced -> 把“Allow passive mode data transfers”前面的钩选中。

PASV方式与防火墙的问题:

  安装了防火墙后,需要在防火墙上打开一些端口给FTP的PASV模式使用,否则使用PASV模式无法登录。在Serv-U的Local Server -> Settings -> Advanced -> PASV port range里,填入给PASV模式使用的本地端口范围,如60000-60020。如果使用Win 9x/Me,请把端口范围限制在5个以内,如果使用Win NT/2000/XP/2003,请把端口范围限制在20个以内。之后,再在防火墙里打开这个范围的端口就可以了

FTP主动模式与被动模式的解决与原理

要用主动模式来下载,请您把下载工具的被动模式(PASV)都不要打勾,用主动模式来下载就OK了,如果在出错,那就被动主动相互转换一下

常见的FTP客户端软件的PASV方式的关闭方法   

大部分FTP客户端默认使用PASV方式,PASV模式的意式是被动模式。 在大部分FTP客户端的设置里,常见到的字眼都是“PASV”或“被动模式”。

IE: 工具 -> Internet选项 -> 高级 -> “使用被动FTP”(需要IE6.0以上才支持)。

CuteFTP: Edit -> Setting -> Connection -> Firewall -> “PASV Mode”
或 File -> Site Manager,在左边选中站点 -> Edit -> “Use PASV mode”

FlashGet: 工具 -> 选项 -> 代理服务器 -> 直接连接 -> 编辑 -> “PASV模式”

FlashFXP: 选项 -> 参数选择 -> 代理/防火墙/标识 -> “使用被动模式”
或 站点管理 -> 对应站点 -> 选项 -> “使用被动模式”
或 快速连接 -> 切换 -> “使用被动模式”

LeapFTP: Option ->Preferences -> General->Proxy->Use Pasv Mode

FTP常见错误

-----------------------------------
110 Restart marker reply. In this case, the text is exact and not left to
the particular implementation; it must read: MARK yyyy = mmmm where yyyy is
User-process data stream marker, and mmmm server s equivalent marker (note
the spaces between markers and "=").
重新启动标志回应。这种情况下,信息是精确的并且不用特别的处理;可以这样看:标记 yyyy = mmm 中 yyyy是 用户进程数据流标记,mmmm是服务器端相应的标记(注意在标记和等号间的空格)
-----------------------------------
120 Service ready in nnn minutes.
服务在NNN时间内可用
-----------------------------------
125 Data connection already open; transfer starting.
数据连接已经打开,开始传送数据.
-----------------------------------
150 File status okay; about to open data connection.
文件状态正确,正在打开数据连接.
-----------------------------------
200 Command okay.
命令执行正常结束.
-----------------------------------
202 Command not implemented, superfluous at this site.
命令未被执行,此站点不支持此命令.
-----------------------------------
211 System status, or system help reply.
系统状态或系统帮助信息回应.
-----------------------------------
212 Directory status.
目录状态信息.
-----------------------------------
213 File status.
文件状态信息.
-----------------------------------
214 Help message.On how to use the server or the meaning of a particular
non-standard command. This reply is useful only to the human user. 帮助信息
关于如何使用本服务器或特殊的非标准命令。此回复只对人有用。
-----------------------------------
215 NAME system type. Where NAME is an official system name from the list
in the Assigned Numbers document.
NAME系统类型。
-----------------------------------
220 Service ready for new user.
新连接的用户的服务已就绪
-----------------------------------
221 Service closing control connection.
控制连接关闭
-----------------------------------
225 Data connection open; no transfer in progress.
数据连接已打开,没有进行中的数据传送
-----------------------------------
226 Closing data connection. Requested file action successful (for example,
file transfer or file abort).
正在关闭数据连接。请求文件动作成功结束(例如,文件传送或终止)
-----------------------------------
227 Entering Passive Mode (h1,h2,h3,h4,p1,p2).
进入被动模式
-----------------------------------
230 User logged in, proceed. Logged out if appropriate.
用户已登入。 如果不需要可以登出。
-----------------------------------
250 Requested file action okay, completed.
被请求文件操作成功完成
-----------------------------------
257 "PATHNAME" created.
路径已建立
-----------------------------------
331 User name okay, need password.
用户名存在,需要输入密码
-----------------------------------
332 Need account for login.
需要登陆的账户
-----------------------------------
350 Requested file action pending further information
对被请求文件的操作需要进一步更多的信息
-----------------------------------
421 Service not available, closing control connection.This may be a reply
to any command if the service knows it must shut down.
服务不可用,控制连接关闭。这可能是对任何命令的回应,如果服务认为它必须关闭
421 Too many users - please try again later.
太多用户,那就过会再连
-----------------------------------
425 Can t open data connection.
打开数据连接失败
-----------------------------------
426 Connection closed; transfer aborted.
连接关闭,传送中止。
-----------------------------------
450 Requested file action not taken.
对被请求文件的操作未被执行
-----------------------------------
451 Requested action aborted. Local error in processing.
请求的操作中止。处理中发生本地错误。
-----------------------------------
452 Requested action not taken. Insufficient storage space in system.File
unavailable (e.g., file busy).
请求的操作没有被执行。 系统存储空间不足。 文件不可用
-----------------------------------
500 Syntax error, command unrecognized. This may include errors such as
command line too long.
语法错误,不可识别的命令。 这可能是命令行过长。
-----------------------------------
501 Syntax error in parameters or arguments.
参数错误导致的语法错误
-----------------------------------
502 Command not implemented.
命令未被执行
-----------------------------------
503 Bad sequence of commands.
命令的次序错误。
-----------------------------------
504 Command not implemented for that parameter.
由于参数错误,命令未被执行
-----------------------------------
530 Not logged in.
一般来说是密码错误。

530 Sorry, no ANONYMOUS access allowed.
这个就是不许匿名登录

530 Not logged in, unauthorized IP address
你的IP不在站长允许访问的IP范围内,只有和站长联系,让他把你的IP网段加入Allow Access列表里
[如果是流量下载,那么就是你的IP设置不正确,进入流量页面重新设置]

530 Not logged in, only one(也有可能是two or three) session from same IP allowed at a time.
每个IP只能开一个(也有可能是two or three) 下载,就不要用多线程啦,小心Ban了你
-----------------------------------
532 Need account for storing files.
存储文件需要账户信息
-----------------------------------
550 Requested action not taken. File unavailable (e.g., file not found, no
access).
请求操作未被执行,文件不可用。
-----------------------------------
551 Requested action aborted. Page type unknown.
请求操作中止,页面类型未知
-----------------------------------
552 Requested file action aborted. Exceeded storage allocation (for current
directory or dataset).
对请求文件的操作中止。 超出存储分配
-----------------------------------
553 Requested action not taken. File name not allowed
请求操作未被执行。 文件名不允许
-----------------------------------
这种错误跟http协议类似,大致是:
2开头--成功
3开头--权限问题
4开头--文件问题
5开头--服务器问题

 

FTP学习报告及详细流程经历 一

一FTP搭建与使用 小记:尝试通过记录的方式提高技术能力,促进知识的巩固和记忆以及灵活运用。所以诞生了这一篇试水的博文。总之先尝试着写吧。 ...
  • a910118230303
  • a910118230303
  • 2016年09月27日 09:43
  • 485

MongoDB学习1_千万别用MongoDB?真的吗?

某人发了一篇 Don’t use MongoDB 的血泪控诉,我把原文翻译如下,你可以看看。不过,我想我们还要去看看10gen CTO 的对此事的回复,我们还要去在 Reddit 上看看大家的说法...
  • wang_zhenwei
  • wang_zhenwei
  • 2015年08月31日 10:12
  • 748

Linux下FTP服务器的实现(仿vsftpd)

继上一篇博文实现Linux下的shell后,我们进一步利用网络编程和系统编程的知识实现Linux下的FTP服务器。我们以vsftpd为原型并实现了其大部分的功能。由于篇幅和时间的关系,这里不再一一赘述...
  • NK_test
  • NK_test
  • 2016年01月24日 22:09
  • 5733

ftp服务器端协议分析以及java版本实现

前一段时间,由于项目需要,两个模块之间能够进行文件的传输,当然开始想到的都是利用java io流进行传输,但考虑到通用性,最后决定利用ftp进行传输,网上找了一下,apache有一个开源的java版本...
  • MINEZHANGHAO
  • MINEZHANGHAO
  • 2013年11月06日 16:58
  • 3346

FTP主动与被动传输引发的协议那些事

今天面试官问了一些协议的基本知识,FTP的传输模式没答上来,特总结一下。 1.什么是FTP协议; FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的...
  • basycia
  • basycia
  • 2016年07月26日 22:04
  • 4361

如何用FTP软件上传网站文件

 1、ftp不是用来进入数据库,ftp用户名和密码是用来上传网站用的(比如,你的某个页面做了修改,这个时候就要用到ftp来上传),那就要有ftp,你可以在网上下载,leapftp flash...
  • Andrewniu
  • Andrewniu
  • 2017年01月09日 09:30
  • 2771

Linux运维笔记----部署FTP服务器

部署FTP服务器1.部署FTP服务器FTP ( 文件传输协议 ) 是 INTERNET 上仍常用的最老的网络协议之一 , 它为系统提供了通过网络与远程服务器进行传输的简单方法• 在 RED HAT E...
  • men_wen
  • men_wen
  • 2016年09月10日 21:02
  • 1932

教你如何搭建自己的FTP服务器

FTP服务器是什么?如何搭建?内网用户怎么让外网访问自己的FTP服务器?本文就将针对这几个方面来给大家介绍一个FTP服务器的搭建方法,并且支持外网用户访问。首先什么是FTP服务器?FTP服务器(Fil...
  • oray2013
  • oray2013
  • 2016年07月25日 10:29
  • 25848

FTP与SSH的区别

1、SSH为建立在应用层和传输层基础上的安全协议,SSH采用面向连接的TCP协议传输 应用22号端口,安全系数较高。 2、FTP是File Transfer Protocol(文件传输协议)的英文...
  • yuxikuo_1
  • yuxikuo_1
  • 2014年12月11日 17:05
  • 4793

windows下的FTP命令

假设要连接的FTP信息如下: FTP Server: FtpTest User: tester Password: 123123 打开Windows的开始菜单,执行“运行”命令,在对...
  • u012467492
  • u012467492
  • 2016年12月16日 14:44
  • 9182
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于FTP的学习
举报原因:
原因补充:

(最多只允许输入30个字)