将某台计算机中的⽂件通过⽹络传送到可能相距很远的另⼀台计算机中,是⼀项基本的⽹络应⽤,即⽂件传送。⽂件传送协议FTP (File Transfer Protocol)是因特⽹上使⽤得最⼴泛的⽂件传送协议。FTP是⼀个⽼早的⽹络协议,⾸次标准化发表在1971年的RFC 114中,后来的主要版本是RFC 959,发布于1985年。这个版本为FTP的操作和扩展奠定了基础,⾄今仍是FTP通信的基础。● FTP提供交互式的访问,允许客户指明⽂件的类型与格式(如指明是否使⽤ASCII码),并允许⽂件具有存取权限(如访问⽂件的⽤户必须经过授权,并输⼊有效的⼝令)。● FTP屏蔽了各计算机系统的细节,因⽽适合于在异构⽹络中任意计算机之间传送⽂件。● 在因特⽹发展的早期阶段,⽤FTP传送⽂件约占整个因特⽹的通信量的三分之⼀,⽽由电⼦邮件和域名系统所产⽣的通信量还要⼩于FTP所产⽣的通信量。只是到了1995年,万维⽹WWW的通信量才⾸次超过了FTP。
控制连接● 端⼝:默认使⽤TCP 21端⼝。● 作⽤:控制连接在整个FTP会话期间⼀直保持打开,⽤于传送诸如登录、改变⼯作⽬录、列出⽬录内容等FTP命令。● 特点:此连接始终开放,以保证客户端和服务器之间可以随时交换FTP控制信息
数据连接● 端⼝:在主动模式下,默认使⽤TCP 20端⼝。在被动模式下,端⼝号由服务器动态指定,并通知给客户端。● 作⽤:数据连接仅在需要传输⽂件(包括上传和下载)或⽬录列表时建⽴。⼀旦⽂件传输任务完成,数据连接就会被关闭。● 特点:数据连接的⽣命周期较短,只在需要时建⽴,并在⽤完后⽴即关闭。
控制连接和数据连接 分离设计的优势:
1. 命令和数据分离FTP通过单独的控制连接来处理命令和响应,确保了在进⾏⽂件传输的同时还可以接收和执⾏新的命令。这意味着⽤户可以在⼀个⽂件正在传输时发送额外的FTP命令(例如中断传输、开始另⼀个传输等),⽽不会⼲扰到当前的数据传输。2. 提⾼效率由于数据连接只在需要传输⽂件时才建⽴,并在传输完成后关闭,这种动态连接的管理⽅式可以更⾼效地使⽤⽹络资源。控制连接保持开放状态,以便随时准备接收新的指令,⽽不必每次传输数据时重新进⾏整个登录和认证过程。3. 增强兼容性和配置灵活性使⽤两种连接的⽅法提⾼了FTP的灵活性,允许服务器和客户端更好地管理⽹络配置如防⽕墙和NAT(⽹络地址转换)。例如,在被动模式中,客户端可以主动连接到服务器上的动态端⼝,这在客户端背后有防⽕墙时尤其有⽤。4. 安全性考虑将命令和数据传输分离也提⾼了FTP的安全性,因为控制连接可以加密命令传输,避免敏感信息(如⽤户名和密码)在⽹络中明⽂传输。尽管传统FTP本身不包括加密,但其设计允许通过扩展(如FTPS或与SSH隧道结合的SFTP)来提供这种安全性。5. 错误处理和控制在两个独⽴的通道中,⼀个⽤于命令和控制,另⼀个⽤于数据传输,使得错误处理更加简洁明了。如果数据传输出现问题,控制连接仍然保持开放,⽤户可以通过发送控制命令来解决问题或调整设置,⽽不会影响到控制流本身。
⼯作模式
FTP可以在两种模式下⼯作:主动模式和被动模式
1. 主动模式(Active Mode): 默认
○ 客户端从任意⾮特权端⼝(端⼝号⼤于1023)发送FTP命令到服务器的命令端⼝,即21端⼝。○ 当服务器收到命令后,它从端⼝20发起⼀个到客户端命令所来⾃的端⼝的连接。○● FTP客户端⾸先先会随机开启⼀个⼤于1024的端⼝N(1032)进⾏监听,并与服务端的21号端⼝建⽴连接,● 然后开放N+1端⼝(1033)进⾏监听, 同时时向服务器发出PORT 1033命令通知服务器⾃⼰的在接收数据时所使⽤的端⼝号。● 服务器在传输数据的时候,服务端通过⾃⼰的20端⼝去连接客户端的1033端⼝。当不需要传输时,此连接会⾃动断开。
2. 被动模式(Passive Mode):
○ 客户端从任意⾮特权端⼝连接到服务器的命令端⼝。○ 然后服务器会在客户端命令中指定的端⼝上监听数据连接,⽽不是从服务器的20端⼝发起连接。● FTP客户端随机开启⼀个⼤于1024的端⼝X向服务器的21端⼝发起连接,同时会开启X+1端⼝● 然后向服务器发送PASV命令,通知服务器⾃⼰处于被动模式。● 服务器收到命令后,会开放⼀个⼤于1024的端⼝Y进⾏监听,然后⽤PORT Y命令通知客户端,⾃⼰的数据端⼝是Y。● 客户端收到命令后,会通过X+1号端⼝连接服务器的端⼝Y,然后在两个端⼝之间进⾏数据传输● 这样就能使防⽕墙知道⽤于数据连接的端⼝号,⽽使数据连接得以建⽴
客户机/服务器模式
FTP采⽤客户机/服务器架构,其中:● FTP服务器:运⾏FTP服务软件,负责响应客户端的请求,管理⽂件的存储和访问。● FTP客户端:可以是任何⽤来发起连接和⽂件传输请求的软件,如命令⾏⼯具、Web浏览器或专⽤ 的FTP客户端应⽤。
连接⽅式
FTP可以通过多种⽅式进⾏连接:1. 命令⾏⽅式连接:使⽤如 ftp 这样的命令⾏⼯具,在⼤多数操作系统中都内置此类⼯具,允许⽤户执⾏FTP命令来传输⽂件。2. Web⽅式连接:通过Web浏览器直接访问FTP服务器,输⼊FTP的URL(如 ftp://ftp.example.com ),浏览器会展示服务器上的⽂件和⽂件夹。3. 本地安装FTP客户端软件连接:使⽤专⻔的FTP客户端软件,如FileZilla、WinSCP等,这些客户端提供⽤户友好的界⾯和丰富的配置选项,⽀持⽂件的上传、下载和同步。
登录方式
1. 匿名登录:⽤户可以通过使⽤ anonymous 作为⽤户名进⾏登录,通常邮箱地址作为密码(尽管不⼀定会被真正验证)。这种⽅式允许⽤户访问公开的⽂件夹和⽂件,⼴泛⽤于公共⽂件的下载。2. 授权帐户登录:⽤户需要提供有效的⽤户名和密码才能登录FTP服务器。这提供了更⾼级别的安全性和访问控制,适⽤于需要限制访问权限的场景。
文件传输
FTP的⽂件传输仅表示下列三件事件之⼀:从服务器把⽂件复制到客户(下载),称为读取⽂件。在RETR命令的监督下完成。从客户把⽂件复制到服务器(上传),称为存储⽂件。在STOR命令的监督下完成。从服务器向客户发送⽬录列表或⽂件名。在LIST命令的监督下完成。应注意,FTP把⽬录或⽂件名列表当作⽂件,在数据连接上发送。
安全性
传统的FTP不加密其传输的数据,包括⽤户的认证信息(⽤户名和密码),因此它对窃听特别敏感。为了提供安全的⽂件传输功能,推出了以下⼏种⽅案:
- FTP over SSL/TLS (FTPS):利⽤SSL或TLS提供加密的通道,以保护数据传输的安全。
- SSH File Transfer Protocol (SFTP):作为FTP的替代,通过SSH提供加密的传输。
FTP协议虽然有其历史局限性,但因其简单和⼴泛⽀持,在很多环境中仍然是⽂件传输的可⾏选择。然⽽,在安全性是关键考量的环境下,建议使⽤FTPS或SFTP替代传统FTP。
实验一 Windows FTP 匿名访问
1.安装FTP服务(不同系统有差异)
首先,需要在Windows Server 上安装FTP服务器组件:
1. 打开“服务器管理器”。
2.点击“管理”,选择“添加角色和功能”。
3.在“添加角色和功能向导”中,点击“下一步”直到“服务器角色”页面。
4.展开“Web服务器(IIS)”角色,然后展开“Web服务器”部分,接着展开“FTP服务器”。
5.选择“FTP服务”,点击“添加功能"确认附加所需的功能。
6.继续点击“下一步”,然后点击“安装”。
7.完成安装后,点击“关闭”。
2.配置FTP站点
安装FTP服务之后,需要配置FTP站点并启用匿名访问:
1.打开“IIS管理器”。
2.在“连接”窗格中,右键点击“站点”,选择“添加FTP站点”。
3.为FTP站点命名,并指定FTP站点的本地路径(这是匿名用户将访问的目录)。
4.点击“下一步”,配置IP地址设置,选择要绑定的IP地址或者保留“全部未分配”。
5.在“SSL”页面,根据安全需求选择“No SSL”(如果不需要SSL加密)。
6.点击“下一步”,在“身份验证”部分选择“匿名”。
7.在“授权”部分,选择“匿名用户”,权限选择“读取”(如果只需要下载文件)和“写入”(如果需要上传文件)。
3.配置匿名用户的权限
要让匿名用户能够访问FTP站点,您需要确保匿名用户(通常是IUSR账户)有权访问FTP根文件夹:
1.在文件资源管理器中,右键点击您为FTP站点设置的文件夹。
2.选择“属性”,然后点击“安全”选项卡。
3.点击“编辑”,然后点击“添加”。
4.输入“IUSR",点击“检查名称”,确认后点击“确定”。
5.在“权限”部分,根据需要选择适当的权限(如“读取&执行”、“列出文件夹内容”、“读取”)。
6.点击“应用”和“确定”。
4.测试FTP访问
通过浏览器访问FTP站点,测试是否可以成功进行匿名访问。
上传失败,满足匿名用户不能上传的权限(可以读取,可以下载)
注意: 在新建站点时无需选择基于主机名的配置。主机名是用来配置有多个域名时,同一个IP地址且同一个端口号是来对应不同的FTP站点。