当前位置:文档之家› 文件传输协议

文件传输协议

文件传输协议

FTP(File Transfer Protocol),是文件传输协议的简称。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。

FTP(File Transfer Protocol)

FTP的作用

正如其名所示:FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。

FTP工作原理

拿下传文件为例,当你启动FTP从远程计算机拷贝文件时,你事实上启动了两个程序:一个本地机上的FTP客户程序:它向FTP服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的FTP服务器程序,它响应你的请求把你指定的文件传送到你的计算机中。FTP采用“客户机/服务器”方式,用户端要在自己的本地计算机上安装FTP客户程序。FTP客户程序有字符界面和图形界面两种。字符界面的FTP 的命令复杂、繁多。图形界面的FTP客户程序,操作上要简洁方便的多。

简单地说,支持FTP协议的服务器就是FTP服务器,下面介绍一下什么是FTP 协议。(文件传输协议)

一般来说,用户联网的首要目的就是实现信息共享,文件传输是信息共享非常重要的一个内容之一。Internet上早期实现传输文件,并不是一件容易的事,我们知道Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,据统计连接在Internet上的计算机已有上千万台,而这些计算机可能运行不同的操作系统,有运行Unix的服务器,也有运行Dos、Windows的PC机和运行MacOS的苹果机等等,而各种操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。

与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的

一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。

在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上载"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上载"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上载(下载)文件。

使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可上载或下载文件。也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送文件。这种情况违背了Internet 的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。匿名FTP就是为解决这个问题而产生的。

匿名FTP是这样一种机制,用户可通过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。系统管理员建立了一个特殊的用户ID,名为anonymous, Internet上的任何人在任何地方都可使用该用户ID。

通过FTP程序连接匿名FTP主机的方式同连接普通FTP主机的方式差不多,只是在要求提供用户标识ID时必须输入anonymous,该用户ID的口令可以是任意的字符串。习惯上,用自己的E-mail地址作为口令,使系统维护程序能够记录下来谁在存取这些文件。

值得注意的是,匿名FTP不适用于所有Internet主机,它只适用于那些提供了这项服务的主机。

当远程主机提供匿名FTP服务时,会指定某些目录向公众开放,允许匿名存取。系统中的其余目录则处于隐匿状态。作为一种安全措施,大多数匿名FTP主机都允许用户从其下载文件,而不允许用户向其上载文件,也就是说,用户可将匿名FTP

主机上的所有文件全部拷贝到自己的机器上,但不能将自己机器上的任何一个文件拷贝至匿名FTP主机上。即使有些匿名FTP主机确实允许用户上载文件,用户也只能将文件上载至某一指定上载目录中。随后,系统管理员会去检查这些文件,他会将这些文件移至另一个公共下载目录中,供其他用户下载,利用这种方式,远程主机的用户得到了保护,避免了有人上载有问题的文件,如带病毒的文件。

作为一个Internet用户,可通过FTP在任何两台Internet主机之间拷贝文件。但是,实际上大多数人只有一个Internet帐户,FTP主要用于下载公共文件,例如共享软件、各公司技术支持文件等。Internet上有成千上万台匿名FTP主机,这些主机上存放着数不清的文件,供用户免费拷贝。实际上,几乎所有类型的信息,所有类型的计算机程序都可以在Internet上找到。这是Internet吸引我们的重要原因之一。

匿名FTP使用户有机会存取到世界上最大的信息库,这个信息库是日积月累起来的,并且还在不断增长,永不关闭,涉及到几乎所有主题。而且,这一切是免费的。

匿名FTP是Internet网上发布软件的常用方法。Internet之所以能延续到今天,是因为人们使用通过标准协议提供标准服务的程序。像这样的程序,有许多就是通过匿名FTP发布的,任何人都可以存取它们。

Internet中的有数目巨大的匿名FTP主机以及更多的文件,那么到底怎样才能知道某一特定文件位于哪个匿名FTP主机上的那个目录中呢?这正是Archie服务器所要完成的工作。Archie将自动在FTP主机中进行搜索,构造一个包含全部文件目录信息的数据库,使你可以直接找到所需文件的位置信息。

通过ftp传输文件的一般步骤

需要进行远程文件传输的计算机必须安装和运行ftp客户程序。在windows操作系统的安装过程中,通常都安装了tcp/ip协议软件,其中就包含了ftp客户程序。但是该程序是字符界面而不是图形界面,这就必须以命令提示符的方式进行操作,很不方便。

启动ftp客户程序工作的另一途径是使用ie浏览器,用户只需要在ie地址栏中输入如下格式的url地址:ftp://[用户名:口令@]ftp服务器域名[:端口号] (在CMD命令行下也可以用上述方法连接,通过put命令和get命令达到上传和下载的目的,通过ls命令列出目录,除了上述方法外还可以在cmd下输入ftp回车,然后输入open IP来建立一个连接,此方法还适用于linux下连接ftp服务器) 通过ie浏览器启动ftp的方法尽管可以使用,但是速度较慢,还会将密码暴露在ie浏览器中而不安全。因此一般都安装并运行专门的ftp客户程序。

1.在本地电脑上登陆到国际互联网.

2.搜索有文件共享主机或者个人电脑(一般有专门的FTP服务器网站上公布的,上面有进入该主机或个人电脑的名称,口令和路径).

3.当与远程主机或者对方的个人电脑建立连接后,用对方提供的用户名和口令登

陆到该主机或对方的个人电脑.

4.在远程主机或对方的个人电脑登陆成功后,就可以上传你想跟别人分享的东东

或者下载别人授权共享的东东(这里的东东是指能放到电脑里去又能在显示屏上看到的东东).

5.完成工作后关闭FTP下载软件,切断连接.

为了实现文件传输,用户还要运行专门的文件传输程序,比如网际快车就有这方面的功能,其它还有很多专门的FTP传输软件,FlashFxp为其中的杰出软件。有兴趣的网友可以试试其他的软件,如LeapFTP总归各有各的特色.

FTP协议

TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。FTP 协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp协议对话,并且能访问Internet,你可以用ftp命令来传输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。

FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。

1.ASCII传输方式:假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。

但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。

2.二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh 以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。

如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。

5. FTP的工作方式

FTP支持两种模式,一种方式叫做Standard (也就是PORT方式,主动方式),一种是Passive (也就是PASV,被动方式)。Standard模式FTP的客户端发送PORT 命令到FTP服务器。Passive模式FTP的客户端发送PASV命令到FTP Server。

下面介绍一个这两种方式的工作原理:

Port模式FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。

Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。

很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP 服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。

FTP软件可以更好的帮助你管理FTP目录提供更系统的工具

FTP工具推荐使用cuteftp

/soft/3065.htm

主动和被动模式

FTP有两种使用模式:主动和被动。主动模式要求客户端和服务器端同时打开并且监听一个端口以建立连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题。

一个主动模式的FTP连接建立要遵循以下步骤:

客户端打开一个随机的端口(端口号大于1024,在这里,我们称它为x),同时一个FTP进程连接至服务器的21号命令端口。此时,源端口为随机端口x,在客户端,远程端口为21,在服务器。

客户端开始监听端口(x+1),同时向服务器发送一个端口命令(通过服务器的21号命令端口),此命令告诉服务器客户端正在监听的端口号并且已准备好从此端口接收数据。这个端口就是我们所知的数据端口。

服务器打开20号源端口并且建立和客户端数据端口的连接。此时,源端口为20,远程数据端口为(x+1)。

客户端通过本地的数据端口建立一个和服务器20号端口的连接,然后向服务器发送一个应答,告诉服务器它已经建立好了一个连接。

FTP和网页浏览器

大多数最新的网页浏览器和文件管理器都能和FTP服务器建立连接。这使得在FTP上通过一个接口就可以操控远程文件,如同操控本地文件一样。这个功能通过给定一个FTP的URL实现,形如ftp://<服务器地址>(例如,ftp:// )。是否提供密码是可选择的,如果有密码,则形

如:@ftp://:@。大部分网页浏览器要求使用被动FTP模式,然而并不是所有的FTP服务器都支持被动模式。[1][2]

ftp 命令

1、FTP服务器的登陆

匿名用户:FTP 口令:FTP

用户:ANONYMOUS 口令:任何电子邮件

2、显示文件信息:DIR/IS

3、下载文件:GET 文件名(下载到当前目录)

4、上传文件:PUT 文件名

5、多文件下载:MGET

6、多文件上传:MPUT

7、退出:BYE

8、帮助:HELP

[编辑本段]

用途

在本地主机和远程主机之间传送文件。

语法

ftp [ -d] [ -g ] [ -i ] [ -n ] [ -v] [ -f ] [ -k realm] [-q[-C]][ HostName [ Port ] ]

描述

ftp 命令使用“文件传送协议” (FTP) 在本地和远程主机或远程主机之间传送文件。

