TCP和UDP在实际工作中的应用

news2024/10/5 22:24:26

前言

日常在网上浏览一些文章时都会看到一些介绍TCP和UDP的文章,每次都是草草浏览,而没有深入的去研究,这几天在做日志采集工具的时候恰好遇到一个问题,就是采集端将采集到的内容发送到服务端时这里采用的通信协议应该如何考量?

首先来回顾一下网络模型

TCP/IP协议是Internet的核心协议,TCP/IP协议主要分为四层,从高到低依次为:应用层、传输层、网际层和网络接口层。 而上面提到的TCP和UDP就是处于传输层的通信协议。

image.png

TCP、UDP相比于日常最常使用的HTTP协议处于的系统的更下层,因此TCP和UDP比HTTP更具有可定制性,因此也诞生了很多基于TCP和UDP的通信协议,比如:用于传输文件的FTP协议,远程登录的Telnet协议,等等。当然也有使用TCP实现的HTTP协议,但是切记HTTP协议是处于应用层的协议,它的传输协议可以使用tcp协议,也可以使用其他协议,比如sctp协议。

UDP和TCP的区别

图片来源于网络。

image.png

1、从可靠性层面来讲:

TCP采用了重发技术来实现了数据传输的可靠性,具体来说就是在TCP传输过程中,发送方启动一个定时器,然后将数据包发出,当接收方收到了这个消息后就给发送方发送一个确认信息,如果发送方在定时器到点之前没有收到接收方的确认信息,则重新发送一次数据包。
TCP为了保证可靠,当发送方主机和接收方主机建立通信时,必须要经过三次握手来保证TCP连接的建立。
UDP相比于TCP减少了重发功能,并且也不需要三次握手来保证连接成功,它是面向无连接且不可靠的传输协议。

2、从网络利用率来讲:

UDP由于缺少错误重试、确认等机制,所以网络带宽利用率更高。

3、从传输效率上来讲:

UPD不需要重试、确认等机制,所以传输更快,但是不保证消息可靠,因此UDP的使用要根据实际情况来决断。

综上,TCP较UDP可靠,但是传输效率上却比UDP差了一大截.

实际使用

下面就分析下前言中所提到的日志采集客户端和服务端要使用什么协议来进行传输。
1、日志传输时如果使用TCP传输显然更安全并且可以保证服务端接收的顺序。如果采用UDP则不可能会出现日志块丢失的情况。但是日志块丢失一般出现在网络环境不好的情况下,如果网络环境出现问题即使使用TCP也会因为Tcp的超时重传机制,出现传输拥堵的问题,最终可能导致进程异常结束。
2、如果使用UDP来传输,传输效率上会很快,如果是单线程也不太可能出现日志块顺序错乱。
3、作为日志本身也允许少量的日志丢失。
因此最终使用UDP来做为日志采集工具的通信协议。

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

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

相关文章

SpringBoot源码分析

SpringBoot源码分析1.启动类分析2.SpringBoot的项目启动流程1.SpringApplication构造函数1)deduceFromClasspath()2)getSpringFactoriesInstances2.1)loadFactoryNames加载类名称2.2)createSpringFactoriesInstances创建实例2.run…

gradle环境搭建

目录 gradle是什么 gradle环境搭建 IDEA 配置 Gradle 创建 Gradle 项目 gradle是什么 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,也增加了基于Kotlin语言的kotlin-based …

Java基础总结(二)

文章目录一、ObjectObject中的成员方法(11个)toStringequalsclone二、Objects三、BigInteger和BigDecimaBigIntegerBigDecima四、正则表达式五、DateJDK7前时间相关类SimpleDateFormat类Calendar类JDK8新增时间相关类六、包装类一、Object 没有一个属性…

【密码算法 之十四】非对称算法,ECC椭圆曲线算法 之 ECDSA、ECDH、SM2、SM9等

文章目录1. ECC椭圆曲线1.1 曲线类型1.2 曲线标准1.3 表示方法1.4 曲线运算1.4.1 点加(Point Addition)1.4.2 点乘(Point Multiplication)1.4.3 倍点(Point Double)2. ECDSA2.1 私钥签名2.2 公钥验签3. ECD…

Java——旋转数组的最小数字

题目链接 牛客在线oj题——旋转数组的最小数字 题目描述 有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2]&…

Stable Diffusion成为生产力工具(五):放大并修复老照片、马赛克照片、身份证件照

S:你安装stable diffusion就是为了看小姐姐么? I :当然不是,当然是为了公司的发展谋出路~~ 预先学习: 安装webui《Windows安装Stable Diffusion WebUI及问题解决记录》。运行使用时问题《Windows使用Stable Diffusion时…

Kubernetes 多集群管理工具Kuboard v3

