网络协议——FTP(简介、搭建FTP服务端)

一、简介 

1、什么是FTP?

  • FTP(File Transfer Protocol,文件传输协议)
    • TCP/IP 协议组的协议之一。
    • 常用20(数据)、21(命令)端口作为通讯端口。(22为SSH端口)
    • FTP分为服务端和客户端。
    • 以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。
    • 用户不能成为服务端计算机中的正常用户。
  • 工作机制
    • 使用了两条 TCP 连接,一条是数据连接,用于数据传送;另一条是控制连接,用于传送控制信息(命令和响应)。
    • 整个交互的 FTP 会话中,控制连接始终是处于连接状态的,数据连接则在每一次文件传送时先打开后关闭。

2、作用

  • 服务端的文件上传与下载。
  • 两台计算机间的文件共享。
  • 家庭照片远程存储。

3、缺点

  • 无法自动检测传输
    • FTP拥有ASCII和BINARY两种传输模式,图片和执行文件必须用BINARY模式,CGI脚本和普通HTML文件用ASCII模式上传。
  • 报文明文传输
    • FTP报文在传输过程中是不进行加密的,通过抓包软件能够直接查看报文内容,甚至FTP的用户名/密码。
  • 大文件传输不可靠
    • FTP在传输超过2G文件时,可能出现提示传输成功,但实际文件未完全传输的情况,所以在传输大文件时需要人为的分解文件,分别传输。

4、服务端与客户端

  • FTP服务端
    • 存储相应文档、图片及文件,并将存储目录分享给客户端进行访问的计算机或者服务器。
  • FTP客户端
    • 从FTP服务端上传或下载相应文档、图片及文件的计算机。

二、主动模式和被动模式

  • 这两种模式的主要区别在于如何建立数据连接。(服务器主动或被动)
  • 主动模式
    • 在主动模式下,FTP客户端会向服务器发起连接并建立控制通道(通常是通过端口21)。当客户端需要传输数据时,它会通过控制通道告诉服务器客户端正在监听的IP地址和端口号。服务器随后会从其数据端口(通常是20)主动连接到客户端提供的数据端口。
    • 服务端 连接到 客户端 的端口。
    • 问题:主动模式在某些情况下可能会被防火墙阻挡,因为服务器主动连接客户端的端口,可能会被防火墙认为是未经请求的连接。并且大多数的客户端没有独立的公网IP。
  • 被动模式
    • 在被动模式下,客户端和服务器仍然会首先建立控制通道。不同的是,当需要传输数据时,客户端请求服务器进入被动模式(通过发送PASV命令)。服务器在接收到该命令后,会打开一个随机的非特权端口并通知客户端(1024以上)。随后,客户端会主动连接到服务器的该端口来建立数据通道。
    • 客户端 连接到 服务端 的端口。
    • 优点:被动模式通常能更好地穿透防火墙和NAT(网络地址转换)设备,因为所有连接都是由客户端发起的,这样防火墙和NAT设备更容易处理。
  • 选择何种模式
    • 主动模式:适用于客户端能够直接接受外部连接的情况,且没有严格的防火墙限制。
    • 被动模式:适用于客户端在防火墙后面,或无法接受外部连接的情况。

三、搭建FTP服务端

  • 在Win7虚拟机上搭建FTP服务端,并通过本机进行访问。
  • 虚拟机:控制面板 -> 程序和功能 -> 打开或关闭Windows功能
  • 勾选下面的功能。
  • 打开计算机管理。
  • 添加FTP站点,物理路径是在虚拟机中要共享的文件夹。
  • 设置虚拟机的ip,端口保持为21不变,启用虚拟主机名项可以不必勾选,自动启动FTP站点可以勾选,SSL可以选择无SSL。
  • 身份验证勾选匿名和基本,允许访问项设置为所有用户,勾选读取和写入权限。
  • 这时可以看到,FTP站点已经创建成功并正常运行。
  • 设置允许FTP服务器通过防火墙。找到防火墙,点击进入允许程序通过Windows防火墙。勾选列表中FTP服务器,确定。
  • 右键浏览FTP服务器,可以看到之前设置的物理文件夹。
  • 放入需要传输的文件。
  • 本机:先查询虚拟机的ip地址,以供本机访问。
  • 打开文件资源管理器中输入FTP服务器的地址,ftp:// [虚拟机的IP地址],回车即可访问。

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

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

相关文章

机器学习入门指南:Jupyter Notebook实战

前言 机器学习作为人工智能领域的核心组成,是计算机程序学习数据经验以优化自身算法、并产生相应的“智能化的“建议与决策的过程。随着大数据和 AI 的发展,越来越多的场景需要 AI 手段解决现实世界中的真实问题,并产生我们所需要的价值。 机…

引力为什么会让时间变慢,给你通俗的解读

爱因斯坦的狭义相对论表明,速度会让时间变慢,速度越快时间就越慢。而广义相对论告诉我们,引力同样会让时间变慢,引力越强时间就越慢。 时间膨胀 速度对时间的影响就先不解释了,之前的科普文章介绍了很多,今…

【C++】从零开始map与set的封装

送给大家一句话: 今日的事情,尽心、尽意、尽力去做了,无论成绩如何,都应该高高兴兴地上床恬睡。 – 三毛 《亲爱的三毛》 🌃🌃🌃🌃🌃🌃🌃&#x…

看潮成长日程表用户手册(下)

看潮成长日程表用户手册(下) 四、基础设置1、系统用户设置2、成长学员设置3、自然期间定义4、时间表版本设置5、学员期间设置6、时间表时段设置7、年度假日维护 五、参数设置1、颜色参数设置2、逻辑参数设置3、数值参数设置4、字符参数设置5、列表输入项…

