trsgw 发表于 2015-5-7 08:40:18

ftp协议基础

文件共享服务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,ServUClient:ftp,lftp,lftpget,wget,curl,filezilla(Windows、Linux),gftp(Linux GUI),flashfxp(Windows),cuteftp(Windows)
响应码1xx:提示信息2xx:成功类状态码3xx:提示用户需进一步提供补充类信息的状态码4xx:客户端错误5xx:服务端错误详见最下示例图
用户认证虚拟用户:仅用于访问某种特定服务中的资源nsswitchnetworkserver switch,网络名称转换,是一种名称解析框架配置文件:/etc/nsswitch.conf模块:/lib64/libnss*,/usr/lib64/libnss*pampluggable 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:21121,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:基于SSLsftp:基于SSH
页: [1]
查看完整版本: ftp协议基础