FTP两种模式初次认识

云计算 waitig 555℃ 百度已收录 0评论

FTP文件下载:
1.根据host和port连接到服务器 ftpClient.connect方法
2.用 ftpClient.login 方法输入用户名和密码登录
3.非必要方法( setFileType 设置文件类型(有两种,FTPClient.BINARY_FILE_TYPE 和 FTPClient.ASCII_FILE_TYPE ) 
enterLocalPassiveMode 方法 : 被动模式传输
每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据。
为什么要这样做呢,因为ftp server可能每次开启不同的端口来传输数据,但是在linux上,由于安全限制,可能某些端口没有开启,所以就出现阻塞。)
4.用 changeWorkingDirectory
方法修改文件路径,缩小搜索范围,不然会出现搜索超时,无法连接的错误。
5.用 retrieveFileStream 方法即可获取到你需要的文件

FTP两种模式:
FTP是一种文件传输协议,分为主动方式(Active,也叫作standard)和被动方式(PASV,passive)。
standard模式是FTP的客户端发送PORT命令到FTP server。 Passive模式则是FTP客户端发送PASV命令给FTP server。

standard: 
1. client 和 server 21 端口 建立连接;
2. client 使用 PORT命令 告诉 server 使用的端口 并且 client 进行listen; 然后server端口 20 和client 端口 建立数据传输通道,
    由于是 server 知道client的端口后主动建立了数据传输通道,所以称为 active。

Passive:
1.client 和 server 21 端口建立连接。
2.client 发送 PASV命令 告诉 server 需要开启哪个端口供使用,然后 server 等待 client 去连接,建立数据传输通道。
由于是client掌握主动权,所以称为被动方式。

内网使用无需关注模式的问题,因为没有防火墙。

复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。

主要区别就是:
主动模式:服务器向客户端敲门,然后客户端开门
被动模式:客户端向服务器敲门,然后服务器开门

生成环境的客户端一般都是nat地址转换而来的,所以主动模式是行不通。

而且被动模式时,client 向 server 提供端口的时候会被防火墙拒绝,所以需要在 SERVER 配置文件把被动模式开放的端口做一下限制。

最后加上两篇好文章的指导,文章的主要内容来自这两篇文章:

http://blog.csdn.net/XingKong_678/article/details/44937303

http://blog.csdn.net/zhangyuan12805/article/details/71425385


本文由【waitig】发表在等英博客
本文固定链接:FTP两种模式初次认识
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)