0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅谈一下TCP与UDP的区别与应用

嵌入式情报局 来源:最后一个bug 2023-02-06 14:55 次阅读

单片机应用程序开发中可能用得比较多有RS485CAN通信等等相对简洁一点的总线,由于所选用的单片机性能和资源有限,以太网并没有在单片机应用中作为一种普遍存在的对外通信接口

但随着MCU工艺、性能的逐渐加强以及嵌入式Linux平台的推行,以太网通信也慢慢开始成为开发者们所考虑使用的一种可靠通信方式。

经常有一些朋友问到,现在用不到技术和知识点是不是可以不用学?

我只能回答:技术在不断的革新,并且总是朝着更加便利和通用化方向发展,现在看似非常复杂的技术,在以后的应用上都会得以简化,但即使再简化也还是需要有必备的一些基础和认识,所以总归还是要学的,至于什么时候学就看自己的时间精力了,当然越早学习,就越多一种选择。

那么今天就浅谈一下TCP与UDP的区别与应用,并指引后续在系统通信设计上的设计考虑和选择。

1

TCP VS UDP

要想在通信的两者之间合理的选择TCP还是UDP,首先需要理清楚两者的特点与区别,下面简单梳理一下:

在学习这两种协议的时候你一定看到过这样中一句总结的话:"TCP是面向连接的可靠传输而UDP是无连接的不可靠传输。"

其实这句话已经把这两种协议大部分特点都囊括在内了 :

1、面向连接与无连接

TCP在传输数据之前需要经过三次握手建立连接进行相互确认,当需要断开连接的时候需要进行四次挥手;而对于UDP就不需要这么繁琐的连接建立过程,直接传输即可。

所以对于TCP仅仅只支持单播,只能点对点的在连接的两个端点中数据传输数据,不支持多播和广播;而对于UDP而言支持一对多、多对一和多对多的传输,这一点在通信架构设计中对这两种协议的选择非常重要,比如有些资源优先的MCU对socket连接有限等等问题。

2、字节流与数据报

UDP也称之为是用户数据报协议,而TCP为传输控制协议,所以UDP是一种面向应用报文的传输,有明显的传输边界,仅仅只是封包以后进行处理,不会进行合并和拆分,一次就传输一个报文。

但是TCP是一种面向字节流的通信协议,没有明显的边界,其主要是保证数据正确且有序,TCP存在一个数据缓存区,如果数据量较大,其会进行分包发出,而当数据较少也会等待数据达到合适的数量后进行合并发送,所以会存在多个粘包的问题,这一点在设计中需要考虑。

3、可靠传输

TCP是一种可靠传输,确认重传、差错控制、流量控制和拥塞控制等等都是传输数据过程中实现的策略和算法,这就使得TCP能够达到数据上无差错、不丢失、不重复、有序。

所以为了保证这些数据的可靠传输,TCP相比UDP的报文格式要复杂,且占用的资源也相对较多。

而UDP则不同,它仅仅只是一种最大努力交付的协议,其主要是利用IP层的无连接传通信服务,可靠性方面它是无法保障的,有点类似于串口通信,它不需要连接,只管传输。

如果你想让数据可靠,那么用户可以在应用层自己来增加可靠性传输策略和机制来进行实现,所以Udp传输数据是可能会丢失、无序。

4、实时性

UDP由于没有拥塞控制等等策略,协议上会轻量很多,其均以比较恒定的速度进行传输,不会出现发送速率降低的问题,所以在网络不好的情况下就丢包了。

而对于TCP一旦有数据包丢失,就会进行重传等等一系列机制,传输速度大大降低。

2

项目中该怎么选择?

对于TCP和UDP的选择有些朋友在开发的时候比较纠结,因为有时候采用UDP和用户方面可靠的传输机制也能够达到TCP类似的效果,比如许多支持可靠通信的UDP库,所以具体怎么选择还是要根据具体的应用和设计。

比如对于很多直播、游戏等等通过自己加入一些重传机制,可以最大可能的发挥UDP传输实时性的优点,使得呈现给用户更加流畅的画面体验。

在嵌入式、物联网方面由于项目对实时性要求高,且资源有限,UDP相对比较轻量,也是较好的选择。

但对于一些文字、文件的数据传输还是会优先使用TCP,毕竟TCP这块在保证数据的可靠性方面还是做得非常成熟,用户程序这块也可以减少一些可靠性处理。

所以最终得选择,还是要结合TCP与UDP的特点和具体项目综合考虑。







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6035

    文章

    44554

    浏览量

    634641
  • CAN通信
    +关注

    关注

    5

    文章

    93

    浏览量

    17829
  • RS485
    +关注

    关注

    39

    文章

    1156

    浏览量

    82291
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1353

    浏览量

    79055
  • UDP
    UDP
    +关注

    关注

    0

    文章

    325

    浏览量

    33931

原文标题:UDP与TCP在嵌入式项目中该怎么选?

