设为首页 收藏本站
查看: 1572|回复: 0

网络协议研究(四)FTP

[复制链接]

尚未签到

发表于 2015-5-28 09:44:54 | 显示全部楼层 |阅读模式
  文件传输协议(英文:File Transfer Protocol,简称为FTP)是用于在网络上进行文件传输的一套标准协议。它属于网络传输协议的应用层。

  FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登陆进程。

  

  概述

  FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。当数据通过数据流传输时,控制流处于空闲状态。而当控制流,空闲很长时间后,客户端的防火墙,会将其会话置为超时,这样当大量数据通过防火墙时,会产生一些问题。此时,虽然文件可以成功的传输,但因为控制会话,会被防火墙断开;传输会产生一些错误。

  FTP实现的目标:


  • 促进文件的共享(计算机程序或数据)
  • 鼓励间接或者隐式的使用远程计算机
  • 向用户屏蔽不同主机中各种文件存储系统(File system)的细节
  • 可靠和高效的传输数据
  缺点:


  • 密码和文件内容都使用明文传输,可能产生不希望发生的窃听。
  • 因为必须开放一个随机的端口以创建连接,当防火墙存在时,客户端很难过滤处于主动模式下的FTP流量。这个问题,通过使用被动模式的FTP,得到了很大解决。
  • 服务器可能会被告知连接一个第三方计算机的保留端口。
  • 此方式在需要传输文件数量很多的小文件时,性能不好
  FTP虽然可以被终端用户直接使用,但是它是设计成被FTP客户端程序所控制。

  运行FTP服务的许多站点都开放匿名服务,在这种设置下,用户不需要帐号就可以登录服务器,默认情况下,匿名用户的用户名是:"anonymous"。这个帐号不需要密码,虽然通常要求输入用户的邮件地址作为认证密码,但这只是一些细节或者此邮件地址根本不被确定,而是依赖于FTP服务器的配置情况。

  FTP具有很强的兼容性,可以在不同的操作系统之间通信,可以使用不同的字符集、不同的文件结构以及不同的文件格式。

  FTP使用三种传输方式:

  流方式:数据作为连续的字节流从FTP交付给TCP

  块方式:数据按块从FTP交付给TCP

  压缩方式:将数据压缩后进行传送

  

  主动和被动模式

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

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


  • 客户端打开一个随机的端口(端口号大于1024,在这里,我们称它为x),同时一个FTP进程连接至服务器的21号命令端口。此时,该tcp连接的来源地端口为客户端指定的随机端口x,目的地端口(远程端口)为服务器上的21号端口。
  • 客户端开始监听端口(x+1),同时向服务器发送一个端口命令(通过服务器的21号命令端口),此命令告诉服务器客户端正在监听的端口号并且已准备好从此端口接收数据。这个端口就是我们所知的数据端口。
  • 服务器打开20号源端口并且创建和客户端数据端口的连接。此时,来源地的端口为20,远程数据(目的地)端口为(x+1)。

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

  FTP和网页浏览器

  大多数最新的网页浏览器和文件管理器都能和FTP服务器创建连接。这使得在FTP上通过一个接口就可以操控远程文件,如同操控本地文件一样。这个功能通过给定一个FTP的URL实现,形如ftp://(例如,ftp://ftp.gimp.org )。是否提供密码是可选择的,如果有密码,则形如ftp://:@。大部分网页浏览器要求使用被动FTP模式,然而并不是所有的FTP服务器都支持被动模式。
  
  架设FTP服务器
  一、Windows Server 2008 R2
  Windows Server 2008 R2 中自带了FTP Server 7.5,可单独下载安装。

  FTP 7.5 for IIS 7.x (x86)

  FTP 7.5 for IIS 7.x (x64)

  FTP 7.5 新特性:原文地址

  与IIS 7.x集成(IIS 7.0、IIS 7.5):FTP 7.5已经作为IIS 7.x的一部分被安装,便于集中管理、维护。

  对互联网标准更好、更安全的支持:支持SSL上的FTP、IPv6、UTF8。

  共享宿主改进:可以将FTP架设在已经存在的站点,多个FTP使用同一IP。

  改进的日志与功能性支持:提供更加详细的日志记录。

  可扩展性增强:可以编写自定义的用户验证机制。

  

  下面在VirtualBox虚拟机中架设FTP服务器。宿主机IP:192.168.0.100,虚拟机IP:192.168.0.101,虚拟网卡采用桥连模式。

  1.1、打开Server Manager,在角色中点击【添加角色】:

DSC0000.png

  

  1.2、选中【Web Server(IIS)】,点击【下一步】:

DSC0001.png

  

  1.3、点击【下一步】:

DSC0002.png

  

  1.4、在开发服务器上,建议全部选中,在生产服务器上,则酌情选择,点击【下一步】:

DSC0003.png

  

  1.5、点击【安装】:

DSC0004.png

  

  1.6、安装成功后关闭向导:

DSC0005.png

  

  1.7、开始à运行,输入:inetmgr,打开IIS 管理器:

DSC0006.png

  

  1.8、可以看到FTP 7.5包含的选项:

DSC0007.png

  

  1.9、新建一个FTP站点:

DSC0008.png

  

  1.10、输入名称和物理路径,点击【下一步】:

DSC0009.png

  

  1.11、IP不限制,默认端口21,不需要SSL证书,点击【下一步】:

DSC00010.png

  

  1.12、设置权限,点击【完成】:

DSC00011.png

  

  1.13、在浏览器中输入FTP服务器地址,若无法访问请检查宿主机与虚拟机的防火墙设置:

DSC00012.png

  

  1.14、使用命令行访问FTP

  最常用的命令有:

  ls 列出远程机的当前目录

  cd 在远程机上改变工作目录

  lcd 在本地机上改变工作目录

  ascii 设置文件传输方式为ASCII模式

  binary 设置文件传输方式为二进制模式

  close 终止当前的ftp会话

  hash 每次传输完数据缓冲区中的数据后就显示一个#号

  get(mget) 从远程机传送指定文件到本地机

  put(mput) 从本地机传送指定文件到远程机

  open 连接远程ftp站点

  quit 断开与远程机的连接并退出ftp

  ? 显示本地帮助信息

  

  输入ftp 主机名/IP登录:

DSC00013.png

  

  由于设置为允许匿名访问,故可以用匿名账户登录(用户名:anonymous,密码任意):

DSC00014.png

  

  查看所有目录和文件:

DSC00015.png

  

  下载一个文件到本地:

DSC00016.png

  

  输入bye退出登录:

DSC00017.png

  

  1.15、使用FTP客户端连接FTP服务器

  我使用的FileZilla:

DSC00018.png

  

  可以在WireShark中抓到数据包:

DSC00019.png

  
  二、Ubuntu 11.04
  Linux下有很多FTP软件,这里以Ubuntu下面的Pure-FTPd为例来搭建一下Linux中的FTP Server。

  Pure-FTPd是一个基于BSD协议授权的开源FTP Server,官方主页:http://www.pureftpd.org,功能全面,具体功能可以查看文档。

  安装Pure-FTPd

  
由于Ubuntu源里的包太老了,故我选择直接下载源代码编译安装。在http://download.pureftpd.org/pub/pure-ftpd/releases/下载最新稳定版,我下载的是pure-ftpd-1.0.32.tar.gz。
  
  

  
解压缩:tar zxvf pure-ftpd-1.0.32.tar.gz
  
  
cd 压缩后的目录
  
  
./configure
  
  
make
  
  
sudo make install
  
  

  
启动FTP Server:
  
  
sudo /usr/local/sbin/pure-ftpd &
  
DSC00020.png

  
连接测试:
  
  
ftp localhost
  
DSC00021.png
  
查看当前目录下的目录和文件:
  
DSC00022.png
  
在Windows中用命令行连接:
  
DSC00023.png
  
Pure-FTPd有很多命令及参数配置,具体用法请参阅官方文档。
  
  

  
小结:
  
  
FTP作为十分常用的文件传输协议,在企业中有着广泛的引用,各平台下也提供了大量的Server、Client。在使用中除了关注传输速度之外,传输安全性也是必须考虑的。
  
  
以下引用维基百科中的常用FTP Server、Client,根据需要选用:
  
  

FTP服务器列表

  维基百科,自由的百科全书

  以下是FTP服务器的列表。

[编辑]图形界面


  • Bullet Proof FTP Server [1]
  • CesarFTP [2]
  • Cerberus FTP Server [3]
  • Gene6 FTP Server [4]
  • GuildFTPd [5]
  • PureFTPd [6]
  • RaidenFTPD [7]
  • Serv-U FTP Server [8]
  • War FTP Daemon [9]
[编辑]文字界面


  • AnomicFTPD [10]
  • BSD ftpd
  • glFTPd [11]
  • ProFTPd
  • vsftpd [12]
  • wu-ftpd [13]
  

FTP客户端列表

  维基百科,自由的百科全书

  以下是FTP客户端的列表。

[编辑]图形界面


  • AnyClient [1]
  • Core FTP [2]
  • CrossFTP [3]
  • CuteFTP
  • DeluxeFTP
  • FileZilla
  • FlashFXP
  • FTP Surfer [4]
  • FTPRush [5]
  • gFTP
  • OneButton FTP [6]
  • SmartFTP [7]
  • Total Commander
  • WISE-FTP
  • WS FTP [8]
  • 8uftp [9]
[编辑]文字界面


  • lftp
  • NcFTP
  • tnftp [10]
  • Wget(只能下传)
[编辑]只支持SFTP/SCP


  • Sftp for win32 [11]
  • WinSCP [12]

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-71373-1-1.html 上篇帖子: Solaris下ftp配置(初稿-待补充) 下篇帖子: FTP主动模式与被动模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表