FTP 协议允许在使用不同文件系统的主机之间进行数据传送。尽管协议在传送

数据中提供了很高的灵活度,它仍然不会尝试保留特定于某个文件系统的文件属性(如文件保护模式或修改时间)。而且,FTP 协议为文件系统的整体结构做了少许

假设,且不提供或不允许诸如循环地复制子目录这样的函数。

请注意:如果您正在系统之间传送文件,且需要保存文件属性或递归地复制子目录,请使用rcp 命令。

发布子命令

您可以在ftp> 提示符中输入子命令,执行类似这样的任务:列出远程目录、更改当前的本地和远程目录、在单一请求中传送多个文件、创建和除去目录,以及转义到本地shell 执行shell 命令。请参考子命令章节取得每个子命令的描述信息。

如果您执行ftp 命令而不为远程主机指定HostName 参数,ftp 命令会立即显

示ftp> 提示符,等待ftp 子命令。要连接远程主机,请执行open 子命令。当ftp 命令连接到远程主机时,ftp 命令在再次显示提示符ftp> 之前会提示输入登录名和

密码。如果远程主机中未定义登录名的密码,ftp 命令将不成功。

ftp 命令解释器(处理在ftp> 提示符处输入的全部子命令),会提供大多数文

件传送程序没有的性能,如:

* 对ftp 子命令处理文件名参数

* 将一组子命令集中成一个单一的子命令宏

* 从$HOME/.netrc 文件中装入宏

这些性能会帮助您简化重复的任务,并允许您在unattended 方式使用ftp 命令。

命令解释器将按照下列规则处理文件名参数:

* 如果为此参数指定了-(连字符),则标准输入(stdin) 将用于读取操作,而标准输出用于写入操作。

* 如果未应用前面的检查,且文件名扩展已启用(请参考-g 标志或glob 子命令),则解释器将根据 C shell 的规则扩展文件名。启用了文件名匹配替换以及在期待单一文件名的子命令中使用了模式匹配字符时,结果可能与期待的不一样。

例如,append 和put 子命令将拓展文件名,然后仅使用所生成第一个文件名。其它ftp 子命令,如cd、delete, get、mkdir、rename 和rmdir 不会执行文件名拓展,并从字面上接受模式匹配字符。

* 对于get、put、mget 和mput 子命令,解释器有能力在不同的本地和远程文件名语法样式之间进行翻译和映射(请参考case、ntrans 和nmap 子命令),并且在本地文件名不是唯一的情况下有修改它的能力(请参考runique 子命令)。另外,如果远程文件名不是唯一的,则ftp 命令可将指令发送到远程ftpd 服务器,以修改远程的文件名(请参考sunique 子命令)。

* 使用双引号(" ") 指定包含空字符的参数。

请注意:ftp 命令解释器不支持管道。也无需支持所有多字节字符文件名。

要在互动地运行的时候结束ftp 会话,请使用quit 或bye 子命令或ftp> 提示符处的End of File (Ctrl-D) 按键顺序。要在文件传送未完成之前结束它,请按中断按键顺序。其缺省“中断键”序列是Ctrl-C。stty 指令能用于重新定义该键系列。

ftp 命令在正常情况下会立即暂停正在发送(从本地主机到远端主机)的传输。ftp 命令通过将FTP ABOR 指令发送到远程FTP 服务器,来暂停正在接收的传输(从远程主机到本地主机),并废弃所有传入的文件传送包(直到远程服务器停止发送它们为止)。如果远程服务器不支持ABOR 指令,在远程服务器未发送所有请求的文件之前,ftp 命令不会显示ftp> 提示符。另外,如果远程服务器执行未期望的操作时,可能需要结束本地ftp 进程。

安全性和自动登录

如果“标准的”是当前认证方法:

ftp 命令也会通过将密码发送到远程主机来处理安全性,并许可自动登录、文件传送和注销操作。

如果您执行ftp 命令并指定远程主机的主机名(HostName), ftp 命令会尝试建立一个对于指定主机的连接。如果ftp 命令连接成功,ftp 命令会在当前目录或主目录中搜索本地的$HOME/.netrc 文件。如果文件存在,ftp 命令会在文件中搜索启动登录过程的入口,在命令宏定义中搜索远程主机。如果$HOME/.netrc 文件或自动登录项不存在,或是系统已使用securetcpip 命令保护起来,ftp 命令会提示用户输入用户名和密码。不论命令行中是否指定HostName 参数,该指令都会显示此提示。

请注意:排队系统不支持多字节主机名。

如果ftp 命令找到指定主机的$HOME/.netrc 自动登录项,ftp 会试图使用该登录项中的信息登录远程主机。ftp 命令也会载入任何在登录项中定义的命令宏。在某些情况(例如,所需的密码在自动登录项中没有列出来),ftp 命令会在显示ftp> 提示符之前提示输入密码。

一旦ftp 命令完成自动登录,如果宏是在自动登录项中定义的,ftp 命令就会执行init 宏。如果init 宏不存在或未包含quit 或bye 子命令,ftp 命令将显示ftp> 提示符并等待子命令。

请注意:在提示符或在$HOME/.netrc 文件中指定的远程主机名必须存在,并拥有在远程主机中定义的密码。否则,ftp 指令无效。

如果Kerberos 5 是当前的认证方法:

ftp 命令会按在IETF 草稿文挡"draft-ietf-cat-ftpsec-09.txt" 定义的那样将此

拓展用于ftp 规范。FTP 安全性扩展将使用“Generic Security Service API (GSSAPI)”安全机制来实现。GSSAPI 提供对于基础的安全性和通信机制来说是独立的服务。GSSAPI 是在rfc 1508 和1509 中定义的。

ftp 命令将使用AUTH 和ADAT 命令验证ftpd 守护进程。如果两者都支持Kerberos 认证,则它们会使用本地用户DCE 凭证验证远程系统上的用户。如果这样失败了,且两个系统中都配置了“标准的”认证,则会使用上述的过程。

HostName 参数是传送文件的目的地主机名称。可选的Port 参数指定了端口的标识符,通过此端口进行传输。(/etc/services 文件指定了缺省端口。) 标志

-C 允许用户指定:通过send_file 命令发出的文件必须在网络高速缓冲区(NBC)中经过缓存处理。此标志必须在指定了-q 标志的情况下使用。只有当文件在无保护的情况下以二进制方式发送时此标志才适用。

-d 将有关ftp 命令操作的调试信息发送给syslogd 守护进程。如果您指定-d 标志,您必须编辑/etc/syslog.conf 文件并添加下列中的一项:

FileName

OR

user.debug FileName

请注意:syslogd 守护进程调试级别包含信息级别消息。

如果不编辑/etc/syslog.conf 文件,则不会产生消息。变更了/etc/syslog.conf 文件之后,请运行refresh -s syslogd 或kill -1 SyslogdPID 命令,以通知syslogd 守护进程其配置文件的变更。关于调试级别的更多信息,请参考/etc/syslog.conf 文件。也请参考debug 子命令。

-g 禁用文件名中的元字符拓展。解释元字符可参考为扩展(有时叫做文件名匹配替换)文件名。请参考glob 子命令。

-i 关闭多文件传送中的交互式提示。请参考prompt、mget、mput 和mdelete 子命令,以取得多文件传送中的提示的描述。

-n 防止在起始连接中的自动登录。否则,ftp 命令会搜索$HOME/.netrc 登录项,该登录项描述了远程主机的登录和初始化过程。请参考user 子命令。

-q 允许用户指定:send_file 子例程必须用于在网络上发送文件。只有当文件

在无保护的情况下以二进制方式发送时此标志才适用。

-v 显示远程服务器的全部响应,并提供数据传输的统计信息。当ftp 命令的输

出是到终端(如控制台或显示)时,此显示方式是缺省方式。

如果stdin 不是终端,除非用户调用带有-v 标志的ftp 命令,或发送verbose 子命令,否则ftp 详细方式将禁用。

-f 导致转发凭证。如果Kerberos 5 不是当前认证方法,则此标志将被忽略。

-k realm 如果远程站的域不同于本地系统的域,系统将允许用户指定远程站的域。因此,域和DCE 单元是同义的。如果Kerberos 5 不是当前认证方法,则此标志将被忽略。

子命令

下列ftp 子命令在ftp> 提示符下输入。使用双引号(" ") 指定包含空格字符的参数。

![命令[参数]] 在本地主机上调用交互的shell。可通过shell 命令提供带有一

个或多个可选参数的可选命令。

$>Macro [参数] 执行指定的宏(早先使用macdef 子命令定义的)。参数不被

扩展。

?[ 子命令] 显示描述子命令的帮助消息。如果您不指定Subcommand 参数,ftp 命令将显示已知子命令的清单。

account [Password] 发送远程主机在授权对其资源进行访问之前可能需要的补

