ftp传输原理

客户端通过某软件用某个端口(a端口)向服务端发起tcp连接请求,同时告诉服务端客户端另一个空闲端口号(b端口),服务端用21端口与客户端建立一条控制连接通道。

接着在默认情况下,服务端使用20端口和b端口建立数据传送通道。这样就用客户端的2个端口和服务端2个端口通道建立了两条通道,之后就可以传送数据了。

ps:客户端的两个通道是都是随机的,服务端的控制通道用21,服务端的数据传送通道默认是20也可以设置成其他端口号。

客户端<------------>服务端

a端口<------------->21端口          控制通道

b端口<------------->20端口           数据传送通道

控制连接通道,会在传送一个文件后会关闭通道,然后再开启通道传统另一个文件,每一个文件传输都需要建立和关闭Tcp连接

所以ftp传送多个小文件要比一个大文件时效率要低。

ftp协议规范

1:数据传送格式

文件类型:ASCII或者二进制

控制格式:只允许非打印

数据结构:只允许文件结构

传输方式:只允许流方式

2:控制命令种类

建立控制连接后,服务端保持监听状态,随时根据客户端发送的命令做相应的工作

3:答应格式

抓包工具

yum install -y wireshark

客户端连接方式

上面的 a端口<------------->21端口 的连接方式有两种:主动方式(port)和被动方式(pasv)

主动和被动是相对于服务器而言,数据连接如果是服务器发起的就是主动连接,反之。

主动方式下,客户端首先通过port命令向服务器发送自己的一个控件端口号,然后服务器通过默认的20端口向客服端提供的端口发起连接请求

被动方式下,客户端发送pasv命令,服务端回应一个端口号,告诉客户端它将在这个端口监听来自客户端的TCP请求

在全开放的网络环境下二种方式传输的效率是一样的。

如果在客户端和服务器端有防火墙存在

()centos6.8安装配置ftp服务器的更多相关文章

  1. vps建站教程 CentOS6如何安装配置FTP服务器

    通过之前的几篇文章,我们都知道了如何配置PHP环境,也知道如何保护我们的vps以及如何绑定多个域名建设多个网站.有时候我们为了让我们的朋友也能用我们的vps建站又不想给他们太多权限,有时候我们想要当个 ...

  2. centos6.4安装配置vpn服务器步骤详解

      centos6.4安装配置vpn服务器步骤详解,从安装VPN到配置VPN服务器.配置VPN服务器的路由转发功能,每一步都很详细   一.VPN服务器环境说明 操作系统:CentOS release ...

  3. win7下安装配置ftp服务器

    1. win7操作系统自带了ftp组件,所以不需要另外下载.只需要在控制面板中,添加或删除组件中启用即可. 2. 在管理上,ftp和iis是属于同一个目录的.ftp也可以算是internet info ...

  4. CentOS8.0-1905安装配置ftp服务器

    关键词:CentOS8/RHEL8;安装配置FTP/安装配置VSFTPD;被动模式/PASV##CentOS8.0-1905发布后,尝试将FTP服务器迁移至新版本的CentOS中,但是测试过程中,在防 ...

  5. CentOS 7安装配置FTP服务器

    CentOS 7下FTP服务器的安装配置. 假设我们有以下要求 路径 权限 备注 /ftp/open 公司所有人员包括来宾均可以访问 只读 /ftp/private 仅允许Alice.Jack.Tom ...

  6. 安装配置ftp服务器

    1.安装ftp服务 检查是否安装vsftpd rpm -qa|grep vsftpd 安装 vsftpd yum -y install vsftpd 2.配置 编辑 文件 /etc/vsftpd/vs ...

  7. sh 自动化安装配置FTP服务器

    #!/bin/bash # FPATH=/etc/vsftpd/ FILE=/etc/vsftpd/vsftpd.conf USERB=ftp01 CON() { sed -i "s#ano ...

  8. CentOS7安装配置FTP服务器

    假设我们有以下要求 路径 权限 备注 /ftp/open 公司所有人员包括来宾均可以访问 只读 /ftp/private 仅允许Alice.Jack.Tom三个人访问 Alice.Jack只允许下载, ...

  9. (7)centos7安装配置ftp服务器

    1.安装vsftpd yum install vsftpd -y 2.设置开机启动vsftpd ftp服务 systemctl enable vsftpd.service 3.启动vsftpd服务 s ...

随机推荐

  1. CCPC_1005

    可怕.....的提.....显而易见的规律活活没照出来...不过说起来却是不能严格证明....于是...脑筋急转弯活活猜不出来..... 1*1->1*2->2*2->2*3-> ...

  2. mysql-不恰当的update语句使用主键和索引导致mysql死锁

    背景知识:MySQL有三种锁的级别:页级.表级.行级. MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking):BDB存储引擎采用的是页面锁(page-level ...

  3. 【Restore IP Addresses 】cpp

    题目: Given a string containing only digits, restore it by returning all possible valid IP address com ...

  4. C++编程规范(101条准则)

    记录学习,方便以后查看.  2014-12-28 看完这本书,但是我做到的又有多少呢?确实有一部分 0 不要拘泥于小节 1 在高警告级别干净利落的进行编译,不放过任何警告 2 使用自动构建系统 3 使 ...

  5. linux环境搭建系列之svn安装

    前提: linux centOS 64位操作系统 1.root账号 2.#yum install -y subversion 出现如下报错: 尝试Telnet https://www.baidu.co ...

  6. Windows下Redis3.2.10及图像化工具redis-desktop-manager安装教程

    1.下载地址: GitHub地址:https://github-production-release-asset-2e65be.s3.amazonaws.com/3402186/bb1d10fc-3f ...

  7. WordPress 通过文章 URL 获取文章 ID

    // 获取当前文章链接,注意,在文章类型页面的主循环外使用标签时,如果没有指定 Post ID 参数,该标签将返回循环中最后一篇文章的 URL,而不是当前页面的固定链接,或者直接不返回结果,所以一般需 ...

  8. PAT乙级 1001(C)+1054(Java)

    准备一天两道题,就这样吧,先从水题开始. 1001.点击查看 分析:看懂题就应该写出来了,注意边界与0情况的处理. #include<stdio.h> #include<math.h ...

  9. ubuntu16.04中docker安装curl拒绝连接问题

    在Ubuntu16.04中安装docker ce,安装步骤按照官网说明https://docs.docker.com/engine/installation/linux/docker-ce/ubunt ...

  10. springboot 连接redis

    引入依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>s ...