首页 > 其他分享 >FTP文件传输协议

FTP文件传输协议

时间:2023-07-12 13:33:07浏览次数:32  
标签:FTP 被动模式 协议 端口 文件传输 服务器 连接 客户端

简述

FTP:文件传输协议,File Transfer Protocol,是在互联网中进行文件传输的一种协议,基于C/S模式,客户端通过FTP协议与服务器建立连接,并进行文件的上传、下载和管理。

在Linux系统下,有一款工具实现ftp协议,名为vsftpd,非常安全的FTP守护进程服务

默认端口

控制端口:默认端口号是21。该端口用于控制命令信息的传输,包括身份验证、目录导航、文件传输命令等。客户端通过该端口与服务器建立控制连接,并在此进行命令交互和控制操作。

数据端口:默认端口号是20。数据端口在文件传输时被使用,用于实际的数据传输。当客户端需要下载或上传文件时,数据连接会在控制连接的基础上建立起来,进行文件的实际传输。

安全FTP

需要注意的是,FTP协议是基于TCP协议的,而TCP协议是一种面向连接的协议,它通过在通信双方之间建立可靠的连接来传递数据。在FTP通信中,客户端和服务器之间通过控制连接建立通信,然后在需要的时候在数据连接上进行文件传输。为了提高安全性,常常使用FTP over SSL/TLS(FTPS)SSH File Transfer Protocol(SFTP)这两种安全的FTP协议替代传统的FTP协议。在这些安全协议中,控制和数据的传输都会使用加密通道,对数据进行加密保护,从而提供更高的数据安全性。

工作模式

支持两种工作模式:主动模式和被动模式。

主动模式:FTP服务器主动向客户端发起连接请求

被动模式:FTP服务器在等待客户端发来请求

主动模式

在主动模式(Active Mode)下,客户端首先建立一个控制连接(TCP连接)到服务器的默认端口(通常是端口21)。客户端发送一个PORT命令,指示服务器在哪个端口上连接数据通道。然后服务器从其数据端口(端口20)连接到客户端指定的数据端口,进行数据传输。

主动模式工作原理

  • 客户端向服务器发送一个PORT命令,命令中包含客户端的IP地址和一个数据端口号。
  • 服务器从它的数据端口(端口20)主动连接到客户端指定的数据端口。
  • 数据传输过程中,服务器会从数据端口发送数据,客户端通过控制连接发送命令。
  • 主动模式的优点是服务器可以主动连接到客户端,适用于客户端处于防火墙或NAT(网络地址转换)后面的情况。

主动模式局限性

客户端必须具有公共可访问的IP地址。如果客户端位于防火墙或NAT后面,需要配置防火墙或NAT以允许服务器连接到客户端。当服务器位于防火墙后面时,可能需要配置防火墙以允许传入的数据连接。

被动模式

被动模式(Passive Mode)下,客户端首先建立一个控制连接到服务器的默认端口(通常是端口21)。客户端发送一个PASV命令,指示服务器进入被动模式,并等待服务器告知数据通道的地址和端口。然后客户端从其端口连接到服务器指定的数据端口,进行数据传输。

被动模式工作原理

  • 客户端向服务器发送一个PASV命令,告知服务器进入被动模式。
  • 服务器响应一个包含服务器IP地址和一个由服务器随机选择的数据端口号的应答。
  • 客户端从其端口连接到服务器指定的数据端口。
  • 数据传输过程中,服务器通过控制连接发送命令,客户端通过数据连接接收数据。
  • 被动模式的优点是适用于客户端位于防火墙、NAT或代理后面的情况,无需配置任何特殊的防火墙规则或NAT转换。

被动模式局限性

客户端连接到服务器的数据端口可能会受到端口范围的限制。由于服务器随机选择数据端口,可能需要配置防火墙以允许传入的数据连接。

主被动模式总结

主动模式适用于客户端具有公共可访问IP地址的情况,需要服务器主动连接到客户端。

