计算机网络6——应用层2

一、文件传送协议FTP

1、概述

文件传送协议 FTP(File Transfer Protocol)[RFC 959,STD9]曾是互联网上使用得最广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用ASCII码),并允许文件具有存取权限(如访问文件的用户必须经过授权并输入有效的口令)。FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。

在互联网发展的早期阶段,用FTP传送文件约占整个互联网的通信量的三分之一,而由电子邮件和域名系统所产生的通信量远小于FTP所产生的通信量。只是到了1995年, W W W WWW WWW的通信量才首次超过了FTP。

在下面 分别介绍基于 TCP的 FTP 和基于 UDP 的简单文件传送协议 TFTP它们都是文件共享协议中的一大类,即复制整个文件,其特点是:若要存取一个文件,就必须先获得一个本地的文件副本。如果要修改文件,只能对文件的副本进行修改,然后再将修改后的文件副本传回到原节点。

文件共享协议中的另一大类是联机访问(on-line access)。联机访问意味着允许多个程序同时对一个文件进行存取。和数据库系统的不同之处是用户不需要调用一个特殊的客户进程而是由操作系统提供对远地共享文件进行访问的服务,就如同对本地文件的访问一样。这就使用户可以用远地文件作为输入和输出来运行任何应用程序,而操作系统中的文件系统则提供对共享文件的透明存取。

透明存取的优点是:将原来用于处理本地文件的应用程序用来处理远地文件时,不需要对该应用程序做明显的改动。属于文件共享协议的有网络文件系统NFS(Network File System)。网络文件系统 NFS 最初是在 UNIX操作系统环境下实现文件和目录共享的。NFS可使本地计算机共享远地的资源,就像这些资源在本地一样由于 NFS 原先是美国 SUN 公司在 TCP/IP 网络上创建的,因此目前 NFS 主要应用在 TCP/TP网络上。然而现在 NFS也可在 OS/2,MS-Windows,NetWare 等操作系统上运行。NFS 还没有成为互联网的正式标准。

2、FTP的基本工作原理

网络环境中的一项基本应用就是将文件从一台计算机中复制到另一台可能相距很远的计算机中。初看起来,在两台主机之间传送文件是很简单的事情。其实这往往非常困难。原因是众多的计算机厂商研制出的文件系统多达数百种,且差别很大。经常遇到的问题是:

  1. 计算机存储数据的格式不同。
  2. 文件的目录结构和文件命名的规定不同。
  3. 对于相同的文件存取功能,操作系统使用的命令不同。
  4. 访问控制方法不同。
    文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用TCP可靠的运输服务。
    FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
    FTP使用客户服务器方式。一个FTP服务器进程可同时为多个客户进程提供服务。FTP一个主进程,负责接受新的请求:另外有若干个从属进程,的服务器进程由两大部分组成:负责处理单个请求。
    主进程的工作步骤如下:
    • 打开熟知端口(端口号为21),使客户进程能够连接上。
    • 等待客户进程发出连接请求。
    • 启动从属进程处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
    • 回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发进行的。

FTP的工作情况如下图所示。图中的椭圆圈表示在系统中运行的进程。图中的服务器端有两个从属进程:控制进程和数据传送进程。为简单起见,服务器端的主进程没有画上。客户端除了控制进程和数据传送进程外,还有一个用户界面进程用来和用户接口。
在进行文件传输时,FTP的客户和服务器之间要建立两个并行的TCP连接:“控制连接和“数据连接”。控制连接在整个会话期间一直保持打开,FTP客户所发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。实际用于传输文件的是“数据连接”。服务器端的控制进程在接收到FTP客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。由于FTP使用了一个分离的控制连接,因此FTP的控制信息是带外(outofband)传送的。
在这里插入图片描述
当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口21同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。接着,服务器进程用自己传送数据的熟知端口20与客户进程所提供的端口号建立数据传送连接。由于FTP使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。

使用两个独立的连接的主要好处是使协议更加简单和更容易实现,同时在传输文件时还可以利用控制连接对文件的传输进行控制。例如,客户发送“请求终止传输”。

FTP并非对所有的数据传输都是最佳的。例如,计算机A上运行的应用程序要在远地计算机 B的一个很大的文件末尾添加一行信息。若使用FTP,则应先将此文件从计算机B传送到计算机 A,添加上这一行信息后,再用FTP将此文件传送到计算机B,来回传送这样大的文件很花时间。实际上这种传送是不必要的,因为计算机A并没有使用该文件的内容。

3、简单文件传送协议 TFTP

