当前位置:文档之家› FTP数据包的详细分析

FTP数据包的详细分析

FTP协议分析与源码阅读一、什么是FTP协议Transfer Protocal),是文件传输协议的简称。

用于Internet上的控制文件的双向传输。

同时,它也是一个应用程序(Application)。

用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。

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是这样一种机制,用户可通过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。

系统管理员建立了一个特殊的用户ID,名为anonymous, Internet上的任何人在任何地方都可使用该用户ID。

通过FTP程序连接匿名FTP主机的方式同连接普通FTP主机的方式差不多,只是在要求提供用户标识ID时必须输入anonymous,该用户ID的口令可以是任意的字符串。

习惯上,用自己的E-mail地址作为口令,使系统维护程序能够记录下来谁在存取这些文件。

值得注意的是,匿名FTP不适用于所有Internet主机,它只适用于那些提供了这项服务的主机。

当远程主机提供匿名FTP服务时,会指定某些目录向公众开放,允许匿名存取。

系统中的其余目录则处于隐匿状态。

作为一种安全措施,大多数匿名FTP主机都允许用户从其下载文件,而不允许用户向其上载文件,也就是说,用户可将匿名FTP主机上的所有文件全部拷贝到自己的机器上,但不能将自己机器上的任何一个文件拷贝至匿名FTP主机上。

即使有些匿名FTP主机确实允许用户上载文件,用户也只能将文件上载至某一指定上载目录中。

随后,系统管理员会去检查这些文件,他会将这些文件移至另一个公共下载目录中,供其他用户下载,利用这种方式,远程主机的用户得到了保护,避免了有人上载有问题的文件,如带病毒的文件。

作为一个Internet用户,可通过FTP在任何两台Internet主机之间拷贝文件。

但是,实际上大多数人只有一个Internet帐户,FTP主要用于下载公共文件,例如共享软件、各公司技术支持文件等。

Internet上有成千上万台匿名FTP主机,这些主机上存放着数不清的文件,供用户免费拷贝。

实际上,几乎所有类型的信息,所有类型的计算机程序都可以在Internet 上找到。

这是Internet吸引我们的重要原因之一。

匿名FTP使用户有机会存取到世界上最大的信息库,这个信息库是日积月累起来的,并且还在不断增长,永不关闭,涉及到几乎所有主题。

而且,这一切是免费的。

匿名网上发布软件的常用方法。

Internet之所以能延续到今天,是因为人们使用通过标准协议提供标准服务的程序。

像这样的程序,有许多就是通过匿名FTP发布的,任何人都可以存取它们。

Internet中的有数目巨大的匿名FTP主机以及更多的文件,那么到底怎样才能知道某一特定文件位于哪个匿名FTP主机上的那个目录中呢?这正是Archie服务器所要完成的工作。

Archie将自动在FTP主机中进行搜索,构造一个包含全部文件目录信息的数据库,使你可以直接找到所需文件的位置信息。

传输文件的一般步骤如下:1.在本地电脑上登陆到国际互联网.2.搜索有文件共享主机或者个人电脑(一般有专门的FTP服务器网站上公布的,上面有进入该主机或个人电脑的名称,口令和路径).3.当与远程主机或者对方的个人电脑建立连接后,用对方提供的用户名和口令登陆到该主机或对方的个人电脑.4.在远程主机或对方的个人电脑登陆成功后,就可以上传你想跟别人分享的东东或者下载别人授权共享的东东(这里的东东是指能放到电脑里去又能在显示屏上看到的东东).5.完成工作后关闭FTP下载软件,切断连接.为了实现文件传输,用户还要运行专门的文件传输程序,比如网际快车就有这方面的功能,其它还有很多专门的FTP传输软件,各有各的特色.二、源代码功能描述与操作指南1、源代码的功能:If Len(txtProxy.Text) <> 0 ThenhOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PROXY,txtProxy.Text, vbNullString, 0)ElsehOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT,vbNullString, vbNullString, 0)End IfIf hOpen = 0 Then ErrorOut stDllError, "InternetOpen"EnableUI (True)开启与Internet的连接If Not bActiveSession And hOpen <> 0 ThenIf txtServer.Text = "" ThenMsgBox "Please enter a server name!"Exit SubEnd IfDim nFlag As LongIf chkPassive.Value ThennFlag = INTERNET_FLAG_PASSIVEElsenFlag = 0End IfhConnection = InternetConnect(hOpen, txtServer.Text, INTERNET_INV ALID_PORT_NUMBER, _txtUser, txtPassword, INTERNET_SERVICE_FTP, nFlag, 0)If hConnection = 0 ThenbActiveSession = FalseErrorOut stDllError, "InternetConnect"ElsebActiveSession = TrueEnableUI (CBool(hOpen))FillTreeViewControl (txtServer.Text)("")If EnumItemNameBag.Count = 0 Then Exit SubFillTreeViewControl (txtServer.Text)End IfEnd If在txtServer、txtUser、txtPassword输入ftp地址、用户名、密码。