文章出处:【微信号:嵌入式情报局,微信公众号:嵌入式情报局】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    简单总结一下TCPUDP的原理以及区别

    以人与人之间的通信为例:UDP协议就相当于是写信给对方,寄出去信件之后不能知道对方是否收到信件,信件内容是否完整,也不能得到及时反馈,而TCP协议就像是打电话通信,在这系列流程都能得到及时反馈,并能确保对方及时接收到。
    的头像 发表于 07-25 10:12 1514次阅读
    简单总结<b class='flag-5'>一下</b><b class='flag-5'>TCP</b>和<b class='flag-5'>UDP</b>的原理以及<b class='flag-5'>区别</b>

    TCP协议和UDP协议的区别有哪些

    计算机网络简答题1、TCP 协议和 UDP 协议的区别有哪些?(1)TCP 属于面向连接的协议,UDP 属于面向无连接的协议 ;(2)
    发表于 08-06 08:43

    TCPUDP区别分析

      传输层协议主要有TCPUDPUDP提供无连接的通信,不能保证数据包被发送到目标地址,典型的即时传输少量数据的应用程序通常使用UDPTCP
    发表于 09-18 10:29 2次下载

    udptcp区别在哪里

    主要介绍udptcp区别在哪里,以及TCP协议和UDP协议为什么会共存?通常我们在说到网络编程时默认是指
    发表于 12-08 14:08 8583次阅读

    TCPUDP的原理以及区别

    最近重新认知了一下TCPUDP的原理以及区别,做个简单的总结。
    发表于 08-08 14:34 1490次阅读

    TCPUDP协议的区别

    最近重新认知了一下TCPUDP的原理以及区别,做个简单的总结。
    发表于 11-03 10:25 873次阅读

    TCPUDP的作用及区别

      首先,tcpudp都是工作在传输层,用于程序之间传输数据的。数据般包含:文件类型,视频类型,jpg图片等。
    的头像 发表于 11-14 10:49 3470次阅读

    UDPTCP区别

    在上则文章中,对 TCP 的**三次握手建立连接**和**四次挥手释放连接**进行了详细地阐述,本节教程针对于 TCP 的其他内容进行讲解,首先是同处于传输层协议的`UDP`协议,这
    的头像 发表于 01-20 17:05 1736次阅读
    <b class='flag-5'>UDP</b>和<b class='flag-5'>TCP</b>的<b class='flag-5'>区别</b>

    UDP定比TCP更快吗?什么情况UDP会更慢?

    当谈到网络传输时,大多数人可能认为TCP是最好的选择。因为TCP种可靠的协议,它可以确保数据的可靠性和完整性。但是,当考虑到UDP时,
    的头像 发表于 04-03 09:38 1572次阅读
    <b class='flag-5'>UDP</b><b class='flag-5'>一</b>定比<b class='flag-5'>TCP</b>更快吗?什么情况<b class='flag-5'>下</b>用<b class='flag-5'>UDP</b>会更慢?

    UDP能否像TCP样实现可靠传输?

    连接的协议,基于字节流的传输方式。它通过确认和重传等机制来保证数据的完整性和顺序性,实现数据包的可靠传输。UDPTCP的主要区别但在某些运用场景,使用
    的头像 发表于 06-08 14:50 907次阅读
    <b class='flag-5'>UDP</b>能否像<b class='flag-5'>TCP</b><b class='flag-5'>一</b>样实现可靠传输?

    udp是什么协议 TCPUDP区别

    TCP协议提供可靠的数据传输,UDP协议提供尽量高效的数据传输。TCP协议通过使用序列号、确认应答等机制,保证数据传输的可靠性,而UDP协议不提供可靠性保证,它只是简单地把应用程序传给
    的头像 发表于 06-26 17:47 1.1w次阅读

    TCPUDP区别

    1.TCPUDP区别 TCP是面向连接的,UDP是面向无连接的; TCP只能
    的头像 发表于 11-09 09:35 5950次阅读
    <b class='flag-5'>TCP</b>和<b class='flag-5'>UDP</b>的<b class='flag-5'>区别</b>

    TCPUDP的基本区别

    TCPUDP基本区别 基于连接与无连接 TCP要求系统资源较多,UDP较少; UDP程序结构较
    的头像 发表于 11-13 15:27 4612次阅读
    <b class='flag-5'>TCP</b>与<b class='flag-5'>UDP</b>的基本<b class='flag-5'>区别</b>

    UDPTCP的主要区别 UDP能否像TCP样实现可靠传输?

    UDPTCP的主要区别 UDP能否像TCP样实现可靠传输?
    的头像 发表于 01-22 16:10 811次阅读

    udp是什么意思 简述TCPUDP区别和联系

    中的两个基本协议。然而,TCPUDP之间存在些重要的区别和联系。 首先,TCP种面向连接
    的头像 发表于 02-02 16:33 1289次阅读