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

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.hqwc.cn/news/18563.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《黑马头条》 ElectricSearch 分词器 联想词 MangoDB day08-平台管理[实战]作业

07 app端文章搜索 1) 今日内容介绍 1.1)App端搜索-效果图 1.2)今日内容 2) 搭建ElasticSearch环境 2.1) 拉取镜像 docker pull elasticsearch:7.4.0 2.2) 创建容器 docker run -id --name elasticsearch -d --restartalways -p 9200:9200 -p 9300:9300 -v /usr/share/elasticse…

关于Vue 、vue2、vue3

vue优点?vue2、vue3响应式比较? (1) 响应式编程 Vue 会自动对页面中某些数据的变化做出响应。通过 MVVM 思想实现数据的双向绑定,让开发者不用再操作 DOM 对象,有更多的时间去思考业务逻辑。 组件化开发…

springboot服务端接口公网远程调试,并实现HTTP服务监听

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…

探索全球市场:初创品牌海外营销策略解析

​随着全球化进程的不断推进,越来越多的初创品牌意识到海外市场的巨大潜力,并希望能够将自己的品牌推广到更广阔的国际舞台上。然而,对于初创品牌来说,进军海外市场并开展品牌营销是一项具有挑战性的任务。本文Nox聚星将介绍一些初…

Vue前后端分离项目 【实战篇】

一、shiro中session的共享问题🍉 1.演示问题🥝 (1)启动shiro-springboot的集群项目🍓 (2)修改nginx的配置🍓 (3)测试🍓 使用swagger测试需要在过滤器中放行 //测试路径 http://localhost:8080/doc.html登录成功后访…

ModaHub魔搭社区:向量数据库Zilliz Cloud集群、Collection 及 Entity教程

目录 集群 Collection 字段 Schema 索引 Entity Zilliz Cloud 集群由全托管 Milvus 实例及相关计算资源构成。您可以在 Zilliz Cloud 集群中创建 Collection,然后在 Collection 中插入 Entity。Zilliz Cloud 集群中的 Collection 类似于关系型数据库中的表。Collection …

请求响应-json参数的接收

JSON参数 JSON参数:JSON数据键名与形参对象属性名(即实体类中的成员变量)相同,定义POJO实体类即可接收参数,需要使用RequestBody标识前端发送JSON格式的数据,要使用POST方法发送请求,因为JSON格…

FASTADMIN联合查询 搜索

控制器中添加relationSearch开关 控制器里面添加联合查询 MODEL里面添加 js里面添加即可 可以查看数据json 搜索开启searchFileds就可以了

前端基础知识学习——圆角、透明圆角(十四)

文章目录 圆角方法一圆角方法二(推荐)透明圆角方法一透明圆角方法二(推荐) 圆角方法一 /* 添加圆角 方法1:border-radius cs3不兼容*/.bo{width: 100px; height: 200px;border: 1px solid #e5e5e5;margin:30px aut…

【MySQL】如何优化SQL查询的总体框架(详细版,关于如何优化数据库服务器从大到小详细说明了步骤)

文章目录 1 数据库服务器的优化步骤2 观察2.1 观察系统总体运行情况2.2 定位执行慢的 SQL:慢查询日志2.3 查看 SQL 执行成本:SHOW PROFILE2.4 分析查询语句:EXPLAIN(重点掌握)2.4.1 EXPLAIN各列作用2.4.2 EXPLAIN 的 t…

【嵌入式Qt开发入门】Qt如何使用多线程——继承QObject的线程

QObject 在上篇已经说过,继承 QThread 类是创建线程的一种方法,另一种就是继承 QObject 类。继承 QObject 类更加灵活。它通过 QObject::moveToThread()方法,将一个 QObeject 的类转移到一个线程里执行,可以通过下图理解。 通过…

6.2.1 网络基本服务---域名解析系统DNS

6.2.1 网络基本服务—域名解析系统DNS 因特网是需要提供一些最基本的服务的,今天我们就来讨论一下这些基本的服务。 域名系统(DNS)远程登录(Telnet)文件传输协议(FTP)动态主机配置协议&#x…