linux下ftp编程-socket

linux下ftp编程-socket

ID:25914390

大小:153.31 KB

页数:15页

时间:2018-11-23

linux下ftp编程-socket_第1页
linux下ftp编程-socket_第2页
linux下ftp编程-socket_第3页
linux下ftp编程-socket_第4页
linux下ftp编程-socket_第5页
资源描述:

《linux下ftp编程-socket》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、使用Socket通信实现FTP客户端程序FTP客户端如FlashFXP,FileZilla被广泛应用,原理上都是用底层的Socket来实现。FTP客户端与服务器端进行数据交换必须建立两个套接字,一个作为命令通道,一个作为数据通道。前者用于客户端向服务器发送命令,如登录,删除某个文件,后者用于接收数据,例如下载或上传文件等。本文详细阐述如何调用系统接口发送FTP命令实现文件上传下载等FTP客户端功能,让读者对FTP客户端的原理有一个深入的了解。FTP概述oFTP协议o实现FTP客户端上传下载功能o结束语o参考资料o评论FTP概述文件传输协议(FTP)作为网络共享

2、文件的传输协议,在网络应用软件中具有广泛的应用。FTP的目标是提高文件的共享性和可靠高效地传送数据。在传输文件时,FTP客户端程序先与服务器建立连接,然后向服务器发送命令。服务器收到命令后给予响应,并执行命令。FTP协议与操作系统无关,任何操作系统上的程序只要符合FTP协议,就可以相互传输数据。本文主要基于LINUX平台,对FTP客户端的实现原理进行详尽的解释并阐述如何使用C语言编写一个简单的FTP客户端。FTP协议相比其他协议,如HTTP协议,FTP协议要复杂一些。与一般的C/S应用不同点在于一般的C/S应用程序一般只会建立一个Socket连接,这个连接同时

3、处理服务器端和客户端的连接命令和数据传输。而FTP协议中将命令与数据分开传送的方法提高了效率。FTP使用2个端口,一个数据端口和一个命令端口(也叫做控制端口)。这两个端口一般是21(命令端口)和20(数据端口)。控制Socket用来传送命令,数据Socket是用于传送数据。每一个FTP命令发送之后,FTP服务器都会返回一个字符串,其中包括一个响应代码和一些说明信息。其中的返回码主要是用于判断命令是否被成功执行了。命令端口一般来说,客户端有一个Socket用来连接FTP服务器的相关端口,它负责FTP命令的发送和接收返回的响应信息。一些操作如“登录”、“改变目录”

4、、“删除文件”,依靠这个连接发送命令就可完成。数据端口对于有数据传输的操作,主要是显示目录列表,上传、下载文件,我们需要依靠另一个Socket来完成。如果使用被动模式,通常服务器端会返回一个端口号。客户端需要用另开一个Socket来连接这个端口,然后我们可根据操作来发送命令,数据会通过新开的一个端口传输。如果使用主动模式,通常客户端会发送一个端口号给服务器端,并在这个端口监听。服务器需要连接到客户端开启的这个数据端口,并进行数据的传输。下面对FTP的主动模式和被动模式做一个简单的介绍。主动模式(PORT)主动模式下,客户端随机打开一个大于1024的端口向服务器

5、的命令端口P,即21端口,发起连接,同时开放N+1端口监听,并向服务器发出“portN+1”命令,由服务器从它自己的数据端口(20)主动连接到客户端指定的数据端口(N+1)。FTP的客户端只是告诉服务器自己的端口号,让服务器来连接客户端指定的端口。对于客户端的防火墙来说,这是从外部到内部的连接,可能会被阻塞。被动模式(PASV)为了解决服务器发起到客户的连接问题,有了另一种FTP连接方式,即被动方式。命令连接和数据连接都由客户端发起,这样就解决了从服务器到客户端的数据端口的连接被防火墙过滤的问题。被动模式下,当开启一个FTP连接时,客户端打开两个任意的本地端口

6、(N>1024和N+1)。第一个端口连接服务器的21端口,提交PASV命令。然后,服务器会开启一个任意的端口(P>1024),返回如“227enteringpassivemode(127,0,0,1,4,18)”。它返回了227开头的信息,在括号中有以逗号隔开的六个数字,前四个指服务器的地址,最后两个,将倒数第二个乘256再加上最后一个数字,这就是FTP服务器开放的用来进行数据传输的端口。如得到227enteringpassivemode(h1,h2,h3,h4,p1,p2),那么端口号是p1*256+p2,ip地址为h1.h2.h3.h4。这意味着在服务器上

7、有一个端口被开放。客户端收到命令取得端口号之后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。主要用到的FTP命令FTP每个命令都有3到4个字母组成,命令后面跟参数,用空格分开。每个命令都以"r"结束。要下载或上传一个文件,首先要登入FTP服务器,然后发送命令,最后退出。这个过程中,主要用到的命令有USER、PASS、SIZE、REST、CWD、RETR、PASV、PORT、QUIT。USER:指定用户名。通常是控制连接后第一个发出的命令。“USERgaoleyir”:用户名为gaoleyi登录。PASS:指定用户密码。该命

8、令紧跟USER命令后。“PASSgao

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。