FTP协议

FTP(文件传输协议)

  •  向远程主机上传传输文件或从远程主机接收文件
  • 客户/服务器模式
    • 客户端:发起传输的一方
    • 服务器:远程主机
  • ftp:RFC 959
  • ftp服务器:端口号21

【ftp除了客户端服务器之外,还包括用户接口、本地文件系统】

【ftp——通过客户端可以上载文件到服务器upload,可以download一些文件到本地文件系统;可以把本地文件系统的文件上载到服务器的相关目录下,然后也可以把服务器某个目录的文件指定下载到本地文件系统。ftp可以通过网络共享文件】

FTP:控制连接与数据连接分开

  • FTP客户端与FTP服务器通过端口21联系,并使用TCP位传输协议
  • 客户端通过控制连接并获得身份确认
  • 客户端通过控制连接发送命令浏览远程目录
  • 收到一个文件传输命令时,服务器打开一个到客户端的数据连接【服务器主动跟客户端的20号端口进行数据连接下,在这个数据连接上,把文件传输过去】
  • 一个文件传输完成后,服务器关闭连接
  • 服务器打开第二个TCP连接用来传输另一个文件【原来的控制连接还是能在那里发一下指令;数据的传输是通过另一个TCP连接来完成,这个链接就是数据连接,每个数据连接只传输一个文件
  • 控制连接:带外(“out of band”)传送【控制命令的发送或接收在控制连接上单独进行,所以控制连接叫做带外的】【带内的传数据,带外的传指令、传控制信息】
  • FTP服务器维护用户的状态信息:当前路径、用户账户与控制连接对应【FTP是个有状态的协议,服务器要维护用户的状态】

【FTP用户名和口令全部是明文传输的】

【FTP初试的时候是无状态的,后面通过cookie补丁才变成一个有状态的协议】

有关控制连接与数据连接的问题

  • Q:为什么将控制连接与数据连接分开?
  • A:不会混淆数据与命令、响应,简化协议设计和实现;在传输文件的过程中可以继续执行其他的操作,便于控制传输过程(如客户可以随时终止传输)
  • Q:为什么用关闭数据连接的方式结束文件传输?
  • A:允许动态创建文件(不需预先告知文件大小)

​FTP命令、响应

命令样例:

  • 在控制连接上以ASCII文本方式传送
  • USER username
  • PASS password
  • LIST:请服务器返回远程主机当前目录的文件列表
  • PETR filename:从远程主机的当前目录检索文件(gets)
  • STOR filename:向远程主机的的当前目录存放文件

返回码样例:

  • 状态码和状态信息(同HTTP)
  • 331 Username OK,password required
  • 125 data connection already open; transfer starting
  • 425 Can’t open data connection
  • 452 Error writing file

【客户端向服务器发东西叫上载,服务器向客户端发东西叫下载,默认是以客户端的角度来说】

FTP小结

  • 使用TCP协议,服务器端口号21、20
  • 采用命令/响应交互方式
  • 使用两条TCP连接:
    • 控制连接(端口21):会话期间始终保持
    • 数据连接(端口20):每条链接仅传输一个文件,客户与服务器角色交换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值