6.2.3 网络基本服务---文件传输协议(FTP)

news2024/9/24 13:23:07

6.2.3 网络基本服务—文件传输协议(FTP)

FTP(File Transfer Protocol)是Internet上使用最为广泛的文件传送协议,FTP提供交互式的访问,允许客户上传文件到服务器或者从服务器下载文件,FTP屏蔽了各个计算机系统的差异,适合在异构计算机之间传送文件。文件传输协议FTP基于TCP,采用客户/服务器模式,提供文件传送基本网络服务。一个FTP服务器进程可同时为多个客户进程提供服务,FTP服务器包括两部分,一个主进程,负责接收新的请求;另外有若干个从属进程,负责处理单个请求。

FTP使用模型如图所示

FTP

用户端包括用户接口,用户协议解释器,用户数据传送进程以及客户端的额文件系统,FTP服务器端包括服务器协议解释器,服务器数据传送进程以及服务器端的文件系统

FTP模型中用户协议解释器初始化控制连接,控制连接遵循Telnet协议,在用户初始化时用户协议解释器产生标准的FTP命令,命令经过控制连接被传送到服务器进程,作为对命令的响应,服务器协议解释器会经过控制连接将标准的应答发送给用户的协议解释器。

FTP命令指定用于数据连接的参数和文件系统操作的种类,数据连接的参数有数据端口,传送模式,表示类型和结构等

文件系统操作种类有保存、检索、添加、删除等。

包含控制信息的FTP命令从用户的FTP进程发送给服务器FTP进程,用户DTP(用户数据传送进程)或者其选定的数据传送进程应该在指定的数据端口上监听,服务器会根据指定的参数,发起数据连接并进行数据传送,需要注意的是数据端口不一定是控制连接上发起FTP命令的用户主机上的TCP端口,但用户或用户FTP进程必须确保在指定的数据端口有监听,还需要注意的是数据连接可以同时用于发送和接收,一般情况下FTP模型,用户主机与FTP服务器之间建立控制连接和数据连接,数据连接是在服务器数据传送进程和用户数据传送进程之间的。

服务器DTP(服务器数据传送进程)处于标准的主动状态,与已在监听的数据端口建立数据连接,它建立用于传送和存储的参数,在得到来自协议解释器的命令时传送数据。

如图是一个FTP客户端上显示的内容,图中紫色部分表示用户输入的内容,蓝色表示控制连接上服务器返回的响应。

示例

图中显示的操作顺序是:打开FTP服务器、登录FTP服务器,显示服务器目录,设置文件类型,改变客户端本地目录,获取服务器上的文件,关闭服务器。

FTP访问过程如下

  1. 打开FTP服务器,使用open命令,open命令会引发客户端与服务器段TCP的21号端口建立连接。服务器经由控制连接返回一个响应,图中响应码为220,220响应码表示服务器已经为新用户准备好。

  2. FTP客户端提示输入用户名,密码,客户端输入用户名后会引发FTP用户在控制连接上发送访问控制请求命令。此时服务器会返回状态码331的响应,此时FTP客户端会提示输入密码,输入密码后就会引发FTP客户在控制连接上发送访问控制请求命令。服务器返回状态码230的响应。

  3. 输入ls命令,查看目录,该命令引发的内在操作如图所示

    ls

    1. 客户使用数据端口port命令向服务器传送参数,PORT 2.0.1.17 101201,其中2.0.1.17表示的是用户主机的IP地址,101和201是表示数据端口的,101对应的十六进制0X65,201所对应的十六进制是0XCB,PORT命令会告诉服务器端用户端已经在0X65C9端口监听了。

    2. 服务器收到数据端口信息后会返回200 PORT Commend successful的响应,其中200是响应码,表示命令执行正确。

    3. 客户向服务器发送服务命令namelist,表示要求服务器将当前目录列表发给用户端。为此服务器使用20端口主动与用户主机的0X65C9端口建立TCP连接,这里需要注意的是这是一个数据连接。同时服务器还通过控制连接返回150 Opening ASC mode data connection响应,其中响应码150表示的是文件状态ok。

      数据连接建立好后服务器就会通过数据连接返回其当前目录的列表,然后关闭数据连接。再通过控制连接返回226 Transfer complete响应,响应码226表示正在关闭数据连接。此时的FTP客户端就会显示目录列表、响应码和消息。并统计收到的字节数,用时以及二者的比值。

  4. 输入binary命令,该命令是把数据表示类型变为二进制,这会引起客户向服务器发送传送参数表示类型命令。这个命令是要将表示类型设为图像类型,是为了有效存储和检索,传送二进制文件。FTP标准推荐都支持这种类型。

  5. 服务器成功设置类型后返回200 Type set to I响应

  6. 输入lcd e:\命令,该命令触发客户端改变当前目录到E盘根目录。这条命令不会引起网络流量。

  7. 输入get 计算机通信与网络.pdf,get命令表示取文件的意思。这条命令触发的响应如下图

    get

    1. 客户先通过PORT命令向服务器传送参数,服务器收到数据端口信息后会返回200 PORT Commend successful的响应。

    2. 客服向服务器发送服务命令RETR,RETR是检索的意思,该命令会导致服务器端的数据传送进程向数据连接的另一端发送指定的文件。另一端在示例中是用户端数据传送进程。如果有其他情况也有可能是服务器端另一台服务器的数据传送进程。此时服务器会使用20号端口主动的与用户主机上的数据端口0X65CB建立一个新的TCP连接。

      同时服务器通过控制连接返回150 Opening BINARY mode data connection for 计算机通信与网络.pdf (4549318 Bytes),响应码150表示文件状态ok

    3. 数据连接建立好后,服务器会通过数据连接返回该文件并关闭数据连接。同时通过控制连接返回226 Transfer complete响应,响应码226表示关闭数据连接的意思。FTP客户会统计收到的字节数,用时以及二者的比值。

  8. 输入close命令,该命令会引发客户向服务器发送访问控制命令。服务器会返回221 Goodbye!响应,221表示服务正在关闭

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/739104.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hive(19):DML之Insert插入数据