目录 一、概述 二、安装和基本使用 2.1 添加k8s集群 2.2 信息查看 2.2.1概要信息查看 2.2.2导入集群的节点信息 2.2.3 存储 2.3创建工作负载 一、概述 Kuboard,是一款免费的 Kubernetes 图形化管理工具,Kuboard 力图帮助用户快速在 Kubernetes 上…

Tomcat8性能优化

文章目录授人以鱼不如授人以渔目的服务器资源Tomcat整体架构Tomcat配置优化Linux环境安装运行Tomcat8AJP连接什么是AJP执行器(线程池)3种运行模式bionioapr禁用DNS查询添加Listener版本号隐藏压缩传输部署测试用的web项目查看服务器信息查看Linux版本查看…

three.js学习 01-使用最基本的方法创建出来一个threejs立方体,three.js开发环境搭建

1.当前实现的最终效果: 我们将会在页面上使用threejs的渲染器创建场景和相机,并且将一个简单几何体结果的canvas嵌入到我们的网页中 2.环境以及工具介绍: three中文官方文档地址:https://www.three3d.cn/docs/index.html 使用的开…

制作两栏布局的 6+5 种方法:从相当合理到完全错误

一个挑战 假设您需要创建一个两列布局。是的,最简单的那种:左边一列,右边一列,中间有一些空隙。有一个明显的现代解决方案: .columns {display: grid;grid-template-columns: 1fr 1fr;gap: 20px; }完毕!当…

Go 语言高质量编程

编写高质量的 Go 代码~ 前言: 本次课程简要介绍了高质量编程的定义和原则,分享了代码格式、注释、命名规范、控制流程、错误和异常处理五方面的常见编码规范,帮助我们在今后的开发过程中写出更加优秀的代码 … 什么是高质量编程&#xff1f…

凌恩生物文献分享|微刊:三代全长16s扩增子——环境多样性研究的明星

在微生物研究领域,PacBio三代全长的时代已经来临,如果你还没用过那就太可惜了! 要问三代有什么好,那我可得说道说道。 相比于传统二代Illumina平台测序,PacBio Sequel lle 平台获得的序列更长,信息量更多…

Java Servlet Tomcat(HttpServlet)处理底层机制详解总括

以tomact服务器为例: 热知识:Servlet是java定义的处理动态资源(非静态资源)的java接口规范,HttpServlet是tomcat实现了servlet接口的类 一.当第一次发送请求时候: 1.查询web.xml中的url-parrtern中配置的…

LNMP及论坛搭建

安装 Nginx 服务 systemctl stop firewalld systemctl disable firewalld setenforce 01.安装依赖包 #nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件。 yum -y install pcre-devel zlib-deve…

排序(4)——归并排序

目录 前言 1.归并排序的递归实现 1.1 归并排序概念 1.2 归并排序递归实现 2.归并排序的非递归实现 前言 今天给大家带来比较排序的最后一种,归并排序,这个排序,需要我们对递归,循环控制要有着较强的理解,我相信大…

【iOS的NSNULL nil Nil 】

前言 偶然看到了NSNULL 简单了解他的兄弟nil Nil记录一下。 NSNULL Nil nil 在iOS中,nil、Nil和NSNull都表示“空值”的概念,但它们在使用时有所不同。 nil和Nil都表示空指针,可以用于指针类型的变量、对象类型的变量、和Objective-C对象…

浙江海發進出口股份有限公司官网上线|LTD五金技术行业案例分享

​浙江海發進出口股份有限公司 (以下简称海發)是一家多元化的国际贸易企业。拥有自己的工厂,稳定的资金储备和最好的服务,在商业领域赢得了很高的声誉。地处长江三角洲交通经济中心嘉兴市。 浙江海發進出口股份有限公司 (以下简称海發)是一家多元化的国…

Python轻量级Web框架Flask(5)——Flask模型基础和数据迁移

0、前言:学习这部分的前提是对python的面向对象有一定的了解,同时对MySQL有扎实的学习 1、Flask模型基础知识: Flask模型 ORM (注意:在flask中用ORM可以实现SQL语句功能,但是并不意味着SQL语句不重要&am…

NISACTF2023 WP

NISACTF2023 WP 前言 2年多没玩CTF了,pwn显得手生了不少,我的PWN环境已经在硬盘的某个角落里吃灰了。今天参加了一场校赛,捣鼓了一下午,Reverse和PWN都AK了。其实比赛是新手向,没啥难度,不过有道PWN设计的…

ChatGPT实战100例 - (02) 自动出PPT它不香么?

文章目录ChatGPT实战100例 - (02) 自动出PPT它不香么?一、需求与思路1. 需求:出个PPT,5分钟后要用2. 思路:生成markdown然后转化二、生成markdown语法的思维导图1. 问题2. 回答三、把markdown文本转换成PPTChatGPT实战100例 - (02…