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

news/2024/5/18 13:17:12 标签: tcp/ip, udp, 网络

前言

日常在网上浏览一些文章时都会看到一些介绍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.niftyadmin.cn/n/230032.html

相关文章

关于合金电阻

合金电阻是一种具有高精度、高稳定性和高温度特性的电阻器件,广泛应用于各种电子设备中。选型合适的合金电阻并进行合理的设计,可以有效地提高电路的性能和可靠性。本文将从合金电阻的基本原理、选型方法及设计要点等方面进行详细介绍。 一、合金电阻的基…

spdk环境搭建

SPDK环境搭建运行环境源码拉取编译增加虚拟盘,运行样例本来21年就写了这篇博客,但因为在博客中放了vmware的密钥,违规了,最近正好又要用到spdk,就重新搭建一下spdk,简单改一下博客再发一遍运行环境 VMware…

Redis-----什么是Redis?

什么是Redis? redis是一个基于内存的key-value结构数据库。 基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛 Redis入门 redis简介 redis是一个开源的内存中的数据结构存储系统,数据库…

vulnhub DC:3.2渗透笔记

kali ip :192.168.20.130 靶机下载地址:https://www.vulnhub.com/entry/dc-32,312/ 信息收集 扫描靶机ip以及开放端口 开放了80端口访问一下 Welcome to DC-3. This time, there is only one flag, one entry point and no clues. To get the flag, youll obviously have …

浙大版《C语言程序设计实验与习题指导(第3版)》题目集

实验2-1-3 计算物体自由下落的距离 一个物体从100米的高空自由落下。编写程序&#xff0c;求它在前3秒内下落的垂直距离。设重力加速度为10米/秒2。 输入格式:本题目没有输入。 输出格式:按照下列格式输出 height 垂直距离值 #include<stdio.h> int main(){float H…

数据结构与算法七 堆

一 堆 1.1 堆定义 堆是计算机科学中一类特殊的数据结构的统称&#xff0c;堆通常可以被看做是一棵完全二叉树的数组对象。 堆的特性&#xff1a; 它是完全二叉树&#xff0c;除了树的最后一层结点不需要是满的&#xff0c;其它的每一层从左到右都是满的&#xff0c;如果最后…

一键构建分布式云原生平台

目录专栏导读一、分布式云原生平台1、应用无所不能2、运行无处不在3、服务千行白业二、分布式云原生平台关键要素1、统一应用管理2、统一流量自治3、统一数据管理4、统一运维三、多云多集群已经广泛应用四、分布式云的优势&#xff1a;1、避免厂商锁定2、满足合规化要求3、增强…

ZNS SSD 性能测试:解决传统SSD问题的高性能存储栈设计

声明 主页:元存储的博客_CSDN博客 依公开知识及经验整理,如有误请留言。 个人辛苦整理,付费内容,禁止转载。 内容摘要 3 性能测试 3.1 环境搭建 1 需要有一块西数提供的 ZNS-ssd 2 内核版本大多数功能是 5.9 才支持的,建议直接升级内核到5.12 3 依赖的安装包:linux-uti…