计算机网络 —— 应用层(FTP)

计算机网络 —— 应用层(FTP)

  • FTP
    • 核心特性:
    • 运作流程:
  • FTP工作原理
    • 主动模式
    • 被动模式

我门今天来看应用层的FTP(文件传输协议)

FTP

FTP(File Transfer Protocol,文件传输协议) 是一种广泛使用的标准协议,它使用户能够在计算机网络上进行文件的上传和下载。FTP设计用于在客户端和服务器之间提供文件访问、传输和管理能力,常用于网页托管、文件共享和大量数据传输场景。以下是FTP的一些核心特点和运作机制:

核心特性:

  • 应用层协议:FTP工作在OSI模型的应用层和TCP/IP模型的传输层,使用TCP作为传输协议,确保数据传输的可靠性和顺序。
  • 双通道通信:FTP使用两个TCP连接来完成文件传输,一个是控制连接(默认端口21),用于传输控制信息(如登录认证、命令和响应);另一个是数据连接(默认端口20用于主动模式,或者临时端口用于被动模式),用于实际的数据传输。
  • 两种传输模式:主动模式(Active)和被动模式(Passive)。在主动模式下,服务器发起数据连接到客户端;而在被动模式下,客户端发起数据连接到服务器,更适合穿越防火墙的场景。
  • 认证与安全性:FTP支持多种认证机制,包括匿名访问和密码验证。传统FTP以明文形式传输数据和认证信息,存在安全风险,因此现代应用中常结合SSL/TLS加密层使用FTPS(FTP over SSL)或SFTP(Secure File Transfer Protocol,虽然名称相似,但基于SSH协议,与FTP有本质区别)来提升安全性。
  • 文件操作命令:FTP协议定义了一系列命令,允许用户执行文件和目录操作,如上传(STOR)、下载(RETR)、删除(DELE)、重命名(RNFR/RNTO)、创建目录(MKD)等。

运作流程:

  1. 建立控制连接:客户端首先与FTP服务器的21端口建立TCP连接。
  2. 认证:客户端向服务器发送用户名和密码进行身份验证。
  3. 切换模式:根据需要,客户端可以请求切换到主动或被动模式。
  4. 数据传输:一旦认证成功,客户端可通过发送相应的命令来请求文件的上传或下载。在数据传输请求后,根据所选模式建立数据连接,然后进行文件传输。
  5. 断开连接:数据传输完成后,客户端可以发送QUIT命令关闭控制连接,从而结束FTP会话。

FTP因其历史悠久和广泛兼容性,在很多场景下仍然是文件传输的重要工具,尽管近年来因安全考虑,越来越多地被更安全的协议如SFTP或FTPS所替代。

在这里插入图片描述

FTP工作原理

FTP(文件传输协议)的工作原理基于客户端-服务器(C/S)模型,主要通过以下步骤和机制实现文件的传输和管理:

  1. 建立连接
  • 客户端初始化与FTP服务器的连接,通过TCP/IP协议,连接到服务器的21端口,建立控制连接。控制连接在整个FTP会话期间保持活跃,用于传递控制命令和服务器响应。
  1. 认证与授权
  • 客户端向服务器发送用户名和密码进行身份验证。认证成功后,客户端才能进行后续的文件操作。
  1. 选择传输模式
  • 客户端可以选择使用主动模式(Active mode)或被动模式(Passive mode)。在主动模式下,客户端告诉服务器自己的IP地址和一个空闲端口,服务器随后使用该信息建立数据连接到客户端。被动模式下,服务器告诉客户端一个它将在其上监听的端口,客户端随后建立数据连接到该端口。
  1. 数据传输
  • 一旦认证完成并且传输模式确定,当客户端请求上传或下载文件时,将根据所选模式建立数据连接(通常使用端口20在主动模式下,或一个临时端口在被动模式下)。数据连接仅在实际传输文件时开启,并在操作完成后关闭,而控制连接仍然保持。
  1. 命令与响应
  • 所有文件操作(如LIST、GET、PUT、DELETE等)都是通过控制连接以命令的形式发送到服务器,服务器则通过相同的连接返回响应,指示命令的成功或失败及相关的状态信息。
  1. 传输模式
  • FTP支持ASCII模式(适合文本文件,进行字符集转换以适应不同系统)和二进制模式(用于图像、音频、视频或程序文件等,不做任何转换,直接传输字节流)。
  1. 断开连接
  • 完成所有文件操作后,客户端可以通过发送QUIT命令来断开与服务器的控制连接,结束FTP会话。

通过这样的机制,FTP提供了在不同计算机之间高效、灵活地传输文件的能力,同时也允许用户进行基本的文件管理操作,如查看目录内容、创建、删除或重命名文件及目录等。

主动模式

