Linux中的FTP服务
FTP服务
文件传输协议
FTPFile Transfer Protocol 早期的三个应用级协议之一
基于C/S结构
双通道协议:数据和命令连接
数据传输格式:二进制(默认)和文本
两种模式:服务器角度主动(PORT style):服务器主动连接
主动模式(PORT)--进行tcp三次握手
FTP 客户端首 先和服务器的TCP 21端口建立连接,用来发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时 候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。
如下图所示,用户主机直接暴露在互联网中,用户连接FTP SERVER使用主动模式遵循以下一个过程:
用户主机一个随机端口连接FTP SERVER的TCP21端口进行协商;
用户主机告诉FTP SERVER,我的XXXX端口已经打开,你可以放心大胆的连过来;
然后FTP SERVER就用TCP20端口连接用户主机的XXXX端口,数据传输开始。
被动模式(PASV)--进行tcp三次握手
建立控制通道和Standard模式类似,但建立连接后发送Pasv命 令。服务器收到Pasv命令后,打开一个临时端口(端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务 器此端口,然后FTP服务器将通过这个端口传送数据。
很多防火墙在 设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的 高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。
当用户主机前端多了一道防火墙(客户机使用地址转换接入互联网),事情就变的复杂了,首先,主动模式是FTP SERVER连接客户机,防火墙肯定不干;即便乐意干客户机与服务器协商的XXXX端口也是随机端口,你让迷茫的防火墙情何以堪,这时就需要客户端软件使用被动模式主动连接防火墙,这么一来正合防火墙的胃口。
客户端使用被动模式遵循以下过程:
首先用户使用随机端口连接FTP SERVER的TCP 21端口进行协商;
FTP SERVER告诉客户机:我的XXXX端口开放了,你连过来吧;
客户机使用一个随机端口连接FTP SERVER的XXXX端口传输数据。
服务器被动模式数据端口示例:
227 Entering Passive Mode (192,168,175,138,224,59)
服务器数据端口为:224*256+59
FTP软件介绍
FTP服务器:
Wu-ftpd,Proftpd,Pureftpd,ServU,IIS
vsftpd:Very Secure FTP Daemon,CentOS默认FTP服务器
高速,稳定,下载速度是WU-FTP的两倍
ftp.redhat.com数据:单机最多可支持15000个并发
客户端软件:
ftp,lftp,lftpget,wget,curl ftp -A ftpserver port -A主动模式 –p 被动模式 lftp –u username ftpserver lftp username@ftpserver lftpget ftp://ftpserver/pub/file gftp: GUI centos5 最新版2.0.19 (11/30/2008) filezilla,CuteFtp,FlashFXP,LeapFtp IE ftp://username:password@ftpserver
FTP服务状态码:
1XX:信息 125:数据连接打开 2XX:成功类状态 200:命令OK 230:登录成功 3XX:补充类 331:用户名OK 4XX:客户端错误 425:不能打开数据连接 5XX:服务器错误 530:不能登录
用户认证:
匿名用户:ftp,anonymous,对应Linux用户ftp 系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow 虚拟用户:特定服务的专用用户,独立的用户/密码文件 nsswitch:network service switch名称解析框架 pam:pluggable authentication module 用户认证 /lib64/security /etc/pam.d/ /etc/pam.conf
Linux中的FTP服务的更多相关文章
- 讲述一下自己在linux中配置ftp服务的经历
本人大二小白一名,从大一下学期就开始接触到linux,当时看到学校每次让我们下载资源都在一个ftp服务器中,感觉特别的高大上,所以自己就想什么时候自己能够拥有自己的ftp服务器,自己放一点东西进去,让 ...
- 如何在linux下开启FTP服务
如何在linux下开启FTP服务 1. 首先服务器要安装ftp软件,查看是否已经安装ftp软件下: #which vsftpd 如果看到有vsftpd的目录说明服务器已经安装了ftp软件 2. ...
- Linux中如何设置服务自启动?
转自:Linux中如何设置服务自启动? 有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务,主要用三种方式进行这一操作: ln -s 在/etc/rc.d/rc ...
- (转) Linux安装启动FTP服务
Linux安装启动FTP服务 Linux服务器默认是没有开启FTP服务的.也没有FTP服务器,为了文件的传输需要用到FTP服务器,以典型的vsftpd为例.vsftpd作为FTP服务器,在Linux系 ...
- 在linux中添加ftp用户,并设置相应的权限
在linux中添加ftp用户,并设置相应的权限,操作步骤如下: 1.环境:ftp为vsftp.被限制用户名为test.被限制路径为/home/test 2.建用户:在root用户下: useradd ...
- linux中添加ftp用户,并设置相应的权限
在linux中添加ftp用户,并设置相应的权限,操作步骤如下: 1.环境:ftp为vsftp.被限制用户名为test.被限制路径为/home/test 2.建用户:在root用户下: useradd ...
- Linux中的sshd服务
Linux中的sshd服务,主要用于pst终端,远程连接到linux服务中 看sshd服务状态 service sshd status 停止sshd服务 service sshd stop 启动ssh ...
- centos7中搭建ftp服务
博客搬家: centos7中搭建ftp服务 最近想和同学共享一些文件资源,于是在实验室服务器上搭建个ftp服务,本博客记录一下配置的流程.过程基本是参照别人的方法来做的,博客也是在别人博客基础上修改的 ...
- linux环境中安装ftp服务
需求说明: 今天项目中有一个新的需求,需要在linux环境中搭建一个ftp服务,在此记录下. 操作过程: 1.通过yum的方式安装ftp服务对应的软件包 [root@testvm01 ~]# yum ...
随机推荐
- Phoenix在2345公司的实践(转)
本文介绍Phoenix在2345公司的实践,主要是实时查询平台的背景.难点.Phoenix解决的问题.Phoenix-Sql的优化以及Phoenix与实时数仓的融合思路.具体内容如下: 实时数据查询时 ...
- 递归(Recursion)
递归是一种非常常用的算法,分为“递”和“归”两个步骤.满足递归算法有三个条件:1.一个问题,可以分解为子问题:2.该问题,与分解后的子问题,解决思路一致:3.存在终止条件.案例演示:假设有n个台阶,每 ...
- LPS UVA 11404 Palindromic Subsequence
题目传送门 题意:求LPS (Longest Palidromic Subsequence) 最长回文子序列.和回文串不同,子序列是可以不连续的. 分析:1. 推荐->还有一种写法是用了LCS的 ...
- curry柯里化函数实现
curry柯里化函数实现 参考文章: 一行写出javascript函数式编程中的curry 感谢作者分享 第一步: 缓存原始函数的参数个数 function curry(fn) { var limit ...
- 牛客国庆集训派对Day_1~3
Day_1 A.Tobaku Mokushiroku Kaiji 题目描述 Kaiji正在与另外一人玩石头剪刀布.双方各有一些代表石头.剪刀.布的卡牌,每局两人各出一张卡牌,根据卡牌的内容决定这一局的 ...
- 浅析String
浅析String String的设计结构: 首先我们看一下 String的源码 public final class String implements java.io.Serializabl ...
- 将picpick汉化及矩形截屏
- Java三大特性之---封装
封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保 ...
- Ionic之ui-sref引入图片,图片部分挡住解决方案
ionic图片设置大小跟图片像素相同,但是使用ui-sref="parkInfo"上半部分图片会挡住,增加height的高度,就可以显示原本图片 页面: <ion-conte ...
- JUnit的好搭档-Hamcrest
一.Hamcrest简介 Hamcrest是一个用于编写匹配器(matcher)对象的框架,允许以声明方式定义“匹配(match)”规则.它可以与JUnit框架配合使用,使断言可读更高,更加灵活(例如 ...