A. ftp服务器的工作原理是什么
FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。
FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。
B. FTP的基本原理
一、 DHCP服务是什么
DHCP称为动态主机配置协议。DHCP服务允许工作站连接到网络并且自动获取一个IP地址。配置DHCP服务的服务器可以为每一个网络客户提供一个IP地址、子网掩码、缺省网关、一个WINS服务器的IP地址,以及一个DNS服务器的IP地址。
二、DHCP服务在实际应用中的常见问题
1、在一个子网内是否可以存在多台DHCP服务器,如果存在的话,那么该子网中的客户机能否正确获取地址,将会获取哪个DHCP服务器所分配的地址,是否能控制客户机器能从管理人员所设置的DHCP服务器中获取地址而不会从一些非法用户自建的DHCP服务器中取得非法得IP?
2、如果网络中存在多个子网,而子网的客户机需要DHCP服务器提供地址配置,那么是采取在各个子网都安装一台DHCP服务器,还是只在某一个子网中安装DHCP服务器,让它为多个子网的客户机分配IP地址,应该如何实现?
3、如果采取在一个子网中安装DHCP服务器,让它为多个子网的客户机分配IP地址,那么应该需要在一台DHCP服务器中创建多个不同范围的作用域,而我们如何可以准确地保证相应范围的地址分配给相应子网地主机呢?
4、如果客户机器无法从DHCP服务器中获取IP地址,那么Windows2000客户机器将会如何处理自己的TCP/IP设置?
三、DHCP的工作原理
要解析第二点中所提的问题,首先要搞清楚DHCP的实际的工作过程及原理,下面就对此做简单介绍:DHCP是一个基于广播的协议,它的操作可以归结为四个阶段,这些阶段是IP租用请求、IP租用提供、IP租用选择、IP租用确认。
1、IP租用请求:在任何时候,客户计算机如果设置为自动获取IP地址,那么在它开机时,就会检查自己当前是否租用了一个IP地址,如果没有,它就向DCHP请求一个租用,由于该客户计算机并不知道DHCP服务器的地址,所以会用255.255.255.255作为目标地址,源地址使用0.0.0.0,在网络上广播一个DHCPDISCOVER消息,消息包含客户计算机的媒体访问控制(MAC)地址(网卡上内建的硬件地址)以及它的NetBIOS名字。
2、IP租用提供:当DHCP服务器接收到一个来自客户的IP租用请求时,它会根据自己的作用域地址池为该客户保留一个IP地址并且在网络上广播一个来实现,该消息包含客户的MAC地址、服务器所能提供的IP地址、子网掩码、租用期限,以及提供该租用的DHCP服务器本身的IP地址。
3、IP租用选择:如果子网还存在其它DHCP服务器,那么客户机在接受了某个DHCP服务器的DHCPOFFER消息后,它会广播一条包含提供租用的服务器的IP地址的DHCPREQUEST消息,在该子网中通告所有其它DHCP服务器它已经接受了一个地址的提供,其他DHCP服务器在接收到这条消息后,就会撤销为该客户提供的租用。然后把为该客户分配的租用地址返回到地址池中,该地址将可以重新作为一个有效地址提供给别的计算机使用。
4、IP租用确认: DHCP服务器接收到来自客户的DHCPREQUEST消息,它就开始配置过程的最后一个阶段,这个确认阶段由DHCP服务器发送一个DHCPACK包给客户,该包包括一个租用期限和客户所请求的所有其它配置信息,至此,完成TCP/IP配置。
四、DHCP服务常见问题的解决方案
本文第二点中我们所提出的问题有四点,以下就此4个问题做相应的分析并给出我个人的一些解决方案,相信可以对学习DHCP服务的自学者会有一定的帮助,这些问题也是在实际教学中学生提出疑问最多的知识难点。
1、根据客户计算机的IP租用原理可以知道,在一个子网内,如果存在多台DHCP服务器来提供地址配置信息,这是不违反请求、分配原则的,因为只要中有一台客户计算机在该子网中提出IP地址租约请求,由于请求是广播形式的,所以在子网中可以有任意数量的特定DHCP服务器响应一个IP租用请求,而客户请求后选中的是这些任意特定DHCP服务器中的某一台,这个选择具有随机性,但有一点要注意的是客户只能为每一张网络接口卡接受一个租用提供,上面所谓特定的DHCP服务器是指那些经过系统授权的DHCP服务器,而非授权的DHCP服务器将无法在网络中提供正常的地址分配服务,这一点非常重要,因为这样一来客户机器将只会在管理员设定的地址范围中取得地址,Windows 2000操作系统的这一新增功能,通过对DHCP服务器进行认证避免了非法DHCP服务器分配非法IP地址造成的IP地址冲突,在实际应用中,客户机器获取非法的地址经常是造成网络瘫痪和无法正常通讯的一大原因。综合上面的分析可以做出第一个问题的结论:在一个子网中可以存在多台DHCP服务器来提供地址分配,但能够作为地址提供的不是任意的DHCP服务器,而应该是经过系统认证的那些,客户机请求地址时最终从那一台经过认证机器中获取时随机的。此外,从另一个角度看,在相同子网上使用多个 DHCP 服务器,将为它所服务的 DHCP 客户机提供更强的容错能力,如下图所示,在一个子网内(网络号为192.168.1.0 掩码为255.255.255.0)共用两个 DHCP 服务器,其中的DHCP服务器1不可用的话,DHCP服务器2可以取代它并继续租用新的地址或续订现有客户机。可以建议采用的解决方案是使用 80/20 规则来划分两个 DHCP 服务器之间的作用域地址,具体做法可以是将服务器 1 配置成可使用大多数地址(约 80%),服务器 2 可以配置成让客户机使用其他地址(约 20%)。
2、如果在一个网络中存在多个子网,而多个子网的主机都需要DHCP服务器来提供地址配置信息,那么我们可以采用的方法是在每一个子网中安装一台DHCP服务器,让它们来为各个子网分配IP地址,但从节约资源利用出发,我们一般情况下不这样做,可以采取在一个子网中安装DHCP服务器,让它来为多个子网分配IP地址,实现多子网地址分配可以借助DHCP的中继代理功能实现,而作为中继代理的设备可以是一台提供中继代理程序的Windows2000服务器或是一个符合RFC1542规定的路由器,具备 DHCP/ BOOTP Relay Agent 的功能(DHCP relay agent能够把 DHCP/BOOTP 广播信息从一个网段转播到另一个网段上)。以管理的局域网分为三个子网,用Win2000服务器连接。
下面是实现跨子网使用DHCP服务器的具体解决方案:
(1)安装DHCP中继代理程序:在Windows2000服务器的“路由和远程访问”窗口中,依次展开“本地服务器→IP路由选择→常规”选项,右键点击“常规”选项,在弹出的菜单中选择“新增路由协议”,然后在“新路由协议”窗口中选择“DHCP中继代理程序”,接着点击“确定”按钮。
(2)指定DHCP服务器:右键点击刚刚添加的“DHCP中继代理程序”选项,在弹出菜单中选择“属性”,进入“DHCP中继代理程序属性”对话框,在“常规”标签页的“服务器地址”栏中输入子网1中DHCP服务器的IP地址:192.168.1.2,然后点击“添加”按钮,最后点击“确定”按钮关闭该对话框。
(3)配置访问接口:右键点击“DHCP中继代理程序”选项,在弹出菜单中选择“新增接口”,然后在“DHCP中继代理程序的新接口”对话框中的“接口”列表框中选中可以访问子网1中的DHCP服务器的接口,这里新增的接口应该是接口二和接口三,接着点击“确定”按钮。然后在弹出的“DHCP中继站属性”对话框中,选中“中继DHCP数据包”选项,这样就启用了它的中继功能,最后点击“确定”按钮。
(4)DHCP服务器中配置一个超级作用域,其中包含三个普通作用域,作用域地址范围可以分别设置为192.168.1.10~192.168.1.254(分配给子网1的PC使用);192.168.2.10~192.168.2.254(分配给子网2的PC使用);192.168.3.10~192.168.3.254(分配给子网3的PC使用),必须记住DHCP只能为每一个子网分配一个范围。
完成以上配置后,子网2和子网3中的DHCP客户机PC2及PC3就可以通过主机A的DHCP中继代理程序访问子网1中的DHCP服务器。
3、解决了单台DHCP服务器为多个子网分配IP地址后,我们还要搞清楚的一个问题是,如果某一个子网的PC如子网2中的PC2或子网3中的PC3发出地址请求信息后,主机A可以作为中继代理对他们的请求传达子网1中的DHCP服务器,但该DHCP服务器如何可以确定并准确地将作用域192.168.2.0网段的地址分给PC2而把作用域192.168.3.0网段的地址分给PC3呢?这个是多数学生可能存在的疑问,要搞清楚这个问题,可以参考以下的原理分析来找答案:以子网2中的主机PC2为例,DHCP 客户机PC2在子网2 上广播 DHCP/BOOTP discover 消息 (DHCPDISCOVER),广播是将消息以 UDP (User Datagram Protocol)数据包的形式通过 67 端口发出,当中继代理(relay agent)主机A接收到这个消息后,它检查包含在这个消息报头中的网关IP 地址,如果网关IP 地址为 0.0.0.0 ,则用 relay agent主机A的接口二的IP地址192.168.2.1替换它,然后将其转发到 DHCP 服务器所在的子网1上(主机A还担任路由器功能)。当在子网1中的 DHCP服务器收到这个消息后,它开始检查消息中的网关IP地址,然后判断该网关地址是否包含在DHCP的某一个作用域范围内,从而决定它是否可以使用相应的作用域的地址来提供IP地址租约,当然,本例中DHCP服务器将会从作用域192.168.2.10~192.168.2.254选取一个地址来配置PC2;也就是说DHCP客户机的请求地址消息中的网关IP地址 (GIADDR) 将是DHCP服务器用来确定从那个DHCP 范围中挑选IP地址来配置客户机的依据。
二、
环球信息网(WWW)是Internet上信息的一种具体应用与表现形式,它在整个Internet中占据着十分重要的地位。超媒体是WWW的技术基础。
WWW服务采用客户/服务器工作模式:信息资源以网页的形式存储在Web服务器中,用户查询信息时执行一个客户端的浏览器程序,向Web服务器发出请求,Web服务器根据客户端的请求内容,将保存在Web服务器中的某个网页返回给客户端。浏览器接收到页面后对其进行解释,最终将图、文、声并茂的画面呈现给用户。
在WWW中,使用统一资源定位符(URL)来表示网页地址。
1. 环球信息网WWW(World Wide Web) 是Internet上能满足信息查寻或获取要求的一种信息组织方式。
2. 超文本(Hypertext)是一种用计算机来实现连接网页中相关文本内容的结构。
3. 超媒体=超文本+多媒体。
4. WWW服务器
WWW服务器也称Web服务器,建立WWW服务器是Internet网点建成后要考虑的第一件事。
WWW服务器与域名服务器的概念与应用技术在网络系列课程中已作介绍,这里不再重复。
5. WWW客户浏览器
• Web浏览器是最终用户与WWW之间的前端界面
• Web浏览器的功能
• 常用的Web浏览器
Netscape Navigator(网景浏览器)
Internet Explorer(IE)浏览器
HotJava浏览器(JavaSoft公司推出,用Java编写)
代理服务原理
代理服务器有很多种,大体来说有http,ftp,socks代理三种,其中又分透明代理和不透明代理。其中透明代理一般是网关,是硬件。所以这里讨论不透明代理。
当机器通过代理服务器上网时。通讯是分两次的,先是机器和代理服务器通讯,再是代理服务器和目的地址通讯。
机器和代理服务器通讯时,目的IP是代理服务器的IP。代理服务器和目的地址通讯时,源IP是代理服务器的IP,当外部的数据也是一样的,在内网中,出现的IP数据,全是内网和代理服务器的IP。因此,从IP包头是看不出任何与外面通讯的信息的。只有从数据中才能看到。
例如,用http代理上网。
过程是
机器和代理服务器建立TCP连接。
机器发出GET命令。这时GET命令中包含URL或IP地址,明文。
代理服务器将其中的URL转换为IP地址,可能会有DNS。将源数据包中的数据拷贝下来。去掉URL,重新组包,再发出去。
我们需要解析第一个GET包。
现在来看几种代理方式。
http (get)
http (connect)
ftp (user user@host:port)
ftp (user user@host port)
ftp (open host)
ftp (site host)
ftp (site user@host)
socks5
socks4
这些代理方式都有一个特点。就是在连接时,都会先和代理服务器连接,发出请求,一般为 command url,command就是get,connect,user 等。http和ftp都一样,可以通过关键字来识别。而且url是明文。Socks有些特别。它不是明文的,而是十六进制数据。要获得IP地址,还要经过转换。
DNS服务是互联网上非常重要和基础的服务之一,用以确定主机名和IP地址之间的对应关系,本文介绍DNS服务
DNS记录
一起实现DNS分布式数据库的那些名称服务器存储了从主机名到IP地址映射的资源记录(resource record,RR)。每个DNS应答消息携带着一个或者多个资源记录。在本部分与下一部分中,我们提供了对DNS资源记录和消息的简短介绍;DNSRFC文档[RFC 1034,RFC 1035]中描述了更多的细节。
一个四元组的资源记录包含了以下的字段:
(Name,value,type,TTL)
TTL是留住资源记录的时间:它确定了一个资源从缓存中删除的时间。在下面给出的例子记录中,我们将忽略TTL字段。name和value的意义依赖于TyPe:
●如果Type=A,那么Name是一个主机名并且value是该主机名所对应的IP地址。这样,一个TYPE A的记录提供了标难的主机名称到IP地址的映射。作为例子,{relay1.bar.foo com,145.37.93.126,A}就是一个Type A的记录。
●如果Type=NS,那么Name就是一个域(如foo.com),并且value是一个知道如何获得该域中主机的IP地址的权威名称服务器的主机名称。这个记录用于将DNS查询沿着查询的链式结构进行路由。作为例子,{foo.com,dns.foo.com,NS}就是一个Type NS纪录。
●如果Type=CNAME,那么value就是一个与主机别名NAME相对应的正规主机名。这个记录可以给发出查询的主机提供一个和主机名相对应的正规主机名。作为例子,{foo.com,relay1.bar.foo.com,CNAME}就是一个CNAME记录。
●如果TYPE=MX,那么value就是一个主机别名为NAME的邮件服务器的主机名。作为例子,{foo.com,mail.bar.foo.com,MX}就是一个MX记录。MX记录使得邮件服务器的主机名具有简单的别名。
如果一个名称服务器对于一个特殊的主机名是权威的,那么这个名称服务器将为这个主机名包含一个Type A记录(即使名称服务器不是权威的,它也可以在它的缓存中包含一个Type A记录)。如果一个服务器对于一个主机名不是权威的,那么该服务器将为包含该主机名的域包含一个Type NS记录:它还包含一个在该NS记录的value字段中提供了名称服务器IP地址的Type A记录。作为例子,假设一个根服务器对于主机gain.cs.umass.e不是权威的。那么根服务器将包含一个包括了主机cs.umass.e的域的记录,例如,{umass.e,dns.umass.e,NS)。根服务器也包含一个Type A记录,该记录将名称服务器(dns.umass.e)映射到一个IP地址上,例如,{dns.umass.e,128.119.40.111,A}。
DNS消息
在前面,我们间接提到了DNS查询和应答消息。它们仅仅是两种DNS消息。而且,请求和应答消息有相同的格式,如图4所示。
图4 DNS消息格式
一个DNS消息的各个字段的语义如下:
●前12个子节是头部区,它有很多字段。第一个字段是一个用来进行标识查询的16比特的数字。这个标识符被拷贝到一个查询的应答消息中,使得客户能够将接收到的应答和所发送的查询相匹配。在标志字段中包括很多标志。一个1比特的查询/应答标志指明了该消息是查询(0)还是应答(1)。当一个名称服务器对于所查询的名称来说是一个权威服务器的时候,应答消息中就对一个1比特的权威标志进行了设置。当一个客户(主机或者名称服务器)希望当它没有该记录时名称服务器执行递归的时候,就设置一个1比特的要求递归标志。如果名称服务器支持递归的话,就在应答中设置一个1比特的递归可用宇段。在头部中,还有四个“数目”字段。这些字段指明了头部之后出现的四种类型的“数据”部分的出现数目。
●问题部分包含了关于所执行的查询的信息。这个区包括了(1)包含了被查询的名称的名称字段,(2)指明了所询问的关于该名称的问题类型的类型字段(例如,与一个名称相关的主机地址——type A,或者一个名称的邮件服务路—type MX)。
●在一个从名称服务器发出的应答中,答案部分包含了最初被查询的名称的资源记录。前面讲过,在每个资源记录中都有Type(例如,A,NS,CNAME和MX),value和TTL。应答可以在答案中返回多个RR,因为一个主机名称可以有多个IP地址(例如,对于前面所讨论的重复的web服务器的情况)。
●权威部分包含了其他权威服务器的记录。
●补充部分包含了其他“有帮助的”记录。例如,一个对应于MX查询的应答中的答案字段将包含与别名NAME相关联的邮件服务器的主机名。补充区将包含一个Type A记录,该记录提供了该邮件服务器的正规主机名所对应的IP地址。以上的讨论集中在如何从DNS数据库中检索数据。你可能会奇怪,最先数据是如何进入到数据库中的呢?直到最近,每个DNS服务器的内容都被静态配置了,例如,由一个系统管理员创建的配置文件。更近的,为了允许从数据库中通过DNS消息动态加入或者删除数据,在DNS协议中加入了UPDATE选项。RFC 2136详细说明了DNS的动态更新。
DNSNet提供了一个很好的、关于DNS的文档集合[DNSNetl999I。因特网软件联盟(Internet Software Consortium)为BIND提供了很多资源,BIND是一个流行的、Unix下的公共域名服务器软件,不过因其暴露出的一些安全问题,目前它正被其它竞争产品逐步替代。
C. FTP服务的工作原理是什么
什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp协议对话,并且能访问Internet, 你可以用ftp命令来传输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。
FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。
1.ASCII传输方式:假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。
但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。
2.二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。
如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢 ,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。
5. FTP的工作方式
FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到 FTP Server。
下面介绍一个这两种方式的工作原理:
Port模式FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。
Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。
很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。
D. FTP的两种工作模式的原理是什么
主动模式
1. 客户端打开大于1023的随机命令端口和大于1023的随机数据端口向服务的的21号端口发起请求
2. ==服务端==的21号命令端口响应客户端的随机命令端口
3. ==服务端==的20号端口==主动==请求连接客户端的随机数据端口
4. 客户端的随机数据端口进行确认
被动模式
1. 客户端打开大于1023的随机命令端口和大于1023的随机数据端口向服务的的21号端口发起请求
2. 服务端的21号命令端口响应客户端的随机命令端口
3. ==客户端主动==连接服务端打开的大于1023的随机端口
4. 服务端进行确认
学Linux运维,来黑马程序员。
E. FTP文件传输概念、工作原理
FTP是英语FILE TRANSFER PROTOCOL的简称,中文意为"文件传送协议,用于在电脑和电脑之间传送文件,有了这个协议,文件的传输就可以不受不同的电脑,不同的操作系统,甚至不同文件格式的限制,传输文件的一般步骤如下:
1在本地电脑上登陆到国际互联网,
2搜索有文件共享主机或者个人电脑(一般有专门的FTP服务器网站上公布的,上面有进入该主机或个人电脑的名称,口令和路径)
3当与远程主机或者对方的个人电脑建立连接后,用对方提供的用户名和口令登陆到该主机或对方的个人电脑.
4在远程主机或对方的个人电脑登陆成功后,就可以上传你想跟别人分享的东东或者下载别人授权共享的东东(这里的东东是指能放到电脑里去又能在显示屏上看到的东东)
5完成工作后关闭FTP下载软件,切断连接.
为了实现文件传输,用户还要运行专门的文件传输程序,比如网际快车就有这方面的功能,其它还有很多专门的FTP传输软件,各有各的特色.
F. 传输协议FTP的工作原理和使用步骤
1、 简介
在绝大多数的LINUX发行版本中都选用的是WashingtonUniversity FTP,它是一个着名的FTP服务器软件,一般简称为wu-ftp。它功能强大,能够很好地运行于众多的UNIX操作系统,例如:IBM AIX、FreeBSD、HP-UX、NeXTstep、Dynix、SunOS、Solaris等。所以Internet上的FTP服务器,一大半以上采用了它。wu-ftp拥有许多强大的功能,很适于吞吐量较大的FTP服务器的管理要求:
G. ftp服务器的原理
FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。
FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。
H. 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的连接模式有两种,PORT和PASV。PORT模式是一个主动模式,PASV是被动模式,这里都是相对于服务器而言的。为了让大家清楚的认识这两种模式,朗月繁星分别举例说明。
PASV模式
然而,当FTP客户以PASV模式连接服务器时,情况就有些不同了。在初始化连接这个过程即连接服务器这个过程和PORT模式是一样的,不同的是,当FTP客户发送ls、dir、get等这些要求数据返回的命令时,他不向服务器发送PORT指令而是发送PASV指令,在这个指令中,用户告诉服务器自己要连接服务器的某一个端口,如果这个服务器上的这个端口是空闲的可用的,那么服务器会返回ACK的确认信息,之后数据传输通道被建立并返回用户所要的信息(根据用户发送的指令,如ls、dir、get等);如果服务器的这个端口被另一个资源所使用,那么服务器返回UNACK的信息,那么这时,FTP客户会再次发送PASV命令,这也就是所谓的连接建立的协商过程。为了验证这个过程我们不得不借助CUTEFTP Pro这个大家经常使用的FTP客户端软件,因为微软自带的FTP命令客户端,不支持PASV模式。虽然你可以使用QUOTE PASV这个命令强制使用PASV模式,但是当你用ls命令列出服务器目录列表,你会发现它还是使用PORT方式来连接服务器的。现在我们使用CUTEFTP Pro以PASV模式连接服务器
PORT模式
当FTP客户以PORT模式连接服务器时,他动态的选择一个端口号(本次试验是6015)连接服务器的21端口,注意这个端口号一定是1024以上的,因为1024以前的端口都已经预先被定义好,被一些典型的服务使用,当然有的还没使用,保留给以后会用到这些端口的资源服务。当经过TCP的三次握手后,连接(控制信道)被建立