㈠ ftp是指的什么
FTP是指文件传输协议。
FTP是一种应用层协议,它在计算机网络中扮演着重要角色,主要用于在计算机之间传输文件。以下是关于FTP的
一、FTP的基本定义
FTP是一种基于客户端和服务器架构的协议,允许用户在互联网上或其他网络之间交换文件。它提供了一种可靠且高效的方法,用于将文件从一台计算机传输到另一台计算机。无论是在区域网还是广域网环境下,FTP都得到了广泛应用。
二、FTP的工作原理
在FTP中,客户端向服务器发出请求,要求传输文件。服务器响应这些请求,并通过网络将文件发送回客户端。FTP使用了一种称为「埠」的网络界面,在服务器端和客户端之间建立连接并进行数据传输。这种连接可以是主动模式或被动模式,具体取决于网络配置和防火墙设置。
三、FTP的应用场景
FTP广泛应用于许多领域。例如,网站管理员经常使用FTP上传和下载网站文件,软件开发人员则使用FTP来更新软件版本或修复错误。此外,许多企业和组织也使用FTP来共享和备份重要数据。由于其可靠性和安全性,FTP已成为互联网上最常用的文件传输方法之一。
四、FTP的安全性
虽然传统的FTP协议在文件传输方面非常有效,但它并不包含内置的安全性功能。因此,在传输敏感数据时,建议使用FTP的安全版本,如SFTP或FTPS。这些协议提供了数据加密和身份验证等功能,增强了文件传输的安全性。
总的来说,FTP是一种用于在网络上传输文件的协议,广泛应用于各种场景。由于其简单性和可靠性,它已成为互联网上最常用的文件传输方法之一。
㈡ 基于C#的FTP开源库,让你快速完成FTP文件传输功能,提升开发效率!
推荐一个基于C#开发的FTP开源项目,让你快速集成文件传输功能。
FluentFTP是一个基于.Net开发的,适用于FTP和FTPS文件传输的项目。该开源项目优化了传输速度,并提供了一套简洁易用的API界面,使得开发人员能够迅速集成并满足大多数需求。
FluentFTP的API设计采用了流畅的编程风格,使得代码编写和阅读变得简单高效。用户可以通过API轻松实现连接、上传、下载、删除、重命名等文件操作。此外,该库还具备断点续传功能,能够继续上次未完成的操作,并支持ASCII和二进制模式的文件传输。
在文件夹操作方面,FluentFTP允许用户创建、删除、列出文件夹。对于未知的文件类型,系统能够自动解析目录列表,确保文件的正确传输。用户还可以计算文件的哈希/校验和,以验证文件的完整性,同时设置文件权限。此外,项目还支持FTP代理,允许通过代理服务器进行连接。FXP传输功能允许用户在两个FTP服务器之间进行文件传输。同时,FluentFTP还支持UTF-8编码的文件名和路径,并提供了异步/等待支持,确保在不阻塞主线程的情况下进行文件传输。
为了方便安装和管理,FluentFTP还支持PowerShell环境。用户可以通过PowerShell轻松安装和管理FTP库。
如果你需要快速集成FTP文件传输功能,FluentFTP将是一个高效且易于使用的解决方案。
项目地址:github.com/robinrodrick...
了解更多.Net开源项目,可访问一个专注推荐.Net开源项目的榜单。
㈢ Android开发访问FTP服务器
commons-net.jar里面有ftp相关的界面,这个是我自己封装的一个类
import java.io.FileInputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
public class FTPUtils {
/**
* 通过ftp上传文件
*
* @param fileNamePath
* 要上传的文件路径 , 以'结'尾
* @param fileName
* 要上传的文件名
* @return 如果成功返回"" , 否则返回错误结果
*/
public static String ftpUpload(String sdcardFullFileName, String fileName, String ftpPath) {
FTPClient ftpClient = new FTPClient();
FileInputStream fis = null;
String returnMessage = "";
try {
ftpClient.connect(ConnectConfig.ftpIP, ConnectConfig.ftpPort);
boolean loginResult = ftpClient.login(ConnectConfig.ftpUserName, ConnectConfig.ftpPassWord);
int returnCode = ftpClient.getReplyCode();
if (loginResult && FTPReply.isPositiveCompletion(returnCode)) {// 如果登录成功
String[] splits = ftpPath.split("/");
String temps = splits[0];
ftpClient.makeDirectory(temps);
for(int i=1;i<splits.length;i++){
temps += "/" + splits[i];
ftpClient.makeDirectory(temps);
}
// ftpClient.makeDirectory(ftpPath);
// 设置上传目录
ftpClient.changeWorkingDirectory(ftpPath);
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("UTF-8");
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
fis = new FileInputStream(sdcardFullFileName);
// boolean result = ftpClient.(fileName, fis);
boolean result = ftpClient.storeFile(fileName, fis);
if(result){
returnMessage = ""; // 上传成功
}else{
returnMessage = "上传失败";
}
} else {// 如果登录失败
returnMessage = "登录FTP时失败,FTP用户名或者密码错误!";
}
} catch (IOException e) {
// ftp发送出现异常
e.printStackTrace();
returnMessage = "FTP客户端出错!" + e;
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return returnMessage;
}
}
㈣ ftp进行控制连接时使用的默认埠号为
ftp进行控制连接时使用的默认埠号为【答案】:D
FTP文件传输服务,默认情况下,其控制埠为TCP 21,上传文件时的埠为数据埠为TCP 20。80号埠为HTTP协议的默认埠,大于1024的埠为客户端自定义埠。
FTP是一种基于TCP的高级文件协议,在传输过程中,主要分为连接建立和数据传输两部分,响应的涉及服务器端的命令埠和数据埠。 建立连接是一种基于tcp的三次握手模型,对于ftp服务器,它使用固定的21命令埠与客户端进行通信。 在数据传输期间、ftp传输期间,通过在服务端数据通信期间选择不同的数据埠,可以将ftp分为主动模式(Port )和被动模式(Pasv )。 对于客户端,这两种模式对埠没有固定性,只能在创建时主动指定本地埠或随机埠,但对于服务器,可以使用服务器上固定的20个埠,或服务器根据连接立即指定1025个或更多数据埠但是,命令传输埠对服务器来说始终是21个埠。
FTP服务端支持两种模式。 在具体的通信过程中,选择哪个模式取决于客户端的选择。 然后介绍了两种模式的具体流程和相关原理。
1.ftp两种运行模式
Port模式(主动)
FTP客户端从任何非特殊埠(N 1023 )连接到FTP服务器命令埠21。 然后,客户端在n1(n1=1024 )埠上监听,并通过n1(n1=1024 )埠向FTP服务器发送命令。 服务建立从服务20埠到用户本地指定埠的数据传输连接。
处于活动模式的FTP的主要问题实际上在于客户端。 FTP客户端不会主动连接到服务器的数据埠,而是告诉服务器正在接收哪个埠,然后服务器开始连接到客户端上的指定埠。 但是,这样的连接有时候会被客户端的防火墙阻止
具体原理
以下是活动模式下的FTP的具体示例。
在活动模式的FTP中,客户端通过随机非系统埠(N 1023 )连接到FTP服务器的命令埠21。 然后,客户端开始监听埠N 1,并将FTP命令埠N 1告诉FTP服务器「请将数据发送到我的N 1埠」。 然后,服务从本地数据埠(埠20 )连接到客户端数据埠,即N 1埠。
由于服务器防火墙已隔离,因此必须确保从服务器FTP到客户端的以下几个通道已顺利进行:
FTP服务器埠21 (接受所有客户端) ) ) ) ) ) ) )。
FTP服务器埠21~1023 (服务器响应客户端控制埠)
FTP服务器埠20到1023上的埠(服务器开始连接到客户端数据埠)。
从1023埠到FTP服务器埠20 (客户端向服务器数据埠发送ack ) )。
用图表示这些通道:
在步骤1中,客户端命令埠连接到服务器命令埠,并发送命令埠1027。 然后,服务在步骤2中将ACK发送回客户端命令埠。 在步骤3中,服务在本地数据埠上启动连接,并连接到前面指定的客户端数据埠。 最后,客户端返回ACK,如步骤4所示。
Pasv模式(被动)
Pasv是Passive的缩写,中文处于被动模式。 工作原理: FTP客户端连接到FTP服务器的21个埠,并通过发送用户名和密码进行登录。 成功登录后,读取list列表或数据时,将Pasv命令发送到FTP服务器。 服务器本地随机开放一个埠(1024或更高),将开放埠传递给客户端,然后客户端连接到服务器的开放埠进行数据传输
被动模式的FTP的具体例子如下所示。
在被动模式的FTP中,客户端启动到服务器的两个连接,以解决防火墙阻止服务器到客户端的传入数据埠连接的问题。 建立FTP连接后,客户端将在本地打开两个随机的非系统埠n和n1(n1023 )。 第一个埠连接到服务器的21个埠,但客户端现在发出PASV命令。 这意味着服务器不能重新连接到数据埠。 这将使服务打开随机的非系统埠p(p1023 ),并将p发送到客户端以响应PASV命令。 然后,客户端启动从埠N 1到埠p的连接并传输数据。
被动模式保持以下通道的平滑度:
FTP服务器的21个埠(接受所有客户端)
从FTP服务器的21埠到1023埠的远程埠(服务器响应客户端控制埠) ) ) )。
FTP服务器1023上的埠(从所有客户端接受到服务器指定随机埠的连接)。
从FTP服务器1023的埠到1023的远程埠(服务器将ack和数据发送到客户端数据埠)。
被动模式用图表示:
在步骤1中,客户端通过命令埠连接到服务器并发出PASV命令。 然后,服务在步骤2中使用埠2024进行响应,并通知客户端正在接收的数据连接
口。第 3 步,客户端启动从其数据埠到指定服务器数据埠的数据连接。最后,服务器在第 4 步将 ACK 发送回客户端的数据埠。
被动模式的FTP的需要在服务端进行开放埠区段设置,用来开放给客户端进行连接,如果被动模式下,出现客户端可以访问ftp服务端文件的列表,但是无法进行下载等进一步操操作,出现这种问题的原因,是服务端的文件无法被读取或者是无法通过网络埠进行传输。可以按照以下步骤进行排查:
1)检查服务端端对文件的权限设置是否完全,登录用户是否存在下载权限;
2)如果登录用户存在下载权限,那么需要进一步检查服务器端的数据传输界面是否开放,如果有防火墙的话,是否配置了防火墙的出站入站埠规则;
3)如果仍然存在问题,检查被动模式下的ftp服务器的数据埠设置是否进行指定,默认是1025-6000,指定的埠区段是否已经配置了防火墙的出站规则;
2.两种模式的比较
从上面的运行原来看到,主动模式和被动模式的不同简单概述为: 主动模式传送数据时是「服务器」连接到「客户端」的埠;被动模式传送数据是「客户端」连接到「服务器」的埠。
主动模式需要客户端必须开放埠给服务器,很多客户端都是在防火墙内,开放埠给FTP服务器访问比较困难。
被动模式只需要服务器端开放埠给客户端连接就行了。
3.不同工作模式的网络设置
我在实际项目中碰到的问题是,FTP的客户端和服务器分别在不同网络,两个网络之间有至少4层的防火墙,服务器端只开放了21埠, 客户端机器没开放任何埠。FTP客户端连接采用的被动模式,结果客户端能登录成功,但是无法LIST列表和读取数据。很明显,是因为服务器端没开放被动模式下的随机埠导致。
由于被动模式下,服务器端开放的埠随机,但是防火墙要不能全部开放,解决的方案是,在ftp服务器配置被动模式下开放随机埠在 50000-60000之间(范围在ftp服务器软件设置,可以设置任意1024上的埠段),然后在防火墙设置规则,开放服务器端50000-60000之间的埠端。
主动模式下,客户端的FTP软件设置主动模式开放的埠段,在客户端的防火墙开放对应的埠段。
4.常见的ftp客户端设置被动模式
(1)IE:工具 -> Internet选项 -> 高级 -> 「使用被动FTP」(需要IE6.0以上才支持)。(2)CuteFTP:Edit -> Setting -> Connection -> Firewall -> 「PASV Mode」 或File -> Site Manager,在左边选中站点 -> Edit -> 「Use PASV mode」 。(3)FlashGet:工具 -> 选项 -> 代理服务器 -> 直接连接 -> 编辑 -> 「PASV模式」。(4)FlashFXP:选项 -> 参数选择 -> 代理/防火墙/标识 -> 「使用被动模式」 或 站点管理 -> 对应站点 -> 选项 -> 「使用被动模式」或快速连接 -> 切换 -> 「使用被动模式」。
极速赛车五码稳赢技巧否完全,登录用户是否存在下载权限;
2)如果登录用户存在下载权限,那么需要进一步检查服务器端的数据传输界面是否开放,如果有防火墙的话,是否配置了防火墙的出站入站埠规则;
3)如果仍然存在问题,检查被动模式下的ftp服务器的数据埠设置是否进行指定,默认是1025-6000,指定的埠区段是否已经配置了防火墙的出站规则;
2.两种模式的比较
从上面的运行原来看到,主动模式和被动模式的不同简单概述为: 主动模式传送数据时是「服务器」连接到「客户端」的埠;被动模式传送数据是「客户端」连接到「服务器」的埠。
主动模式需要客户端必须开放埠给服务器,很多客户端都是在防火墙内,开放埠给FTP服务器访问比较困难。
被动模式只需要服务器端开放埠给客户端连接就行了。
3.不同工作模式的网络设置
我在实际项目中碰到的问题是,FTP的客户端和服务器分别在不同网络,两个网络之间有至少4层的防火墙,服务器端只开放了21埠, 客户端机器没开放任何埠。FTP客户端连接采用的被动模式,结果客户端能登录成功,但是无法LIST列表和读取数据。很明显,是因为服务器端没开放被动模式下的随机埠导致。
由于被动模式下,服务器端开放的埠随机,但是防火墙要不能全部开放,解决的方案是,在ftp服务器配置被动模式下开放随机埠在 50000-60000之间(范围在ftp服务器软件设置,可以设置任意1024上的埠段),然后在防火墙设置规则,开放服务器端50000-60000之间的埠端。
主动模式下,客户端的FTP软件设置主动模式开放的埠段,在客户端的防火墙开放对应的埠段。
4.常见的ftp客户端设置被动模式
(1)IE:工具 -> Internet选项 -> 高级 -> 「使用被动FTP」(需要IE6.0以上才支持)。(2)CuteFTP:Edit -> Setting -> Connection -> Firewall -> 「PASV Mode」 或File -> Site Manager,在左边选中站点 -> Edit -> 「Use PASV mode」 。(3)FlashGet:工具 -> 选项 -> 代理服务器 -> 直接连接 -> 编辑 -> 「PASV模式」。(4)FlashFXP:选项 -> 参数选择 -> 代理/防火墙/标识 -> 「使用被动模式」 或 站点管理 -> 对应站点 -> 选项 -> 「使用被动模式」或快速连接 -> 切换 -> 「使用被动模式」。
㈤ 如何搭建自己的FTP服务器
一、操作系统的选择
FTP服务器首先是基于操作系统而运作的,因而操作系统本身的安全性就决定了FTP服务器安全性的级别。虽然Windows 98/Me一样可以架设FTP服务器,但由于其本身的安全性就不强,易受攻击,因而最好不要采用。Windows NT就像鸡肋,不用也罢。最好采用Windows 2000及以上版本,并记住及时打上补丁。至于Unix、Linux,则不在讨论之列。
二、使用防火墙
埠是计算机和外部网络相连的逻辑界面,也是计算机的第一道屏障,埠配置正确与否直接影响到主机的安全,一般来说,仅打开你需要使用的埠,将其他不需要使用的埠屏蔽掉会比较安全。限制埠的方法比较多,可以使用第三方的个人防火墙,这里只介绍Windows自带的防火墙设置方法。
1.利用TCP/IP筛选功能
在Windows 2000和Windows XP中,系统都带有TCP/IP筛选功能,利用它可以简单地进行埠设置。以Windows XP为例,打开本地连接的属性,在常规选项中找到Internet协议(TCP/IP),双击它打开该协议的属性设置窗口。点击右下方的高级按钮,进入高级TCP/IP设置。在选项中选中TCP/IP筛选并双击进入其属性设置。这里我们可以设置系统只允许开放的埠,假如架设的FTP服务器埠为21,先选中启用TCP/IP筛选(所有适配器),再在TCP埠选项中选择只允许,点添加,输入埠号21,确定即可。这样,系统就只允许打开21埠。要开放其他埠,继续添加即可。这可以有效防止最常见的139埠入侵。缺点是功能过于简单,只能设置允许开放的埠,不能自定义要关闭的埠。如果你有大量埠要开放,就得一个个地去手工添加,比较麻烦。
2.打开Internet连接防火墙
对于Windows XP系统,自带了Internet连接防火墙功能,与TCP/IP筛选功能相比,设置更方便,功能更强大。除了自带防火墙埠开放规则外,还可以自行增删。在控制面板中打开网络连接,右击拨号连接,进入高级选项卡,选中通过限制或阻止来自Internet的对此计算机的访问来保护我的计算机和网络,启用它。系统默认状态下是关闭了FTP埠的,因而还要设置防火墙,打开所使用的FTP埠。点击右下角的设置按钮进入高级设置,选中FTP服务器,编辑它。由于FTP服务默认埠是21,因而除了IP地址一栏外,其余均不可更改。在IP地址一栏中填入服务器公网ip,确定后退出即可实时生效。如果架设的FTP服务器埠为其他埠,比如22,则可以在服务选项卡下方点添加,输入服务器名称和公网IP后,将外部埠号和内部埠号均填入22即可。
三、对IIS、Serv-u等服务器软件进行设置
除了依靠系统提供的安全措施外,就需要利用FTP服务器端软件本身的设置来提高整个服务器的安全了。
1.IIS的安全性设置
1)及时安装新补丁
对于IIS的安全性漏洞,可以说是有口皆碑了,平均每两三个月就要出一两个漏洞。所幸的是,微软会根据新发现的漏洞提供相应的补丁,这就需要你不断更新,安装最新补丁。
2)将安装目录设置到非系统盘,关闭不需要的服务
一些恶意用户可以通过IIS的溢出漏洞获得对系统的访问权。把IIS安放在系统分区上,会使系统文件与IIS同样面临非法访问,容易使非法用户侵入系统分区。另外,由于IIS是一个综合性服务组件,每开设一个服务都将会降低整个服务的安全性,因而,对不需要的服务尽量不要安装或启动。
FTP最大的安全漏洞在于其默认传输密码的过程是明文传送,很容易被人嗅探到。而IIS又是基于Windows用户账户进行管理的,因而很容易泄漏系统账户名及密码,如果该账户拥有一定管理权限,则更会影响到整个系统的安全。设置为只允许匿名连接,可以免却传输过程中泄密的危险。进入默认FTP站点,在属性的安全账户选项卡中,将此选项选中。
4)谨慎设置主目录及其权限
IIS可以将FTP站点主目录设为区域网中另一台计算机的共享目录,但在区域网中,共享目录很容易招致其他计算机感染的病毒攻击,严重时甚至会造成整个区域网瘫痪,不到万不得已,最好使用本地目录并将主目录设为NTFS格式的非系统分区中。这样,在对目录的权限设置时,可以对每个目录按不同组或用户来设置相应的权限。右击要设置的目录,进入共享和安全→安全中设置,如非必要,不要授予写入权限。
5)尽量不要使用默认埠号21
启用日志记录,以备出现异常情况时查询原因。
2.Serv-u的安全性设置
与IIS的FTP服务相比,Serv-u在安全性方面做得比较好。
1)对本地服务器进行设置
首先,选中拦截FTP_bounce攻击和XP。通常,当使用FTP协议进行文件传输时,客户端首先向FTP服务器发出一个PORT命令,该命令中包含此用户的IP地址和将被用来进行数据传输的埠号,服务器收到后,利用命令所提供的用户地址信息建立与用户的连接。大多数情况下,上述过程不会出现任何问题,但当客户端是一名恶意用户时,可能会通过在PORT命令中加入特定的地址信息,使FTP服务器与其它非客户端的机器建立连接。虽然这名恶意用户可能本身无权直接访问某一特定机器,但是如果FTP服务器有权访问该机器的话,那么恶意用户就可以通过FTP服务器作为中介,仍然能够最终实现与目标服务器的连接。这就是FXP,也称跨服务器攻击。选中后就可以防止发生此种情况。
其次,在高级选项卡中,检查加密密码和启用安全是否被选中,如果没有,选择它们。加密密码使用单向Hash函数(MD5)加密用户口令,加密后的口令保存在ServUDaemon。ini或是注册表中。如果不选择此项,用户口令将以明文形式保存在文件中:启用安全将启动Serv-u服务器的安全成功。
2)对域中的服务器进行设置
前面说过,FTP默认为明文传送密码,容易被人嗅探,对于只拥有一般权限的账户,危险并不大,但如果该账户拥有远程管理尤其是系统管理员权限,则整个服务器都会被别人远程式控制制。Serv-u对每个账户的密码都提供了以下三种安全类型:规则密码、OTP S/KEY MD4和OTP S/KEY MD5。不同的类型对传输的加密方式也不同,以规则密码安全性最低。进入拥有一定管理权限的账户的设置中,在常规选项卡的下方找到密码类型下拉列表框,选中第二或第三种类型,保存即可。注意,当用户凭此账户登录服务器时,需要FTP客户端软件支持此密码类型,如CuteFTP Pro等,输入密码时选择相应的密码类型方可通过服务器验证。
与IIS一样,还要谨慎设置主目录及其权限,凡是没必要赋予写入等能修改服务器文件或目录权限的,尽量不要赋予。最后,进入设置源码天空