FTP与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称为多通道协议。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3224651.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

对象存储-MinIO-学习-01-安装部署

目录 一、介绍 二、环境信息 三、下载安装包 1、MinIO官网下载地址 2、选择版本 (1)MinIO Server (2)MinIO Client (3)MinIO SDK 四、MinIO SDK安装步骤 1、安装minio库 2、导入minio库报错&…

知识图谱入门笔记

自学参考: 视频:斯坦福CS520 | 知识图谱 最全知识图谱综述 详解知识图谱的构建全流程 知识图谱构建(概念,工具,实例调研) 一、基本概念 知识图谱(Knowledge graph):由结…

基于单片机的温控光控智能窗帘设计探讨

摘 要: 文章使用的核心原件是 AT89C52 单片机,以此为基础进行模块化的设计,在整个设计中通过加入光检测模块和温度检测模块,从而对室内的温度和光照强度进行检测,然后将检测得到的数据传输给单片机,单片机…

【目标跟踪】CoTracker 环境配置

配置 CoTracker 环境 首先下载 conda,然后安装虚拟环境。 1.创建环境:如果环境不存在,你需要创建一个新的 conda 环境。可以使用以下命令创建名为 cotracker 的环境: conda create -n cotracker python3.x 其中 3.x 是你想要安…

coze搭建工作流和Agent

coze搭建工作流和Agent Agent LLM 记忆感知规划使用工具 LLM是大语言模型,prompt提示词影响LLM的输出质量 描述需求——>背景——>解决思路,提示词文档。 当有明确的需求和实现需求的路径时,可以通过搭建工作流来完成标准化任务为…

JVM内存泄露的ThreadLocal详解

目录 一、为什么要有ThreadLocal 二、ThreadLocal的使用 三、实现解析 实现分析 具体实现 Hash冲突的解决 开放定址法 链地址法 再哈希法 建立公共溢出区 四、引发的内存泄漏分析 内存泄漏的现象 分析 总结 错误使用ThreadLocal导致线程不安全 一、为什么要有Thr…

【JavaEE】 简单认识CPU

🐵本篇文章将对cpu的相关知识进行讲解 一、认识CPU 下图是简略的冯诺依曼体系结构图 上图中,存储器用来存储数据,注意在存储器中都是以二进制的形式存储数据的,CPU就是中央处理器,其功能主要是进行各种算术运算和各种…

Java版Flink使用指南——分流导出

大纲 新建工程编码Pom.xml自定义无界流分流 测试工程代码 在之前的案例中,我们一直使用的是单个Sink来做数据的输出。实际上,Flink是支持多个输出流的。本文我们就来讲解如何在Flink数据输出时做分流处理。 我们将基于《Java版Flink使用指南——自定义无…

公司内部配置GitLab,通过SSH密钥来实现免密clone、push等操作

公司内部配置GitLab,通过SSH密钥来实现免密clone、push等操作。以下是配置SSH密钥以实现免密更新的步骤: 1.生成SSH密钥 在本地计算机上打开终端或命令提示符。输入以下命令以生成一个新的SSH密钥:ssh-keygen -t rsa -b 4096 -C "your…

自动驾驶事故频发,安全痛点在哪里?

大数据产业创新服务媒体 ——聚焦数据 改变商业 近日,武汉城市留言板上出现了多条关于萝卜快跑的投诉,多名市民反映萝卜快跑出现无故停在马路中间、高架上占最左道低速行驶、转弯卡着不动等情况,导致早晚高峰时段出现拥堵。萝卜快跑是百度 A…

Mac VSCode 突然闪退、崩溃、打不开了

1、 思路历程 VSCode 作为前端常用开发工具,其重要性就不一一描述了。 所以 VSCode 突然打不开了,真的是让我一脸懵逼。 本来以为问题不大,于是 : 1、重启了一下VSCode 2、关机重启了一下电脑; 3、清理了一下缓存&am…

RequestContextHolder多线程获取不到request对象

RequestContextHolder多线程获取不到request对象,调用feign接口时,在Feign中的RequestInterceptor也获取不到HttpServletRequest问题解决方案。 1.RequestContextHolder多线程获取不到request对象 异常信息,报错如下: 2024-07-0…

设计模式8-桥模式

设计模式8-Bridge 桥模式 由来与目的模式定义结构代码推导1. 类和接口的定义2. 平台实现3. 业务抽象4. 使用示例总结1. 类数量过多,复杂度高2. 代码重复3. 不符合单一职责原则4. 缺乏扩展性改进后的设计1. 抽象和实现分离(桥接模式)2. 抽象类…

24/7/10总结

flex布局 父项常见属性 justify-content:设置主轴上的子元素排列方式 flex-wrap:设置子元素是否换行 align-items:设置侧轴上的子元素的排列方式(单行) 拉伸要把子盒子里的高度给去掉 如果两个align-items都是center并且主轴是y轴就是这种效果…

【鸿蒙学习笔记】使用动画

官方文档:使用动画 目录标题 属性动画:通用属性发生改变时而产生的属性渐变效果animationanimateTo自定义属性动画 AnimatableExtend 转场动画:是页面或组件的切换动画 , 显示/隐藏 切换时的动画出现/消失转场:实现一个组件出现或…

Allegro纠纷管理:构建和谐交易的桥梁

在Allegro这个欧洲领先的电商平台,每天都有成千上万的交易发生,纠纷可能源于多种原因,包括但不限于商品描述不符、运输损坏、未收到货、退货退款问题等。纠纷留言便成为了连接买卖双方,解决争议的桥梁。在Allegro平台上&#xff0…

部署前端项目

常见部署方式有:静态托管服务、服务器部署 1. 静态托管服务 使用平台部署代码,比如 GitHub。 | 创建一个仓库,仓库名一般是 yourGithubName.github.io。 | 将打包后的静态文件文件上传到仓库。 | 在“Settings”(选项&#xff0…

初始化线程的4种方式

1. 继承Thread 缺点:无法获取线程的运算结果。 public class ThreadTest{public static void main(String[] args){Thread01 thread new Thread01();thread.start();}public static class Thread01 extends Thread{public void run(){System.out.println("当前…

PageDTO<T>,PageQuery,BeanUtils,CollUtils的封装

一、PageDTO<T> import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fasterxml.jackson.annotation.JsonIgnore; import com.tianji.common.utils.BeanUtils; import com.tianji.common.utils.CollUtils; import com.tianji.common.utils.…

koa + http-proxy-middleware 搭建一个带转发的静态服务器

背景 由于工作中碰到写普通页面&#xff08;未使用脚手架&#xff09;&#xff0c;需要发起接口请求&#xff0c;但普通页面又无法对接口发起正常请求&#xff0c;故编写一个Koa搭建的带转发功能的静态服务器。 起步 新建一个文件夹&#xff0c;在文件夹下打开 cmd 或者 git …