(计算机专业毕业论文)ftp协议分析与扩展内容摘要:

byte | Opcode | ErrorCode | ErrMsg | 0 | Figure 54: ERROR 包 一个 ERROR 包,它的操作码是 5,它的格式如上所示。 此包可以被其它任何类型的包确认。 错误码指定错误的类型。 错误的值和错误的意义在附录中。 错误信息是供程序员使用的。 正常终止 传输的结束由 DATA 数据标记,其包括 0511 个字符。 这个包可以被其它数据包确认。 接收方在发出对最后数据包的确认后可以断开连接, 当然,适当的等待是比较好的,如果最后的确定包丢失可以再次传输。 如果发出确认后仍然收到最后数据包,可以确定最后的确认丢失。 发送最后一个 DATA 包的主机必须等待对此包的确认或超时。 如果响应是 ACK,传输完成。 如果发送方超时并不准备重新发送并且接收方有问题或网络有问题时,发送也正常结束。 当然实现时也可以是非正常结束,但无论如何连接都将被关闭。 9 早终结 如果请求不能被满足,或者在传输中发生错误,需要发送 ERROR 包。 这仅是一种传输友好的方式,这种包不会被确认也不会被重新传输,因此这种包可能永远不会被接收到。 因此 需要用超时来侦测错误。 ftp 与 tftp 的区别 ① FTP 是完整、面向会话、常规用途文件传输协议。 而 TFTP 用作 bones bare 特殊目的文件传输协议。 ② 交互使用 FTP。 TFTP 允许仅单向传输的文件。 FTP 提供身份验证。 而 TFTP 不。 ③ FTP 使用已知 TCP 端口号: 20 的数据和 21 用于连接对话框。 TFTP 用于 UDP 端口号 69 其文件传输活动。 ④ 因为 TFTP 不支持验证 WindowsNT ,所以 FTP 服务器服务不支持 TFTP。 ⑤ FTP 依赖于 TCP,是面向连接并提供可靠的控件。 TFTP 依赖 UDP,需要减少开销 , 几乎不提供控件。 ⑥ 简单文件传送协议 TFTP(Trivial File Transfer Protocol)是一个 TCP/IP 协议族中一个很小且易于实现的文件传送协议。 TFTP 也是使用客户服务器方式,但它使用 UDP数据报 ,因此 TFTP 需要有自己的差错改正措施。 TFTP 的主要特点是: ( 1)每次传送的数据 PDU 中有 512 字节的数据,但最后一次可不足 512 字节。 ( 2)数据 PDU 也称为文件块 (block),每个块按序编号,从 1开始。 ( 3)支持 ASCII 码或二进制传送。 ( 4)可对文件进行读或写。 ( 5)使用很简单的首部。 ( 6) TFTP 只支持文件传输而不支持交互; ( 7) TFTP 没有一个庞大的命令集; ( 8)没有列目录的功能; ( 9)也不能对用户 进行身份鉴别。 TFTP 的工作很像停止等待协议。 例如: ( 1)发送完一个文件块后就等待对方的确认,确认时应指明所确认的块编号。 ( 2)发完数据后在规定时间内收不到确认就要重发数据 PDU。 ( 3)发送确认 PDU 的一方若在规定时间内收不到下一个文件块,也要重发确认 PDU。 这样就可保证文件的传送不致因某一个数据报的丢失而告失败。 TFTP 在一开始工作时,客户进程发送一个读请求 PDU 或写请求 PDU 给 TFTP 服务器进程,其熟知端口号码为 69。 TFTP 服务器进程要选择一个新的端口和 TFTP客户进程进行通信。 若文件长度恰好为 512 字节的整数倍,则在文件传送完毕后,还必须在最后发送一个只含首部而无数据的数据 PDU;若文件长度不是 512 字节的整数倍,则最后传送数据 PDU的数据字段一定不满 512 字节,这正好可作为文件结束的标志。 FTP 模式分析 当 对一个 FTP 问题进行排错时候, 首先要问的一个问题是使用的是 port 模式的还是passive 模式。 因为这两种行为迥异,所以这两种模式引起的问题也不同;在过去,客户10 端缺省为 active(port)模式;近来,由于 Port 模式的安全问题,许多客户端的 FTP 应 用缺省为 Passive 模式。 FTP 支持两种模式。 这两种模式被称为“标准”(或 PORT,或“主动”)和“被动”(或PASV)。 “标准”模式 FTP 客户端会向 FTP 服务器发送 PORT 命令。 “被动”模式客户端会向FTP 服务器发送 PASV 命令。 这些命令是在建立 FTP 会话时通过 FTP 命令通道进行发送的。 2种模式 FTP 客户端都要建立一个到 FTP 服务器上 TCP 端口 21的连接。 客户选择大于 1024的端口发起连接,此连接会建立 FTP 命令通道。 不能列目录是因为 FTP 使用不同的通道来传递数据,这也是 FTP 不同于 HTTP 服务的地方 , HTTP 需要一条通道就可以了。 servu默认的方式就是 PORT 方式。 PORT 方式能连接、也能列目录、能下载文件 , PASV 方式能连接、不能列目录下载文件。 FTP 的主动模式 (Port 模式 ) 主动模式 在主动模式中, FTP 服务器绑定了两个端口: 21 和 20 (这两个端口是默认值,可以设成别的端口)。 其中 21端口负责客户端和服务器之间的命令传送。 一开始,由客户端主动连接服务端的 21 端口,并且向服务器发送相应的 FTP 命令。 另外一个端口 20 是负责客户端和服务端的数据传送。 但要注意,并不是客 户端主动连接服务端的 20 端口,而是在客户端创建一个使用匿名端口的服务端连接(在 Java 中就是创建一个 ServerSocket 对象,并且绑定端口是 0)。 然后客户端通过 21 端口将这个匿名端口通知服务端。 最后,服务端主动连接客户端的这个 匿名端口(所以这种模式叫主动模式,就是服务器主动连接客户端)。 主动模式的工作原理。 图 主动模式的工作原理 从上图可以看出,在主动模式中,在传送命令和数据时,建立连接的过程是相反的。 也就是说,在传送命令时,由客户端主动连接服务器的 21 端口。 而传送数据时,由服务器主动连接客 户端的匿名端口。 这种方式是 FTP 服务器最初的工作模式,但这种模式有很11 大的局限性。 如客户端通过代理上网,而且未做端口映射。 在这种情况下,服务端是无法主动和客户端建立连接的。 Port 模式的 FTP 步骤 如下: 1) 客户端发送一个 TCP 2) SYN( TCP 同步)包给服务器段众所周知的 FTP 控制端口 21,客户端使用暂时的端口作为它的源端口; 3) 服务器端发送 SYN 4) ACK(同步确认)包给客户端,源端口为 21,目的端口为客户端上使用的暂时端口; 5) 客户端发送一个 ACK(确认)包;客户端使用这个连接来发送 FTP 命令, 服务器端使用这个连接来发送 FTP 应答; 6) 当用户请求一个列表 (List)请求或者发起一个要求发送或者接受文件的请求,客户端软件使用 PORT 命令,这个命令包含了一个暂时的端口,客户端希望服务器在打开一个数据连接时候使用这个暂时端口; PORT 命令也包含了一个 IP 地址,这个 IP 地址通常是客户自己的 IP 地址,而且 FTP 也支持第三方( thirdparty)模式,第三方模式是客户端告诉服务器端打开与另台主机的连接; 7) 服务器端发送一个 SYN 包给客户端的暂时端口,源端口为 20,暂时端口为客户端在 PORT 命令中发送给服务器端 的暂时端口号; 8) 客户端以源端口为暂时端口,目的端口为 20 发送一个 SYN ACK 包; 9) 服务器端发送一个 ACK 包; 10) 发送数据的主机以这个连接来发送数据,数据以 TCP 段 (注: segment,第 4层的 PDU)形式发送(一些命令,如 STOR 表示客户端要发送数据, RETR 表示服务器段发送数据),这些 TCP 段都需要对方进行 ACK 确认(注:因为 TCP 协议是一个面向连接的协议) 11) 当数据传输完成以后,发送数据的主机以一个 FIN 命令来结束数据连接,这个FIN 命令需要另一台主机以 ACK 确认,另一台主机也发送一个 FIN 命令,这个 FIN 命令同样需要发送数据的主机以 ACK 确认; 12) 客户端能在控制连接上发送更多的命令,这可以打开和关闭另外的数据连接;有时候客户端结束后,客户端以 FIN 命令来关闭一个控制连接,服务器端以 ACK 包来确认客户端的 FIN,服务器同样也发送它的 FIN,客户端用 ACK 来确认。 下图图示了 FTP PORT 模式前几步步骤: 12 图 FTP PORT 模式 FTP 的 被动模式 (Passive 模式 ) 被动模式 被动模式和主动模式在传送命令的方式上是一样的。 它们的区别就在于数据的传输上。 被动模式在建立命令传输通道后,服 务端建立一个绑定到匿名端口的 ServerSocket对象。 并通过命令传输通道将这个匿名端口通知客户端,然后由客户端主动连接服务端的这 个匿名端口。 这对于服务端就是被动的,因此,这种模式叫被动模式。 如 下 图 描述了被动模式的工作原理。 图 ftp 被动工作原理 现在的大多数 FTP 客户端软件的默认工作模式都是被动模式。 因此,这种模式可以克服防火墙等的限制,并且客户端不需要有固定 ,这就是在服13 务端要为客户开大量的端口(大多数 FTP 服务器开的端口范围是 1024 ~ 5000,但有的服务器的范围达到 1024 ~ 65535)。 这对于服务器来说存在着一定的安全隐患。 因此,如果可能的话,最好还是采用主动模式。 II Passive 模式的 FTP 的步骤 1) 客户端发送一个 TCPSYN( TCP 同步)包给服务器段众所周知的 FTP 控制端口 21,客户端使用暂时的端口作为它的源端口; 2) 服务器端发送 SYNACK(同步确认)包给客户端,源端口为 21,目的端口为客户端上使用的暂时端口; 3) 客户端发送一个 ACK(确认)包;客户端使用这个连接来发送 FTP 命令,服务器端使用这个连接来发送 FTP 应答; 4) 当用户请求一个列表 (List)或者发送或接收文件时候,客户端软件发送 PASV 命令给服务器端表明客户端希望进入 Passive 模式; 5) 服务器端进行应答,应答包括服务器的 IP 地址和一个暂时的端口,这个暂时的端口是客户端在打开数据传输连接时应该使用的端口; 6) 客户端发送一个 SYN 包,源端口为客户端自己选择的一个暂时端口,目的端口为服务器在 PASV 应答命令中指定的暂时端口号; 7) 服务器端发送 SYNACK 包给客户端, 目的端口为客户端自己选择的暂时端口,源端口为PASV 应答中指定的暂时端口号; 8) 客户端发送一个 ACK 包; 9) 发送数据的主机以这个连接来发送数据,数据以 TCP 段 (注: segment,第 4层的 PDU)形式发送(一些命令,如 STOR 表示客户端要发送数据, RETR 表示服务器段发送数据),这些 TCP 段都需要对方进行 ACK 确认; 10) 当数据传输完成以后,发送数据的主机以一个 FIN 命令来结束数据连接,这个 FIN 命令需要另一台主机以 ACK 确认,另一台主机也发送一个 FIN 命令,这个 FIN 命令同样需要发送数据的主机以 ACK 确认; 11) 客户 端能在控制连接上发送更多的命令,这可以打开和关闭另外的数据连接;有时候客户端结束后,客户端以 FIN 命令来关闭一个控制连接,服务器端以 ACK 包来确认客户端的 FIN,服务器同样也发送它的 FIN,客户端用 ACK 来确认。 ftp 的缺陷 在网络 上 ,ftp 以明文的方式传输数据 ,明文在网络上传输是极不安全的 ,所以这就成了 ftp 非常重大的缺陷 .现在通过 sniffer 抓包软件对 ftp 通行进行抓包 ,得到如下。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。