FTP(文件传送协议)和TELNET(远程终端协议)

2023-12-13 09:33:08

FTP 使用客户服务器方式。一个FTP 服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。
主进程的工作步骤如下:
(1)打开熟知端口(端口号为21),使客户进程能够连接上。
(2)等待客户进程发出连接请求。
(3)启动从属进程处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
(4)回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发进行的。

FTP的工作情况如图所示:

图中的圆圈表示在系统中运行的进程。图中的服务器端有两个从属进程:控制进程和数据传送进程。为简单起见,服务器端的主进程没有画上客户端除了控制进程和数据传送进程外,还有一个用户界面进程用来和用户接口。

在进行文件传输时,FTP的客户和服务器之间要建立两个并行的TCP 连接:“控制连接和“数据连接”。控制连接在整个会话期间一直保持打开,FTP 客户所发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。实际用于传输文件的是“数据连接”。服务器端的控制进程在接收到 FTP客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。由于 FTP 使用了一个分离的控制连接,因此FTP的控制信息是带外(out ofband)传送的。

当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。接着,服务器程用自己传送数据的熟知端口 20与客户进程所提供的端口号建立数据传送连接。由FTP使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。

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

FTP的工作模式有两种:

1.主动模式

1.客户端需要接收数据时,会提交PORT命令到FTP服务器的TCP 21号端口,PORT命令包含客户端用什么端口接收数据

2.在传输数据时,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。

这种模式下,客户端向服务器端发起数据连接请求。

2.被动模式

1.在建立连接之后,客户端发送PASV命令至服务端的21号端口

2.服务端收到PASV命令之后,开放一个高位端口(大于1024),并将该端口号作为响应返回给客户端。客户端接收到服务器的响应后,会使用该端口建立一个数据连接,以完成数据传输工作。整个过程中,服务器端负责建立和维护数据连接,而客户端则只需要监听指定端口并接收数据即可。

此时,客户端不需要建立一个新的连接传输数据。

主动模式和被动模式的区别:

1.主动模式中FTP ?server需要建立一个新的和客户端的连接,被动模式不用

2.主动模式中传输数据时,服务端通过开放20号端口连接至客户端的指定端口传输数据。

被动模式中,服务端通过开放一个高位端口连接至客户端指定端口传输数据。
?

FTP并非对所有的数据传输都是最佳的。例如,计算机 A 上运行的应用程序要在远地计算机 B的一个很大的文件末尾添加一行信息。若使用 FTP,则应先将此文件从计算机B传送到计算机A,添加上这一行信息后,再用 FTP 将此文件传送到计算机 B,来回传送这样大的文件很花时间。实际上这种传送是不必要的,因为计算机 A 并没有使用该文件的内容。
然而网络文件系统 NFS 则采用另一种思路。NFS 允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。这样,NFS 可使用户只复制一个大文件中的一个很小的片段,而不需要复制整个大文件。对于上述例子,计算机A中的NFS 客户软件,把要添加的数据和在文件后面写数据的请求一起发送到远地的计算机B中的NFS服务器,NFS服务器更新文件后返回应答信息,这样在网络上传送的只是少量的修改数据。

补充(TELNET)

和FTP相似,服务器中的主进程等待新的请求,并产生从属进程来处理每一个连接。

为了使TELNET适应不同计算机操作系统之间的差异,定义了网络虚拟中断NVT。客户软件把用户的击键和命令转换成 NVT 格式,并送交服务器。服务器软件把收到的数据和命令从 NVT 格式转换成远地系统所需的格式。向用户返回数据时,服务器把远地系统的格式转换为NVT格式,本地客户再从NVT格式转换到本地系统所需的格式。

NVT的格式:

所有的通信都使用8位一个字节。在运转时,NVT使用7位ASCII码传送数据,而当高位置 1时用作控制命令。ASCII码共有95个可打印字符(如字母、数字、标点符号)和33 个控制字符。所有可打印字符在 NVT 中的意义和在ASCII码中一样。但NVT 只使用了 ASCII 码的控制字符中的几个。此外,NVT 还定义了两字符的CR-LF为标准的行结束控制符。当用户键入回车按键时,TELNET 的客户就把它转换为CR-LF再进行传输,而TELNET服务器要把CR-LF 转换为远地机器的行结束字符。

文章来源:https://blog.csdn.net/weixin_69884785/article/details/134856515
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。