充密码。如果密码不是命令提供的,将提示用户输入密码。密码不在屏幕上显示。

append LocalFile [RemoteFile] 将本地文件添加到远程主机文件中。如果远程文件名未指定,则将使用本地文件名,该文件名由ntrans 子命令或nmap 子命令生

成的任何设置进行改变。添加文件的时候,append 子命令将为form、mode, struct、和type 子命令使用当前值。

ascii type ascii 子命令的同义词。

bell 每个文件传送过程完成之后响一声铃。

binary type binary 子命令的同义词。

block mode block 子命令的同义词。

bye 结束文件传送会话并退出ftp 命令。与quit 子命令相同。

carriage-control form carriage-control 子命令的同义词。

case 为文件名case 设置一个切换。当case 子命令开启的时候ftp 命令将全部远程文件名从大写改成小写(将它们写入本地目录时)。其缺省值为关闭(这样ftp 命令就会在本地目录中按大写格式写入大写的远程文件名)。

cd RemoteDirectory 将远程主机中的工作目录改为指定的目录。

cdup 将远程主机中的工作目录改为当前目录的父目录。

close 结束文件传送会话,但不要退出ftp 命令。已定义的宏已被擦除。与disconnect 子命令相同。

copylocal 切换本地拷贝。copylocal 缺省值为关闭。ftp 通过向自身执行ftp 操作确认您未置零文件(如相同的主机名和相同的路径名)。将copylocal 打开绕过

这一检查。

cr 在ASCII 类型文件传送期间接收记录时,从回车和line-feed 序列中除去回车字符。(ftp 命令在文件传送期间用回车和换行中止每一条ASCII 类型的记录。)远程主机(其操作系统与正在运行的操作系统不同)的记录可拥有内嵌于记录中的单一换行。要从记录定界符中区分这些内嵌的换行,请将cr 子命令设置为关闭。cr 子命令会在开启和关闭中间进行切换。

debug [0 | 1] 在调试记录保持开启和关闭之间进行切换。指定debug 或debug 1,以打印发送到远程主机的每一个命令,并保存重新启动的控制文件。重新指定debug 或debug 0,停止调试记录保持。Ctrl-C 键也会保存重新启动的控制文件。

指定debug 子命令将有关ftp 命令操作的调试信息发送给syslogd 守护进程。如果指定了debug 子命令,您必须编辑/etc/syslog.conf 文件并添加下列中的其中一项:

FileName

OR

user.debug FileName

请注意:syslogd 守护进程调试级别包含信息级别消息。

如果不编辑/etc/syslog.conf 文件,则不会产生消息。变更了/etc/syslog.conf 文件之后,请运行refresh -s syslogd 或kill -1 SyslogdPID 命令,以通知syslogd

守护进程其配置文件的变更。关于调试级别的更多信息,请参考/etc/syslog.conf 文件。也请参考ftp -d 标志。

delete RemoteFile 删除指定的远程文件。

dir [RemoteDirectory][LocalFile] 将所指定的远程目录的内容清单(RemoteDirectory) 写入指定的本地文件(LocalFile)。如果RemoteDirectory 参数未指定,dir 子命令将列出当前远程目录的内容。如果LocalFile 参数未指定或是一个-(连字符),则dir 子命令将显示本地终端上的清单。

disconnect 结束文件传送会话,但不退出ftp 命令。已定义的宏已被擦除。与close 子命令相同。

ebcdic type ebcdic 子命令的同义词。

exp_cmd 在常规的和试验性的协议命令中切换。其缺省值为关闭。

file struct file 子命令的同义词。

form [ carriage-control | non-print | telnet ] 指定文件传送的格式。form 子命令修改type 子命令,以便按指示的格式发送文件传送。有效的参数为carriage-control、non-print 和telnet。

carriage-control

将文件传送格式设置为carriage-control。

non-print

将文件传送格式设置为non-print。

telnet

将文件传送格式设置为Telnet。Telnet 是打开对系统的连接的传输控制协议/

网间协议(TCP/IP)。

get RemoteFile [LocalFile] 将远程文件拷贝到本地主机。如果LocalFile 参数

未指定,将在本地使用远程文件名,并由case、ntrans 和nmap 子命令生成的任

何设置进行改变。ftp 命令在传送文件时,将使用type、form、mode 和struct 子命令的当前设置。

glob 切换mdelete、mget 和mput 子命令的文件名拓展(文件名匹配替换)。如果文件名匹配替换禁用,这些子命令的文件名参数将不会拓展。启用了文件名匹配替换以及在期待单一文件名的子命令中使用了模式匹配字符时,结果可能与期待的不一样。

例如,append 和put 子命令将拓展文件名,然后仅使用所生成第一个文件名。其它ftp 子命令,如cd、delete, get、mkdir、rename 和rmdir 不会执行文件名拓展,并从字面上接受模式匹配字符。

mput 子命令的文件名匹配替换在本地执行,其方式与csh 命令的方式一样。

对于mdelete 和mget 子命令,每个文件名都是在远程机器上分别地进行扩展的,其清单也不会合并。根据远程主机和ftp 服务器的不同,目录名的拓展可与文件名的拓展不一样。

要预览目录名的扩展请使用mls 子命令。

mls RemoteFile

要传送文件的整个目录子树,请勿使用mget 或mput 子命令,而按二进制格

式传送子树的tar 压缩文档。

hash 切换散列符号(#) 打印。当hash 子命令是开启的时候ftp 命令会为每个所传送的数据块(1024 字节)显示一个散列符号。

help [子命令] 显示帮助信息。请参考? 子命令。

image type image 子命令的同义词。

lcd [Directory] 更改本地主机中的工作目录。如果您未指定目录,ftp 命令将使

用主目录。

local M type local M 子命令的同义词。

ls [RemoteDirectory] [LocalFile] 请将远程目录缩写的文件清单写入本地文件。如果RemoteDirectory 参数未指定,ftp 命令将列出当前远程目录。如果LocalFile 参数未指定或是一个-(连字符),则ftp 命令将显示本地终端上的清单。

macdef Macro 定义子命令宏。随后直到空行的行(两个连续的换行)将作为宏的文本保存。能为所有宏定义多达16 个宏,包含4096 个字符。在重新定义或执行close 子命令前,应将宏保持为已定义的宏。

$(美元符号)和\ (反斜杠) 是ftp 宏中的特殊字符。跟随一个或多个数字的$ 符号将被调用行中对应的宏参数所替换(请参考$ 子命令)。$ 符号后紧随字母i 表示将要循环该宏,$i 字符组合将被每一传递中连续的字符替换。

第一个参数用于第一个传递,第二个参数用于第二个传递,依此类推。\ 符号会防止下一个字符的特殊处理。请使用\ 符号关闭$ 和\.(反斜杠句点)符号的特殊意义。

mdelete RemoteFiles 扩展在远程主机上RemoteFiles 参数所指定的文件,并删除远程文件。

mdir [RemoteDirectories LocalFile] 扩展在远程主机上RemoteDirectories 参数所指定的目录,并将这些目录的内容清单写入在LocalFile 参数中定义的文件。如果RemoteDirectories 参数包含模式匹配字符,mdir 子命令将提示输入本地文件(如果没指定)。如果RemoteDirectories 参数是用空格隔开的远程目录清单,则清单中最后一个参数必须是一个本地文件名或-(连字符)。

如果LocalFile 参数是-(连字符),mdir 子命令将显示本地终端上的清单。如果交互式提示启用(请参考prompt 子命令),ftp 命令将提示用户验证最后一个参数是本地文件且不是远程目录。

mget RemoteFiles 请扩展在远程主机上RemoteFiles 参数,并将指示的远程文件拷贝到本地主机的当前目录中。请参考glob 子命令,取得更多有关文件名扩展的信息。远程文件名在本地使用,并由case、ntrans 和nmap 子命令所生成的设置进行变更。在传送文件时,ftp 命令将使用form、mode、struct 和type 子命令的当前设置。

mkdir [RemoteDirectory] 创建在RemoteDirectory 参数(远程主机中)中指定的目录。

mls [RemoteDirectories LocalFile] 扩展在远程主机上在RemoteDirectories

参数中指定的目录,并将所指示的远程目录的缩写文件清单写入本地文件。如果RemoteDirectories 参数包含模式匹配字符,mls 子命令将提示输入本地文件(如果没指定)。如果RemoteDirectories 参数是用空格隔开的远程目录清单,则清单中最后一个参数应是一个本地文件名或-(连字符)。

如果LocalFile 参数是-(连字符),mls 子命令将显示本地终端上的清单。如果交互式提示启用(请参考prompt 子命令),ftp 命令将提示用户验证最后一个参数是本地文件且不是远程目录。

mode [ stream | block ] 设置文件传送方式。如果参数未提供,则缺省值为stream。

block

请将文件传送方式设置为block。

stream

将文件传送方式设置为stream。

modtime 显示远程机器中所指定文件的最后修改时间。如果ftp 命令未连接到执行前的主机,则modtime 子命令将带错误消息而终止。ftp 命令忽略第一个参数以外的参数。如果FileName 参数未指定,ftp 命令将提示输入文件名。如果未给出文件名,ftp 命令将把用法消息发送给标准输出,并终止该子命令。

如果远程主机中有FileName 参数指定的名称,且该名称指定一个文件,则ftp 命令将包含文件最后修改时间的消息发送给标准输出,并终止该子命令。如果FileName 指定一个目录,则ftp 命令将把错误消息发送给标准输出,并终止该子命令。

注意:modtime 子命令在允许的时候会解释元字符。

mput [LocalFiles] 扩展在主机的LocalFiles 参数中指定的文件,并将指示的本地文件复制给远程主机。请参考glob 子命令,取得更多有关文件名扩展的信息。本地文件名在远程主机中使用,并由ntrans 和nmap 子命令所生成的设置进行变更。ftp 命令会在传送文件时,使用type、form、mode 和struct 子命令的当前设置。

nlist [RemoteDirectory][LocalFile] 将所指定的远程目录的内容清单(RemoteDirectory) 写入指定的本地文件(LocalFile)。如果RemoteDirectory 参数未指定,nlist 子命令将列出当前远程目录的内容。如果LocalFile 参数未指定或是一个-(连字符),则nlist 子命令将显示本地终端上的清单。

nmap 打开或关闭文件名映射机制。如果未指定任何参数,文件名映射将关闭。如果参数已指定,在没有指定目标文件名的时候,将为mget 和mput 子命令以及get 和put 子命令映射源文件名。此子命令在本地和远程主机使用不同的文件命名约定和惯例时很有用。映射下列由InPattern 和OutPattern 参数设置的模式。

InPattern 参数为传入的文件名指定了模板,该文件名有可能已根据case 和ntrans 设置处理过。可将从$1 到$9 的模板变量包含进InPattern 参数。除$(美元符号)和\$ (反斜杠,美元符号)以外,InPattern 参数中的所有字符,都是按字面意义处理的,并用作InPattern 变量之间的定界符。例如,如果InPattern 参数是$1.$2 且远程文件名是mydata.dat,则$1 的值是mydata,$2 的值是dat。

此OutPattern 参数确定结果文件名。从$1 到$9 的变量将被它们从InPattern 参数获得的值替换,而变量$0 将由原文件名替换。另外,如果Sequence1 不为空,序列[Sequence1,Sequence2] 将由Sequence1 替换;否则它将由Sequence2 的值替换。例如,子命令:

nmap $1.$2.$3 [$1,$2].[$2,file]

会从myfile.data 或myfile.data.old 中产生myfile.data,从myfile 中产生myfile.file,从.myfile中产生myfile.myfile。请使用\ (反斜杠) 符号防止OutPattern 参数中$(美元符号)、[(左括号)、](右括号)和,(逗号)的特殊意义。

non-print form non-print 子命令的同义词。

ntrans ] 打开或关闭文件名字符翻译机制。如果未指定任何参数,字符翻译将关闭。如果参数已指定,在没有指定目标文件名的时候,将为mget 和mput 子命令

