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

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

3天内不再提示

TCP协议和UDP协议对比 UDP协议的原理及应用

454398 来源:博客园 作者:默语 2020-10-26 15:05 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言

TCP协议在不可靠的网络环境上提供了可靠的通信通道,隐藏了大量的底层细节,使应用程序更加简洁。但有些应用并不需要这么高的可靠性,并不需要按序交付,而且TCP为了提高可靠性也增加了延时,在某些对延时或抖动要求很高的情景下并不适用。为此,UDP(User Datagram Protocol,用户数据报协议)被提出。UDP虽然应用较为广泛,比如DNS查询等,但一直不是重要的角色。自从WebRTC被提出以来,它可以使浏览器在UDP的基础上实现原生的语音和视频实时通信及其他形式的P2P通信,UDP在这种境况下显得更加重要。本文大致介绍UDP的原理及应用,以求加深对其理解。

UDP

TCP是面向连接的,需要三次握手建立连接之后再传输数据,而是UDP面向无连接的,它并不能保证信息交付,也不能保证按序交互,也不跟踪连接状态,也不需要拥塞控制。

要了解UDP和为什么它通常被称为“空协议”,我们首先需要了解一下互联网协议(IP),它位于TCP和UDP协议层下面。IP层主要任务就是基于地址将数据报从源主机发送到目的主机。要做到这一点,消息都封装在一个IP包,标识源和目的地址,以及一些其他路由参数。

我们再次强调一下上面提到的数据报这个术语的含义:IP层提供了不可靠的数据传输,既没有消息确认,也没有丢失通知, IP层直接把这一层的不可靠性暴露给上层。如果一个数据报在传输过程中因为某个路由节点拥塞,高负荷,或因其他原因丢失,那么由IP上层的协议来检测,恢复,并重传数据 - 当然这是在上层有这个需求的时候!IPv4的首部结构如下:

UDP协议会用自己的分组结构封装用户信息,其数据格式如下:

如上图所示,我们在UDP数据报里增加了源端口和目标端口,这样就使得当IP分组被送到接收端后,接收端就可以拆开UDP分组,根据目标端口找到对应的应用程序,然后再把数据传递给应用程序。

从IP和UDP的数据格式可以看到,它们的首部都带有校验和,都可以用来校验数据,那么应用程序即使忽略UDP的校验和也不影响数据完整性,校验和字段是可选的。这意味着UDP层所有的错误检测和纠错,可以委托给上述应用层校验。说到底,UDP仅仅是在IP层上通过嵌入应用程序的源端口和目标端口,提供了一个“应用程序多路复用”机制。由此可以得到UDP的特征如下:

不保证消息交付:不确认,不重传,无超时;

不保证交付顺序:不设置包序号,不重排,不发生队首阻塞;

不跟踪连接状态:不必建立连接或重启状态机;

不需要拥塞控制:不内置客户端或网络反馈机。

TCP是一个面向字节流的协议,能够通过多个分组的形式发送应用程序的消息数据,包内本身没有任何明确的消息边界。为了实现这一目标,连接两端都分配了连接状态,并且数据包被排序,重发丢包,按顺序发送。相反UDP数据报有明确的界限:每一个数据报都被打包到一个IP包中,应用层读到的每一个UDP包都是完整的信息 -数据报不能被分割

关于数据报(Datagram)详细定义如下:

数据报:一个自包含的,独立的数据实体,其承载了足够的信息,使其可以从源路由到达目标路由,而不依赖于在网络节点前的数据交换和传输网络没有任何依赖。

数据报文(Datagram)和数据包(Packet)两个术语往交替使用,但其实二者有一些细微差别。数据包(packet)一般用来描述任何格式的数据块,而数据报(Datagram)往往被保留用来描述通过一个不可靠的服务传输的数据包(Packet) - 没有传输保障,没有失败通知。所以UDP包一般或者说更准确的被称为数据报(Datagram)。