1 背景:RDBMS中insert使用(insert+values) 在MySQL这样的RDBMS中,通常是insert+values的方式来向表插入数据,并且速度很快。这也是RDBMS中插入数据的核心方式。 INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN ); 假如说对Hiv…

朝花夕拾 - 编程马拉松!Coding 40h,着手 AI 展望未来

眼看时间已过半,回忆唏嘘难忘怀。 Hello 大家好,我是爱折腾的前端工程师 jsliang~ 2023 过得很快,眼瞅着加加班已去大半年,一边恨自己没赶上今年大热门,一边蒙头睡觉恢复体力并感叹精神不如初。 在我以为潮流箭步离我而…

连通域与相距变换

1、连通域 //连通域 int test1() {//对图像进行距离变换Mat img imread("F:/testMap/rice.png");if (img.empty()){cout << "请确认图像文件名称是否正确" << endl;return -1;}Mat rice, riceBW;//将图像转成二值图像&#xff0c;用于统计连通…

王道考研数据结构第五章知识点

5.1.1 树的定义和基本术语 祖先节点&#xff1a;(对于你来说),父亲和爷爷都是祖先节点 子孙节点&#xff1a;对于父亲来说&#xff0c;父亲下面所有的节点都叫子孙节点 双亲节点(父节点)&#xff1a;一个节点的直接前驱就是它的父节点 兄弟节点&#xff1a;例如二叔&#xf…

MYSQL定义及操作

1、显示所有职工的基本信息 2、查询所有职工所属部门的部门号&#xff0c;不显示重复的部门号 3、求出所有职工的人数 4、列出最高工和最低工资 5、列出职工的平均工资和总工资 6、创建一个只有职工号、姓名和参加工作的新表&#xff0c;名为工作日期表 7、显示所有女职工的年龄…

jvm新生代调优

5-4 新生代调优 只有排除了自己代码的问题后&#xff0c;再进行内存调优&#xff0c;内存调优都是从新生代开始&#xff0c;因为新生代优化空间更大一些 新生代的特点 所有的new操作分配内存都是非常廉价的&#xff0c;非常快 TLAB&#xff1a;thread-local allocation buf…

go-zero微服务实战——服务构建

目录介绍 接上一节go-zero微服务实战——基本环境搭建。搭建好了微服务的基本环境&#xff0c;开始构建整个微服务体系了&#xff0c;将其他服务也搭建起来。 order的目录结构&#xff0c;如下 根目录 api服务rpc服务自定义逻辑层logic自定义参数层models自定义工具层util …

RAR Extractor Max - Unzip for Mac(简单易用的压缩软件)

RAR Extractor Max是一个软件应用程序&#xff0c;旨在从RAR档案中提取文件。RAR是一个流行的归档文件解压软件&#xff0c;广泛用于压缩和归档文件。RAR Extractor Max是专门为处理RAR文件而设计的&#xff0c;对于任何经常处理这种文件格式的人来说&#xff0c;这是一个有用的…

【运维工程师学习四】Web服务之Apache

【运维工程师学习四】Web服务之Apache 1、查询、安装apacherpm命令使用 2、验证httpd是否启动成功&#xff08;1&#xff09;、查看是否有httpd的进程&#xff08;2&#xff09;、查看是否有80端口在监听中&#xff08;3&#xff09;、CentOS7默认不带netstat命令&#xff0c;通…

