文件传输协议(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. Java线程-- 线程池

    1.线程池概念 线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源. 为什么要使用线程池? 在java中,如果每个请求到达就创 ...

  2. LQB2013A03振兴中华

    最近状态出了点问题呜呜呜,可能是天有点热吧加上有一点点不太舒服,,,稳住啊! 明显一个递归(但是就是不会写) 递归:(一般这种找有多少个的题,返回值都是int) 首先找变化的东西当作参数.(本题是坐标 ...

  3. JPA第一天

    学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"springdata"获取视频和教程资料! b站在线视 ...

  4. 将形如 5D, 30s 的字符串转为秒

    import sys def convert_to_seconds(time_str): # write code here if 's' in time_str: return float(time ...

  5. PHP cos() 函数

    实例 返回不同数的余弦: <?phpecho(cos(3) . "<br>");echo(cos(-3) . "<br>");ec ...

  6. PHP log10() 函数

    实例 返回不同数的以 10 为底的对数: <?phpecho(log10(2.7183) . "<br>");echo(log10(2) . "< ...

  7. PHP quotemeta() 函数

    实例 在预定义的字符前添加反斜杠: <?php高佣联盟 www.cgewang.com$str = "Hello world. (can you hear me?)";ech ...

  8. luogu P2354 [NOI2014]随机数生成器 贪心 卡空间 暴力

    LINK:随机数生成器 观察数据范围还是可以把矩阵给生成出来的. 考虑如何求出答案.题目要求把选出的数字从小到大排序后字典序尽可能的小 实际上这个类似于Mex的问题. 所以要从大到小选数字 考虑选择一 ...

  9. ThinkPHP6 核心分析之应用程序初始化

    runWithRequest () 方法 在 Http 类的 run() 方法中,得到 think\Request 类的实例后,程序接着执行 $response = $this->runWith ...

  10. 2017面向对象程序设计(Java)第十三周助教工作总结

    时间飞逝,本学期即将接近尾声.不知不觉同学们已经学习java十三个星期了,想必同学们对Java课程体系及内容有了更加深入的理解,也应该摸索出了一套适用于自己的学习方法. 下面我对上周工作做以简单总结: ...