UDP是一个简单的,无状态的协议,适合于引导上层的其他应用层协议 - 几乎所有的协议决策都留给它上面的应用层。然而,在你想实现自己的协议来取代TCP,你应该仔细考虑有关的复杂性,如UDP与其它层的交互(比如NAT穿越),以及网络协议一些最佳实践。没有仔细的规划和设计,设计一个新的协议不是一个好主意,最终也许实现成一个的简陋的TCP版本。
编辑:hfy

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

    关注

    8

    文章

    1434

    浏览量

    83782
  • DNS
    DNS
    +关注

    关注

    0

    文章

    230

    浏览量

    21238
  • 浏览器
    +关注

    关注

    1

    文章

    1043

    浏览量

    37175
  • 数据报
    +关注

    关注

    0

    文章

    4

    浏览量

    7395
  • TCP协议
    +关注

    关注

    1

    文章

    101

    浏览量

    12825
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于Xilinx K7 325t的千兆网UDP协议实现小记

    基于xilinx k7 325t实现的千兆网udp协议,只需要设置好IP,端口,就可以直接给数据,基本等同于透传,可以不用管底层协议
    的头像 发表于 04-27 15:04 103次阅读
    基于Xilinx K7 325t的千兆网<b class='flag-5'>UDP</b><b class='flag-5'>协议</b>实现小记

    TCP/IP(Socket)协议深度剖析

    TCP/IP协议作为互联网通信的基础架构,其核心机制Socket编程承载着全球数据交换的使命。本文将深入剖析这一协议的七层架构、三次握手与四次挥手的精妙设计、流量控制与拥塞控制的动态平衡,以及现代互联网环境下面临的挑战与演进方向
    的头像 发表于 03-03 17:06 817次阅读

    工业级4G路由器:TCP/IP与UDP协议,解锁工业物联网高效传输新范式

    /以太网能力,正重新定义工业数据传输的边界。其核心优势,在于对TCP/IP与UDP协议的深度适配,为不同场景提供精准的通信解决方案。    ‌TCP/IP
    的头像 发表于 01-19 18:25 331次阅读
    工业级4G路由器:<b class='flag-5'>TCP</b>/IP与<b class='flag-5'>UDP</b><b class='flag-5'>协议</b>,解锁工业物联网高效传输新范式

    MQTT协议为什么成为物联网协议

    不稳定环境下的通信需求。以下是具体分析: 1. 轻量级设计,适配资源受限设备 极简协议头 :MQTT协议头最小仅2字节,远低于HTTP(通常数百字节)或CoAP(虽轻量但基于UDP,可靠性较弱)。例如,传输一条包含少量数据的消息
    的头像 发表于 12-10 09:15 642次阅读

    TCPUDP的区别

    首先概括一下基本的区别: TCP是一个面向连接的、可靠的、基于字节流的传输层协议。 而UDP是一个面向无连接的传输层协议。(就这么简单,其它TC
    发表于 12-09 07:24

    请问TCPUDP 可以使用同一个端口吗?

    TCPUDP 可以使用同一个端口吗?
    发表于 12-03 08:01

    为什么会有TCP/IP协议

    见了面,完全不能交流信息。因而他们需要定义一些共通的东西来进行交流,TCP/IP就是为此而生。TCP/IP不是一个协议,而是一个协议族的统称。 里面包括了IP
    发表于 12-03 06:28

    SIP协议和私有协议广播区别

    电子发烧友网站提供《SIP协议和私有协议广播区别.docx》资料免费下载
    发表于 11-06 16:31 1次下载

    以太网通讯在FPGA上的实现

    最底层,分为接收RX和发送TX两个部分,主要用来实现上文所述的IP协议和MAC层协议。TX部分接收上层发来的UDPTCP报文,将其添加IP头并封装为一个完整的以太网帧后由RMII接口
    发表于 10-30 07:45

    温度传感器一般走哪些协议和接口

    温度传感器常用的通信协议和接口可根据应用场景(如工业控制、智能家居、物联网等)和传输需求(距离、速度、功耗等)分为有线和无线两大类,具体协议和接口的选择需结合传感器类型、系统架构及成本等因素综合考量
    的头像 发表于 09-23 17:22 1788次阅读

    第五章 W55MH32 UDP示例

    本文介绍了在 W55MH32 芯片上实现 UDP 通信及数据回环测试的方法。阐述了 UDP 协议的概念、特点、应用场景、报文传输流程和报文结构,展示了实现过程,借助网络调试工具完成测试。
    的头像 发表于 07-24 09:13 1404次阅读
    第五章 W55MH32 <b class='flag-5'>UDP</b>示例

    什么是Modbus TCP协议

    Modbus TCP是一种基于TCP/IP协议的Modbus通信协议,用于在客户机和服务器之间进行数据通信。它常用于工业自动化控制、电力监控与管理、温湿度监测等领域。Modbus
    的头像 发表于 07-23 17:18 4842次阅读
    什么是Modbus <b class='flag-5'>TCP</b><b class='flag-5'>协议</b>

    常见的工业自动化协议有哪些?

    ,允许使用TCP/IP和UDP/IP等协议通过以太网进行通信。主要协议之一是现场总线协议,它替代了一系列普遍的
    的头像 发表于 07-17 13:08 631次阅读
    常见的工业自动化<b class='flag-5'>协议</b>有哪些?

    RDMA简介3之四种子协议对比

    CPU卸载到RDMA网卡处理。仅需要使用普通以太网交换机和iWARP网卡即可实现路由。但在大规模部署时,由于TCP/IP协议点对点连接的特性,将会占用大量的内存资源,对系统规格的要求更高在对比这四种
    发表于 06-04 16:05

    DLT645协议和Modbus协议有什么区别

    DLT645协议和Modbus协议的区别主要体现在协议定位、数据帧结构、操作类型与功能、适用场景等方面,以下为具体分析: 协议定位与适用领域 DLT645
    的头像 发表于 05-15 17:47 2242次阅读