FTP与TFTP 1、TFTP(简单文件传输协议)

1、TFTP(简单文件传输协议)

TFTP是TCP/IP协议族中一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。

基于UDP协议

端口号:69

特点:简单、轻量级、易于实现

传输过程:

1. 初始化连接:
   - 服务器使用端口号69被动打开连接。
   - 客户主动打开连接,它使用临时端口作为源端口,而端口69作为目的端口,向服务器进程发送RRQ(Read Request,读取请求)报文。

2. 数据传输:
   - 服务器主动打开连接,它使用新的临时端口作为源端口,而使用收到的来自客户的临时端口作为目的端口,向TFTP客户进程发送DATA报文。DATA报文包含2B操作码、2B数据块的块号和512B数据。
   - 客户收到服务器的报文后,发送4B的ACK(Acknowledgment,确认)报文给TFTP服务器,告诉它之前发送给客户的数据报已经收到。ACK报文包含2B的操作码和2B的数据块号。
   - 重复上述的数据发送和确认过程,直到所有请求的数据发送完毕。

3. 传输结束:
   - 如果客户进程收到某个DATA报文中数据部分的长度小于512B,说明这是收到的最后一个报文,传输结束。
   - 如果待发送的数据的总长度正好是512的整数倍,服务器进程会再次发送一个包含0字节数据的DATA报文(总长度为4B=2B操作码+2B块号+0B数据),以明确指示传输结束。

4. 错误处理:
   - 如果数据包在传输过程中丢失,发出方会在超时后重新传输最后一个未被确认的数据包。
   - 大部分的错误会导致连接中断,例如不能满足请求、收到的数据包内容错误(而这种错误不能由延时或重发解释)、对需要资源的访问丢失(如硬盘满)等。但TFTP只在源端口不正确的情况下不中断连接,这种情况下,指示错误的包会被发送到源机。

TFTP协议的设计初衷是为了进行小文件传输,因此它不具备通常的FTP的许多功能,如列出目录、进行身份验证等。TFTP基于UDP协议实现,这意味着它不提供像TCP那样的可靠传输服务,但开销较小,适合在局域网中进行小文件的快速传输。

2、FTP(文件传输协议)

FTP是TCP/IP协议族中的协议之一。它包括两个组成部分,一个是FTP服务器,另一个是FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

基于TCP协议

端口号:20/21

FTP有两种工作模式:主动模式和被动模式

主动模式:先是客户端向服务端建立TCP连接(控制连接),告知客户端的开放端口,服务端知道后向客户端建立TCP连接(传输连接)

其报文过程:

被动模式:客户端先向服务端建立TCP请求(控制连接),服务端告知开放端口后,客户端再次建立TCP连接(传输连接)

其报文过程:

协议分为单通道协议和多通道协议,单通道协议即在传输过程中占用一个端口号,多通道协议即在传输过程中占用两个或两个以上的端口号。所以我们将FTP称为多通道协议。

相关推荐

  1. H3C交换机FTPTFTP

    2024-07-10 06:50:07       24 阅读
  2. 计算机网络-H3C 交换机FTPTFTP

    2024-07-10 06:50:07       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 06:50:07       4 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 06:50:07       4 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 06:50:07       3 阅读
  4. Python语言-面向对象

    2024-07-10 06:50:07       2 阅读

热门阅读

  1. 【ROS2】中级-编写动作服务器和客户端(Python)

    2024-07-10 06:50:07       8 阅读
  2. 等保测评视角下的哈尔滨智慧城市安全框架构建

    2024-07-10 06:50:07       11 阅读
  3. 如何判断服务器是否被攻击

    2024-07-10 06:50:07       10 阅读
  4. Go中gin框架的*gin.Context参数常见实用方法

    2024-07-10 06:50:07       10 阅读
  5. qt writeDatagram 函数详解

    2024-07-10 06:50:07       10 阅读
  6. CSS - 深入理解选择器的使用方式

    2024-07-10 06:50:07       9 阅读
  7. 基于gunicorn+flask+docker模型高并发部署

    2024-07-10 06:50:07       9 阅读
  8. CSS3 分页

    2024-07-10 06:50:07       9 阅读
  9. Elasticsearch 8 支持别名查询

    2024-07-10 06:50:07       10 阅读