家电维修班,手机维修班,电脑维修班,电工班,焊工班,液晶电视维修班,电动工具维修班、电动车摩托车维修班、网络营销培训、网站设计培训、淘宝培训---全国招生 家电维修班,手机维修班,电脑维修班,电工班,焊工班,液晶电视维修班,电动工具维修班、电动车摩托车维修班、网络营销培训、网站设计培训、淘宝培训---全国招生
您现在的位置:首页 >> 技术园地 >> 电脑维修技术 >> 信息正文

浅析FTP的工作原理

2009-2-16 23:36:20 来源: 不详 作者:佚名 访问:0次 字号:【
    
  起初, 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是被动模式,这里都是相对于服务器而言的。为了让大家清楚的认识这两种模式,朗月繁星分别举例说明。
port模式
    当ftp客户以port模式连接服务器时,他动态的选择一个端口号(本次试验是6015)连接服务器的21端口,注意这个端口号一定是1024以上的,因为1024以前的端口都已经预先被定义好,被一些典型的服务使用,当然有的还没使用,保留给以后会用到这些端口的资源服务。当经过tcp的三次握手后,连接(控制信道)被建立(如图1和图2)。



图1:ftp客户使用ftp命令建立于服务器的连接



图2:用netstat命令查看,控制信道被建立在客户机的6015和服务器的20端口

现在用户要列出服务器上的目录结构(使用ls或dir命令),那么首先就要建立一个数据通道,因为只有数据通道才能传输目录和文件列表,此时用户会发出port指令告诉服务器连接自己的什么端口来建立一条数据通道(这个命令由控制信道发送给服务器),当服务器接到这一指令时,服务器会使用20端口连接用户在port指令中指定的端口号,用以发送目录的列表(如图3)。



图3:ls命令是一个交互命令,它会首先与服务器建立一个数据传输通道。经验证本次试验客户机使用6044端口

当完成这一操作时,ftp客户也许要下载一个文件,那么就会发出get指令,请注意,这时客户会再次发送port指令,告诉服务器连接他的哪个"新"端口,你可以先用netstat -na这个命令验证,上一次使用的6044已经处于time_wait状态(如图4)。



图4:使用netstat命令验证上一次使用ls命令建立的数据传输通道已经关闭

当这个新的数据传输通道建立后(在微软的系统中,客户端通常会使用连续的端口,也就是说这一次客户端会用6045这个端口),就开始了文件传输的工作。

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模式连接服务器(如图5)。



图5:使用cuteftp pro以pasv模式连接服务器

请注意连接log里有这样几句话:

command:> pasv 227 entering passive mode (127,0,0,1,26,108)command:> liststatus:> connecting ftp data socket 127.0.0.1: 6764... 125 data connection already open; transfer starting. 226 transfer complete.

其中,

227 entering passive mode (127,0,0,1,26,80). 代表客户机使用pasv模式连接服务器的26x256+108=6764端口。(当然服务器要支持这种模式)
125 data connection already open; transfer starting.说明服务器的这个端口可用,返回ack信息。

再让我们看看用cuteftp pro以port模式连接服务器的情况。其中在log里有这样的记录:

command:> port 127,0,0,1,28,37 200 port command successful.command:> list 150 opening ascii mode data connection for /bin/ls.status:> accepting connection: 127.0.0.1:20. 226 transfer complete.status:> transfer complete.

其中,

port 127,0,0,1,28,37告诉服务器当收到这个port指令后,连接ftp客户的28x256+37=7205这个端口。
accepting connection: 127.0.0.1:20表示服务器接到指令后用20端口连接7205端口,而且被ftp客户接受。



比较分析
    在这两个例子中,请注意: port模式建立数据传输通道是由服务器端发起的,服务器使用20端口连接客户端的某一个大于1024的端口;在pasv模式中,数据传输的通道的建立是由ftp客户端发起的,他使用一个大于1024的端口连接服务器的1024以上的某一个端口。如果从c/s模型这个角度来说,port对于服务器来说是outbound,而pasv模式对于服务器是inbound,这一点请特别注意,尤其是在使用防火墙的企业里,比如使用微软的isa server 2000发布一个ftp服务器,这一点非常关键,如果设置错了,那么客户将无法连接。
     后,请注意在ftp客户连接服务器的整个过程中,控制信道是一直保持连接的,而数据传输通道是临时建立的。
    在本文中,朗月繁星把重点放到了ftp的连接模式,没有涉及ftp的其他内容,比如ftp的文件类型(type),格式控制(format control)以及传输方式(transmission mode)等。不过这些规范大家可能不需要花费过多的时间去了解,因为现在流行的ftp客户端都可以自动的选择正确的模式来处理,对于ftp服务器端通常也都做了一些限制,如下:

类型:a s c i i或图像。

格式控制:只允许非打印。

结构:只允许文件结构。

传输方式:只允许流方式

    至于这些内容,限于篇幅朗月繁星在这里就不想再介绍了。希望这篇文章能对大家有些帮助,特别是正在学习isa server2000的朋友和一些对ftp不很了解的朋友。ok,就此驻笔了,希望大家与我交流。
打印本文   加入收藏   返回顶部   关闭窗口Tags:浅析|析F|FT|T  

