文件传输协议(FTP,File Transfer Protocol)是Internet上使用最广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。它屏蔽了各计算机系统的细节,因而能适合于在异构网络中任意计算机之间传送文件。
FTP采用C/S工作模式,一个FTP服务器进程(由一个负责接收新请求的主进程和若干个负责处理单个请求的从属进程组成)可以同时为多个客户进程提供服务。
FTP使用了两个并行的TCP连接来传输文件:
控制连接(control connection)用于在两主机之间传输控制信息,如用户标识、口令、改变远程目录以及存放文件(put)、获取文件(get)的命令。因为FTP协议使用一个独立的控制连接,所以我们也称FTP的控制信息是带外(out-of-band)传送的,HTTP则是带内(in-band)发送控制信息的。
数据连接(data connection)用于实际发送一个文件。HTTP协议是在传输文件的同一个TCP连接中发送请求和响应首部行的。
 
当用户主机与远程主机开始一个FTP会话时
(1)FTP的客户端首先向服务器端的默认21端口发起控制连接并发送登录账户、密码。服务器启动从属进程(与主进程并发执行,对客户进程的请求处理完毕后即终止)来处理客户进程发送来的请求。
(2)服务器返回登录成功信息后,客户端打开一个随机端口,并将该端口号发送给服务器。
(3)当FTP的服务器端从控制连接上收到一个文件传输的命令后(无论是发往还是来自远程主机),就用默认20端口发起一个到客户端的随机打开的端口的TCP数据连接。
(4)FTP在该数据连接上准确地传送一个文件,然后关闭该连接。
在同一个会话期间,如果用户还需要传输另一个文件,FTP则打开另一个数据连接。
因而对FTP传输而言,控制连接贯穿了整个用户会话期间,但是对会话中的每一次文件传输都需要建立一个新的数据连接(即数据连接是非持续的)。
FTP服务器必须在整个会话期间保留用户的状态,特别是必须把用户账户与控制连接联系起来,服务器必须追踪用户在远程目录树上的当前位置,对每个进行中的用户会话的状态信息进行追踪,这大大限制了FTP同时维持的会话总数。
 
从客户到服务器的命令和从服务器到客户的回答,都是以7比特ASCII格式在控制连接上传送的,每个命令由4个大写字母ASCII字符组成,有些还具有可选参数:
(1)USER usemame: 用于向服务器传送用户标识。匿名FTP访问通常使用anonymous作为用户名。
(2)PASS password : 用于向服务器发送用户口令。
(3)LIST: 用于请求服务器回送当前远程目录中的所有文件列表。该文件列表不在控制连接上传送,而是经一个新建的非持续数据连接传送。
(4)RETR filename: 用于从远程主机的当前目录get文件。远程主机发起一个数据连接,并经该数据连接发送所请求的文件。
(5)STOR filename : 用于在远程主机的当前目录上put文件。
回答是一个3位的数字,后跟一个可选信息:
331 Usemame OK, Password required
125 Data connection already open; transfer starting
425 Can't open data connection
452 Error writing file

