《计算机网络:自顶向下方法(原书第6版)》一2.3 文件传输协议:FTP

2.3 文件传输协议:FTP

在一个典型的FTP会话中,用户坐在一台主机(本地主机)前面,向一台远程主机传输(或接收来自远程主机的)文件。为使用户能访问它的远程账户,用户必须提供一个用户标识和口令。在提供了这种授权信息后,用户就能从本地文件系统向远程主机文件系统传送文件,反之亦然。如图2-14所示,用户通过一个FTP用户代理与FTP交互。该用户首先提供远程主机的主机名,使本地主机的FTP客户进程建立一个到远程主机FTP服务器进程的TCP连接。该用户接着提供用户标识和口令,作为FTP命令的一部分在该TCP连接上传送。一旦该服务器向该用户授权,用户可以将存放在本地文件系统中的一个或者多个文件复制到远程文件系统(反之亦然)。

HTTP和FTP都是文件传输协议,并且有很多共同的特点,例如,它们都运行在TCP上。然而,这两个应用层协议也有一些重要的区别。其中最显著的就是FTP使用了两个并行的TCP连接来传输文件,一个是控制连接(control connection),一个是数据连接(data connection)。控制连接用于在两主机之间传输控制信息,如用户标识、口令、改变远程目录的命令以及“存放(put)”和“获取(get)”文件的命令。数据连接用于实际发送一个文件。因为FTP协议使用一个独立的控制连接,所以我们也称FTP的控制信息是带外(out-of-band)传送的。如你所知,HTTP协议是在传输文件的同一个TCP连接中发送请求和响应首部行的。因此,HTTP也可以说是带内(in-band)发送控制信息的。FTP协议的控制连接和数据连接如图2-15所示。
 

当用户主机与远程主机开始一个FTP会话时,FTP的客户(用户)端首先在服务器21号端口与服务器(远程主机)端发起一个用于控制的TCP连接。FTP的客户端也通过该控制连接发送用户的标识和口令,发送改变远程目录的命令。当FTP的服务器端从该连接上收到一个文件传输的命令后(无论是向还是来自远程主机),就发起一个到客户端的TCP数据连接。FTP在该数据连接上准确地传送一个文件,然后关闭该连接。在同一个会话期间,如果用户还需要传输另一个文件,FTP则打开另一个数据连接。因而对FTP传输而言,控制连接贯穿了整个用户会话期间,但是对会话中的每一次文件传输都需要建立一个新的数据连接(即数据连接是非持续的)。
FTP服务器必须在整个会话期间保留用户的状态(state)。特别是,服务器必须把特定的用户账户与控制连接联系起来,随着用户在远程目录树上徘徊,服务器必须追踪用户在远程目录树上的当前位置。对每个进行中的用户会话的状态信息进行追踪,大大限制了FTP同时维持的会话总数。而另一方面,前面讲过HTTP是无状态的,即它不必对任何用户状态进行追踪。
FTP命令和回答
我们通过简要地讨论几个常见的FTP命令和回答来结束本节。从客户到服务器的命令和从服务器到客户的回答,都是以7比特ASCII格式在控制连接上传送的。因此,与HTTP协议的命令类似,FTP协议的命令也是人可读的。为了区分连续的命令,每个命令后跟回车换行符。每个命令由4个大写字母ASCII字符组成,有些还具有可选参数。一些较为常见的命令如下:

  • USER username:用于向服务器传送用户标识。
  • PASS password:用于向服务器发送用户口令。
  • LIST:用于请求服务器回送当前远程目录中的所有文件列表。该文件列表是经一个(新建且非持续连接)数据连接传送的,而不是在控制TCP连接上传送。
  • RETR filename:用于从远程主机当前目录检索(即get)文件。该命令引起远程主机发起一个数据连接,并经该数据连接发送所请求的文件。
  • STOR filename:用于在远程主机的当前目录上存放(即put)文件。
    贯穿控制连接,在用户发出的命令和FTP发送的命令之间通常有一一对应关系。每个命令都对应着一个从服务器发向客户的回答。回答是一个3位的数字,后跟一个可选信息。这与HTTP响应报文状态行的状态码和状态信息的结构相同。一些典型的回答连同它们可能的报文如下所示:
  • 331 Username OK,Password required(用户名OK,需要口令)。
  • 125 Data connection already open;transfer starting(数据连接已经打开,开始传送)。
  • 425 Can’t open data connection(无法打开数据连接)。
  • 452 Error writing file(写文件差错)。
    有兴趣学习其他FTP命令和回答的读者请阅读RFC 959。
时间: 2024-10-27 03:08:45

《计算机网络:自顶向下方法(原书第6版)》一2.3 文件传输协议:FTP的相关文章

《通信技术导论(原书第5版)》——1.8 协议和分层

1.8 协议和分层 当企业在描述他们的产品性能时,常常提到OSI(开放系统互联)分层.20世纪70年代,国际标准组织创建了开放系统互联(OSI)架构,它定义了多个厂商设备应当如何协同工作.这个架构规定了网络中的设备彼此连接的方法.虽然由于它的复杂性没有得到广泛执行,但是OSI已经对电信业产生了深远的影响.OSI基础结构的本义是分层.功能组分为七层,每一层可在不影响其他层的前提下,完成对本层的修改和升级.(请参阅表1-2,位于本章1.13节有完整的分层定义.)局域网.公共网络和互联网中的TCP/I

《计算机网络:自顶向下方法(原书第6版)》一导读