网站: http://www.hnygpx.net 报名电话:0731-5579057   13807313137 报名信箱: yp5579@263.net 咨询QQ: 361928696,873219118 

校址:湖南省长沙市雨花区红花坡路176号(正圆厂内)。 来校路线:长沙火车站售票处后坪乘135路至"鼓风站"下车,回走100米即到

电工培训学校 电动车维修学校 摩托车维修学校 摩托车维修培训 手机维修培训 家电维修培训 电脑维修培训 电动工具维修培训 液晶电视维修培训 安防监控培训 空调维修培训 网络营销培训 网站设计培训 淘宝网店培训 电器维修培训 家电维修学校 电工培训 焊工培训 电工学校
中山市,固原市,银川市,玉树,海东,陇南市,酒泉市,张掖市,天水市,金昌市,兰州市,榆林市,延安市,渭南市,铜川市,阿里,山南,拉萨市,怒江,文山州,楚雄州,普洱市,昭通市,玉溪市,昆明市,毕节,铜仁,遵义市,贵阳市,甘孜州,资阳市,达州市,宜宾市,南充市,遂宁市,绵阳市,泸州市,自贡市,三亚市,崇左市,河池市,玉林市,钦州市,梧州市,柳州市,梅州市,肇庆市,湛江市,佛山市,珠海市,韶关市,湘西州,怀化市,郴州市,张家界市,邵阳市,株洲市,仙桃市,随州市,荆州市,荆门市,襄樊市,黄石市,驻马店市,信阳市,南阳市,漯河市,中卫市,石嘴山市,海西,海南藏州,黄南州,海北,甘南,庆阳市,平凉市,武威市,白银市,嘉峪关市,安康市,汉中市,咸阳市,宝鸡市,林芝,日喀则,昌都,迪庆,德宏,大理,西双版纳,红河州,临沧市,丽江市,保山市,曲靖市,黔东州,黔西州,安顺市,六盘水市,凉山州,阿坝州,雅安市,广安市,眉山市,内江市,广元市,德阳市,攀枝花市,成都市,海口市,来宾市,百色市,贵港市,北海市,桂林市,南宁市,云浮市,揭阳市,潮州市,清远市,阳江市,汕尾市,惠州市,茂名市,江门市,汕头市,深圳市,广州市,娄底市,永州市,益阳市,岳阳市,湘潭市,长沙市,恩施州,黄冈市,孝感市,鄂州市,十堰市,武汉市,周口市,商丘市,三门峡市,许昌市,焦作市,安阳市,鹤壁市,平顶山市,开封市,郑州市,聊城市,滨州市,德州市,莱芜市,日照市,泰安市,烟台市,潍坊市,东营市,淄博市,上饶市,济南市,抚州市,宜春市,赣州市,新余市,九江市,景德镇市,宁德市,南平市,泉州市,莆田市,厦门市,宣城市,亳州市,六安市,宿州市,黄山市,滁州市,安庆市,淮北市,马鞍山市,蚌埠市,芜湖市,合肥市,丽水市,舟山市,衢州市,金华市,湖州市,嘉兴市,宁波市,宿迁市,镇江市,盐城市,连云港市,苏州市,徐州市,南京市,绥化市,牡丹江市,佳木斯市,大庆市,鹤岗市,哈尔滨市,白城市,白山市,辽源市,吉林市,葫芦岛市,铁岭市,盘锦市,阜新市,锦州市,本溪市,鞍山市,沈阳市,锡林郭勒盟,通辽市,乌海市,吕梁市,忻州市,晋中市,晋城市,阳泉市,太原市,廊坊市,承德市,保定市,邯郸市,唐山市,宁夏,甘肃省,西藏,贵州省,重庆市,广西,湖南省,河南省,江西省,安徽省,江苏省,黑龙江省,辽宁省,山西省,天津市,四平市,内蒙古,吴忠市,果洛,西宁市,定西市,商洛市,西安市,那曲,黔南州,巴中市,乐山市,贺州市,防城港市,东莞市,河源市,常德市,衡阳市,咸宁市,宜昌市,濮阳市,新乡市,洛阳市,菏泽市,临沂市,威海市,济宁市,枣庄市,青岛市,吉安市,鹰潭市,萍乡市,南昌市,龙岩市,漳州市,三明市,福州市,池州市,巢湖市,阜阳市,铜陵市,淮南市,台州市,绍兴市,温州市,杭州市,泰州市,扬州市,淮安市,南通市,常州市,无锡市,大兴安岭,黑河市,七台河市,伊春市,双鸭山市,鸡西市,齐齐哈尔市,延边,松原市,通化市,长春市,朝阳市,辽阳市,营口市,丹东市,抚顺市,大连市,阿拉善盟,兴安盟,乌兰察布市,巴彦淖尔市,呼伦贝尔市,鄂尔多斯市,赤峰市,包头市,呼和浩特市,临汾市,运城市,朔州市,长治市,大同市,衡水市,沧州市,张家口市,邢台市,秦皇岛市,石家庄市,青海省,陕西省,云南省,四川省,海南省,广东省,湖北省,山东省,福建省,浙江省,上海市,吉林省,河北省,北京市