文件共享服务 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语法格式 -n:指明启用的下载线程数 -o:指明下载文件的保存位置 最后指明下载资源的路径
补充 ftp协议是明文的,出于安全考虑,可使用下列协议代替 ftps:基于SSL sftp:基于SSH
|