被动模式适用于客户端位于防火墙、NAT或代理后面的情况,无需服务器连接到客户端。具体使用哪种模式取决于网络环境和防火墙配置。

PORT命令

PORT命令是FTP中的一个命令,用于在主动模式下建立数据连接。当使用PORT命令时,客户端将通过指定的IP地址和端口号来指定数据连接的端点。

PORT命令的语法如下:PORT h1,h2,h3,h4,p1,p2

h1.h4指定了服务器的IP地址的四个十进制数值,p1.p2指定了服务器希望在端口上接收数据的数值。

PORT命令工作步骤

客户端通过控制连接发送PORT命令到服务器。

服务器解析PORT命令中指定的IP地址和端口号。

服务器使用指定的IP地址和端口号在自己的端上建立数据连接。

以后的数据传输将通过这个数据连接进行。

需要注意的是,PORT命令只在FTP的主动模式(Active Mode)下使用。在主动模式下,服务器通过数据连接初始化数据传输。相反,在被动模式(Passive Mode)下,客户端通过PASV命令告知服务器自己将连接到的IP地址和端口号,服务器在该地址和端口上等待数据连接请求。

总结一下,PORT命令用于在FTP主动模式下指定服务器建立数据连接的端点。它允许客户端通过指定IP地址和端口号来控制数据连接的建立。

相关文件

配置文件:/etc/vsftpd/vsftpd.conf

安装FTP服务器

1)安装vsftpd软件

]# yum -y install vsftpd

2)配置文件信息                       

]# vi    /etc/vsftpd/vsftpd.conf
# 传输模式和端口设置
pasv_enable=YES     #启用或禁用被动模式(PASV)。设置为 YES 表示启用被动模式
pasv_min_port=1024  # 被动模式数据连接的最小端口
pasv_max_port=1048  # 被动模式数据连接的最大端口
# 本地用户设置
local_enable=YES  # 启用本地用户访问
write_enable=YES  # 允许本地用户上传和修改文件
local_umask=022   # 本地用户创建文件和目录的默认权限掩码
dirmessage_enable=YES
xferlog_enable=YES
# 匿名用户设置
anonymous_enable=YES  # 启用匿名用户访问
anon_upload_enable=YES  # 允许匿名用户上传文件
anon_mkdir_write_enable=YES  # 允许匿名用户创建目录的写权限
anon_umask=022  # 匿名用户创建文件和目录的默认权限掩码
# 用户限制设置
chroot_local_user=YES  # 限制本地用户在其主目录
chroot_list_enable=YES  # 启用根据 chroot_list 文件来限制用户的访问
chroot_list_file=/etc/vsftpd/chroot_list  # chroot_list 文件的路径
# 安全设置
ssl_enable=YES  # 启用 SSL/TLS 安全连接
rsa_cert_file=/etc/ssl/certs/vsftpd.crt  # 服务器端证书文件的路径
rsa_private_key_file=/etc/ssl/private/vsftpd.key  # 服务器端私钥文件的路径
# 日志设置
xferlog_file=/var/log/vsftpd.log  # 传输日志文件的路径
xferlog_std_format=YES  # 使用标准的 xferlog 格式
# 其他设置
idle_session_timeout=600  # 闲置会话超时时间为 600 秒
require_ssl_reuse=NO  # 禁用 SSL 会话的重用
async_abor_enable=YES  # 启用异步 ABOR 命令支持
]# ls      /var/ftp/
]# touch   /var/ftp/shizhiwang.txt

3)启动服务和检查状态

]# systemctl restart vsftpd
]# systemctl status vsftpd   //检查它的状态

4)配置防火墙以允许FTP流量通过。默认情况下,vsftpd使用TCP端口21(控制连接)和20(数据连接)

]# sudo firewall-cmd --permanent --add-port=20/tcp
]# sudo firewall-cmd --permanent --add-port=21/tcp
]# sudo firewall-cmd --reload

5)访问并测试

]# curl   ftp://IP地址  

