`
crazyox
  • 浏览: 185306 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

摘自:http://www.cnpaf.net/class/UDP/0532918532758197.html

UDP协议是英文UserDatagramProtocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。

  与我们所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。

  UDP协议的主要作用是将网络数据流量压缩成数据报的形式。一个典型的数据报就是一个二进制数据的传输单位。每一个数据报的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。

UDP报头

UDP报头由4个域组成,其中每个域各占用2个字节,具体如下:

源端口号

目标端口号

数据报长度

校验值

  UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。

  数据报的长度是指包括报头和数据部分在内的总的字节数。因为报头的长度是固定的,所以该域主要被用来计算可变长度的数据部分(又称为数据负载)。数据报的最大长度根据操作环境的不同而各异。从理论上说,包含报头在内的数据报的最大长度为65535字节。不过,一些实际应用往往会限制数据报的大小,有时会降低到8192字节。

  UDP协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检测是否出错。这与TCP协议是不同的,后者要求必须具有校验值。

UDPvs.TCP

  UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。

  与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。

  相对于TCP协议,UDP协议的另外一个不同之处在于如何接收突法性的多个数据报。不同于TCP,UDP并不能确保数据的发送和接收顺序。例如,一个位于客户端的应用程序向服务器发出了以下4个数据报

D1

D22

D333

D4444

但是UDP有可能按照以下顺序将所接收的数据提交到服务端的应用:

D333

D1

D4444

D22

事实上,UDP协议的这种乱序性基本上很少出现,通常只会在网络非常拥挤的情况下才有可能发生。

UDP协议的应用

  也许有的读者会问,既然UDP是一种不可靠的网络协议,那么还有什么使用价值或必要呢?其实不然,在有些情况下UDP协议可能会变得非常有用。因为UDP具有TCP所望尘莫及的速度优势。虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。

  关于UDP协议的最早规范是RFC768,1980年发布。尽管时间已经很长,但是UDP协议仍然继续在主流应用中发挥着作用。包括视频电话会议系统在内的许多应用都证明了UDP协议的存在价值。因为相对于可靠性来说,这些应用更加注重实际性能,所以为了获得更好的使用效果(例如,更高的画面帧刷新速率)往往可以牺牲一定的可靠性(例如,会面质量)。这就是UDP和TCP两种协议的权衡之处。根据不同的环境和特点,两种传输协议都将在今后的网络世界中发挥更加重要的作用

总结: 

1.UDP协议是英文UserDatagramProtocol的缩写,即用户数据报协议

2.UDP和TCP同属于传输层协议;

3.TCP协议有安全保障机制(发送消息后,接收方会发送回执给发送方,发送方必须收到回执才能继续后面的发送),而UDP协议没有安全保证机制;

4.TCP高可靠性,低效率,占用带宽多;

5.UDP高效率,几乎没有安全保障,需要用户自己实现安全保障.


分享到:
评论

相关推荐

    基于UDP协议通信的简单客户端/服务器

    **UDP协议简介** UDP是一种无连接的传输层协议,它不像TCP那样建立连接后再进行数据交换,而是直接发送数据报文。这种设计使得UDP具有更低的延迟和更高的效率,特别适用于对实时性要求高的应用,如视频流媒体、在线...

    基于UDP协议的Socket网络编程模式的实现

    #### UDP协议简介 用户数据报协议(UDP)是互联网协议簇中的一个无连接的传输层协议,提供面向事务的简单不可靠信息传递服务。与TCP协议相比,UDP不保证数据包的可靠传递、顺序传递以及流量控制等特性,因此它的...

    C#的Socket实现UDP协议通信

    ### UDP协议简介 用户数据报协议(UDP)是互联网协议族中的一个成员,位于传输层,与TCP协议并列。其主要特点是无连接且不可靠的数据传输,这意味着UDP在发送数据时不会建立连接,也不会确认数据是否被接收方成功...

    一个基于UDP协议的文件传输应用程序的实现

    #### UDP协议简介 UDP(User Datagram Protocol)用户数据报协议是一种无连接的协议,用于在网络上传输数据包。与TCP(传输控制协议)相比,UDP不提供复杂的错误校验、重传机制等功能,因此传输效率更高。UDP协议...

    10.UDP协议.pdf

    UDP协议简介 pdf

    Qt使用udp协议示例,简单易懂

    **UDP协议简介** UDP是一种无连接的、不可靠的传输协议,它不保证数据包的顺序、完整性和可靠性,但具有较低的开销,适合实时音视频传输或快速响应的游戏应用等场景。 **QUdpSocket详解** `QUdpSocket`是Qt提供的...

    socket网络(UDP协议编程)

    "socket网络(UDP协议编程)"这个标题明确指出了我们要讨论的核心内容——使用套接字(socket)进行网络编程,并且聚焦在用户数据报协议(UDP)上。UDP是一种无连接的、不可靠的传输层协议,与TCP(传输控制协议)...

    Java中实现UDP协议编程的方法

    #### UDP协议简介 UDP(User Datagram Protocol)即用户数据报协议,是在网络中与TCP协议并列的一种用于处理数据包的协议。它位于OSI七层模型中的第四层——传输层,紧接在IP协议之上。与TCP相比,UDP的主要特点是...

    基于UDP协议的QQ数据一般格式.pdf

    #### UDP协议简介 用户数据报协议(User Datagram Protocol,UDP)是一种无连接的传输层协议,它提供了面向事务的简单不可靠的信息传送服务。UDP协议在IP报文的头部仅仅增加了8个字节的开销,在性能上远超TCP等面向...

    网络协议TCP/IP实验六 UDP 协议分析实验

    ### 知识点一:UDP协议基础 - **定义**:用户数据报协议(User Datagram Protocol,UDP)是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。与TCP相比,UDP不保证数据包的顺序、可靠性或流量控制。...

    基于UDP协议P2P通信技术的分析及实现

    UDP协议简介 UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议,相比于TCP协议,UDP不保证数据包的可靠传输,也不提供流量控制和拥塞控制机制。尽管如此,UDP以其高效的数据传输能力,在...

    UDP 协议 Verilog FPGA

    在FPGA(Field-Programmable Gate Array)设计中,使用Verilog语言实现UDP协议,可以构建高速、实时的数据传输系统。 Verilog是一种硬件描述语言,广泛用于数字电路的设计和验证。在FPGA中,通过Verilog代码,可以...

    FPGA实现UDP协议栈,verilog语言附带说明

    在FPGA(Field-Programmable Gate Array)上实现UDP协议栈,可以用于快速处理网络数据传输,常见于实时性要求高的应用,如视频流传输、游戏网络通信等。 首先,我们要理解UDP协议的基本原理。UDP不提供连接建立、...

    labview局域网通信,UDP协议

    **UDP协议简介** UDP是一种无连接的、不可靠的传输层协议,它不提供确认、顺序保证或错误恢复机制,但其传输速度快,适合实时性要求高的应用。在LabVIEW中,我们可以创建UDP套接字来发送和接收数据,适用于快速交换...

    UDP协议的视频图像传输

    基于 UDP 协议的视频图像传输研究与实现 本文研究了基于 UDP 协议的视频图像传输,旨在解决视频图像传输中的延迟和抖动问题。在视频图像传输中, UDP 协议的使用能够提高传输效率,但是也存在一些挑战,如延迟、...

    基于UDP协议的聊天工具

    【基于UDP协议的聊天工具】是一款使用C#编程语言实现的通信软件,它利用了用户数据报协议(UDP)来实现实时的数据传输。UDP是一种无连接的、不可靠的传输协议,它在互联网协议栈中位于传输层,相较于TCP协议,它的...

    UDP协议通信

    然而,这也意味着,如果数据在网络中丢失、重复或乱序,UDP协议本身不会进行任何修正,需要应用程序自行处理这些问题。 这个"UDP协议通信"的demo可能包括以下几个关键点: 1. **UDP套接字编程**:在C++、Java、...

    rfc768(UDP协议标准文档).pdf

    ### UDP协议标准文档(RFC768)知识点详解 #### 一、引言 《用户数据报协议(UDP)》(RFC768)由Jon Postel于1980年8月28日发布,该文档定义了UDP协议的基本框架和功能特性,旨在为在互联网环境下提供一种数据报模式...

    利用UDP协议对网络内自研通讯设备参数进行可视化配置的技术应用.pdf

    UDP 协议简介 UDP(User Datagram Protocol)是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP 协议的优点是可以快速传输数据,不需要建立连接,也不需要维护连接状态。但是,UDP 协议也存在...

Global site tag (gtag.js) - Google Analytics