以及get 和put 子命令翻译源文件名中的字符。

此子命令在本地和远程主机使用不同的文件名约定和惯例时很有用。字符翻译遵从InCharacters 和OutCharacters 参数设置的模式。匹配InCharacters 参数中字符的源文件名中的字符将由OutCharacters 参数中对应的字符替换。

如果InCharacters 参数指定的字符串比OutCharacters 参数指定的字符串长,而且其在OutCharacters 参数中无对应的字符,则InCharacters 参数中的字符将

被删除。

open HostName [Port] 在由HostName 参数所指定主机中建立对FTP 服务

器的连接。如果可选的端口号已指定ftp 命令将尝试连接该端口中的服务器。如果已设置自动登录功能(即,该-n 标志没有在命令行中指定), 则ftp 命令就会试图让用户登录到FTP 服务器。

您还必须拥有其中带有正确信息的$HOME/.netrc 文件和正确的许可集。.netrc 文件应在您的主目录中。

passive 切换文件传送的被动方式。在被动方式关闭的情况下调用文件传送命令(如get、mget 和put,或mput)时,ftp 服务器就会打开对客户机的数据连接。在被动方式下,客户机在发送和接收数据的时候打开对主机的数据连接。

private 请将保护级别设置为“private”。在此级别,数据的保护既完整而又机密。

prompt 切换交互式提示。如果交互式提示启用(缺省值)ftp 命令在检索、发

送或删除文件(在mget、mput, 和mdelete)之前会提示进行验证操作。否则,ftp 命令会根据所有指定的文件来执行。

protect 此指令会返回保护的当前级别。

proxy [ 子命令] 在辅助控制连接中执行ftp 命令。此子命令允许ftp 子命令同时连接两个远程FTP 服务器,以便在两个服务器之间传送文件。第一个proxy 子

命令应是建立次要控制连接的open 子命令。请输入proxy ? 子命令,查看其它在

二级连接中可执行的ftp 子命令。

下列子命令在由proxy 子命令开头时的表现会不一样:

* open 子命令在自动登录过程中不定义新的宏。

* close 子命令不会擦除现存的宏定义。

* get 和mget 子命令从主连接中的主机上将文件传送到二级连接的主机上。

* put、mput 和append 子命令从第二连接中的主机上将文件传送到主连接的主机上。

* restart 子命令可由proxy 命令进行处理。

* status 子命令显示出准确的信息。

文件传送要求第二连接上的FTP 服务器必须支持PASV(passive)指令。

put LocalFile [RemoteFile] 将本地文件存储到远程主机中。如果您未指定RemoteFile 参数,ftp 命令将使用本地文件名命名远程文件,而远程文件名由ntrans 和nmap 子命令所生成的设置加以改变。ftp 命令会在传送文件时,将使用type、form、mode 和struct 子命令的当前设置。

pwd 显示远程主机中的当前目录名。

quit 关闭连接并退出ftp 命令。与bye 子命令相同。

quote 字符串逐字地将由String 参数指定的字符串发送到远程主机。执行remotehelp 或quote help 子命令,显示String 参数的有效值清单。

注意:涉及数据传输的“Quoting”命令会产生不可预见的结果。

record struct record 子命令的同义词。

recv RemoteFile [LocalFile] 请将远程文件拷贝到本地主机。与get 子命令相同。

reinitialize 通过刷新所有I/O 并允许完成传输操作来对FTP 会话进行重新初

始化。按照用户已开始FTP 会话但未登录到远程主机的情况复位所有缺省值。

remotehelp [Subcommand] 请求从远程FTP 服务器获得帮助。

rename FromName ToName 重新命名远程主机上的文件。

reset 清除回复队列。此子命令将使命令分析重新同步。

restart get | put | append 请在生成上一个检查点的位置重新启动文件传送。要

想顺利运行,该子命令应与异常终止子命令相同,包括结构、类型和格式。有效参数为get、put 和append。

rmdir RemoteDirectory 除去由远程主机中的RemoteDirectory 参数所指定的

远程目录。

runique (ReceiveUnique) 在子命令get 和mget 期间,切换为本地目的文件

创建唯一文件名称的功能。如果此功能为“关闭”状态(预设值),ftp 命令会覆盖本

地文件。否则,如果本地文件名与为本地目的文件指定的名称相同,ftp 将使用.1 修改为本地目的文件指定的名称。如果本地文件已使用了新名称,ftp 将把后缀.2 添

加给所指定的名称。如果本地文件已使用了此第二个名称,则ftp 命令会在找到唯一的文件名或未找到唯一文件名但到达.99 之前继续增加后缀。如果ftp 命令找不到

唯一的文件名,ftp 会报告错误,传输过程也不会发生。请注意runique 子命令不会影响从shell 命令产生的本地文件名。

safe 将保护级别设置为“safe”。在此级别,数据的完整性会得到保护。

send LocalFile [RemoteFile] 将本地文件存储到远程主机中。其方式与put 子

命令相同。

sendport 切换对于FTP PORT 指令的使用。根据预设,ftp 命令在为每个数据传输建立连接的时候会使用PORT 指令。当禁用PORT 指令时,ftp 不会在数据

传输中使用PORT 命令。PORT 指令在处理某些FTP 服务器时很有用,那些服务器在未正确指示指令已被接受时会忽略PORT 指令。

site Args 使用chmod 命令显示或设置空闲超时周期、显示或设置文件创建umask 或更改文件的许可权。Args 参数可能的值是umask 和chmod。

size RemoteFile 以字节的方式显示RemoteFile 参数所指定的远程文件的大小。

