网络基础知识笔记05:FTP基本原理与配置(上)
网络基础知识笔记05 FTP基本原理与配置
由于本笔记有借鉴其他博文的内容,但仅做学习使用。已在下方给出原文链接,如有侵权,请联系本人进行删除,谢谢。
FTP(File Transfer Protocol)是用来传送文件的协议。使用FTP实现远程文件传输的同时,还可以保证数据传输的可靠性和高效性。
本次笔记主要介绍FTP的基本原理,传输过程与模式,主动与被动的工作方式,以及介绍通过AAA认证配置FTP服务器。
Tips:目前FTP,TFTP,SFTP v1协议存在安全风险,本笔记为了简化说明,只采用FTP协议作为描述。实际环境建议使用SFTP v2版本的协议进行文件传输。最后再简要介绍一下SFTP协议的基本配置。
FTP的应用
FTP 采用C/S的结构。提供了一种在服务器和客户机之间上传和下载文件的有效方式。
在企业网络中部署一台FTP服务器,将网络设备配置为FTP客户端,则可以使用FTP来备份或更新VRP文件和配置文件。也可以把网络设备配置为FTP服务器,将设备的日志文件保存到某台主机上方便查看。
关于如何将交换机设备的配置信息备份到FTP服务器,出现故障时还原,将会在笔记后面介绍。
FTP传输文件的过程
使用FTP传输数据时,需要在服务器和客户机之间建立控制连接和数据连接。
使用FTP进行文件传输时,会使用两个TCP连接。
第一个连接是FTP客户端和FTP服务器间的控制连接。FTP服务器开启TCP 21号端口,等待FTP客户端发送连接请求。FTP客户端随机开启端口,向服务器发送建立连接的请求。控制连接用于在服务器和客户端之间传输控制命令(即传递命令)。
第二个连接是FTP客户端和FTP服务器间的数据连接。服务器使用TCP 20号端口与客户端建立数据连接(即上传和下载数据)。
FTP客户端与FTP服务器建立连接时,客户进程将由本地主机上的TCP软件随机选取一个端口号。该端口号可选择的范围是1024~65535(非熟知端口号)。
Tips:补充知识:关于端口号的定义
TCP使用了端口号的概念来标识发送方和接收方的应用层,即端口号用来标识进程。根据Internet赋号管理局(Internet Assigned Numbers Authority,IANA)的定义,TCP端口号长度为16位,端口号的取值为0~65535之间的整数。
TCP端口号分为熟知端口号(1~1023)、注册端口号(1024~49151)和临时端口号(49152~65535)。其中,熟知端口号被统一分配和控制,通常被用于系统级或根进程;注册端口号通常被用来作为终端用户连接服务器时短暂使用的源端口号,但它们也可以用来标识已被第三方注册了(或被命名)的服务;临时端口号可由任何进程随机选取使用。
FTP的工作方式
FTP有PORT(主动式)和PASV(被动式)两种工作方式。这里指的“主动”和“被动”,主要指是由客户端主动开放端口给服务器连接,还是由服务器主动开放端口给客户端连接。
(1)PORT主动连接方式
PORT(主动)方式的连接过程是:客户端使用随机端口(x)向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。
当需要传送数据时,客户端在这条命令链路上用PORT命令通知服务器:“我打开了某个端口(x+1),你可以通过这个端口号来连接我”。于是服务器从20端口向客户端的指定开放端口(x+1)发送连接请求,以此建立一条数据链路来传送数据。
(2)PASV被动连接方式
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。在建立控制通道与主动模式相似,但建立连接后使用的是Pasv命令。
当需要传送数据时,客户端向服务器端发送PASV命令,服务器在命令链路上收到命令后先随机打开一个端口号大于1024的端口,然后通知客户端:“我打开了某某端口,你过来连接我”。于是客户端向服务器的某某端口发送三次握手连接请求,建立一条数据链路来传送数据。
Tips:相比于主动模式(PORT),由于被动模式(PASV)的命令连接和数据连接都是由客户端发起的,这样可以解决从服务器端到客户端的入方向上连接可能被防火墙过滤的问题。
对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:
①从任何大于1024的端口到服务器的21端口 (客户端的初始化连接)
②服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的连接)
③从任何大于1024端口到服务器的大于1024端口 (客户端初始化数据连接到服务器指定的任意端口)
④服务器的大于1024端口到远程的大于1024的端口 (服务器发送ACK响应和数据到客户端的数据端口)
FTP的传输模式
传输模式定义了数据在客户端和服务器之间传输时的格式。
FTP传输数据时支持两种传输模式:ASCII模式和二进制模式。
ASCII模式用于传输文本。发送端的字符在发送前被转换成ASCII码格式之后进行传输,接收端收到之后再将其转换成字符。
二进制模式常用于发送图片文件和程序文件。发送端在发送这些文件时无需转换格式,即可传输。
FTP基础配置
拓扑如下图所示。网络中有一个FTP服务器和一个FTP客户端,连接他们的是192.168.1.0/24网段(端口配置已省略)。
Step 1:使能FTP服务器
执行ftp server enable命令使能FTP功能。
执行set default ftp-directory命令设置FTP用户的默认工作目录。
Step 2:使用AAA认证为登陆用户提供访问权限。
在配置FTP服务器时,可以使用AAA为每个用户分别配置登录账号和访问权限。
aaa命令用来进入AAA视图。
使用local-user命令用来创建本地用户,并配置本地用户的各项参数。
user-name指定用户名。
local-user 用户名 service-type ftp命令用来配置本地用户的接入类型为ftp。
ftp-directory指定FTP用户可访问的目录。如果不配置FTP用户可访问的目录,则FTP用户无法登录设备。
access-limit指定用户名可建立的最大连接数目。
idle-timeout minutes [seconds] 指定用户的闲置超时时间。设置执行命令idle-timeout 0 0即关闭用户界面的超时断连功能。
privilege level指定用户的优先级。
Tips:关于AAA中的用户优先级
缺省情况下,命令级别分为0~3级:
级别0即参观级,网络诊断工具命令(ping、tracert)、从本设备出发访问外部设备的命令(包括:Telnet 客户端、SSH)等。该级别命令不允许进行配置文件保存的操作。
级别1即监控级,用于系统维护,包括display命令。该级别命令不允许进行配置文件保存的操作。
级别2即配置级,可以使用业务配置命令,包括路由、各个网络层次的命令,向用户提供直接网络服务。
级别3即管理级,用于系统基本运行的命令,对业务提供支撑作用,包括文件系统、FTP、TFTP、配置文件切换命令、备板控制命令、用户管理命令、命令级别设置命令、系统内部参数设置命令;用于业务故障诊断的debugging命令。
如果用户想要实现权限的精细管理,则可以将命令级别扩展到0~15级。
缺省情况下,可以将所有级别为2的命令提升到10级,级别为3的命令提升到15级。
2~9级和11~14级这些命令级别中没有命令行。
用户可以单独调整命令行到这些级别中,以实现权限的精细化管理。
参考链接:https://blog.51cto.com/mingxiaoming/1967595
https://network.51cto.com/art/201909/603552.htm
https://blog.csdn.net/u013423085/article/details/93219255