FTP连接
命令连接

传输命令(客户端发给服务端的命令),服务端的21/tcp

数据连接

传输数据(传输数据时建立,数据传输完拆除)

数据链接的建立方法:主动、被动
主动模式(PORTstyle服务器主动)

服务器端通过20端口主动连接客户端,客户端监听在与服务器端的建立连接的端口+1上。

命令(控制): 客户端:随机port — 服务器:tcp21
数据: 客户端:随机port — 服务器:tcp20

主动模式要求客户端和服务器端同时打开并且监听一个端口以创建连接,主动模式创建连接过程如下:

  1. 客户端打开一个随机的端口(端口号大于1024,在这里,我们称它为x),同时一个FTP进程连接至服务器的21号命令端口。此时,该tcp连接的来源地端口为客户端指定的随机端口x,目的地端口(远程端口)为服务器上的21号端口;
  2. 客户端开始监听端口(x+1),同时向服务器发送一个端口命令(通过服务器的21号命令端口),此命令告诉服务器客户端正在监听的端口号并且已准备好从此端口接收数据。这个端口就是我们所知的数据端口;
  3. 服务器打开20号源端口并且创建和客户端数据端口的连接。此时,来源地的端口为20,远程数据(目的地)端口为(x+1);
  4. 客户端通过本地的数据端口创建一个和服务器20号端口的连接,然后向服务器发送一个应答,告诉服务器已经创建好连接,可以开始数据传输;
被动模式(PASV style

)

命令(控制):客户端:随机port — 服务器:tcp21
数据: 客户端:随机port — 服务器:随机port

客户端发送连接请求,在FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTPserver不再需要建立一个新的和客户端之间的连接。

 服务器被动模式数据端口示例:
227 Entering Passive Mode (192,168,175,138,224,59)
服务器数据端口为:224*256+59
主动连接与被动连接的优缺点
  1. 主动连接对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。

  2. 被动连接对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

  3. 可通过为FTP服务器指定一个有限的端口范围来减小服务器端口暴露的风险。

操作系统上的FTP模式

Linux客户端默认使用被动模式

Windows客户端默认使用主动模式

 Linux系统客户端若要切换主动模式,可使用:
ftp -A ServerIP Port
防火墙追踪问题
  • 服务器的控制端口是21,数据端口是随机的,且是客户端去连接对应的数据端口,所以在做静态的映射话只开放21端口是不可以的。此时需要做DMZ。大部分网页浏览器要求使用被动模式,然而并不是所有的FTP服务器都支持被动模式。由于FTP连接时的密码和传输的文件内容都使用明文传输,极其不安全。且因为必须开放一个随机的端口以创建连接,导致客户端防火墙很难追踪主动模式下的FTP流量。因此使用被动模式的FTP可以减少许多问题。此外,FTP服务器在需要传输较多的小文件时性能不好。
  • 很多防火墙在设置的时候都是不允许接受外部发起的连接,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP/20无法和内部网络的客户端建立一个新的连接,造成无法工作。
FTP服务器和客户端软件

FTP服务器

Wu-ftpd,Proftpd,Pureftpd,ServU,IIS

vsftpd:Very Secure FTP Daemon,CentOS默认FTP服务器高速,稳定,下载速度是WU-FTP的两倍。ftp.redhat.com数据:单机最多可支持15000个并发

客户端软件:

ftp,lftp,lftpget,wget,curl

ftp -A ftpserver port      (-A 主动模式 -p 被动模式)

lftp -u username ftpserver

lftp username@ftpserver

lftpget ftp://ftpserver/pub/file

gftp: GUI centos5

filezilla,CuteFtp,FlashFXP,LeapFtp

IE

 ftp://username:password@ftpserver
状态码

1XX:信息类 125:数据连接打开

2XX:成功类状态 200:命令OK 230:登录成功

3XX:补充类 331:用户名OK

4XX:客户端错误 425:不能打开数据连接

5XX:服务器错误 530:不能登录

PAM(插入式认证)

PAM是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。

PAM在FTP中的使用
  • pam中的模块每一种提供一种认证功能或认证检查功能;配置文件在/etc/pam.d/
  • pam是一种认证框架,自己不需要认证功能,可以帮其他应用程序提供认证服务;为每一种应用程序提供库文件;

    -高度模块化;
  • ftp默认是使用pam进行认证的;
PAM支持的四种管理界面
  1. 认证管理(authenticationmanagement)

    主要是接受用户名和密码,进而对该用户的密码进行认证,并负责设置用户的一些秘密信息。
  2. 帐户管理(accountmanagement)

    主要是检查帐户是否被允许登录系统,帐号是否已经过期,帐号的登录是否有时间段的限制等等。
  3. 密码管理(passwordmanagement)

    主要是用来修改用户的密码。
  4. 会话管理(sessionmanagement)

    主要是提供对会话的管理和记账(accounting)。