如果该ftp允许匿名登入就不需要输入用户名和密码,然后单击就可以连接该ftp了。

im bRet As BooleanDim sz As String, szDirRemote As String, sz As StringDim szTempString As StringDim nPos As Long, nTemp As LongDim nodX As NodeSet nodX = TreeView1.SelectedItemIf bActiveSession ThenIf nodX Is Nothing ThenMsgBox "Please select the item to GET!"Exit SubEnd IfszTempString = TreeView1.SelectedItem.Textsz = szTempStringnPos = 0nTemp = 0DonTemp = InStr(1, szTempString, "/", vbBinaryCompare)If nTemp = 0 Then Exit DoszTempString = Right(szTempString, Len(szTempString) - nTemp)nPos = nTemp + nPosLoopszDirRemote = Left(sz, nPos)sz = Right(sz, Len(sz) - nPos)sz =rcd szDirRemotebRet = (hConnection, sz, sz & "/" & sz, False, _INTERNET_FLAG_RELOAD, dwType, 0)If bRet = False Then ErrorOut stDllError, ""ElseMsgBox "Not in session"End IfDim bRet As BooleanDim sz As String, szDirRemote As String, sz As StringDim szTempString As StringDim nPos As Long, nTemp As LongDim nodX As NodeSet nodX = TreeView1.SelectedItemIf bActiveSession ThenIf nodX Is Nothing ThenMsgBox "Please select a remote directory to PUT to!"Exit SubEnd IfIf nodX.Image = "leaf" ThenMsgBox "Please select a remote directory to PUT to!"Exit SubEnd IfIf = "" ThenMsgBox "Please select a local put"Exit SubEnd IfszTempString = nodX.TextszDirRemote = Right(szTempString, Len(szTempString) - Len(txtServer.Text))sz =sz = & "\" &If (szDirRemote = "") Then szDirRemote = "\"rcd szDirRemotebRet = (hConnection, sz, sz, _dwType, 0)If bRet = False ThenErrorOut stDllError, ""Exit SubEnd IfDim nodChild As Node, nodNextChild As NodeSet nodChild = nodX.ChildDoIf nodChild Is Nothing Then Exit DoSet nodNextChild = nodChild.NextTreeView1.Nodes.Remove nodChild.IndexIf nodNextChild Is Nothing Then Exit DoSet nodChild = nodNextChildLoopIf nodX.Image = "closed" ThennodX.Image = "open"End If(nodX.Text)FillTreeViewControl (nodX.Text)End If这两个按钮分别可以下载ftp的信息至指定的文件夹和上传信息到ftp上bDirEmpty = TrueIf hConnection <> 0 Then InternetCloseHandle hConnectionhConnection = 0ClearBagTreeView1.Nodes.Remove txtServer.TextbActiveSession = FalseEnableUI (True)关闭ftp的连接If hConnection <> 0 Then InternetCloseHandle (hConnection) If hOpen <> 0 Then InternetCloseHandle (hOpen)hConnection = 0hOpen = 0If bActiveSession Then TreeView1.Nodes.Remove txtServer.Text bActiveSession = FalseClearTextBoxAndBagEnableUI (False)关闭与Interne的连接2、操作:我介绍的这个用VB做的FTP客户端程序首先点击运行程序,然后先单击Start Internet Session,然后在Name:输入FTP的地址,后面的用户名和密码看FTP是否允许匿名登入,不允许匿名登入就需要输入用户名密码,最后就可以选择文件内容,按GET 和PUT按钮下载和上传文件。

相关主题