计算机网络-应用层(2)FTP协议的更多相关文章

  1. 计算机网络-应用层之HTTP协议

    1.概念 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写:HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等). ...

  2. 网络协议之FTP协议

    FTP(File Transfer Protocol) 协议文档:RFC 959 1.1 FTP协议介绍 FTP协议基于TCP/IP协议实现,处于应用层. FTP协议为C/S架构,每一次FTP连接,命 ...

  3. [计算机网络-应用层] FTP协议

    文件传输协议:FTP 如下图所示:用户通过一个FTP用户代理与FTP交互.该用户首先提供远程主机的主机名,使本地主机的FTP客户机进程建立一个到远程主机FTP服务器进程的TCP连接.然后,该用户提供用 ...

  4. 实验八 应用层协议Ⅱ-FTP协议分析

    实验八 应用层协议Ⅱ-FTP协议分析 一.实验目的 1.掌握FTP协议的实现原理. 2.了解控制通道和数据通道. 二.实验内容 用WareShark追踪ftp连接. 1.三次握手 2.ftp服务器回发 ...

  5. 深入理解FTP协议

    文件传输协议FTP(File Transfer Protocol)是因特网中使用最广泛的文件传输协议.FTP使用交互式的访问,允许客户指定文件的类型和格式(如指明是否使用ASCII码),并允许文件具有 ...

  6. ftp协议及vsftpd的基本应用

    1.ftp协议及vsftpd的基本应用 vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系 ...

  7. 常见协议基础知识总结--FTP协议

    FTP协议是一种基于客户端和服务器的文件传输协议,属于应用层协议,基于传输层的TCP协议: FTP主要分成主动模式和被动模式两种传输方式, 方式是相对服务器而言的,服务器主动发起数据连接即主动方式,使 ...

  8. day34 异常处理、断言、socket之ftp协议

    Python之路,Day20 = 异常处理.断言.socket之ftp协议 参考博客:http://www.cnblogs.com/metianzing/articles/7148191.html 异 ...

  9. 计算机网络参考模型与5G协议

    计算机网络参考模型与5G协议 目录 一.分层思想 1.1·2:分层思想概念 1.2.优点 二.OSI七层参考模型 三.TCP/IP协议族 3.1.TCP/IP协议族的组成 3.2.OSI模型与TCP/ ...

随机推荐

  1. MyBatis Plus 导入IdType失败

    import com.baomidou.mybatisplus.annotation.IdType; 修正Entity模板IdType引入包名到com.baomidou.mybatisplus.enu ...

  2. Android Zero (基础介绍篇)

    开发Android首先你得先配置好环境,配置的文章网上一大把,这里就不重复造轮子说了,配置好JAVA下载好AndroidStudio后我们先对基本的项目结构做一下了解! 首先介绍下你必须得知道的文件夹 ...

  3. List接口(动态数组)

    List接口(动态数组) List集合类中元素有序且可重复 ArrayList(重要) 作为List接口的主要实现类 线程不安全的,效率高 底层使用Object[] elementData数组存储 A ...

  4. pandas | DataFrame基础运算以及空值填充

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是pandas数据处理专题的第四篇文章,我们一起来聊聊DataFrame中的索引. 上一篇文章当中我们介绍了DataFrame数据结构当 ...

  5. PHP restore_exception_handler() 函数

    定义和用法 restore_exception_handler() 函数恢复之前的异常处理程序. 该函数用于在通过 set_exception_handler() 函数改变后恢复之前的异常处理程序. ...

  6. JS&ES6学习笔记(持续更新)

    ES6学习笔记(2019.7.29) 目录 ES6学习笔记(2019.7.29) let和const let let 基本用法 let 不存在变量提升 暂时性死区 不允许重复声明 块级作用域 级作用域 ...

  7. CI/CD:Jenkins的流水线demo入门

    在敏捷开发或者devops中,Jenkins常常作为CI/CD的主选平台,而流水线(Pipeline)是CI/CD的一个常见的体现形式,通过流水线,我们可以配置一个从编译打包,部署,自动化测试,到产品 ...

  8. 浅谈Mybatis持久化框架在Spring、SSM、SpringBoot整合的演进及简化过程

    前言 最近开始了SpringBoot相关知识的学习,作为为目前比较流行.用的比较广的Spring框架,是每一个Java学习者及从业者都会接触到一个知识点.作为Spring框架项目,肯定少不了与数据库持 ...

  9. Java实现邮箱验证码

    前言 相比于java实现短信验证码,邮箱验证码就简单了许多,目前只是简单的利用java发送自定义内容至指定邮箱,等过几天再弄短信和邮箱验证码Web版本的.查询网上资料,得知相比于网易邮箱,QQ邮箱是最 ...

  10. 深度学习模型调优方法(Deep Learning学习记录)

    深度学习模型的调优,首先需要对各方面进行评估,主要包括定义函数.模型在训练集和测试集拟合效果.交叉验证.激活函数和优化算法的选择等. 那如何对我们自己的模型进行判断呢?——通过模型训练跑代码,我们可以 ...