文件共享服务
ftp:应用层,可以跨平台,但对数据的编辑难以实现;
nfs(Sun):内核,跨平台困难;
samba:跨平台,在Linux或Unix实现CIFS(SMB)协议--即Unix通用文件系统协议;
现有的三类存储模型
DNS:直接附加存储,例如机箱内的硬盘;
NAS:网络附加存储,通过网络文件服务器提供文件级别的共享存储,工作于应用空间,nfs和samba的CIFS就是NAS的实现;
SAN:网络附加存储,通过网络文件服务器提供块级别的共享存储,工作于内核空间;
ftp:Flie Transfer Protocol,文件传输协议
基础知识点
应用层协议
有多个连接,默认刚启用时监听于21/tcp,基于socket完成跨主机通信
C/S架构
Server:
wu-ftpd(华盛顿大学研发),proftpd,pureftp,vsftp,ServU
Client:
ftp,lftp,lftpget,wget,curl,filezilla(Windows、Linux),gftp(Linux GUI),flashfxp(Windows),cuteftp(Windows)
响应码
1xx:提示信息
2xx:成功类状态码
3xx:提示用户需进一步提供补充类信息的状态码
4xx:客户端错误
5xx:服务端错误
详见最下示例图
用户认证
虚拟用户:仅用于访问某种特定服务中的资源
nsswitch
network server switch,网络名称转换,是一种名称解析框架
配置文件:/etc/nsswitch.conf
模块:/lib64/libnss*,/usr/lib64/libnss*
pam
pluggable authentication module,插入式认证模块,是一种用户认证框架
配置文件:/etc/pam.conf,/etc/pam.d/*
模块:/lib64/security/
系统用户
匿名用户
ftp服务器的两种数据连接模式
命令连接
传输文件管理类命令,完成整个数据的发送控制;持久连接,直到用户终止才拆除;
数据连接
传输用户请求的数据;非持久连接,每次传输数据前建立,传输完成后连接自动拆除
示例说明:用户要到ftp服务器上下载某个文件
数据传输格式
支持文本传输和二进制传输,通常基于数据原生编码格式选择传输格式
数据传输模式
主动:由服务器创建连接
命令连接:
Client:50000 -->Server:21
数据连接:
Server:20/tcp -->Client:50000+1
客户端用一个随机端口(如50000)向服务器的21/tcp端口发起命令连接,连接成功后,服务器用(21-1)/tcp端口向客户端的随机端口(50000-1,若被占用就50000-2)主动发起数据连接,此即主动模式
由于客户端大多装有防火墙,服务器主动建立的数据连接会被防火墙阻挡,由此催生了被动连接。
被动:由客户端创建连接
命令连接:
Client:50000 -->Server:21
121,23:121×256+23
数据连接:
Client:50000+1--> Server:随即端口
当服务器接收到客户端的命令连接后立即启动一个子进程,该子进程监听于一个随机端口;然后服务器通过命令连接通知客户端该子进程及其监听端口号(如121,23),从而客户端即可向此端口发起主动的数据连接,详见下示例图。
服务器防火墙有连接追踪(connectiontrack)功能,可以识别与客户端发起的命令连接相关的数据连接,从而对其开放相应的端口
示例图
ftp和lftp命令
使用lftp命令连接ftp服务器时,匿名用户会直接登录
要想使用特定用户登录,需用到以下命令:
lftp -u USERNAME[,PASSWORD] ftpIP
lftp支持断点续传和多线程下载,依赖于axel工具,需编译安装
1、下载源码包
2、编译安装,生成axel工具
3、复制到/bin目录下即可使用
4、axel语法格式
axel -n 3 -o /root ftp://172.16.0.1/pub/somefile
-n:指明启用的下载线程数
-o:指明下载文件的保存位置
最后指明下载资源的路径
补充
ftp协议是明文的,出于安全考虑,可使用下列协议代替
ftps:基于SSL
sftp:基于SSH