当前位置:文档之家› 架构ftp服务

架构ftp服务

架构ftp服务
架构ftp服务

目录

目录 (1)

1.实验要求 (2)

2.jsp环境搭建 (2)

2.1 准备工作(文件保存在/home 为例,文件版本大同小异): (2)

2.2 安装JDK 并配置环境 (3)

2.3 安装tomcat (3)

2.4 安装配置apache (4)

2.5 整合apache 和tomcat (4)

2.6 安装MySQL连接库 (5)

3. vsftp配置 (6)

3.1 vsftpd 的安装 (6)

3.2 安装支持包和配置文件: (6)

3.3 将虚拟用户保存在MySQL数据库服务器中 (8)

3.4. 进一步的虚拟用户设置 (9)

3.5 虚拟用户的个人目录与权限 (10)

4. jsp代码实现 (10)

4.1 初始化代码: (10)

4.2 注册代码: (12)

5. 运行结果 (15)

5.1启动tomcat (15)

5.2启动Apache (15)

5.3 初始化界面 (16)

5.4注册界面 (17)

5.5 work用户登录 (18)

5.6老师用户登录 (21)

6. 个人总结及分工 ............................................................. 错误!未定义书签。

6.1 分工......................................................................... 错误!未定义书签。

6.2 个人总结................................................................. 错误!未定义书签。

1.实验要求

架构类似江西财经大学提供的FTP服务,具体为:

1. 用户自助注册

分别为教师和学生编写“注册网页”,教师或学生可使用一卡通号自行注册FTP账号,并设置密码。具体操作方式参考https://www.doczj.com/doc/d016694078.html,/stu_ftp和https://www.doczj.com/doc/d016694078.html,/teach_ftp/。与上述两个网页不同的是,用户不需要输入用来验证的“一卡通密码”。只需输入“一卡通号”和“FTP登录密码”即可。

2. 学生账号要求:

每个账号使用不同的主目录,位于/vsftpd/stu/一卡通号/。

学生账号对自己的主目录拥有所有权限。

3. 教师账号要求:

教师注册后获得两个账号:1) 一卡通号;2) 一卡通号+work。两个账号的密码均在注册时设置,主目录均为:/vsftpd/teach/一卡通号/。

在主目录下自动建立两个目录:1) pub; 2) incoming。第一个账号对两个目录都拥有所有权限;第二个账号只能下载pub目录中的文件,或上传文件(及创建子目录)到incoming目录。

2.jsp环境搭建

2.1 准备工作(文件保存在/home 为例,文件版本大同小异):

(1) 下载jdk(/home/ jdk-1_5_0_11-linux-i586-rpm.bin);

(2) 下载apache(/home/ httpd-2.0.63.tar.gz);

(3) 下载tomcat(/home/ apache-tomcat-5.5.27.tar.gz)。

(4) 下载jakarta-tomcat-connectors-1.2.15-src.tar.tar

(5) 所涉及要配置的文件强烈建议做好备份

2.2 安装JDK 并配置环境

(1) 打开/home

#cd /home

(2) 解压

#sh jdk-1_5_0_11-linux-i586-rpm.bin

(3) 安装(默认安装的目录在/usr/java,文件夹名称改为jdk)

#rpm -ivh jdk-1_5_0_11-linux-i586.rpm

(4) 配置环境变量

#vi /etc/profile

JA V A_HOME=/usr/java/jdk

JRE_HOME=/usr/java/jdk/jre

PATH=$PATH:$JA V A_HOME/bin:JRE_HOME/bin

CLASSPATH=.:$JA V A_HOME/lib/dt.jar:$JA V A_HOME/lib/tools.jar:$JRE_HOM E/lib:

export JA V A_HOME JRE_HOME PATH CLASSPATH

(5) 使环境变量生效:

#source /etc/profile

#java –version(查看版本号,如果显示则应该正常安装)

(6) 测试JDK:

#vi hello.java

添加以下内容:

public class hello {

public static void main(String args [ ])

{

System.out.println("Hello World!");

System.out.println("test java");

}

}

保存退出

#javac hello.java(编译hello.java)

#java hello(正常显示内容为成功)

2.3 安装tomcat

(1) 下载apache-tomcat-5.5.27.tar.gz

(2) 安装tomcat

#tar -zxvf apache-tomcat-5.5.27.tar.gz

(3) 移到/usr/local 下

#mv /home/ apache-tomcat-5.5.27 /usr/local/tomcat

(4) 配置tomcat

vi /usr/local/tomcat/conf/server.xml

#####找到

unpackW ARs="true" autoDeploy="true"

xmlValidation="false" xmlNamespaceAware="false">

#####改为

xmlValidation="false" xmlNamespaceAware="false">

#####找到

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

enableLookups="false" redirectPort="8443" acceptCount="100"

connectionTimeout="20000" disableUploadTimeout="true" />

#####改为

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

enableLookups="false" redirectPort="8443" acceptCount="100"

connectionTimeout="20000" disableUploadTimeout="true" />

2.4安装配置apache

如已经安装了apache,先rpm –qa|grep httpd 查看,然后rpm –e 逐一删除

(1)解压httpd

#tar xvfz httpd-2.0.63.tar.gz

(2)安装httpd

#cd /home/ httpd-2.0.63

#./configure --prefix=/usr/local/apache --enable-module=s o(注:参数

prefix 定义apache 的安装路径)

#make

#make install

(3)配置httpd

#vi /usr/local/apache/conf/httpd.conf

将Listen 80 修改为Listen :80

将ServerName 修改为ServerName :80

在DirectoryIndex 中添加index.jsp

保存退出

2.5 整合apache 和tomcat

(1) 解压tomcat-connectors-1.2.32-src.tar.gz

#tar xzvf tomcat-connectors-1.2.32-src.tar.gz

(2) 打开tomcat-connectors-1.2.32-src.tar.gz /jk/native

#cd tomcat-connectors-1.2.32-src.tar.gz /jk/native

(3) 修改buildconf.sh 权限

#chmod 755 buildconf.sh

(4)安装

#./buildconf.sh

#./configure --with-apxs=/usr/local/apache/bin/apxs

#make

#make install

(5)把mod_jk.so 复制到/usr/ local/apache/modules/

#cp -f apache-2.0/mod_jk.so /usr/local/apache/modules/

(6)配置httpd.conf

#vi /usr/local/apache/conf/httpd.conf

在文件最末尾加上如下语句

LoadModule jk_module modules/mod_jk.so

JkWorkersFile conf/workers.properties

JkLogFile logs/mod_jk.log

JkLogLevel info