FTP的主动模式(Active Mode)工作流程如下:

  1. 建立控制连接:客户端首先通过TCP连接到FTP服务器的21端口,建立起控制连接。在这个连接上,客户端和服务器之间交换命令和响应。
  1. 认证:客户端向服务器发送用户名和密码进行身份验证。
  1. 请求数据连接:当客户端需要下载或上传文件时,它会向服务器发送一个PORT命令。PORT命令中包含了客户端为即将接收数据而打开的端口号信息。这个端口号是客户端随机选择的一个大于1023的端口(N),通常N+1端口会被客户端用来监听来自服务器的数据连接。
  1. 服务器建立数据连接:FTP服务器收到PORT命令后,使用其固定的20号端口主动发起一个TCP连接到客户端指定的端口N(在主动模式下)。
  1. 数据传输:一旦数据连接建立,服务器就可以开始通过这个数据连接向客户端发送文件数据(下载)或从客户端接收文件数据(上传)。
  1. 数据连接关闭:数据传输完成后,数据连接会被关闭,但控制连接仍然保持,以便客户端可以继续发送其他命令,如请求更多文件传输或其他FTP操作。

主动模式的局限性在于,由于服务器主动向客户端发起连接,如果客户端位于防火墙或NAT(网络地址转换)后面,这个从服务器到客户端的数据连接可能无法建立,因为大多数个人或公司网络的防火墙策略通常不允许未经请求的外部连接。因此,在现代网络环境中,被动模式(Passive Mode)更为常见,因为它解决了这个问题,允许客户端在防火墙后也能可靠地建立数据连接。

在这里插入图片描述

被动模式

FTP的被动模式(Passive Mode)设计用来解决主动模式中遇到的防火墙和NAT穿越问题。被动模式的工作流程如下:

  1. 建立控制连接:与主动模式相同,客户端首先通过TCP连接到FTP服务器的21端口,建立控制连接。
  1. 认证:客户端依然需要向服务器发送用户名和密码进行身份验证。
  1. 请求被动连接:当客户端准备进行文件传输时,它会发送一个PASV命令给服务器,请求进入被动模式。服务器收到PASV命令后,会在本地打开一个临时的、未使用的端口(通常大于1024的端口),并告知客户端这个端口号以及服务器的IP地址。
  1. 客户端建立数据连接:客户端收到服务器的响应后,知道服务器用于数据传输的IP地址和端口号。接着,客户端主动发起一个从自己到服务器指定端口的数据连接请求。
  1. 数据传输:数据连接建立后,服务器开始通过这个连接向客户端发送文件数据(下载)或从客户端接收文件数据(上传)。
  1. 数据连接关闭:数据传输完成后,数据连接会被关闭,控制连接继续保持,以便客户端可以继续发送其他FTP命令。

被动模式的优势在于,所有连接都是由客户端发起的,即使客户端位于防火墙或NAT后面,也能够成功建立数据连接,因为外部网络的防火墙通常允许由内部网络向外的连接。这使得FTP被动模式在现代网络环境中,尤其是需要穿越复杂的网络拓扑结构时,更加通用和可靠。然而,被动模式也可能面临一些挑战,比如需要额外的防火墙配置以允许客户端到服务器的广泛端口范围内的连接。

在这里插入图片描述
我门来看两道题:
在这里插入图片描述在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

sprintboot依赖管理和自动配置

springboot依赖管理和自动配置 依赖管理和自动配置依赖管理什么是依赖管理修改自动仲裁/默认版本号 starter场景启动器starter场景启动器基本介绍官方提供的starter第三方starter 自动配置自动配置基本介绍SpringBoot自动配置了哪些?如何修改默认配置如何修改默认扫描包结构re…

基于SSM的足球联赛管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式 🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 &…

南开大学漏洞报送证书【文尾有福利】

证书介绍 获取来源:edusrc(教育漏洞报告平台) url:教育漏洞报告平台(EDUSRC) 兑换价格:30金币​ 获取条件:南开大学任意中危或以上级别漏洞 证书规格:证书做了木框装裱,显得很高…

查看电脑支持的CUDA安装版本与显卡驱动更新

说明: torch版本依赖于CUDA版本与Python版本 Start Locally | PyTorchCUDA版本依赖于显卡驱动版本 1. CUDA 12.5 Release Notes — Release Notes 12.5 documentation 显卡驱动版本依赖于显卡型号与电脑系统 当前电脑3060显卡,安装了CUDA V11.6与torc…

python-画正方形

[题目描述] 输入一个正整数n,要求输出一个n行n列的正方形图案(参考样例输入输出)。图案由大写字母组成。 其中,第1行以大写字母A开头,第2行以大写字母B开头,以此类推;在每行中,第2列…

使用ASM动态创建接口实现类