status 显示ftp 命令的当前状态以及子命令的状态。

stream mode stream 子命令的同义词。

struct [ file | record ] 设置数据传送结构类型。有效的参数为file 和record。

file

将数据传送结构类型设置为file。

record

将数据传送结构类型设置为record。

sunique (Send/Store Unique) 在子命令put 和mput 期间,切换为远程目的文件创建唯一文件名称的功能。如果此功能为“关闭”状态(预设值),ftp 命令会覆盖远程文件。否则,如果远程文件名与为远程目的文件指定的名称相同,远程FTP 服务器会修改远程目的文件的名称。请注意远程服务器必须支持STOU 指令。

系统显示在远程机器上运行的操作系统类型。

telnet form telnet 子命令的同义词。

tenex type tenex 子命令的同义词。

跟踪切换包跟踪。

type [ ascii | binary | ebcdic | image | local M | tenex ] 设置文件传送类型。有效参数是ascii、binary、ebcdic、image,、local M 和tenex。如果参数未指定,则当前类型被显示。缺省类型为ascii;binary 类型可能会比ascii 更有效。

ascii

将文件传送类型设置为网络ASCII。此类型为缺省值。文件传送使用二进制映像传送可能会更有效。请参考binary 参数,以取得更多信息。

binary

文件传送类型设置为二进制映像。此类型可能比ASCII 传送更有效。

ebcdic

将文件传送类型设置为EBCDIC。

image

将文件传送类型设置为二进制映像。此类型可能比ASCII 传送更有效。

local M

将文件传送类型设置为本地。M 参数定义每计算机字位的十进制数。此参数没有缺省值。

tenex

将文件传送类型设置为TENEX 机器需要的类型。

user User [Password] [Account] 识别远程FTP 服务器的本地用户(User)。如果未指定Password 或Account 参数,而远程服务器需要它,则ftp 命令会提示

输入本地的密码和帐户。如果Account 参数是必须的,则ftp 命令会在远程登录过程完成后将它发送到远程服务器。

注意:除非通过在命令行上指定-n 标志来禁用自动登录,否则ftp 命令将User、Password和Account 参数自动地发送给远程服务器用于初始连接。您亦需主目录中的.netrc 文件以便发布自动登录。

verbose 切换详细方式。如果详细方式启用(缺省值),ftp 命令将显示远程FTP 服务器的全部响应。另外,ftp 会在传输完成后显示所有文件传送的统计信息。

示例

1. 要调用ftp 命令,请登录canopus 系统,显示本地帮助信息,显示远程帮助信息,显示状态,切换bell、prompt、runique、trace 和verbose 子命令,然后再退出,请输入:

$ ftp canopus

连接.

220 FTP 服务器(4.1 版1991年11 月23 日周六12:52:09 CST)就绪。

名称(canopus:eric):dee

331 dee 所需要的密码。

密码:

230 用户dee 登录。

ftp> 帮助

Commands 可能为缩写。命令:

! delete mdelete proxy runique

$ debug mdir sendport send

account dir mget put size

append disconnect mkdir pwd status

ascii form mls quit struct

bell get mode quote sunique

binary glob modtime recv system

bye hash mput remotehelp tenex

case help nmap rstatus trace

cd image nlist rhelp type

cdup lcd ntrans rename user

close ls open reset verbose

cr macdef prompt rmdir ?

clear private protect safe

ftp> remotehelp

214 —识别下列命令(* => 未实施)。

USER PORT RETR MSND* ALLO DELE SITE* XMKD CDUP

PASS PASV STOR MSOM* REST* CWD STAT* RMD XCUP

ACCT* TYPE APPE MSAM* RNFR XCWD HELP XRMD STOU

REIN* STRU MLFL* MRSQ* RNTO LIST NOOP PWD

QUIT MODE MAIL* MRCP* ABOR NLST MKD XPWD

AUTH ADAT PROT PBSZ MIC ENC CCC

214 将意见发送给ftp-bugs@。

ftp> 状态

连接.

无代理连接。

方式:流;类型:ascii;表单:非打印的;结构:文件

详细:开;Bell:关;提示:开;文件名匹配替换:开

存储唯一:关;接收唯一:关

Case:关;CR stripping:开

Ntrans:关

Nmap:关

散列标记打印:关;PORT cmds 的使用:开

ftp> bell

Bell 方式开启

ftp> 提示符

交互方式关闭。

ftp> runique

接收唯一开启。

ftp> trace

包跟踪开启。

ftp> verbose

详细方式关闭。

ftp> quit

$

2. 要调用ftp 命令,请登录canopus 系统,打印工作目录,更改工作目录,将文件传送类型设定为ASCII 向远程主机发送本地文件,将工作目录改为父目录,然后退出,请输入:

$ ftp canopus

连接.

220 FTP 服务器(4.1 版1991年11 月23 日周六12:52:09 CST)就绪。

名称(canopus:eric):dee

331 dee 所需要的密码。

密码:

230 用户dee 登入。

ftp> pwd

257 "/home/dee" 为当前目录。

ftp> cd 桌面

250 CWD 命令顺利完成。

ftp> 类型ascii

200 类型设置为A。

ftp> 发送typescript

200 PORT 命令顺利完成。

150 为typescript (128.114.4.99,1412) 打开数据连接。

226 传输完成。

ftp> cdup

250 CWD 命令顺利完成。

ftp> bye

221 再见。$

3. 要调用具有自动登录功能的ftp 命令(使用.netrc 文件),请打开与canopus 系统的会话,登入,将工作目录改为父目录,显示工作目录,列出当前目录的内容,删除文件,将当前目录的内容清单写入本地文件,关闭会话,然后退出,请输入:

$ ftp canopus

连接.

220 FTP 服务器(4.1 版1991年11 月23 日周六12:52:09 CST)就绪。

331 dee 所需要的密码。

230 用户dee 登入。

ftp> cdup

250 CWD 命令顺利完成。

ftp> pwd

257 "/home" 是当前目录。

ftp> dir

200 PORT 命令顺利完成。

150 为/usr/bin/ls (128.114.4.99,1407) 打开数据连接。

(0 字节)。

一共104

drwxr-xr-x 2 system 32 Feb 23 17:55 bin

Drwxr-xr-x 26 rios 4000 May 30 17:18 bin1

drwxr-xr-x 2 system 32 Feb 23 17:55 books

drwxrwxrwx 18 rios 1152 Jun 5 13:41 dee

-r--r--r-- 1 system 9452 May 17 12:21 filesystems

drwxr-xr-x 2 system 32 Feb 23 17:55 jim

drwxr-xr-x 5 system 80 Feb 23 17:55 krs

drwxrwxrwx 2 rios 16432 Feb 23 17:36 lost+found

-rwxr-xr-x 1 rios 3651 May 24 16:45 oldmail

drwxr-xr-x 2 system 256 Feb 23 17:55 pubserv

drwxrwxrwx 2 system 144 Feb 23 17:55 rein989

drwxr-xr-x 2 system 112 Feb 23 17:55 reinstall

226 传输完成。

ftp> 删除旧邮件。

250 DELE 命令顺利完成。

ftp> mdir /home/dee/bin binlist

output to local-file: binlist? y

200 PORT 命令顺利完成。

150 为/usr/bin/ls (128.114.4.99,1408)(0 字节)打开数据连接。

226 传输完成。

ftp> close

221 再见。

ftp> quit

$

文件

/usr/samples/tcpip/netrc 包含.netrc 样本文件。

/etc/syslog.conf 包含syslogd 守护进程的配置信息。

FTP

abbr.

File Transfer Protocol , 文件传送[输]协议

FTP

FTP

A HD:[µf”t¶-p¶“]

D.J.[7efti86pi8]

K.K.[7Wfti6pi]

n.(名词)

A communications protocol governing the transfer of files from one computer to another over a network.

文件传输协议的(C语言)实现

课程设计:FTP的设计与实现 一、目的 Internet提供了很多类型的网络服务,这些服务实际上都是应用层的服务。FTP服务是基于TCP协议的网络服务。 文件传送是各种计算机网络都实现的基本功能,文件传送协议是一种最基本的应用层协议。通过完成一个文件传送协议FTP的实现,学会利用已有网络环境设计并实现简单应用层协议,掌握TCP/IP网络应用程序基本的设计方法和实现技巧。 二、内容和要求 每两人一组,分别实现FTP协议客户端程序和服务器程序。 客户端程序具有文件列表、下载文件、上传文件等常用功能。服务器程序支持改变工作目录、文件列表、下载文件等常用的服务。 因为FTP协议比较复杂,为了简单起见,客户端只实现FTP客户端协议的一个子集,总的来说有以下几个功能: ●连接到指定的FTP服务器; ●断开和主机的连接; ●进入子目录; ●退出子目录; ●列出服务器当前目录下的所有文件 ●从服务器下载指定的文件到本地(可以同时指定多个文件连续下载) ●从本地上传指定的文件到服务器 实现以上几个功能时会涉及到下面的几个FTP命令: ●USER username ●PASS password ●CWD directory-name ●PORT host-port ●TYPE A or I ●RETR filename