JkMount /*.jsp ajp13

JkMount /servlet/* ajp13

JkMount /application/* ajp13

JkMount /*.do ajp13

(7)新建workers.properties

#vi /usr/local/apache/conf/workers.properties

workers.java_home=/usr/java/jdk(jdk 安装的路径)

workers.tomcat_home=/usr/local/tomcat(tomcat 安装路径)

ps=/

worker.list=ajp13

worker.ajp13.port=8009

worker.ajp13.host=127.0.0.1

worker.ajp13.type=ajp13

worker.ajp13.lbfactor=1

保存退出(ESC:wq)

2.6 安装MySQL连接库

(1)下载mysql-connector-java-5.1.18.tar.gz

(2)解压并将MySQL的Java连接库文件复制到tomcat的common/lib目录中。

#tar zxvf mysql-connector-java-5.1.18.tar.gz

#cd mysql-connector-java-5.1.18

#cp mysql-connector-java-5.1.18-bin.jar /usr/local/tomcat5/common/lib

3. vsftp配置

利用mysql搭建vsftpd虚拟用户登录服务

3.1 vsftpd 的安装

vsftpd-2.0.5-10.2AX

3.2 安装支持包和配置文件:

a. 安装必要的支持文件

b. 配置

第一步:建立本地虚拟用户

mkdir -p /vsftpd/teach

mkdir /vsftpd/stu

chmod 777 /vsftd

chmod 777 /vsftpd/teach

chmod 777 /vsftpd/stu

useradd -d /vsftpd -s /sbin/nologin -M virtual

echo vsftpd | passwd --stdin virtual

useradd -d /vsftpd -s /sbin/nologin -M work

echo vsftpd | passwd --stdin work

groupadd work

usermod -G work work

usermod -G virtual root

usermod -G virtual work

第二步:建立vsftpd.conf文件

Vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=NO

local_umask=022

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

chroot_local_user=YES

listen_port=21

listen=YES

pam_service_name=vsftpd1

#指定用户的PAM的配置文件为vsftpd1 userlist_enable=YES

tcp_wrappers=YES

guest_enable=YES

guest_username=virtual

user_config_dir=/etc/vsftpd/vsftpd_user_conf virtual_use_local_privs=YES

pasv_enable=YES

pasv_min_port=30000

pasv_max_port=30999

第三步:建立vsftpd1.conf

Vi /etc/vsftpd/vsftpd1.conf

anonymous_enable=NO

local_enable=YES

write_enable=NO

local_umask=022

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

chroot_local_user=YES

listen_port=20

listen=YES

pam_service_name=vsftpd2

userlist_enable=YES

tcp_wrappers=YES

guest_enable=YES

guest_username=work

#对应于交作业的用户

user_config_dir=/etc/vsftpd/vsftpd_user_conf

virtual_use_local_privs=YES

pasv_enable=YES

pasv_min_port=30000

pasv_max_port=30999

3.3 将虚拟用户保存在MySQL数据库服务器中

a.设置MySQL的PAM验证

这里我们要用到一个利用mysql进行pam验证的开源项目。首先从网站下载它的程序包pam_mysql-0.7RC1.tar.gz,复制到/root目录中。在编译安装之前,要确保mysql-devel的RPM包已经安装在你的机器上,如果没有请从安装光盘中安装该包。然后,执行以下命令:

# tar -zxvf pam_mysql-0.7RC1.tar.gz

# cd pam_mysql-0.7RC1

# ./configure

(如果mysql用源代码包安装则要加参数—with-mysql=/usr/local/mysql)

#make

#make install

make install这一步可能会出现错误,那只好手动将该目录下生成的pam_mysql.so复制到/usr/lib/security目录下。

接下来,我们要设置vsftpd的PAM验证文件。新建/etc/pam.d/vsftpd1文件,加入以下内容:

auth required /usr/lib/security/pam_mysql.so user=virtual passwd=123456 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=1

account required /usr/lib/security/pam_mysql.so user=virtual passwd=123456 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=1

新建/etc/pam.d/vsftpd2,加入以下内容:

auth required /usr/lib/security/pam_mysql.so user=work passwd=123456 host=localhost db=vsftpd table=userswork usercolumn=name passwdcolumn=passwd crypt=1

account required /usr/lib/security/pam_mysql.so user=work passwd=123456 host=localhost db=vsftpd table=userswork usercolumn=name passwdcolumn=passwd crypt=1

(上面涉及到的参数,只要对应前面数据库的设置就可以明白它们的含义。这里需要说明的是crypt参数。crypt表示口令字段中口令的加密方式:crypt=0,口令以明文方式(不加密)保存在数据库中;crypt=1,口令使用UNIX系统的DES加密方式加密后保存在数据库中;crypt=2,口令经过MySQL的password()函数加密后保存)。

b. 建立数据库

建立数据库vsftpd,表users和userswork,字段name和passwd用于保存虚拟用户的用户

名和口令。

[root@localhost vsftpd]# mysql -p

mysql>create database vsftpd;

mysql>use vsftpd;

mysql>create table users(name char(16) binary primary key,passwd char(16) binary);

mysql>create table userswork(name char(16) binary primary key,passwd char(16) binary);

mysql>quit

然后,授权vitrual可以读vsftpd数据库的users表。执行以下命令:

[root@localhost vsftpd]# mysql -u root mysql -p

mysql> grant select on https://www.doczj.com/doc/d016694078.html,ers to virtual@localhost identified by '123456';

mysql> grant select on https://www.doczj.com/doc/d016694078.html,erswork to work@localhost identified by '123456';

mysql>quit

3.4. 进一步的虚拟用户设置

经过以上的步骤,虚拟用户就可以正常使用了。这里介绍进一步的虚拟用户设置。首先,介绍虚拟用户的权限设置。

VSFTPD新添了virtual_use_local_privs参数,当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限,这也就是VSFTPD之前版本对虚拟用户权限的处理方法。这两者种做法相比,后者更加严格一些,特别是在有写访问的情形下。默认情况下此参数是关闭的(NO)。

当virtual_use_local_privs=YES时,只需设置write_enable=YES,虚拟用户就可以就拥有写权限。而virtual_use_local_privs=NO时,对虚拟用户权限的设置就更多一些更严格一些。

控制虚拟用户浏览目录:如果让用户不能浏览目录,但仍可以对文件操作,那么需要执行以下二个步骤:一,配置文件中,anon_world_readable_only=YES。二,虚拟用户目录的权限改为只能由virtual操作:

[root@localhost root]# chown virtual.virtual /home/vsftpd

[root@localhost root]# chmod 700 /home/vsftpd

允许虚拟用户上传文件:

write_enable=YES

anon_upload_enable=YES

允许虚拟用户修改文件名和删除文件:

anon_other_write_enable=YES

由于以上选项的设置同样会对匿名用户生效。如果不想匿名用户趁机拥有同样的权限,最好是禁止匿名用户登录。

其次,由于虚拟用户在系统中是virtual身份,所以可以访问到系统的其他目录。为了更加安全,我们可以将虚拟用户限制在自家目录下。有两种做法:一,在配置文件中增加以下选项

chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

然后,在/etc/vsftpd.chroot_list文件中加入虚拟用户名benet和aptech。

第二种做法,在配置文件中修改chroot_local_user=YES。

经过修改后,虚拟用户登录后其根目录就限制在/home/vsftpd下,无法访问其他目录。

3.5 虚拟用户的个人目录与权限

建立针对虚拟用户库中不同用户的权限文件

先建立用户权限目录: # mkdir /etc/vsftpd/vsftpd_user_conf

如果是学生与老师的账号,则添加以下内容:

anon_world_readable_only=NO

write_enable=YES

download_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

local_root=/vsftpd/teach/ $USER

如果是work账号,则添加以下内容:

virtual_use_local_privs=NO

#此用户的权限与匿名用户的权限是一样的

anon_world_readable_only=NO

write_enable=YES

download_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

#可以新建文件夹

anon_other_write_enable=NO

#不允许用户修改文件名和删除文件

anon_umask=400

#设置用户新增文件的umask数值,这里是让所有者有写的权限,没有读的权限,故只能上传不能下载

local_root=/vsftpd/teach/$USER

4. jsp代码实现

4.1 初始化代码:

<%

try{

//创建两个系统用户

String cmdStrs="sh /usr/local/tomcat5/webapps/ROOT/user.sh";

Process child = Runtime.getRuntime().exec(cmdStrs);

//创建数据库vsftdp,再添加两个表user与userwork,并给用户授权

Class.forName("org.gjt.mm.mysql.Driver").newInstance();

String url="jdbc:mysql://localhost";

Connection conn=DriverManager.getConnection(url,"root","123456");

Statement stmt=conn.createStatement();

stmt.executeUpdate("create database vsftpd");

stmt.executeUpdate("use vsftpd");

stmt.executeUpdate("create table users(name char(16)binary,passwd char(16) binary)");

stmt.executeUpdate("create table userswork(name char(16)binary,passwd char(16) binary)");

stmt.execute("grant select on https://www.doczj.com/doc/d016694078.html,ers to virtual@localhost identified by '123456'");

stmt.execute("grant select on https://www.doczj.com/doc/d016694078.html,erswork to work@localhost identified by '123456'");

stmt.close();

conn.close();

File f2=new File("/etc/pam.d/vsftpd1");

f2.createNewFile();

File inputFile=new File("/usr/local/tomcat5/webapps/ROOT/vsftpd_pam1.txt");

File outputFile=new File(f2.getPath());

FileReader in=new FileReader(inputFile);

FileWriter fout=new FileWriter(outputFile);

int c;

while((c=in.read())!=-1)

{

fout.write(c);

}

fout.flush();

f2=new File("/etc/pam.d/vsftpd2");

f2.createNewFile();

inputFile=new File("/usr/local/tomcat5/webapps/ROOT/vsftpd_pam2.txt");

outputFile=new File(f2.getPath());

in=new FileReader(inputFile);

fout=new FileWriter(outputFile);

while((c=in.read())!=-1)

{

fout.write(c);

}

fout.flush();

File f1=new File("/etc/vsftpd/vsftpd_user_conf");//创建目录vsftpd_user_conf

f1.mkdir();

f2=new File("/etc/vsftpd/vsftpd.conf");

f2.createNewFile();

inputFile=new File("/usr/local/tomcat5/webapps/ROOT/vsftpd.txt");

outputFile=new File(f2.getPath());

in=new FileReader(inputFile);

fout=new FileWriter(outputFile);

while((c=in.read())!=-1)

{

fout.write(c);

}

fout.flush();

f2=new File("/etc/vsftpd/vsftpd1.conf");

f2.createNewFile();

inputFile=new File("/usr/local/tomcat5/webapps/ROOT/vsftpd1.txt");

outputFile=new File(f2.getPath());

in=new FileReader(inputFile);

fout=new FileWriter(outputFile);

while((c=in.read())!=-1)

{

fout.write(c);

}

fout.flush();

in.close();

fout.close();

}catch(IOException e)

{

e.printStackTrace();

}

%>

4.2 注册代码:

<%

String userName=request.getParameter("userName");//接受用户名

String password=request.getParameter("password");//接受密码

String str="/etc/vsftpd/vsftpd_user_conf/";

String str1="local_root=/vsftpd/teach/"+userName+"/";

str+=userName;

File f1;

File inputFile1;

File outputFile1;

FileReader in1;

FileWriter fout1;

//连接数据库

Class.forName("org.gjt.mm.mysql.Driver").newInstance();

String url="jdbc:mysql://localhost";

String sqlstr;

Connection conn=DriverManager.getConnection(url,"root","123456"); Statement stmt=conn.createStatement();

stmt.executeUpdate("use vsftpd");

// stmt.executeUpdate("insert into users (name,passwd) values ('benet','123456')"); File f2=new File(str);//创建用户的个人配置文件

f2.createNewFile();

if(userName.length()==10)

{

//不是work用户,将数据插入到users表中

if(userName.charAt(0)=='2')

{

str1="local_root=/vsftpd/stu/"+userName;

str="/vsftpd/stu/"+userName+"/";

f1=new File(str);

f1.mkdir();

Runtime.getRuntime().exec("chmod 777 /vsftpd/stu/"+userName);

}

else

{

str="/vsftpd/teach/"+userName+"/";

str1="local_root=/vsftpd/teach/"+userName;

f1=new File(str);

f1.mkdir();

Runtime.getRuntime().exec("chmod 777 /vsftpd/teach/"+userName);

str="/vsftpd/teach/"+userName+"/incoming";

f1=new File(str);

f1.mkdir();

Runtime.getRuntime().exec("chmod 777 "+str);

str="/vsftpd/teach/"+userName+"/pub";

f1=new File(str);

f1.mkdir();

Runtime.getRuntime().exec("chown virtual "+str);

Runtime.getRuntime().exec("chgrp virtual "+str);

}

sqlstr="insert into users (name,passwd) values ('"+userName+"','"+password+"')";

stmt.executeUpdate(sqlstr);

//配置个人文件

inputFile1=new File("/usr/local/tomcat5/webapps/ROOT/user.txt");//读入文件

outputFile1=new File(f2.getPath());//输出相应的配置到用户的个人配置文件中

in1=new FileReader(inputFile1);

fout1=new FileWriter(outputFile1,true);

int c;

while((c=in1.read())!=-1)

{

fout1.write(c);

}

fout1.write(str1); //增加配置local_root=/vsftpd/teach/用户名

fout1.flush();

in1.close();

fout1.close();

}

else if(userName.length()==14)

{

//是work用户,将数据插入到userswork表中

str1="local_root=/vsftpd/teach/"+userName.substring(0,10)+"/";

sqlstr="insert into userswork (name,passwd) values ('"+userName+"','"+password+"')";

stmt.executeUpdate(sqlstr);

inputFile1=new File("/usr/local/tomcat5/webapps/ROOT/user1.txt");//读入文件

outputFile1=new File(f2.getPath());//输出相应的配置到用户的个人配置文件中

in1=new FileReader(inputFile1);

fout1=new FileWriter(outputFile1,true);

int c;

while((c=in1.read())!=-1)

{

fout1.write(c);

}

fout1.write(str1); //增加配置local_root=/vsftpd/teach/用户名

fout1.flush();

in1.close();

fout1.close();

}

String cmdStrs="service vsftpd start";//自动重启ftp服务

Process child = Runtime.getRuntime().exec(cmdStrs);

stmt.close();

conn.close();

%>

5. 运行结果5.1启动tomcat

5.2启动Apache

5.3 初始化界面初始化界面如下:

初始化完成界面:

5.4注册界面

work用户注册:

work用户从20端口登录

登录后有两个文件,只能下载pub目录中的文件,或上传文件(及创建子目录)到incoming 目录。

上传文件到incoming目录中,测试能否下载:

测试能否新建与改名权限:

测试能否删除:

测试pub中能否上传文件:

测试work用户能否可以查看文件权限:

FTP工作原理及部署方案

FTP 工作原理及部署方案 1、FTP简介 FTP(File Transfer Protocol),是文件传输协议的简称。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。如果用户需要将文件从自己的计算机上发送到另一台计算机上,可使用FTP上传(upload)或(put)操作,而更多种的情况是用户使用FTP下载(download)或获取(get)操作从FTP服务器上下载文件。 2、FTP工作原理 完整的FTP文件传输需要建立两种类型的连接: 一种为文件传输命令,称为控制连接。 一种实现真正的文件传输,称为数据连接。 3、FTP控制链接 客户端希望与FTP服务器建立上传下载的数据传输时,它首先向服务器的TCP 21端口发起一个建立连接的请求,FTP服务器接受来自客户端的请求,完成连接的建立过程,这样的连接就称为FTP控制连接。 4、FTP数据连接 FTP控制连接建立之后,即可开始传输文件,传输文件的连接称为FTP数据连接。FTP 数据连接就是FTP传输数据的过程,它有两种传输模式:主动传输模式(PORT)和被动传输模式(PASSIVE,简称PASV)。主动传输模式下,FTP服务器使用20端口与客户端的暂时端口进行连接,并传输数据,客户端只是处于接收状态。被动传输模式下,FTP服务器打开一个暂态端口等待客户端对其进行连接,并传输数据,服务器并不参与数据的主动传输,只是被动接受。 5、FTP传输方式 ASCII传输方式,假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。 但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp 逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。 二进制传输方式,在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。

配置与管理Web和FTP服务器

实验项目名称:配置与管理Web和FTP服务器年月日 一、实验目的 (1)理解Web 服务器的工作原理。 (2)掌握IIS 信息服务器的安装。 (3)掌握Web 服务器的配置方法。 (4)理解FTP 服务器的工作原理。 (5)掌握FTP 服务器的配置方法。 二、实验原理及实验流程或装置示意图 安装IIS信息服务器,配置Web服务器,安装和配置FTP服务器 三、使用仪器、材料 (1)1 台装有Windows Server 2003 的计算机。 (2)多台装有Windows 操作系统的客户机。 (3)集线器1 个。 (4)直通双绞线若干。 四、实验步骤及注意事项与结果 1.安装IIS 信息服务器 请使用VMware Workstation 打开已安装好的Windows2003 虚拟机系统,一般情况下,Windows Server 2003 服务器的默认安装,没有安装IIS6.0 组件。因此,IIS6.0 需要另外单独安装。 安装方法如下: 第1 步:依次选择【开始】→【设置】→【控制面板】→【添加/删除程序】, 第2 步:在“添加/删除程序”对话框中选择【添加/删除Windows 组件】,就会弹出的“Windows 组件向导”对话框,如图所示。 第3 步:在Windows 组件向导对话框中选择“应用程序服务器”,单击【详细信息】,在其中选择“Internet 信息服务(IIS)”,单击【确定】,如图7-4 所示。

第4 步:回到图7-3“Windows 组件向导”对话框中,单击【下一步】。这时,需要在光驱中放入Windows Server 2003 的系统安装盘,如图7-5 所示。 第5 步:安装完毕后,依次选择【开始】→【设置】→【控制面板】→【管理工具】→【Internet 信息服务(IIS)管理器】,就会出现如图7-6 所示的“Internet 信息服务”对话框。

FTP服务器设置

最好是使用SERV-U, 或者就用系统自带的IIS中的那个。 若你的系统没有安装IIS,请在“控制面板”中的“添加或删除程序”中安装 IIS(“Internet 信息服务”) 在“控制面板”的“管理工具”中,启动IIS,并启动IIS上的FTP服务。在默认情况下,此时你的FTP服务器已经搭建好了,并且可以立即登录,但是该FTP中没有任何文件。右击IIS中的“默认FTP站点”节点,选择“属性”命令,打开相应的属性设置对话框。 点击“主目录”选项卡,在FTP站点目录的“本地路径”处填上你要设置的共享文件路径。默认情况下,此处的文件夹位置为“C :\Inetpub\Ftproot”,你如果临时想改变共享目录,随时都可在此处修改,以后别人登录你的FTP服务器时显示的文件列表就是在这个目录中。 在“主目录”的选项卡中,你还可设置FTP服务器的文件访问权限,分别有读取、写入和记录访问。安全起见,这里的写入权限一般不选,保证匿名用户不能随意对你文件进行操作。 设置登录的用户。如果你愿意提供“匿名”访问的权限,还需在“安全账户”选项中选择“允许匿名连接”选项。此外,你还可从Windows XP Professional的用户账号(控制面板→管理工具→计算机管理→本地用户和组)中选择FTP服务器的特殊账号,当然也可以自己设置用户名和密码。 在“消息”选项卡中,有“欢迎”、“退出”和“最大连接数”3个输入框,分别代表别人在登录、退出时FTP服务器给出的提示停息,你可以根据自己的需要设置。此处,最大连接数是设置同时连接本地FTP的最大主机台数。 在“FTP站点”选项卡中设置FTP标识,包括说明、IP地址和端口,在“描述”文本框中,把“默认FTP站点”改为你的FTP站点名称,其它的一般不需要改动,按照默认选项即可。 三、测试FTP服务器 FTP服务器架设好以后,我们可以在本地测试一下。可以采用两种方法登录到FTP服务器。

FTP服务器安装和配置

实验四 实验名称:使用Server-U 组建FTP 服务器 实验目的:学会FTP 服务器的安装配置、管理和使用 实验内容:■ Server-U 的安装 ■ Server-U 的配置和管理 ■ 在客户端使用LeapFTP 进行上传下载 ■ 使用LeapFTP 往Web 站点上传网页和从Web 站点下载网页 实验步骤: 一、Server-U 的安装 1、安装Server-U 英文版 在Server-U 安装文件所在目录,执行安装文件(ServUSetup.exe),出现以下界面,根据屏幕提示直至安装完成(安装完成后,在系统托盘上,将出现Server-U 的小图标)。 2、Server-U 英文版的汉化 1)先结束Server-U 的守护进程 在系统托盘中Server-U 的小图标上按右键,选择退出 2)安装汉化包 执行汉化包目录下的汉化文件(注意不要装上网助手)。

3、Server-U的注册 1)先复制注册文件到Server-U的安装目录(可能为D:\Program files\Serv-U)2)执行该注册文件 二、Server-U的配置和管理 1、启动Server-U 依次但击 [开始菜单/Serv-U FTP Server/Tray Monitor], 执行后在系统托盘上,将出现Server-U的小图标 2、启动Server-U管理员程序 在系统托盘中Server-U的小图标上按右键,选择[启动管理员] 启动后可能会出现配置向导,单击[取消]按钮取消 3、新建域 新建一个名为JSJX的域(域IP地址不用指定,域名输入JSJX,其他默认值即可) 4、新建用户 新建匿名用户,用户名为:anonymous,没有密码,主目录可设为F:\FTPROOT 注意,匿名用户名必须为anonymous,匿名用户在登陆时不必输用户名和密码,匿 名一般只具有浏览和下载权限 新建一个名为ftpadmin的用户,密码与用户名相同,主目录也可设为F:\FTPROOT 此用户将来可给予较多的权限 说明:主目录也可根据需要设,但最好设为F:\FTPROOT,将来只要把其他目录映射为该目录下的虚拟目录即可。

ftp工作原理

FTP(文件传输协议)工作原理 目前在网络上,如果你想把文件和其他人共享。最方便的办法莫过于将文件放FTP服务器上,然后其他人通过FTP客户端程序来下载所需要的文件。 1、FTP架构 如同其他的很多通讯协议,FTP通讯协议也采用客户机/ 服务器(Client / Server )架构。用户可以通过各种不同的FTP客户端程序,借助FTP协议,来连接FTP服务器,以上传或者下载文件。 2、FTP通讯端口知识 FTP服务器和客户端要进行文件传输,就需要通过端口来进行。FTP协议需要的端口一般包括两种: 控制链路--------TCP端口21 所有你发往FTP服务器的命令和服务器反馈的指令都是通过服务器上的21端口传送的。 数据链路--------TCP端口20 数据链路主要是用来传送数据的,比如客户端上传、下载内容,以及列目录显示的内容等。 3、FTP连接的两种方式 在数据链路的建立上,FTP Server 为了适应不同的网络环境,支持两种连接模式:主动模式(Port)和被动模式(Pasv)。其实这两种连接模式主要是针对数据链路进行的,和控制链路无关。 主动模式 主动模式是这样工作的:客户端把自己的高位端口和服务器端口21建立控制链路。所有的控制命令比如Is或get 都是通过这条链路传送的。 当客户端需要服务器端给它传送数据时,客户端会发消息给服务器端,告诉自己的位置和打开的高位端口(一般大于1024的端口都就叫高位端口),等候服务器的20端口和客户端打开的端口进行连接,从而进行数据的传输。当服务器端收到信息后,就会和客户端打开的端口连接,这样数据链路就建立起来了。 采用主动模式连接服务器的客户端,当它位于NAT或者防火墙的保护之后时会碰到连接失败的问题。这是因为当防火墙接到服务器发送过来的信息的时候,并不知道应该发送给内部网络中的哪一台客户端造成的。 被动模式 被动模式是这样工作的:当客户端发送数据请求后,服务器也会发信息给客户端,告诉客户端:服务器在本地打开了一个高位端口P,你现在来连接我吧。当客户端收到该信息时,就会去连接服务器端的端口P,连接成功后,数据链路就建立了。

FTP协议原理和工作模式讲解

浅析FTP的PORT和PASV模式工作原理 摘要 通过阅读本文,您可以了解到FTP的基本的工作原理。作者以建立FTP连接到断开FTP连接的方式详细介绍了FTP会话全过程。如果您对PORT模式或者PASV模式的FTP工作原理有些疑惑,相信本文能使您了解更多的细节,使您更加从容的面对企业的网络流量以及安全的管理,特别是如果您的企业正准备在企业内部署ISA Server 2000,或许会给您发布内部服务器带来帮助! 目录 ?FTP协议概述 ?PORT模式 ?PASV模式 ?比较分析 ?图示 FTP协议概述 起初, FTP并不是应用于IP网络上的协议,而是ARPANEt网络中计算机间的文件传输协议,ARPANET是美国国防部组建的老网络,于1960-1980年使用。在那时, FTP的主要功能是在主机间高速可靠地传输文件。目前FTP仍然保持其可靠性,即使在今天,它还允许文件远程存取。这使得用户可以在某个系统上工作,而将文件存贮在别的系统。例如,如果某用户运行Web 服务器,需要从远程主机上取得HTML文件和CGI程序在本机上工作,他需要从远程存储站点获取文件(远程站点也需安装Web服务器)。当用户完成工作后,可使用FTP将文件传回到Web 服务器。采用这种方法,用户无需使用Telnet登录到远程主机进行工作,这样就使Web服务器的更新工作变得如此的轻松。 FTP是TCP/IP的一种具体应用,它工作在OSI模型的第七层,TCP模型的第四层上,即应用层,使用TCP传输而不是UDP,这样FTP客户在和服务器建立连接前就要经过一个被广为熟知的"三次握手"的过程,它带来的意义在于客户与服务器之间的连接是可靠的,而且是面向连接,为数据的传输提供了可靠的保证。 下面,让我们来看看,一个FTP客户在和服务器连接是怎么样的一个过程(以标准的FTP端口号为例)。 首先,FTP并不像HTTP协议那样,只需要一个端口作为连接(HTTP的默认端口是80,FTP 的默认端口是21),FTP需要2个端口,一个端口是作为控制连接端口,也就是21这个端口,用于发送指令给服务器以及等待服务器响应;另一个端口是数据传输端口,端口号为20(仅PORT 模式),是用来建立数据传输通道的,主要有3个作用 ?从客户向服务器发送一个文件。 ?从服务器向客户发送一个文件。 ?从服务器向客户发送文件或目录列表。 其次,FTP的连接模式有两种,PORT和PASV。PORT模式是一个主动模式,PASV是被动模式,

Packet Tracer 5.3模拟搭建FTP服务器、客户机

Packet Tracer 5.3模拟搭建FTP服务器、客户机 2010年11月08日星期一 14:31 为回答该网友问题故写这一篇文章。 ********************************************************************* ************************************* FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。 在PT软件中,FTP服务器作用主要体现在网络设备系统升级。详细内容可见 网络配置教程(0.2)——思科网络设备系统升级教程3 文章 本章将介绍一下PT5.3模拟搭建FTP服务器、客户机内容。 转帖注明出处 https://www.doczj.com/doc/d016694078.html,/5ijsj/blog/item/92ccb0d96ff27e3c11df9b34.html ********************************************************************* *************************************** Packet Tracer 5.3模拟搭建FTP服务器、客户机

FTP定义以及原理详解教程

FTP定义以及原理详解教程 网络上FTP下载链接比较常见,FTP常被运用于局域网共享、互联网软件下载、以及互联网共享,它的原理是怎么样的呢?笔者给大家做个详细介绍。 什么是FTP 1. FTP协议 什么是FTP呢?FTP 是TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。 2. FTP服务器和客户端 同大多数Internet服务一样,FTP也是一个客户/服务器系统。用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。依照FTP 协议提供服务,进行文件传送的计算机就是FTP 服务器,而连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。用户要连上FTP 服务器,就

要用到FPT 的客户端软件,通常Windows自带“ftp”命令,这是一个命令行的FTP 客户程序,另外常用的FTP 客户程序还有CuteFTP、Ws_FTP、Flashfxp、LeapFTP、流星雨-猫眼等。 3. FTP用户授权 3.1 用户授权 要连上FTP 服务器(即“登陆”),必须要有该FTP 服务器授权的帐号,也就是说你只有在有了一个用户标识和一个口令后才能登陆FTP服务器,享受FTP服务器提供的服务。 3.2 FTP地址格式(168字) foolish_tyu (216554)于2003/03/28(23:29:05).. FTP地址如下: ftp://用户名:密码@FTP服务器IP或域名:FTP命令端口/路径/文件名 上面的参数除FTP服务器IP或域名为必要项外,其他都不是必须的。如以下地址都是有效FTP地址: ftp://https://www.doczj.com/doc/d016694078.html, ftp://list:list@https://www.doczj.com/doc/d016694078.html, ftp://list:list@https://www.doczj.com/doc/d016694078.html,:2003 ftp://list:list@https://www.doczj.com/doc/d016694078.html,:2003/soft/list.txt

如何配置FTP服务器

在众多的网络应用中,FTP(File Transfer porotocol)有着非常重要的地位。在Internet 中一个十分重要的资源就是软件资源。而各种各样的软件资源大多数都是放在FTP服务器中的。可以说,FTP与WEB服务几乎占据了整个Internet应用的80%以上。 FTP服务可以根据服务对象的不同分为两类:一类是系统FTP服务器,它只允许系统上的合法用户使用;另一类是匿名FTP服务器,Anonymous FTP Server,它使用任何人都可以登录到FTP服务器上去获取文件。 一、选择和安装FTP服务器软件 如果你在安装LINUX系统的时候,在选择启动进程的时候选择了“ftpd”这一项的话,安装完LINUX系统后,它已经将一个默认的FTP服务器安装到系统中去了。我们已经可以利用它来实现系统FTP服务器的功能了。我们只需在此基础上根据我们的需要进行一些个性化设定就可以了。 在绝大多数的LINUX发行版本中都选用的是WashingtonUniversity FTP,它是一个著名的FTP服务器软件,一般简称为wu-ftp。它功能强大,能够很好地运行于众多的UNIX 操作系统,例如:IBM AIX、FreeBSD、HP-UX、NeXTstep、Dynix、SunOS、Solaris等。所以Internet上的FTP服务器,一大半以上采用了它。wu-ftp拥有许多强大的功能,很适于吞吐量较大的FTP服务器的管理要求: 1) 可以在用户下载文件的同时对文件做自动的压缩或解压缩操作; 2) 可以对不同网络上的机器做不同的存取限制; 3) 可以记录文件上载和下载时间; 4) 可以显示传输时的相关信息,方便用户及时了解目前的传输动态; 5) 可以设置最大连接数,提高了效率,有效地控制了负载。 二、wu-ftp的组成

sftp-ftp区别工作原理

Sftp和ftp 区别、工作原理等 最近使用SecureFx,涉及了两个不同的安全文件传输协议: -sftp -ftp over SSH2 这两种协议是不同的。sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动。ftp over SSH2则象一个二传手。 1、SFTP的工作模式: 图1显示了SFTP的工作模式,它是作为SSH2的一个子服务工作的。 图 1 SFTP工作模式 2、FTP over SSH2 此协议还是基于ftp协议的。在此协议中SSH2服务器起了一个桥梁作用,把数据在客户端和ftp之间转发。ftp协议本身包括两个通道,一个是控制通道,另一个是数据通道。 FTP over SSH2有两种情况,半安全连接(Less Secure Connection)和安全连接(Full Secure Connection)。在半安全连接时,ftp客户端先和SSH2服务器连接,在这个连接中无论控制通道和数据通道都是加密的。但是SSH2服务器和ftp服务器之间就不是加密的了,如果ftp服务器运行在另外一台机器上,SSH2服务器和ftp直接就是明文传输。见图2。

图2半安全连接 图3是安全连接模式的情形,SSH2服务器和FTP服务器在同一台服务器上。 图 3 安全连接 FTP(文件传输协议)工作原理

目前在网络上,如果你想把文件和其他人共享。最方便的办法莫过于将文件放FTP服务器上,然后其他人通过FTP客户端程序来下载所需要的文件。 1、FTP架构 如同其他的很多通讯协议,FTP通讯协议也采用客户机/ 服务器(Client / Server )架构。用户可以通过各种不同的FTP客户端程序,借助FTP协议,来连接FTP服务器,以上传或者下载文件。 2、FTP通讯端口知识 FTP服务器和客户端要进行文件传输,就需要通过端口来进行。FTP协议需要的端口一般包括两种: 控制链路--------TCP端口21 所有你发往FTP服务器的命令和服务器反馈的指令都是通过服务器上的21端口传送的。 数据链路--------TCP端口20 数据链路主要是用来传送数据的,比如客户端上传、下载内容,以及列目录显示的内容等。 3、FTP连接的两种方式 在数据链路的建立上,FTP Server 为了适应不同的网络环境,支持两种连接模式:主动模式(Port)和被动模式(Pasv)。其实这两种连接模式主要是针对数据链路进行的,和控制链路无关。 主动模式

windows下的ftp服务配置

第四章实验报告 实验任务: (2) 一、IIS-ftp搭建匿名访问站点 (2) 1.只匿名访问站点 (2) 2.虚拟目录的授权访问 (2) 二、serv-U匿名站点的搭建,要求设置如下内容: (2) 1.用一个IP限制2个进程 (2) 2.最大上传为200K,最大下载为100K (2) 3.配额为5M (2) 三、serv-U 授权访问ftp站点 (2) 四、ser-U 远程管理 (2) 五、ftp工作组隔离 (2) 六、ftp域隔离 (2) 实验要求: (2) 1.完成以上实验配置 (2) 2.要求截图 (2) 实验操作过程: (2) 一、IIS-ftp搭建匿名访问站点 (2) 1.只匿名访问站点 (2) 2.虚拟目录的授权访问 (7) 二、serv-U匿名站点的搭建 (10) 1.安装serv-U软件, (10) 2.新建域 (11) 3.新建匿名用户 (12) 4.Anonymous用户的基本设置 (13) 5.DNS设置 (15) 6.客户机上验证 (16) 三、serv-U 授权访问ftp站点 (17) 1.新建用户 (17) 2.授权用户登录验证 (17) 四、serv-U 远程管理 (18) 1.安装serv-U软件 (18) 2.设置有权限的帐户 (19) 3.验证 (20) 五、ftp工作组隔离 (21) 实验环境: (21) 1.安装ftp服务 (21) 2.新建用户账户 (22) 3.建立ftp站点主目录 (22) 4.新建ftp站点 (24) 5.客户端验证 (25) 六、ftp域隔离 (27) 实验环境: (27)

1.安装ftp服务 (27) 2.新建域用户 (27) 3.建立用户ftp站点主目录 (28) 4.安装ADSI EDIT工具 (28) 5.设置用户站点主目录 (29) 6.新建ftp站点 (31) 7.客户端验证 (33) 实验任务: 一、IIS-ftp搭建匿名访问站点 1.只匿名访问站点 2.虚拟目录的授权访问 二、serv-U匿名站点的搭建,要求设置如下内容: 1.用一个IP限制2个进程 2.最大上传为200K,最大下载为100K 3.配额为5M 三、serv-U 授权访问ftp站点 四、ser-U 远程管理 五、ftp工作组隔离 六、ftp域隔离 实验要求: 1.完成以上实验配置 2.要求截图 实验操作过程: 一、IIS-ftp搭建匿名访问站点 操作步骤: 1.只匿名访问站点 网上邻居属性→高级→可选网络组件→应用程序服务器→internet信息服务(IIS)→文 件传输协议(ftp)服务,如图1-1所示:

FTP服务器配置说明_2010.11.17(完整版)

FTP服务器配置说明 使用版本:Fedora 12 修订日期:2010年11月

目录 前言 (3) 1.FTP服务器的安装和配置 (4) 1.1 实验拓扑 (4) 1.2 安装vsftpd (4) 1.3 配置FTP服务器 (5) 2.FTP服务器的验证 (8) 2.1 在Linux下验证FTP服务器 (8) 2.1.1 从FTP server上下载文件 (8) 2.1.2 向FTP server上传文件,并创建文件夹 (10) 2.2 在XP下验证FTP服务器 (15) 2.2.1 从FTP server上下载文件 (15) 2.2.2 向FTP server上传文件,并创建文件夹 (17)

前言 FTP(File Transfer Protocol)是互联网上典型的文件传输协议,用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。 本次实验介绍vsftp的安装和配置。vsftp是一个基于GPL发布的类Unix 系统上使用的FTP服务器软件,它的全称是very secure ftp的缩写。顾名思义,这是一个比较安全的FTP服务器软件。实际上它提供的一些机制确实在一定程度上提高了安全性,例如程序权限、chroot软件的使用等。

FTP服务器安装和配置

实验四 实验名称:使用Server-U组建FTP服务器 实验目的:学会FTP服务器的安装配置、管理和使用 实验内容:■ Server-U的安装 ■ Server-U的配置和管理 ■在客户端使用LeapFTP进行上传下载 ■使用LeapFTP往Web站点上传网页和从Web站点下载网页 实验步骤: 一、Server-U的安装 1、安装Server-U英文版 在Server-U安装文件所在目录,执行安装文件(ServUSetup.exe),出现以下界面,根据屏幕提示直至安装完成(安装完成后,在系统托盘上,将出现Server-U的小 图标)。 2、Server-U英文版的汉化 1)先结束Server-U的守护进程 在系统托盘中Server-U的小图标上按右键,选择退出 2)安装汉化包 执行汉化包目录下的汉化文件(注意不要装上网助手)。 Server-U的小图标

3、Server-U的注册 1)先复制注册文件到Server-U的安装目录(可能为D:\Program files\Serv-U)2)执行该注册文件 二、Server-U的配置和管理 1、启动Server-U 依次但击 [开始菜单/Serv-U FTP Server/Tray Monitor], 执行后在系统托盘上,将出现Server-U的小图标 2、启动Server-U管理员程序 在系统托盘中Server-U的小图标上按右键,选择[启动管理员] 启动后可能会出现配置向导,单击[取消]按钮取消 3、新建域 新建一个名为JSJX的域(域IP地址不用指定,域名输入JSJX,其他默认值即可) 4、新建用户 新建匿名用户,用户名为:anonymous,没有密码,主目录可设为F:\FTPROOT 注意,匿名用户名必须为anonymous,匿名用户在登陆时不必输用户名和密码,匿 名一般只具有浏览和下载权限 新建一个名为ftpadmin的用户,密码与用户名相同,主目录也可设为F:\FTPROOT 此用户将来可给予较多的权限 说明:主目录也可根据需要设,但最好设为F:\FTPROOT,将来只要把其他目录映射为该目录下的虚拟目录即可。

FTP断点续传的原理

本文建立在你对socket知识有一点点的基础之上(有一点点就足够了:)) FTP客户端实现要建立两个通道,一个控制命令通道,让FTP服务器知道客户端要干什么,一个数据传输通道。所谓的两个通道只不过是两个调用了connect函数的连接,只是控制命令通道专门用来传输一些字符串命令信息,而数据通道则是用来传输文件。控制命令通道一定是由客户端向服务器的连接(默认的端口是21,也可以指定端口,这要看服务器的设置)。连接的过程完成了FTP的登录。数据通道则不一定啦,具体哪个连哪个,请看下面对PASV命令的解释。 其实FTP断点续传的原理很简单,可分为断点下载和断点上传。 客户端的实现步骤如下: 一、下载: 1、向服务器发送“REST + 本地文件长度”命令,告诉服务器,客户端要断点下载了。这时服务器还不知道客户端要下载哪个文件; 2、向服务器发送“RETR + 文件名”命令,通知服务器要下载的文件名,这时服务器开始定位文件指针读文件并发送数据。 3、客户端定位本地文件指针(文件末尾); 4、两端的准备工作都做完了以后,客户端创建socket,以被动或非被动方式建立数据通道,循环调用recv接收数据并追加入本地文件; 二、上传: 1、获取服务器上和本地要上传文件的同名文件大小; 2、向服务器发送“APPE +文件名”,通知服务器,接下来从数据通道发送给你的数据要附加到这个文件末尾。 3、定位本地文件指针(和FTP上文件大小相同的位置) 4、从文件指针处读数据并发送。 好了,FTP断点续传的原理就这么简单。代码里将断点上传和断点下载放到同一个函数(MoveFile)里,通过get参数说明是上传还是下载。当然,整个 FTP类的实现有800多行,包括登录、退出、获取FTP文件大小、删除FTP服务器上文件、响应服务器,解析响应信息等函数。相应的注释代码里都有,这里就不一一熬述了。

FTP原理、常见问题及解决办法

FTP原理、常见问题及解决办法 FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动模式和被动模式。 PORT(主动)方式的连接过程是:客户端从一个任意的非特权端口N(N>1024)向服务器的命令端口(默认是21)发送连接请求,服务器接受连接。然后客户端开始监听端口N+1,并发送命令”PORT N+1”到FTP服务器。接着FTP服务器会用数据端口20连接到客户端指定的数据端口N+1建立一条命令链路,当需要传送数据时,服务器从20端口向客户端的空闲端口N+1发送连接请求,建立一条数据链路来传送数据。 对于FTP服务器前面的防火墙,必须允许以下通讯才能支持主动方式 1、任何端口到服务器的21端口(客户端的初始化的连接是S←C) 2、服务器的21端口到大于1024的端口(服务器响应S-->C) 3、大于1024的端口到服务器的20端口(客户端发送ACK响应到服务器的数据 端口S←C) 4、FTP的主动方式主要问题实际上在客户端,它并没有实际建立到服务器数据端 口的连接,它只简单的告诉服务器自己监听的端口号,服务器再回来连接这个指定的端口号,对于客户端的防火墙来说,这是从外部系统到内部客户端的连接,一般都会阻止。 PASV(被动)方式的连接过程中,命令连接器和数据连接都是由客户端发起的,这样就可以解决从服务器到客户端的数据流被防火墙阻止的问题。 当开启一个FTP连接时,客户端打开两个任意非特权端口(N>1024、N+1),第一个端口和服务器的21端口建立命令连接,客户端提交PASV命令,服务器会打开一个端口P(P>1024),客户端用第二个端口和服务器的端口P连接用来传送数据。 对于服务器上的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP 1、从任何端口到服务器的21端口(客户端初始化的连接S←C) 2、服务器的21端口到任何大于1024的端口(服务器响应到客户端控制端口的连接 S→C) 3、从任意端口到大于服务器的大于1024的端口(客户端初始化数据端口到服务器的 任意大于1024端口的连接S←C) 4、服务器大于1024的端口到大于1024端口的连接(服务器发送ACK和数据到客户端 的数据端口的连接S→C) , 主动FTP对服务器管理有利,但是对客户端管理不利。因为FTP服务器企图于客户端的高位随机端口建立连接,而这个端口很可能被客户端的防火墙阻止了;被动FTP对客户端管理有利,但对服务器端的管理不利,因为客户端要跟服务器建立两个连接,其中一个连接到高位随机端口,而这个端口很可能被服务器端的防火墙阻止了。我们可以通过使用被动模式,FTP服务器来指定一个有效的端口范围来建立跟客户端的连接,这样大大降低了高位端口暴露的危险。 因为PORT方式在传送数据时,由服务器主动连接客户端,所以,如果客户端在防火墙或NAT网关后面,用PORT方式将无法与Internet上的FTP服务器传送文件。这种情况需要使用PASV方式。几乎所有的ftp客户端软件都支持这两种方式。特殊的典型例子是ie,ie 默认是用PORT方式的。如果要在ie里启用PASV方式,请打开ie,在菜单里选择:工具->

FTP服务器配置教程

FTP服务器配置教程 2008-07-23 13:15:41 标签:服务器FTP配置教程 第1步,在开始菜单中依次单击【管理工具】→【Internet信息服务(IIS)管理器】菜单项,打开“Internet信息服务(IIS)管理器”窗口。在左窗格中展开【FTP站点】目录,右键单击【默认FTP站点】选项,并选择【属性】命令,如图1所示。 图1 右键单击【默认FTP站 点】选项 第2步,打开“默认FTP站点属性”对话框,在【FTP站点】选项卡中可以设置关于FTP站点的参数。其中在“FTP站点标识”区域中可以更改FTP站点名称、监听IP地址以及TCP端口号,单击【IP地址】编辑框右侧的下拉三角按钮,并选中该站点要绑定的IP地址。如果想在同一台物理服务器中搭建多个FTP站点,那么需要为每一个站点指定一个IP地址,或者使用相同的IP地址且使用不同的端口号。在“FTP站点连接”区域可以限制连接到FTP 站点的计算机数量,一般在局域网内部设置为【不受限制】较为合适。用户还可以单击【当

前会话】按钮来查看当前连接到FTP站点的IP地址,并且可以断开恶意用户的连接,如图2所示。 图2 选择FTP站点IP地址 第3步,切换到【安全账户】选项卡,此选项卡用于设置FTP服务器允许的登录方式。默认情况下允许匿名登录,如果取消选中【允许匿名连接】复选框,则用户在登录FTP站点时需要输入合法的用户名和密码。本例选中【允许匿名连接】复选框,如图3所示。

图3 选中【允许匿名连接】复选框 小提示:登录FTP服务器的方式可以分为两种类型:匿名登录和用户登录。如果采用匿名登录方式,则用户可以通过用户名“anonymous”连接到FTP服务器,以电子邮件地址作为密码。对于这种密码FTP服务器并不进行检查,只是为了显示方便才进行这样的设置。允许匿名登录的FTP服务器使得任何用户都能获得访问能力,并获得必要的资料。如果不允许匿名连接,则必须提供合法的用户名和密码才能连接到FTP站点。这种登录方式可以让管理员有效控制连接到FTP服务器的用户身份,是较为安全的登录方式。 第4步,切换到【消息】选项卡,在【标题】编辑框中输入能够反映FTP站点属性的文字(如“金手指FTP主站点”),该标题会在用户登录之前显示。接着在【欢迎】编辑框中输入一段介绍FTP站点详细信息的文字,这些信息会在用户成功登录之后显示。同理,在【退出】编辑框中输入用户在退出FTP站点时显示的信息。另外,如果该FTP服务器限制了最大连接数,则可以在【最大连接数】编辑框中输入具体数值。当用户连接FTP站点时,如果FTP服务器已经达到了所允许的最大连接数,则用户会收到“最大连接数”消息,且用户的连接会被断开,如图4所示。

FTP数据包的详细分析

FTP协议分析与源码阅读 一、什么是FTP协议 FTP(File Transfer Protocal),是文件传输协议的简称。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。 FTP(File Transfer Protocol) 1、FTP的作用: 正如其名所示:FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。 2、FTP工作原理 拿下传文件为例,当你启动FTP从远程计算机拷贝文件时,你事实上启动了两个程序:一个本地机上的FTP客户程序:它向FTP服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的FTP服务器程序,它响应你的请求把你指定的文件传送到你的计算机中。FTP采用“客户机/服务器”方式,用户端要在自己的本地计算机上安装FTP客户程序。FTP 客户程序有字符界面和图形界面两种。字符界面的FTP的命令复杂、繁多。图形界面的FTP 客户程序,操作上要简洁方便的多。简单地说,支持FTP协议的服务器就是FTP服务器,下面介绍一下什么是FTP协议(文件传输协议) 一般来说,用户联网的首要目的就是实现信息共享,文件传输是信息共享非常重要的一个内容之一。Internet上早期实现传输文件,并不是一件容易的事,我们知道Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,据统计连接在Internet 上的计算机已有上千万台,而这些计算机可能运行不同的操作系统,有运行Unix的服务器,也有运行Dos、Windows的PC机和运行MacOS的苹果机等等,而各种操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。 与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP 协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。 在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上载"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上载"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上载(下载)文件。 使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可上载或下载文件。也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送文件。这种情况违背了Internet的开放性,Internet 上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。匿名FTP就是为解决这个问题而产生的。 匿名FTP是这样一种机制,用户可通过它连接到远程主机上,并从其下载文件,而无

FTP基础知识学习资料

FTP基础知识 学习重点: 什么是FTP? FTP用来做什么? FTP工作原理 C/S? B/S? FTP服务器 FTP传送方式 断点续传 断点续传的前提 PORT PASV 切换 操作 FTP链接三要素(FTP用户名,FTP密码,FTPip) 可以写成: ftp://用户名:密码@IP 站站对传 查找 改换传输模式 注意事项(文件名一致,上传到哪儿?) FTP对一个做网络的朋友是必会的工具,主要用到的功能就是上传编辑好的文件到服务器,或者从服务器上下载到本地修改,维护我们的站,多多少少都会用到它。 首先说一下什么是FTP? FTP是File Transfer Protocal 的缩写,中文的意思是文件传输协议,从字面上理解,就是一种协议,这种协议的主要功能就是”文件传输”,网络上的协议就好像我们生活种人和人之间定的约定,按照这个约定来执行。 下来讲一下FTP工作原理。 我们就拿下传文件为例,当你启动FTP从远程计算机拷贝文件时,你事实上启动了两个程序:一个本地机上的FTP客户程序,它向FTP服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的FTP服务器程序,它响应你的请求把你指定的文件传送到你的计算机中。FTP采用“客户机/服务器(c/s模式)”方式,在这里解释一下C/S(client srver) 模式和B/S(browser srver)模式,C/S模式就是客户端/服务器模式,一般常见的是网络软件为主,比如,Cuteftp,迅雷下载,QQ 等等。特点是要在客户端安装软件,然后和服务器传输、通讯。B/S就是浏览器/服务器模式,比如网站,都是基于浏览器和服务器的数据交互。那么什么是FTP服务器?提供FTP服务的服务器就

linux下配置FTP服务器步骤

linux下配置FTP服务器步骤 来源:作者:发布时间:2007-08-07 ?(阅读次数:108)? 查看更多关于:配置linux FTP服务器的文章 前言: 在众多的网络应用中,FTP(File Transfer porotocol)有着非常重要的地位。在Internet中一个十分重要的资源就是软件资源。而各种各样的软件资源大多数都是放在FTP服务器中的。可以说,FTP与WEB 服务几乎占据了整个Internet应用的80%以上。 FTP服务可以根据服务对象的不同分为两类:一类是系统FTP服务器,它只允许系统上的合法用户使用;另一类是匿名FTP服务器,Anonymous FTP Server,它使用任何人都可以登录到FTP服务器上去获取文件。 一、选择和安装FTP服务器软件 如果你在安装LINUX系统的时候,在选择启动进程的时候选择了“ftpd”这一项的话,安装完LINUX 系统后,它已经将一个默认的FTP服务器安装到系统中去了。我们已经可以利用它来实现系统FTP服务器的功能了。我们只需在此基础上根据我们的需要进行一些个性化设定就可以了。 在绝大多数的LINUX发行版本中都选用的是WashingtonUniversity FTP,它是一个着名的FTP服务器软件,一般简称为wu-ftp。它功能强大,能够很好地运行于众多的UNIX操作系统,例如:IBM AIX、FreeBSD、HP-UX、NeXTstep、Dynix、SunOS、Solaris等。所以Internet上的FTP服务器,一大半以上采用了它。wu-ftp拥有许多强大的功能,很适于吞吐量较大的FTP服务器的管理要求: bitsCN全力打造网管学习平台 1)可以在用户下载文件的同时对文件做自动的压缩或解压缩操作; 2)可以对不同网络上的机器做不同的存取限制; 3)可以记录文件上载和下载时间; 4)可以显示传输时的相关信息,方便用户及时了解目前的传输动态; 5)可以设置最大连接数,提高了效率,有效地控制了负载。 二、wu-ftp的组成 安装了wu-ftp后,你将在/bin目录下看到以下五个可执行文件: ftpd FTP服务器程序 ftpshut 用于关闭FTP服务器程序 ftpcount 显示目前在线人数 ftpwho 查看目前FTP服务器的连接情况 ckconfig 检查FTP服务器的设置是否正确 除了这些可执行文件以外,它还在/etc和/var目录下生成了七个配置文件:

相关主题
文本预览
相关文档 最新文档