标签:FTP,被动模式,协议,端口,文件传输,服务器,连接,客户端
From: https://www.cnblogs.com/huihengbo/p/17547265.html

相关文章

  • FTP传送超大文件慢且不完整,是否有替代的传输方案?
    近年来全球网络安全威胁态势的加速严峻,使得企业对于网络安全有了前所未有的关注高度,也越来越重视核心数据资产的保护,数据资产的安全防护成为企业面临的重大挑战。2017年6月1日,我国《网络安全法》正式实施。《网络安全法》第三十七条规定,“关键信息基础设施的运营者在中华人民共......
  • 分布式多协议接入网关FluxMQ-2.0功能说明
    FluxMQ—2.0版本更新内容前言FLuxMQ是一款基于java开发,支持无限设备连接的云原生分布式物联网接入平台。FluxMQ基于Netty开发,底层采用Reactor3反应堆模型,具备低延迟,高吞吐量,千万、亿级别设备连接;方便企业快速构建其物联网平台与应用。FluxMQ官网:https://www.fluxmq.comFluxMQ......
  • NBD(Network Block Device)是一种用于网络存储的协议和技术。NBD服务器是一种提供网络块
    NBD(NetworkBlockDevice)是一种用于网络存储的协议和技术。NBD服务器是一种提供网络块设备服务的服务器,它允许用户通过网络连接来访问和管理块设备(如硬盘、SSD等),就像本地设备一样。NBD服务器的工作原理如下:NBD服务器将物理或虚拟块设备暴露为网络上的NBD设备。客户端使用NBD客......
  • GPIO协议
    GPIO协议定义GPIO(GeneralPurposeInputOutput)通用输入输出口可配置为8种输入输出模式引脚电平:0V~3.3V,部分引脚可容忍5V输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模......
  • GDB RSP协议
    https://www.cnblogs.com/cfas/p/16847682.htmlhttps://blog.csdn.net/hmsiwtv/article/details/8759129https://blog.51cto.com/u_15060461/4145151......
  • IIC协议介绍
    (1)CSDN学习参考资料1.什么是I2C?I2C全拼InterIntegratedCircuit,简称IIC或I2C,是由Philips公司开发的两线时串行总线,用于SOC与外设的连接通讯,它只需要两根线就能实现I2C的通讯,采用主从模式,主的一方可以读写数据,而从的一方只能等待被读写。从的一方没有主动权。I2C是双向通讯的,由......
  • PROFINET转ETHERCAT协议网关ethercat总线伺服如何控制
    捷米特JM–ECAT-PN是自主研发的一款PROFINET从站功能的通讯网关。该产品主要功能是将PROFINET网络和ETHERCAT网络连接起来。捷米特JM-ECAT-PN连接到PROFINET总线中做为从站使用,连接到ETHERCAT总线中做为从站使用。 3.技术参数PROFINET技术参数网关做为PROFINET......
  • 树莓派Linux跨平台免授权CNC数控数据采集协议,TCP协议包,支持(fanuc、三菱、西门子、海德
    市面上的数控基本都支持了跨平台通讯,下面以三菱为列讲解跨平台协议如何通讯,无需任何DLL,适配任何开发语言,纯Socket通讯先上采集图   代码如下usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;us......
  • OpenFeature 特性flag 标准协议
    OpenFeature属于cncf一个沙箱项目OpenFeature特性社区驱动的标准协议一个sdk可以支持各种后端目前包含了不少支持工具(包含了开源的以及商业工具)支持不少客户端(目前支持了js,java,golang,c#,php)核心概念OpenFeature提供了一些核心概念Evaluationapi -Evaluationcont......
  • jmeter各种协议脚本的开发
    1.各种协议脚本的开发1.1http协议(略)1.2jdbc1.2.1驱动下载地址:https://dev.mysql.com/downloads/mysql-connector-java-5.1.46.jar1.2.1 JDBCConnectionConfiguration前置处理器jdbc配置官网样例:ApacheJMeter-User'sManual:ComponentReferen参数说明:Variab......