●STOR filename ●LIST directory 用户界面应该能够为程序输入下面的信息: ●服务器主机名 ●用户名、口令 ●数据的传送类型 ●要进入的服务器目录 ●要下载的远程文件名 ●要上载的本地文件名和远程文件名 同时,界面也为用户输出以下的信息: ●FTP服务器上的文件和目录列表 ●从服务器返回的应答 使用Socket进行Client/Server程序设计的一般连接过程是这样的:Server端Listen(监听)某个端口是否有连接请求,Client端向Server端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息。一个连接就建立起来了。Server端和Client端都可以通过Send,Write等方法与对方通信。 对于一个功能齐全的Socket,都要包含以下基本结构,其工作过程包含以下四个基本的步骤: (1)创建Socket; (2)打开连接到Socket的输入/出流; (3)按照一定的协议对Socket进行读/写操作; (4)关闭Socket. 第三步是程序员用来调用Socket和实现程序功能的关键步骤,其他三步在各种程序中基本相同。 /****************client.c****************/ #include #include #include #pragma comment(lib,"ws2_32.lib") #define DEFAULT_PORT 2302 #define DEFAULT_BUFFER 2048 #define DEFAULT_MESSAGE "This is a test of the emergency \ broadcasting system" char szServerip[128], // Server to connect to szMessage[1024]; // Message to send to sever int iPort = DEFAULT_PORT; // Port on server to connect to //DWORD dwCount = DEFAULT_COUNT; // Number of times to send message BOOL bSendOnly = FALSE; // Send data only; don't receive int dirfun();

文件传输协议的简单设计与实现(c语言.

文件传输协议的简单设计与实现(c语言,VC6.0) 使用Socket进行Client/Server程序设计的一般连接过程是这样的:Server端Listen(监听)某个端口是否有连接请求,Client端向Server端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息。一个连接就建立起来了。Server端和Client端都可以通过Send,Write等方法与对方通信。 对于一个功能齐全的Socket,都要包含以下基本结构,其工作过程包含以下四个基本的步骤: (1)创建Socket; (2)打开连接到Socket的输入/出流; (3)按照一定的协议对Socket进行读/写操作; (4)关闭Socket. 第三步是程序员用来调用Socket和实现程序功能的关键步骤,其他三步在各种程序中基本相同。 /****************client.c****************/ #include #include #include #pragma comment(lib,"ws2_32.lib") #define DEFAULT_PORT 2302 #define DEFAULT_BUFFER 2048 #define DEFAULT_MESSAGE "This is a test of the emergency \ broadcasting system" char szServerip[128], // Server to connect to szMessage[1024]; // Message to send to sever int iPort = DEFAULT_PORT; // Port on server to connect to //DWORD dwCount = DEFAULT_COUNT; // Number of times to send message BOOL bSendOnly = FALSE; // Send data only; don't receive int dirfun(); int getfun(); int putfun(); int pwdfun(); int cdfun(); int mdfun();

文件传输协议的设计与实现

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位:信息工程学院 题目:文件传输协议的设计与实现 初始条件: Windows XP C++,SOCKET 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1.掌握TCP/IP 网络应用程序基本的设计方法; 2.用socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c); 3.撰写课程设计说明书。装订后的课程设计说明书不少于10面(含封面、任务书、目录、正文、参考文献、成绩评定表、封底)。 时间安排: 6月18日查阅资料、方案论证 6月19日方案设计、调试 6月20日撰写课程设计说明书 6月21日答辩 指导教师签名:年月日 系主任(或责任教师)签名:年月日

运行正确的程序:: 1.服务器源代码: #include #include #include using namespace std; #pragma comment(lib, "wsock32.lib") #define PORT 4523 char buf_send[1024]; char buf_rec[1024]; SOCKET sockSrv; //socket初始化 DWORD CreateSocket() { WSADATA WSAData;//WSADATA结构被用来保存函数WSAStartup返回的Windows Sockets初始化信息if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)//WSAStartup完成winsock的初始化 {printf("socket initialize failed!\n"); return (-1); } sockSrv=socket(AF_INET,SOCK_STREAM,0);//定义为面向连接的,返回值送给sockSrv if(sockSrv==SOCKET_ERROR) { printf("socket create failed ! \n"); WSACleanup();//中止Windows Sockets DLL的使用 return(-1); } SOCKADDR_IN addrSrv;//TCP/IP使用SOCKADDR_IN 定义地址 addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//计算机IP地址 addrSrv.sin_port=htons(PORT);//协议端口号 addrSrv.sin_family=AF_INET;//地址所属协议簇 //绑定端口 if(bind(sockSrv,(struct sockaddr FAR *)&addrSrv,sizeof(addrSrv))==SOCKET_ERROR) { printf("Bind Error"); return(-1); } return (1); }

三种文件传输协议

计算机网络复习要点 (第五版谢希仁) 文件传送协议篇 简单文件传输协议TFTP(端口号为69) 支持文件传输不支持交互 1.主要优点: (1)用于UDP环境,例如:当程序和文件向许多机器下载的时候就是用到该协议 (2)其代码占得内存较小,不需要硬盘,只是固化TFTP 特点细分: (1)TFTP每次传送的数据报文中有512个字节,最后一个不足512个字节 (2)数据报按序编号,从1开始 (3)支持ASCII码和二进制 (4)可对文件进行读与写 (5)使用很简单的首部 工作原理: 发送完一个数据块等待对方的确认,确认是还必须指明所确认的块编号,发送一段时间后仍然收不到确认重发PDU,如果还没有确认的话继续重发 一开始工作时,TFTP发送请求报文给服务器,TFTP会选择新的端口与客户进程进行通讯,若文件正好是512 的整数倍,则

文件传送完毕,文件传送完后还必须发送一个有简单首部无数据的数据报文,这个报文正好不足512个字节,所以作为发送结束的标志。 FTP协议 支持交互,允许客户指明文件类型与格式,并允许具有存储权限的设置 特点: (1)若存取一个文件的时候,必须获得文件的副本,在文件的副本上进行修改,然后将副本传到远点工作原理 (1)打开熟知端口(端口号51)是客户程序能够连接上 (2)等待客户发送连接请求 (3)客户发来的请求交给从属程序处理,(从属程序在处理 过程中还会根据需要创建一些子程序) (4)回到等待的状态,等待其他的客户程序发来连接请求 (主程序与从属程序的处理并发进行的) FTP有两个从属进程:控制进程和数据传送进程 控制进程在整个对话过程中都是打开的,客户端发过来连接请求时,通过控制连接发给服务端的控制进程,控制连接不用来传送文件,服务器的控制进程在接受到FTP时就会建立数据传送进程,数据传输连接,用来客户端与服务端的数据

文件传输协议

文件传输协议 从Wikipedia,自由的百科全书 文件传输协议(FTP)是一个标准的网络协议,用来在一个基于TCP的网络从一台主机到另一主机传输文件,如互联网。它经常被用来上传到一个公共的Web 托管服务器的网页和其他文件,由私人发展机。FTP是建立在客户端- 服务器架构,并在客户端和服务器之间使用单独的控制和数据连接。[1]在协议中,FTP 用户可能使用明文自己的身份标志,通常以用户名和密码的形式,但如果服务器被配置为允许匿名也可以连接。为了隐藏(加密)您的用户名和密码,以及加密内容的安全传输,您可以尝试以客户端使用SSH文件传输协议。 第一个FTP客户端应用程序是交互式的命令行工具,执行标准的命令和语法。在今天使用的许多流行的桌面操作系统的图形用户界面的客户,至今已开发包括一般的网页设计方案,如Microsoft Expression Web中,如CuteFTP的专业FTP 客户端。 内容 1协议概述 ?1.1与HTTP的差异 ?1.2通信和数据传输 ?1.3登陆 ?1.4 匿名FTP ?1.5穿越NAT和防火墙 2 FTPmail 3 Web浏览器支持 ?3.1句法 4 安全 4.1 安全的FTP