TCP/IP 协议族中还有一个简单文件传送协议 TFTP(Trivial File TransfeProtocol),它是一个很小且易于实现的文件传送协议[RFC 1350,STD33]。虽然TFTP也使用客户服务器方式,但它使用UDP数据报,因此TFTP需要有自己的差错改正措施。TFTP只支持文件传输而不支持交互。TFTP没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。

TFTP的主要优点有两个。第一,TFTP可用于UDP环境。例如,当需要将程序或文件同时向许多机器下载时就往往需要使用 TFTP。第二,TFTP 代码所占的内存较小。这对较小的计算机或某些特殊用途的设备是很重要的。这些设备不需要硬盘,只需要固化了TFTP、UDP和IP的小容量只读存储器即可。当接通电源后,设备执行只读存储器中的代码,在网络上广播一个 TFTP请求。网络上的 TFTP 服务器就发送响应,其中包括可执行二进制程序。设备收到此文件后将其放入内存,然后开始运行程序。这种方式增加了灵活性,也减少了开销。

TFTP的主要特点是:

  • 每次传送的数据报文中有512字节的数据,但最后一次可不足512 字节。
  • 数据报文按序编号,从1开始。
  • 支持ASCII码或二进制传送。
  • 可对文件进行读或写。
  • 使用很简单的首部。

TFTP的工作很像停止等待协议(见第5章5.4.1节)。发送完一个文件块后就等待对方的确认,确认时应指明所确认的块编号。发完数据后在规定时间内收不到确认就要重发数据PDU。发送确认 PDU的一方若在规定时间内收不到下一个文件块,也要重发确认PDU。这样就可保证文件的传送不致因某一个数据报的丢失而告失败。

在一开始工作时。TFTP客户进程发送一个读请求报文或写请求报文给TFTP服务器进程,其熟知端口号码为69。TFTP服务器进程要选择一个新的端口和TFTP客户进程进行通信。若文件长度恰好为512字节的整数倍,则在文件传送完毕后,还必须在最后发送一个只含首部而无数据的数据报文。若文件长度不是512字节的整数倍,则最后传送数据报文中的数据字段一定不满512字节,这正好可作为文件结束的标志。

三、远程终端协议 TELNET

TELNET 是一个简单的远程终端协议[RFC 854,STD8]。用户用TELNET 就可在其所在地通过 TCP连接注册(即登录)到远地的另一台主机上(使用主机名或IP地址)。TELNET 能将用户的击键传到远地主机,同时也能将远地主机的输出通过TCP连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上的。因此,TELNET 又称为终端仿真协议。

TELNET并不复杂,以前应用得很多。现在由于计算机的功能越来越强,用户已较少使用 TELNET了,可作为历史资料了解一下即可。

TELNET也使用客户服务器方式。在本地系统运行TELNET客户进程,而在远地主机则运行 TELNET服务器进程。和FTP的情况相似,服务器中的主进程等待新的请求,并产生从属进程来处理每一个连接。

TELNET 能够适应许多计算机和操作系统的差异。例如,对于文本中一行的结束,有的系统使用 ASCI码的回车(CR),有的系统使用换行(LF),还有的系统使用两个字符,回车-换行(CR-LF)。又如,在中断一个程序时,许多系统使用Control-C(^C),但也有系统使用ESC 按键。为了适应这种差异,TELNET定义了数据和命令应怎样通过互联网。这些定义就是所谓的网络虚拟终端NVT(Network Virtual Terminal)。下图说明了NVT的意义。客户软件把用户的击键和命令转换成NVT格式,并送交服务器。服务器软件把收到的数据和命令从NVT格式转换成远地系统所需的格式。向用户返回数据时,服务器把远地系统的格式转换为NVT格式,本地客户再从NVT格式转换到本地系统所需的格式。
在这里插入图片描述
NVT的格式定义很简单。所有的通信都使用8位一个字节。在运转时,NVT使用7位ASCI码传送数据,而当高位置1时用作控制命令。ASCII码共有95个可打印字符(如宇母、数字、标点符号)和33个控制字符。所有可打印字符在NVT中的意义和在 ASCII 码中一样。但 NVT只使用了 ASCII 码的控制字符中的几个。此外,NVT 还定义了两字符的CR-LF 为标准的行结束控制符。当用户键入回车按键时,TELNET的客户就把它转换为CR-LE再进行传输,而TELNET服务器要把CR-LF转换为远地机器的行结束字符。

TELNET 的选项协商(Option Negotiation)使 TELNET 客户和 TELNET 服务器可商定使用更多的终端功能,协商的双方是平等的。

  • 26
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值