前 言 欢迎阅读<计算机网络:自顶向下方法>的第6版.自从本书的第1版于12年前出版以来,我们这本书已经被几百所大学和学院采用,被译为14种语言,并被世界上几十万的学生和从业人员使用.我们倾听了许多读者的意见,赞扬之声不绝于耳. 第6版的新颖之处 我们认为本书成功的一个重要原因是,持续地为计算机网络教学提供了一种新颖和与时俱进的方法.在第6版中我们做了改变,但也保持了我们认为(并且得到了使用本书的教师和学生的认可)本书最为重要的方面:它的自顶向下的方法,它关注因特网和计算机网络的现代处理方法,

《计算机网络:自顶向下方法(原书第6版)》一1.4 分组交换网中的时延、丢包和吞吐量

1.4 分组交换网中的时延.丢包和吞吐量 回想在1.1节中我们讲过,因特网能够看成是一种为运行在端系统上的分布式应用提供服务的基础设施.在理想情况下,我们希望因特网服务能够在任意两个端系统之间瞬间移动我们想要的大量数据而没有任何数据丢失.然而,这是一个极高的目标,实践中难以达到.与之相反,计算机网络必定要限制在端系统之间的吞吐量(每秒能够传送的数据量),在端系统之间引入时延,而且实际上能够丢失分组.一方面,现实世界的物理定律引入的时延.丢包并限制吞吐量是不幸的.而另一方面,因为计算机网络存在这些

《用户至上:用户研究方法与实践(原书第2版)》一1.1 什么是用户体验

本节书摘来自华章出版社<用户至上:用户研究方法与实践(原书第2版)>一书中的第1章,第1.1节,作者 Understanding Your Users: A Practical Guide to User Research Methods, Second Edition凯茜·巴克斯特(Kathy Baxter)[美]凯瑟琳·卡里奇(Catherine Courage) 凯莉·凯恩(Kelly Caine)更多章节内容可以访问"华章计算机"公众号查看. 第1章 用户体验入门

Java核心技术 卷Ⅰ 基础知识(原书第10版)

Java核心技术系列 Java核心技术 卷Ⅰ 基础知识 (原书第10版) Core Java Volume I-Fundamentals (10th Edition) [美] 凯S.霍斯特曼(Cay S. Horstmann) 著 周立新 陈 波 叶乃文 邝劲筠 杜永萍 译 图书在版编目(CIP)数据 Java核心技术 卷Ⅰ 基础知识(原书第10版) / (美)凯S. 霍斯特曼(Cay S. Horstmann)著:周立新等译. -北京:机械工业出版社,2016.8 (Java核心技术系列) 书

ROS机器人程序设计(原书第2版).

机器人设计与制作系列 ROS机器人程序设计 (原书第2版) Learning ROS for Robotics Programming,Second Edition 恩里克·费尔南德斯(Enrique Fernández) 路易斯·桑切斯·克雷斯波(Luis Sánchez Crespo) 阿尼尔·马哈塔尼(Anil Mahtani) 亚伦·马丁内斯(Aaron Martinez) 著 刘锦涛 张瑞雷 等译 图书在版编目(CIP)数据 ROS机器人程序设计(原书第2版) / (西)恩里克·费尔南

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一导读

前 言 致读者 本书是按照Java SE 8完全更新后的<Java核心技术 卷Ⅱ 高级特性(原书第10版)>.卷Ⅰ主要介绍了Java语言的一些关键特性:而本卷主要介绍编程人员进行专业软件开发时需要了解的高级主题.因此,与本书卷Ⅰ和之前的版本一样,我们仍将本书定位于用Java技术进行实际项目开发的编程人员. 编写任何一本书籍都难免会有一些错误或不准确的地方.我们非常乐意听到读者的意见.当然,我们更希望对本书问题的报告只听到一次.为此,我们创建了一个FAQ.bug修正以及应急方案的网站http:/

《机器学习与R语言(原书第2版)》一2.3 探索和理解数据

本节书摘来自华章出版社<机器学习与R语言(原书第2版)>一书中的第2章,第2.3节,美] 布雷特·兰茨(Brett Lantz) 著,李洪成 许金炜 李舰 译更多章节内容可以访问"华章计算机"公众号查看. 2.3 探索和理解数据 在收集数据并把它们载入R数据结构以后,机器学习的下一个步骤是仔细检查数据.在这个步骤中,你将开始探索数据的特征和案例,并且找到数据的独特之处.你对数据的理解越深刻,你将会更好地让机器学习模型匹配你的学习问题. 理解数据探索的最好方法就是通过例子.在

《机器学习与R语言(原书第2版)》一3.2 例子—用kNN算法诊断乳腺癌

本节书摘来自华章出版社<机器学习与R语言(原书第2版)>一书中的第3章,第3.2节,美] 布雷特·兰茨(Brett Lantz) 著,李洪成 许金炜 李舰 译更多章节内容可以访问"华章计算机"公众号查看. 3.2 例子-用kNN算法诊断乳腺癌 定期的乳腺癌检查使得疾病在引起明显的症状之前就得到诊断与治疗.早期的检测过程包括检查乳腺组织的异常肿块.如果发现一个肿块,那么就需要进行细针抽吸活检,即利用一根空心针从肿块中提取细胞的一个小样品,然后临床医生在显微镜下检查细胞,从而确

《Unity着色器和屏幕特效开发秘笈(原书第2版)》一2.6 法线映射

本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈(原书第2版)>一书中的第2章,第2.6节,作者 [英]艾伦朱科尼(Alan Zucconi) [美]肯尼斯拉默斯(Kenneth Lammers),更多章节内容可以访问"华章计算机"公众号查看 2.6 法线映射 三维模型中的每一个三角形都有一个面朝方向(facing direction),顾名思义指的是三角形的朝向.这个方向通常用一个从三角形中心出发垂直于三角形表面的箭头表示.面朝方向对于光线在物体表面反射的时候起