4.1.1 FTPS 4.1.2 SFTP 4.1.3 通过SSH到达FTP (不从SFTP) ? 5 FTP命令的列表 ? 6 FTP 回应码 ?7 参见 ?8 参考文献 ?9 进一步阅读 ?10 外部链接 协议概述 与HTTP的区别 FTP运行在OSI模型的应用层,用于使用TCP / IP传输文件。要做到这一点,FTP服务器必须正在运行,并等待传入的请求。然后客户端的计算机能够沟通服务器上的端口21。就此,称为控制连接,在会议期间仍然开放。第二个连接,称为数据连接,可以由服务器从20端口打开谈判的客户端端口(主动模式),或从任意端口到客户谈判的服务器端口(被动模式)传输文件数据。控制连接用于会议管理,示例命令,识别和使用像一个telnet协议的客户端和服务器之间交换的密码。例如“RETR命令名”从服务器到客户端传输指定的文件。由于这两个端口结构,FTP被认为是一个彻头彻尾的带协议,而不是如HTTP协议波段。 通信和数据传输 该协议在RFC959中指定,这里总结。 服务器响应超过三位数的状态代码的ASCII控制连接与可选的文本消息。例如“200”(或“200 OK”)意味着最后一个命令是成功的。数字代表的响应代码,而可选的文本代表一个人可读的解释或要求(如Need帐户的)。通过控制连接发送中断消息,可以中止正在进行传输文件数据的数据连接。

文件传输协议和文本传输协议

文件传输协议和文本传输协议 一.文本传输协议(HTTP)协议简介: HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。 HTTP协议的主要特点可概括如下: 1.支持客户/服务器模式。 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。 由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。 二.文件传输协议(FTP) 文件传输协议(File Transfer Protocol, FTP)是一个用于在两台装有不同操作系统的机器中传输计算 机文件的软件标准。它属于网络协议组的应用层。 FTP是一个8位的客户端-服务端协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unencode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间会非常长,并且不时的必需执行一些冗长的登陆进程。 FTP实现的目标: 1.促进文件的共享(计算机程序或数据) 2.鼓励间接或者隐式的使用远程计算机 3.向用户屏蔽不同主机中各种文件存储系统的细节 4.可靠和高效的传输数据 缺点: 1.密码和文件内容都使用明文传输,可能产生不希望发生的窃听。 2.因为必需开放一个随机的端口以建立连接,当防火墙存在时,客户端很难过滤处于主动模式下的FTP 流量。这个问题3.通过使用被动模式的FTP得到了很大解决。 服务器可能会被告知连接一个第三方计算机的保留端口。 FTP虽然可以被终端用户直接使用,但是它是设计成被FTP客户端程序所控制。 运行FTP服务的许多站点都开放匿名服务,在这种设置下,用户不需要帐号就可以登录服务器,默认情况下,匿名用户的用户名是:“anonymous”。这个帐号不需要密码,虽然通常要求输入用户的邮件地址作为认证密码,但这只是一些细节或者此邮件地址根本不被确定,而是依赖于FTP服务器的配置情况。 FTP有两种使用模式:主动和被动。主动模式要求客户端和服务器端同时打开并且监听一个端口以建立连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题。 一个主动模式的FTP连接建立要遵循以下步骤:

简述TFTP简单文件传输协议实现过程

简述TFTP简单文件传输协议实现过程 通过本文,你可以了解到 ◆什么是TFTP协议 ◆TFTP作用及一般性用途 ◆如何搭建TFTP并通过实例演示其工作过程 ◆从协议角度分析TFTP传输过程 一、何为TFTP协议 TFTP协议,即为Trivial File Transfer Protocol,简单文件传输协议,它是TCP/IP 协议簇中被用来在服务器和客户机之间传输简单文件的协议,从名称上来看似乎和我们常见的FTP协议很类似,其实两者都是用来传输文件,但不同的是,TFTP较FTP在传输文件体积方面要小得多,比较适合在需要传送的小体积文件。比如在对CISCO设备进行IOS升级或备份时,就是通过此协议连接到CISCO的TFTP服务器进行相关操作。除此之外,TFTP操作也非常简单,功能也很有限,不能像FTP一样实现例如身份验证、文件目录查询等诸多功能。 二、搭建并测试TFTP 1、获取TFTP.EXE 这里通过一个实例来向大家演示如何在windows中搭建并使用TFTP服务器。 首先,我们需要获取tftp.exe(请见附件1)。有两个办法可以获得这个程序: 1> 大家可以在windows XP 系统光盘中的i386文件夹中,利用expand命令从tftp.ex_中提取tftp.exe程序。 2> 其实这个程序已经被内置在系统中,大家可以在C:WINDOWSsystem32中找到它。 2、搭建TFTP服务器

安装TFTP服务器?听上去似乎好困难,其实很简单,这里所谓的搭建TFTP服务器其实就是将TFTP.exe作为一个服务安装在系统中,使之成为系统内置的一个服务,这样为日后提供稳定的TFTP传输打好基础。 如何将一个程序变成Windows的服务呢?其实可以很多编程语言内置有特定的方法可以实现,但很显然,这样的办法不具备普遍性,这里我想大家推荐一个小工具,它内置于windows2000的Resource Kits,名为Srvinstw,是一个图形化的工具(请见附件2),操作也很简单。 我们就采用最通用的办法来安装TFTP服务。 具体安装过程: 找到Srvinstw 运行Srvinstw,在这里我们可以安装一个服务,或者是卸载系统中已存的服务,只要点选【卸载服务】即可。

TFTP:简单文件传送协议

TFTP:简单文件传送协议 TFTP(TrivialFileTransferProtocol)即简单文件传送协议,最初打算用于引导无盘系统(通常是工作站或X终端)。和使用TCP的文件传送协议(FTP)不同,为了保持简单和短小,TFTP将使用UDP.TFTP 的代码(和它所需要的UDP、IP和设备驱动程序)都能适合只读存储器。 (BootstrapProtocol)中还会遇到TFTP.在图中,当从网络上引导sun主机时,也曾遇到过TFTP,sun主机通过RARP获得它的IP地址后,将发出一个TFTP请求。RFC1350[Sollins1992]是第2版TFTP的正式规范。[Stevens1990]提供了实现TFTP客户和服务器的全部源代码,并介绍了一些使用TFTP的编程技术。协议 在开始工作时,TFTP的客户与服务器交换信息,客户发送一个读请求或写请求给服务器。在一个无盘系统进行系统引导的正常情况下,第一个请求是读请求(RRQ)。下图显示了5种TFTP报文格式(操作码为1和2的报文使用相同的格式)。 TFTP报文的头两个字节表示操作码。对于读请求和写请求(WRQ),文件名字段说明客户要读或写的位于服务器上的文件。这个文件字段以0字节作为结束(见图)。模式字段是一个ASCII码串netascii或octet(可大小写任意组合),同样以0字节结束。netascii表示数据是以成行的ASCII码字符组成,以两个字节—回车字符后跟换行字符(称为CR/LF)作为行结束符。这两个行结束字符在这种格式和本地主机使用的行定界符之间进行转化。octet则将数据看作8bit一组的字节流而不作任何解释。 每个数据分组包含一个块编号字段,它以后要在确认分组中使用。以读一个文件作为例子,TFTP客户需要发送一个读请求说明要读的文件名和文件模式(mode)。如果这个文件能被这个客户读取,TFTP服务器就返回一个块编号为1的数据分组。TFTP客户又发送一个块编号为1的ACK.TFTP服务器随后发送块编号为2的数据。TFTP客户发回块编号为2的ACK.重复这个过程直到这个文件传送完。除了最后一个数据分组可含有不足512字节的数据,其他每个数据分组均含有512字节的数据。当TFTP客户收到一个不足512字节的数据分组,就知道它收到最后一个数据分组。 在写请求的情况下,TFTP客户发送WRQ指明文件名和模式。如果该文件能被该客户写,TFTP服务器就返回块编号为0的ACK包。该客户就将文件的头512字节以块编号为1发出。服务器则返回块编号为1的ACK. 这种类型的数据传输称为停止等待协议。它只用在一些简单的协议如TFTP中。在20.3节中将看到TCP 提供了不同形式的确认,能提供更高的系统吞吐量。TFTP的优点在于实现的简单而不是高的系统吞吐量

文件传输协议的设计与实现

目录 1.课程设计目的和要求 2.背景知识 3.课程设计分析 4.程序清单 5.运行结果 6.总结 1.课程设计目的和要求 文件传输是各种计算机的网络的基本功能,文件传送协议是一种最基本的应用层协议。它是按照客户或服务器模式进行的工作,提供交式的访问。是INTERNRT使用最广泛的协议之一。以及深入了解计

算机网络是建立在TCP/IP网络体系结构上。 用 socket 编程接口编写俩个程序,分别为客户程序和服务器程序 1.掌握TCP/IP 网络应用程序基本的设计方法; 2.用socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c); 3.撰写课程设计说明书。装订后的课程设计说明书不少于10面(含封面、任务书、目录、正文、参考文献、成绩评定表、封底)。 2.背景知识 第一个FTP的RFC由A.K.Bhushan 在1971年提出,同时由MIT 与Harvard实验实现,RFC 172提供了主机间文件传输的一个用户级协议。长期发展过程由于底层协议从NCP改变为TCP,RFC765定义了采用TCP的FCP. FTP协议在今天已经发展成熟,应用也越来越广很多开发的比较成熟的FTP 客户端软件已经得到了广泛的应用. 3.课程设计分析 Server端Client端 创建ServerSocket对象,在某端口提供监听服务Client端 等待来自Client端的服务请求 接受Client端的请求,用返回的创建Socket对象,向Server Socket建立连接的监听端口请求 通过向Socket中读写数据来通过向新的Socket中读写数 与Client端通信据来与Server端通信 关闭Socket,结束与Server端的通信关闭Socket,结束与当前 Client的通信,等待其他请求 关闭ServerSocket对象,结束监听服务