使用ASM动态生成一个接口的实现类,接口如下: public interface ISayHello {public void MethodA();public void MethodB();public void Abs(); } 具体实现如下: public class InterfaceHandler extends ClassLoader implements Opcodes {pu…

DV、OV通配符SSL证书有什么区别

通配符SSL证书是经常提及的一种SSL证书类型,也被称为泛域名SSL证书。通配符证书在SSL证书当中是比较特殊的,它具有保护主域名及其下一级所有子域名的功能,非常适合子域名多的域名网站,能够有效的节省成本,并降低证书管…

iis下asp.netcore后台定时任务会取消

问题 使用BackgroundService或者IHostedService做后台定时任务的时候部署到iis会出现不定时定时任务取消的问题&#xff0c;原因是iis会定时的关闭网站 解决 应用程序池修改为AlwaysRunning 修改web.config <?xml version"1.0" encoding"utf-8"?…

研究Redis源码的一些前期准备

一 背景 Redis数据结构讲完后&#xff0c;觉得还是有点不过瘾&#xff0c;想研究一下Redis的底层实现。找了一些相关资料&#xff0c;准备借鉴和学习其他各位大佬钻研Redis底层的方法和经验&#xff0c;掌握Redis实现的基本原理。 二 源码归类 网上有大佬已经总结了…

内网穿透方法有哪些?路由器端口映射外网和软件方案步骤

公网IP和私有IP不能互相通讯。我们通常在局域网内部署服务器和应用&#xff0c;当需要将本地服务提供到互联网外网连接访问时&#xff0c;由于本地服务器本身并无公网IP&#xff0c;就无法实现。这时候就需要内网穿透技术&#xff0c;即内网映射&#xff0c;内网IP端口映射到外…

视频服务网关的特点

一、视频服务网关的介绍 视频服务网关采用Linux操作系统&#xff0c;可支持国内外不同品牌、不同协议、不同设备类型监控产品的统一接入管理&#xff0c;同时提供标准的H5播放接口供其他应用平台快速对接&#xff0c;让您快速拥有视频集成能力。不受开发环境、跨系统跨平台等条…

全新量子计算技术!在硅中可以生成大规模量子比特

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨沛贤/浪味仙 排版丨沛贤 深度好文&#xff1a;1600字丨6分钟阅读 摘要&#xff1a;研究人员利用气体环境在硅中形成被称为“色心”的可编程缺陷&#xff0c;首次利用飞秒激光&#xff0c;…

无线麦克风推荐哪些品牌,热门领夹无线麦克风哪个好,看本期文章

​在信息爆炸的今天&#xff0c;高品质的无线领夹麦克风能让声音更清晰响亮。技术发展带来多样化选择同时也带来选择困难。根据多年使用经验和行业反馈&#xff0c;我推荐一系列可靠、易用且性价比高的无线领夹麦克风&#xff0c;助你作出明智选择。还要不知道该怎么选无线领夹…

低投入+高效率的求职招聘小程序源码系统平台版 带完整的安装代码包以及搭建教程部署教程

系统概述 在当今数字化时代&#xff0c;求职招聘领域的竞争日益激烈。传统的求职招聘方式逐渐显露出效率低下、成本高昂等问题。为了满足市场需求&#xff0c;提高求职招聘的效率和便捷性&#xff0c;同时降低企业和求职者的成本&#xff0c;“低投入高效率的求职招聘小程序源…

AI写论文网站,提升论文写作效率

学术研究与论文写作是一个衡量学者专业水平的重要标准。但是&#xff0c;论文写作过程中繁琐的文献检索、资料整理、数据分析等工作往往耗时费力。幸运的是&#xff0c;随着人工智能技术的发展&#xff0c;一系列AI写论文网站应运而生&#xff0c;它们极大地提升了我们论文写作…

解决内核模块加载使用-f参数无法加载的问题

1. 问题现象 问题解决方案&#xff1a;在内核配置打开forced 加载选项

斑马打印机无线加装无线网卡配置

斑马打印机无线加装无线网卡&#xff0c;配置。 主机名会体现在搜索里面 输入SSID&#xff0c;选择安全模式&#xff08;一般都是这个&#xff09; 这里输入密码。

JavaWeb项目配置教程

将你的项目&#xff08;只有代码的文件&#xff0c;不是整个文件&#xff09;拖入idea 找到数据库配置代码&#xff08;一般在Util包里面&#xff0c;或者是properties配置文件&#xff09;并将密码修改为你的数据库密码。 点击Edit Configurations 点击Configure&#xff0…

Sklearn之朴素贝叶斯应用

目录 sklearn中的贝叶斯分类器 前言 1 分类器介绍 2 高斯朴素贝叶斯GaussianNB 2.1 认识高斯朴素贝叶斯 2.2 高斯朴素贝叶斯建模案例 2.3 高斯朴素贝叶斯擅长的数据集 2.3.1 三种数据集介绍 2.3.2 构建三种数据 2.3.3 数据标准化 2.3.4 朴素贝叶斯处理数据 2.4 高斯…

代码随想录算法训练营day26|39. 组合总和、40. 组合总和||、8.分割回文串

39. 组合总和 由题意可知&#xff0c;数组中的每一个数都可以重复相加&#xff0c;因此我们在绘制树形图的时候&#xff0c;每次取完某一个数&#xff0c;下一次回溯的时候还可以用该数&#xff0c;比如2、3、6&#xff0c;每次取完2&#xff0c;候选还剩2、3、6。而最后答案也…