文件共享服务

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)功能,可以识别与客户端发起的命令连接相关的数据连接,从而对其开放相应的端口

 

示例图

 

ftplftp命令

使用lftp命令连接ftp服务器时,匿名用户会直接登录

要想使用特定用户登录,需用到以下命令:

lftp -u USERNAME[PASSWORD] ftpIP

 

lftp支持断点续传和多线程下载,依赖于axel工具,需编译安装

1、下载源码包

 

2、编译安装,生成axel工具

 

3、复制到/bin目录下即可使用

 

4、axel语法格式

axel -n 3 -o /root

-n:指明启用的下载线程数

-o:指明下载文件的保存位置

最后指明下载资源的路径

 

补充

ftp协议是明文的,出于安全考虑,可使用下列协议代替

ftps:基于SSL

sftp:基于SSH