文件传输协议

文件传输协议 FTP(File Transfer Protocol),是文件传输协议的简称。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。 FTP(File Transfer Protocol) FTP的作用 正如其名所示:FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。 FTP工作原理 拿下传文件为例,当你启动FTP从远程计算机拷贝文件时,你事实上启动了两个程序:一个本地机上的FTP客户程序:它向FTP服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的FTP服务器程序,它响应你的请求把你指定的文件传送到你的计算机中。FTP采用“客户机/服务器”方式,用户端要在自己的本地计算机上安装FTP客户程序。FTP客户程序有字符界面和图形界面两种。字符界面的FTP 的命令复杂、繁多。图形界面的FTP客户程序,操作上要简洁方便的多。 简单地说,支持FTP协议的服务器就是FTP服务器,下面介绍一下什么是FTP 协议。(文件传输协议) 一般来说,用户联网的首要目的就是实现信息共享,文件传输是信息共享非常重要的一个内容之一。Internet上早期实现传输文件,并不是一件容易的事,我们知道Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,据统计连接在Internet上的计算机已有上千万台,而这些计算机可能运行不同的操作系统,有运行Unix的服务器,也有运行Dos、Windows的PC机和运行MacOS的苹果机等等,而各种操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。 与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的

实验一-文件传输协议设计要点

实验一:文件传输协议的设计与实现

目录 1.实验设计目的和要求 2.背景知识 3.课程设计分析 4.程序清单 5.运行结果 6.总结

1.课程设计目的和要求 文件传输是各种计算机的网络的基本功能,文件传送协议是一种最基本的应用层协议。它是按照客户或服务器模式进行的工作,提供交式的访问。是INTERNRT使用最广泛的协议之一。以及深入了解计算机网络是建立在TCP/IP网络体系结构上。 用 socket 编程接口编写俩个程序,分别为客户程序和服务器程序 1.掌握TCP/IP 网络应用程序基本的设计方法; 2.用socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c); 3.撰写课程设计说明书。装订后的课程设计说明书不少于10面(含封面、任务书、目录、正文、参考文献、成绩评定表、封底)。 2.背景知识 第一个FTP的RFC由A.K.Bhushan 在1971年提出,同时由MIT 与Harvard实验实现,RFC 172提供了主机间文件传输的一个用户级协议。长期发展过程由于底层协议从NCP改变为TCP,RFC765定义了采用TCP的FCP. FTP协议在今天已经发展成熟,应用也越来越广很多开发的比较成熟的FTP 客户端软件已经得到了广泛的应用. 3.课程设计分析 Server端Client端 创建ServerSocket对象,在某端口提供监听服务Client端 等待来自Client端的服务请求 接受Client端的请求,用返回的创建Socket对象,向Server Socket建立连接的监听端口请求 通过向Socket中读写数据来通过向新的Socket中读写数 与Client端通信据来与Server端通信 关闭Socket,结束与Server端的通信关闭Socket,结束与当前

文件传输协议(RFC 0959中文版)

文件传输协议(File Transfer Protocol, FTP) 1. 介绍 FTP的目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。虽然我们也可以手工使用它,但是它的主要作用是供程序使用的。在阅读本文之前最好能够阅读TCP协议标准规范和Telnet协议标准规范。 2. 概览 在本节中我们将讨论一些表面上的问题,有些名词的定义请参阅TCP和Telnet参考文献。我们先介绍一下(1)字节大小,在FTP中字节大小有两个:逻辑字节大小和用于传输的字节大小。后者通常是8位,而前者可不一定是多少了。传输字节不必等于逻辑字节大小,也不必对数据结构进行解释。(2)控制连接是建立在USER-PIT和SERVER-PI之间用于交换命令与应答的通信链路。(3)数据连接是传输数据的全双工连接。传输数据可以发生在服务器DTP和用户DTP之间也可以发生在两个服务器DTP之间。(4)DTP:数据传输过程(DTP)建立和管理数据连接,DTP可以是主动的也可以是被动的。(5)EOR代表记录尾。(6)NTV代表网络虚拟终端,它的定义与在Telnet协议中的定义一致。(7)NVFS代表网络虚拟文件系统。(8)FTP可以传输非连续的文件,这些文件的一部分称为页。(9)PI代表协议解释器。(10)服务器DTP代表一种传输过程,它通常处于“主动”状态,它和侦听端口建立数据连接,它还可以为传输和存储设置参数,并根据PI的指令传输数据。当然,DTP也可以转入“被动”状态。(11)服务器FTP进程,它是和用户FTP进程一起工作的,它由PI和DTP组成。至于用户FTP进程则是由PI,DTP和用户接口组成的。下图是FTP服务示意图: 注意:数据连接是双向的,它不用整个时间都存在。上图中用户PI开始控制连接,控制连接与Telnet 协议很象。在开始阶段,标准FTP命令由用户PI产生并通过控制连接传送到服务器进程。服务器PI向用户PI返回标准应答。FTP命令指定数据连接参数和文件系统操作。用户DTP在特定数据端口侦听,服务器开始数据连接并以指定的参数开始数据传输。数据端口不必在开始FTP命令的机器上,但用户或用户FTP 进程必须确定它在指定的数据端口上侦听。这个数据连接是全双工的。

FTP:文件传输协议(指令及响应代码)

FTP 的主要功能如下: ?提供文件的共享(计算机程序 / 数据); ?支持间接使用远程计算机; ?使用户不因各类主机文件存储器系统的差异而受影响; ?可靠且有效的传输数据。 FTP ,尽管可以直接被终端用户使用,但其应用主要还是通过程序实现。 FTP 控制帧即指 TELNET 交换信息,包含 TELNET 命令和选项。然而,大多数 FTP 控制帧是简单的 ASCII 文本,可以分为 FTP 命令或 FTP 消息。 FTP 消息是对 FTP 命令的响应,它由带有解释文本的应答代码构成。 命令描述 ABOR 中断数据连接程序 ACCT 系统特权帐号 ALLO 为服务器上的文件存储器分配字节 APPE 添加文件到服务器同名文件 CDUP

改变服务器上的父目录 CWD 改变服务器上的工作目录 DELE 删除服务器上的指定文件 HELP 返回指定命令信息 LIST 如果是文件名列出文件信息,如果是目录则列出文件列表MODE 传输模式(S=流模式,B=块模式,C=压缩模式) MKD 在服务器上建立指定目录 NLST 列出指定目录内容 NOOP 无动作,除了来自服务器上的承认 PASS 系统登录密码 PASV 请求服务器等待数据连接 PORT
IP 地址和两字节的端口 ID PWD 显示当前工作目录 QUIT 从 FTP 服务器上退出登录 REIN 重新初始化登录状态连接

文件传输协议的简单设计与实现(doc 23页)

课程设计 课程名称计算机网络课程设计 题目名称文件传输协议的简单设计与实现学生学院 专业班级___ _ 学号 学生姓名______ _________ 指导教师______ _____ 2010 年 1 月 5 日

设计摘要 关键词:SOCKET编程,FTPclient/server程序 摘要:本课程设计包含了文件传输协议的简单设计与实现。 文件传送是各种计算机网络实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一。文件传输协议的简单设计与实现建立在计算机网络实验环境TCP/IP 网络体系结构之上,使用socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c),实现下述命令功能:get , put, pwd, dir, cd, ?, quit 等,利用了已有网络环境设计并实现简单应用层协议。 本设计包括了具体设计任务,基本思路及所涉及的相关理论,设计流程图,调试过程中出现的问题及相应解决办法,实验运行结果,核心程序,个人体会及建议等。

目录 1、文件传输协议的简单设计与实现------------------------------18 1. 1 具体设计任务----------------------------------------------18 1.2 基本思路及所涉及的相关理论--------------------------------18 1.2.1基本思路-------------------------------------------------18 2.2.2 相关理论--------------------------------------------18 1.3设计流程图------------------------------------------------19 1.4实验运行情况----------------------------------------------19 1.5 核心程序--------------------------------------------------22 2.5.1 服务器(sever)程序---------------------------------22 2.5.2 客户(client)程序----------------------------------29 1.6心得体会-----------------------------------------------------------------------------37 参考文献--------------------------------------------------------38

相关主题