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

    文章

    1353

    浏览量

    79059
  • DNS
    DNS
    +关注

    关注

    0

    文章

    218

    浏览量

    19828
  • 浏览器
    +关注

    关注

    1

    文章

    1023

    浏览量

    35335
  • 数据报
    +关注

    关注

    0

    文章

    4

    浏览量

    7252
  • TCP协议
    +关注

    关注

    1

    文章

    91

    浏览量

    12070
收藏 人收藏

    评论

    相关推荐

    socket 和 UDP 协议对比

    在现代互联网威廉希尔官方网站 中,数据传输是核心功能之一。为了实现这一功能,我们依赖于各种通信协议和接口。Socket 和 UDP 是两种广泛使用的网络通信威廉希尔官方网站 ,它们在实现网络通信方面各有特点和用途
    的头像 发表于 11-12 14:28 278次阅读

    功能强大的网络通讯工具,支持各类TCPUDP、HTTP的通讯协议

    功能强大的网络通讯工具,支持各类TCPUDP、HTTP的通讯协议,简单方便,包含历史记忆功能,体积小,服务器调试最合适
    发表于 09-05 11:51 0次下载

    深度解析TCPUDP协议

    计算机与网络设备要相互通信,它们必须遵循一种共同的方法或标准。对于不同硬件平台和操作系统之间的交互而言,这种共同遵循的规范尤为关键。我们将这一系列指导通信过程的规则称为“协议”。TCPUDP
    的头像 发表于 09-02 14:53 390次阅读
    深度解析<b class='flag-5'>TCP</b>与<b class='flag-5'>UDP</b><b class='flag-5'>协议</b>

    tcpudp的区别和联系

    一、引言 在现代网络通信中,数据传输是至关重要的。为了确保数据的可靠传输,网络协议发挥着关键作用。传输控制协议TCP)和用户数据报协议UDP
    的头像 发表于 08-16 11:06 591次阅读

    西门子S7协议TCP协议的区别

    在工业自动化领域,通信协议的选择对于确保设备间的顺畅通信和数据的可靠传输至关重要。西门子S7协议和TCP协议作为两种常用的通信协议,各自具有
    的头像 发表于 06-19 15:54 3574次阅读

    mqtt协议和tcp协议区别

    在数字化的宇宙中,无数的信息以电脉冲的形式穿梭于无形的空间之中。它们遵循着既定的规则——通信协议,在此背景下,TCP与MQTT两大协议赫然而立,各具特色。 TCP/IP(Transmi
    的头像 发表于 04-30 14:02 1038次阅读

    udp是什么协议udp协议介绍

    要求不高,但对时延和带宽有要求的应用场景。 UDP协议的主要特点包括: 1. 无连接:UDP不需要建立连接,可以直接发送数据。 2. 轻量级:UDP没有
    的头像 发表于 04-19 15:57 1370次阅读

    mqtt协议和tcp协议区别

    MQTT协议和TCP协议在设计和应用上存在以下主要区别: 1. 起源与设计:MQTT协议诞生于1999年互联网初期,而TCP
    的头像 发表于 04-01 09:15 1623次阅读

    通信必备知识!TCPUDP协议介绍及使用

    TCPUDP是两个最常用的通讯协议TCP是面向连接的协议,需要在收发数据前与对方建立可靠的连接,建立连接的过程为3次握手,断开连接的过程
    的头像 发表于 03-15 08:19 1875次阅读
    通信必备知识!<b class='flag-5'>TCP</b>与<b class='flag-5'>UDP</b><b class='flag-5'>协议</b>介绍及使用

    能不能说一说TCPUDP的区别?

    能不能说一说TCPUDP的区别? TCP(传输控制协议)和UDP(用户数据报协议)是互联网传输
    的头像 发表于 02-04 11:03 534次阅读

    浅谈用户数据报协议UDP数据报传输威廉希尔官方网站

    UDP在IP数据报的头部仅仅加入了复用和数据校验(字段)。由于缺乏可靠性且属于非连接导向协议UDP应用一般允许一定量的丢包、出错和复制。
    发表于 02-03 16:32 751次阅读
    浅谈用户数据报<b class='flag-5'>协议</b><b class='flag-5'>UDP</b>数据报传输威廉希尔官方网站

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

    UDP (User Datagram Protocol) 是一种在计算机网络中使用的传输层协议。它与TCP (Transmission Control Protocol) 一样,都是在因特网
    的头像 发表于 02-02 16:33 1298次阅读

    通信网络协议栈之UDP协议威廉希尔官方网站 解析

    在通常的网络协议栈中,TCP/IP协议栈是一个常见的示例,其中UDPTCP都是传输层协议。传输
    发表于 02-01 11:00 975次阅读
    通信网络<b class='flag-5'>协议</b>栈之<b class='flag-5'>UDP</b><b class='flag-5'>协议</b>威廉希尔官方网站
解析

    TCPUDP协议有什么区别?如何通过网关实现TCP协议通信?

    TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,能够保证数据从发送方到达接收方,是物联网领域常见的通信协议之一。 TCP是面
    的头像 发表于 01-24 11:07 604次阅读
    <b class='flag-5'>TCP</b>和<b class='flag-5'>UDP</b><b class='flag-5'>协议</b>有什么区别?如何通过网关实现<b class='flag-5'>TCP</b><b class='flag-5'>协议</b>通信?

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

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