【二分查找 位运算】3145. 大数组元素的乘积

本文涉及知识点 二分查找算法合集 位运算、状态压缩、枚举子集汇总 LeetCode3145. 大数组元素的乘积 一个整数 x 的 强数组 指的是满足和为 x 的二的幂的最短有序数组。比方说,11 的强数组为 [1, 2, 8] 。 我们将每一个正整数 i (即1,2&am…

c语言从入门到函数速成(完结篇)

哈喽,小伙伴们大家好呀,本篇文章是这个系列的完结篇,希望大家看完后能有所收获哦 首先能看到这里的同学,一定也是自觉性比较强的了,我会在文章末尾给大家发点小福利 那么,我们先来通过数学中的函数来引入一…

医学中脑机接口技术的未来

医学中脑机接口技术的未来 李升伟 编译 对非侵入性脑机接口(而不是植入物)日益增长的兴趣可能会提高患者的易使用性,但分辨率需要提高。 图片来源:Denis Pobytov / DigitalVision Vectors / Getty 全球范围内正在展开一场争夺利用…

云服务器购买之后到部署项目的流程

1.通过账号密码登录百度智能云控制台; 2.进入对应的服务器‘云服务器BBC’ 找到’实例‘即找到对应的服务器列表; 此时通过本地电脑 1.cmd命令提示符 PING 服务器公网地址不通; 2.通过本地电脑进行远程桌面连接不通 原因:没有关联安全组,或者…

测试基础02:软件开发流程及模型、敏捷开发

1、软件开发流程 包括:项目开发目的分析与确定、需求分析、设计、编程、软件测试、软件交付、验收和维护。 2、软件开发模型 2.1 定义 软件开发模型(Software Development Model)是软件开发全过程的框架,规定了软件开发过程中各项活动的基本步骤、任务…

InteractiveGraph图谱中vue项目中如何使用

InteractiveGraph图谱中vue项目中如何使用 一、下载js和css和字体二、vue2.0项目中引用三、grap组件 一、下载js和css和字体 //在这里面找 https://github.com/grapheco/InteractiveGraph/blob/master/dist/examples/example1.html二、vue2.0项目中引用 //main.js中全局引入$ …

驱动开发中引入私有数据的原因

系列文章目录 驱动开发中引入私有数据的原因 驱动开发中引入私有数据的原因 系列文章目录驱动开发中引入私有数据的原因 驱动开发中引入私有数据的原因 驱动开发中引入私有数据(Private Data)概念主要是为了解决以下几个关键问题: 1.多设备支…

Docker环境安装并使用Elasticsearch

1、拉取es docker pull elasticsearch:7.10.12、查看镜像 docker images3、启动es docker run -d --name esearch -p 9200:9200 -p 9300:9300 elasticsearch:7.10.14、如果启动ES时出现一下问题 Unable to find image docker.elastic.co/elasticsearch/elasticsearch:7.10.…

从Python代码到pip包:打包Python项目

大家好,在软件开发的世界中,共享和重用代码是至关重要的。Python社区为我们提供了丰富的资源,使得我们能够轻松地与他人分享我们的工作,并从他人的工作中受益。将代码打包成pip包(Python包管理器)是一种常见…

SpringCloudAlibaba:6.2RocketMQ的普通消息的使用

简介 普通消息也叫并发消息&#xff0c;是发送效率最高&#xff0c;使用最多的一种 依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSch…

Web上机:JSP+Servlet+JDBC的交互流程

目录 需求与设计 基础需求&#xff1a; 项目结构&#xff1a; 项目逻辑&#xff1a; 运行图示&#xff1a; 代码实现 Login.jsp InsertServlet SelectServlet Table.jsp user mysql表结构 Web开发技术迭代速度日新月异&#xff0c;对于技术的更新往往是基于底层一…

Kubernetes核心组件Ingress详解

1.1 Ingress介绍 Kubernetes 集群中&#xff0c;服务&#xff08;Service&#xff09;是一种抽象&#xff0c;它定义了一种访问 Pod 的方式&#xff0c;无论这些 Pod 如何变化&#xff0c;服务都保持不变。服务可以被映射到一个静态的 IP 地址&#xff08;ClusterIP&#xff09…

element ui 的el-input输入一个字后失去焦点,需重新点击输入框才能再次输入!

解决方案&#xff1a; 我是form表单嵌套表格&#xff0c;里面的el-input输入框&#xff0c;输入第一个值的时候会突然失去焦点&#xff0c;需要再次点击输入框才能正常输入&#xff0c;原因是table的key值&#xff0c;需要改成正常的index即可&#xff0c;如果你是循环的&…

精益生产培训公司:为企业量身定制的精益解决方案——张驰咨询

在当今竞争激烈的市场环境下&#xff0c;企业要想持续发展&#xff0c;就必须不断寻求转型升级的途径。精益生产作为一种高效的生产管理方式&#xff0c;已经成为众多企业追求的目标。而精益生产培训公司&#xff0c;正是帮助企业实现这一目标的重要力量。 一、精益生产培训的…

Kubernetes可视化界面之DashBoard

1.1 DashBoard Kubernetes Dashboard 是 Kubernetes 集群的一个开箱即用的 Web UI&#xff0c;提供了一种图形化的方式来管理和监视 Kubernetes 集群中的资源。它允许用户直接在浏览器中执行许多常见的 Kubernetes 管理任务&#xff0c;如部署应用、监控应用状态、执行故障排查…

WPF中CommandParameter用法

1. 界面样式 2. XAML中代码部分 <ButtonGrid.Row"0"Grid.Column"1"Command"{Binding BtnClick_Number}"CommandParameter"7"Content"7"Style"{StaticResource BtnStyle_Num}" /> <ButtonGrid.Row"…