自定义TagViewGroup

来看看如何实现最最基本的TagGroupView&#xff0c;该视图作为ViewGroup的作用是实现其中的子视图的自动换行&#xff0c;保证子视图能够按照在xml中传入的顺序来相对合理地显示到界面上。 注意&#xff1a;其实在Android技术已经非常完善的当下&#xff0c;其实我们已经不怎么…

【k8s】k8s的yaml文件解释,如何部署一个java.jar包

前言&#xff1a; k8s的yaml文件解释&#xff0c;如何部署一个java,jar包 YAML语法格式&#xff1a; 大小写敏感&#xff1b;使用缩进表示层级关系&#xff1b;不支持Tab键制表符缩进&#xff0c;只使用空格缩进&#xff1b;缩进的空格数目不重要&#xff0c;只要相同层级的元…

Imx6ull linux 设备树

一 linux设备树简介 1.1 linux设备树 Linux设备树是一种用于描述硬件设备信息的数据结构&#xff0c;它在Linux内核中发挥着越来越重要的作用 在系统上电后&#xff0c;BootLoader会将设备树传递给Linux内核&#xff0c;内核根据识别的树信息展开为platform_device、spi_dev…

如何用爬虫实现GPT功能

如何用爬虫实现GPT功能&#xff1f; GPT&#xff08;Generative Pre-trained Transformer&#xff09;和爬虫是两个完全不同的概念和技术。GPT是一种基于Transformer模型的自然语言处理模型&#xff0c;用于生成文本&#xff0c;而爬虫是一种用于从互联网上收集数据的技术。 …

贝叶斯 A/B 测试解释与Python实现

一、说明 A / B测试在各个行业中有许多应用。从试图确定最佳市场群体到医疗药物测试&#xff0c;它具有各种应用&#xff0c;并允许企业根据结果做出决策。有两种常见的A/B检验方法&#xff0c;频率主义方法和贝叶斯方法&#xff0c;两者都是从假设检验的基础出发的。在本文中&…

819. 递归求阶乘

链接&#xff1a; 819.递归求阶乘 题目&#xff1a; 请使用递归的方式求 nn 的阶乘。 输入格式 共一行&#xff0c;包含一个整数 nn。 输出格式 共一行&#xff0c;包含一个整数&#xff0c;表示 nn 的阶乘的值。 数据范围 1≤n≤101≤n≤10 输入样例&#xff1a; 3输出样例&am…

【Linux】查看系统各种信息的常用命令 (CPU、内存、进程、网口、磁盘、硬件、等等)

Linux是一种开源的类Unix操作系统&#xff0c;它有很多不同的发行版&#xff0c;如Ubuntu、CentOS、Debian等。Linux系统提供了很多命令行工具&#xff0c;可以让用户方便地查看和管理系统的各种信息&#xff0c;如硬件配置、内存使用、进程状态、网络连接等。本文将介绍一些常…

解决IDEA项目external libraries依赖包消失的问题

有时候电脑重启后&#xff0c;再打开IDEA上的项目时会出现external libraries目录下的依赖包都消失了的情况&#xff0c;只剩下了一个JDK的包 网上说可以通过刷新IDEA的缓存解决&#xff0c;但我试了没有效果&#xff0c;最后使用如下办法解决&#xff1a; 1.删除项目目录下的…

python接口自动化(二十五)--unittest断言——下(详解)

简介 本篇还是回归到我们最初始的话题&#xff0c;想必大家都忘记了&#xff0c;没关系看这里&#xff1a;传送门 没错最初的话题就是登录&#xff0c;由于博客园的登录机制改变了&#xff0c;本篇以我找到的开源免费的登录API为案例&#xff0c;结合 unittest 框架写 2 个用例…

MySQL原理探索——26 备库为什么会延迟好几个小时

在上一篇文章中&#xff0c;介绍了几种可能导致备库延迟的原因。你会发现&#xff0c;这些场景里&#xff0c;不论是偶发性的查询压力&#xff0c;还是备份&#xff0c;对备库延迟的影响一般是分钟级的&#xff0c;而且在备库恢复正常以后都能够追上来。 但是&#xff0c;如果备…

nvm的安装与使用5分钟极速上手

nvm的安装与使用5分钟极速上手 下载 nvm 并安装 nvm官网下载地址推荐下载 nvm-setup.zip 这一个&#xff0c;nvm-noinstall.zip下载之后不用安装&#xff0c;但是得自己配置setting.txt文件&#xff0c;以及环境变量&#xff0c;过于麻烦。nvm-setup.zip 会直接帮我们把环境变…