文件传输协议(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. 搭建vue项目的步骤

    新建vue脚手架 vue-element-cms步骤: 1. vue create ……………(文件名)---这里取为vue-element-cms 2. 命令行工具进入这个文件夹,安装路由依赖包 n ...

  2. 360随身WiFi3:纯净版无线网卡驱动下载及安装教程(Windows10版本)

    对于不带无线网卡的台式机,买一个360随身WiFi当无线网卡是很省钱的方法.但是这个随身WiFi3用的芯片较为奇葩,Win10下不太好找驱动.什么,你问我为啥不用360官网上的驱动?那个“驱动”装了之 ...

  3. 爬虫管理平台以及wordpress本地搭建

    爬虫管理平台以及wordpress本地搭建 学习目标: 各爬虫管理平台了解 scrapydweb gerapy crawlab 各爬虫管理平台的本地搭建 Windows下的wordpress搭建 爬虫 ...

  4. Python os.chflags() 方法

    概述 os.chflags() 方法用于设置路径的标记为数字标记.多个标记可以使用 OR 来组合起来.高佣联盟 www.cgewang.com 只支持在 Unix 下使用. 语法 chflags()方 ...

  5. Python 字典(Dictionary) fromkeys()方法

    描述 Python 字典 fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值.高佣联盟 www.cgewang.com 语法 from ...

  6. PHP imagechar - 写出横向字符

    imagechar — 写出横向的字符.高佣联盟 www.cgewang.com 语法 bool imagechar ( resource $image , int $font , int $x , ...

  7. PDOStatement::bindParam

    PDOStatement::bindParam — 绑定一个参数到指定的变量名(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 bool PDOState ...

  8. 程序人生丨听说程序员是相当就能当的?BAT大牛当场就不乐意了!

    有一种对软件开发者的偏见是:他们都是无趣的极客,是学校里的数学天才,每天都要在计算机屏幕前花费多个小时去写代码. 没错,开发者确实会在计算机屏幕前花费多个小时去写代码.但是,每天的工作中还有很多比写代 ...

  9. 构建自己的js库

    一.背景 web前端开发人员经常会用到一些现成的js库(框架).框架的使用增加了代码的模块化和可复用性,最主要的是屏蔽了浏览器之间差异性的实现,使得代码更加简洁,框架使用者只需要将注意力放在业务的实现 ...

  10. SpringBoot中使用AOP打印接口日志的方法(转载)

    前言 AOP 是 Aspect Oriented Program (面向切面)的编程的缩写.他是和面向对象编程相对的一个概念.在面向对象的编程中,我们倾向于采用封装.继承.多态等概念,将一个个的功能在 ...