文件服务之二:ftp协议的更多相关文章

  1. [计算机网络-应用层] FTP协议

    文件传输协议:FTP 如下图所示:用户通过一个FTP用户代理与FTP交互.该用户首先提供远程主机的主机名,使本地主机的FTP客户机进程建立一个到远程主机FTP服务器进程的TCP连接.然后,该用户提供用 ...

  2. 基于CentOS 搭建 FTP 文件服务

    系统要求: CentOS 7.2 64 位操作系统 一. 安装 VSFTPD (vsftpd 是在 Linux 上被广泛使用的 FTP 服务器,根据其[官网介绍][https://security.a ...

  3. vsftpd-基于ftp协议的文件传输服务器软件

    第一部分:在Linux上部署vsftpd服务 1. vsftpd简介 1.1 vsftpd是什么? ftp(File Transfer Protocol)文件传输协议.(实现不同操作系统之间文件的传输 ...

  4. 转:【专题十一】实现一个基于FTP协议的程序——文件上传下载器

    引言: 在这个专题将为大家揭开下FTP这个协议的面纱,其实学习知识和生活中的例子都是很相通的,就拿这个专题来说,要了解FTP协议然后根据FTP协议实现一个文件下载器,就和和追MM是差不多的过程的,相信 ...

  5. 搭建 FTP 文件服务

    1.安装并启动 FTP 服务 2.配置 FTP 权限 3.准备域名和证书 4.访问 FTP 安装 VSFTPD 使用 yum 安装 vsftpd: yum install vsftpd -y vsft ...

  6. 腾讯云-搭建 FTP 文件服务

    搭建 FTP 文件服务 目的:搭建认证登录的FTP具有读写权限 安装并启动 FTP 服务 任务时间:5min ~ 10min 安装 VSFTPD 使用 yum 安装 vsftpd: yum insta ...

  7. 搭建 FTP 文件服务vsftpd

    安装并启动 FTP 服务 安装 VSFTPD 使用 yum 安装 vsftpd: yum install vsftpd -y vsftpd 是在 Linux 上被广泛使用的 FTP 服务器,根据其[官 ...

  8. FTP文件传输协议两种模式 ftp协议集,错误码集,ftp客户端命令集

    TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20.FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置.联接的方式.甚至是是否使用相同的操 ...

  9. 腾讯云,搭建 FTP 文件服务

    腾讯云,搭建 FTP 文件服务 腾讯云,搭建 FTP 文件服务 安装并启动 FTP 服务 任务时间:5min ~ 10min 安装 VSFTPD 使用 yum 安装 vsftpd: yum insta ...

随机推荐

  1. 在Django中使用ForeignKey()报错问题的解决

    在Django2的models中建立一对多的关系使用ForeignKey(): student = models.ForeignKey("Classes") 报错: TypeErr ...

  2. 网络操作基础(one)

    P12 一.什么是网络操作系统?网络操作系统具有哪些基本功能? 二.网络操作系统具有哪些特征? 三.常用的网络操作系统有哪些?它们各具有什么特点? 四.在网络操作系统中主要可提供哪些? ———— —— ...

  3. js 实现拖拽排序

    <!DOCTYPE> <html lang="zh-cn"> <head> <meta http-equiv="Content- ...

  4. 思科模拟器-使用vlan划分子网

    此博客为初始化版本,未经完善,后续我再整理一下 小技巧:有时候我们不小心执行了一条错误命令,可以尝试使用在该命令前加一个no进行撤销 首先说一下网络设备的选择 在该实验中我主要用到一台三层交换机(思科 ...

  5. windows 端口转发

    1.添加端口转发 netsh interface portproxy add v4tov4 listenport=5000 listenaddress=10.30.3.148 connectport= ...

  6. C# .NET newtonsoft.json 多版本冲突解决

    A.DLL 引用了6.0 的 newtonsoft.json  (V2 运行时),B.DLL 引用了10.0 的 newtonsoft.json (V4 运行时). 可以在.CONFIG RUNTIM ...

  7. 《剑指offer(第二版)》面试题60——n个骰子的点数

    一.题目描述 把n个骰子仍在地上,所有的骰子朝上的一面的点数之和为s,输入n,打印出s所有可能的值出现的概率. 二.题解 <剑指offer>上给出的两种方法,尤其是代码,晦涩难懂且没有注释 ...

  8. 通俗易懂理解Linux文件权限修改chmod命令

    chmod g+w filename 给同组用户增加filename文件的写权限 chmod go+rw filename 给同组和组外用户增加写和读的权限 chmod g-w filename 给同 ...

  9. Kafka基本命令

    1.创建自定义的topic 在bin目录下执行: sh kafka-topics.sh --create --zookeeper hadoop01:2181 --replication-factor ...

  10. Centos7修改默认网卡名(改为eth0)以及网卡启动报错RTNETLINK answers: File exists处理

    安装好centos7版本的系统后,发现默认的网卡名字有点怪,为了便于管理,可以手动修改.下面对centos7版本下网卡重命名操作做一记录:1)编辑网卡信息[root@linux-node2~]# cd ...