UDP协议基本情况介绍

网络 网络管理
UDP协议范属于TCP协议集。那么这个中文名字叫用户数据报文协议的通信标准具体的含义,结构,应用我们都将在文中为大家介绍清楚。

在我们讲解TCP协议的时候,我们应该注意到TCP协议是一个协议集。其中有一个协议叫做UDP协议。这个就是我们今天为大家介绍的用户数据报文协议。那么它具体是做什么用的,它的结构又是如何的呢?下面我们将一一道来。

UDP协议

UDP协议(User Datagram Protocol,用户数据报文协议)与TCP协议一样也是OSI传输层上的一个通信协议。不过UDP协议是一个面向无连接的协议(TCP是向面连接的协议)。一个UDP连接的建立,不必象TCP协议那样需要服务器端侦听,也不需要有客户机端请求连接和服务器端建立连接后双方才能通信。

UDP协议概述

用户数据报协议(UDP)是一个简单的面向数据报的传输层协议,IETF RFC 768是UDP的正式规范。在TCP/IP模型中,UDP为网络层(network layer)以下和应用层(application layer)以上提供了一个简单的接口。

UDP只提供数据的不可靠交付,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份(所以UDP有时候也被认为是不可靠的数据报协议)。UDP在IP数据报的头部仅仅加入了复用和数据校验(字段)。

UDP首部字段由4个部分组成,其中两个是可选的。各16位的源端口和目的端口用来标记发送和接受的应用进程。因为UDP不需要应答,所以源端口是可选的,如果源端口不用,那么置为零。在目的端口后面是长度固定的以字节为单位的长度字段,用来指定UDP数据报包括数据部分的长度。
由于缺乏可靠性,UDP应用一般必须允许一定量的丢包、出错和复制。由于UDP协议缺乏拥塞避免和控制机制,需要基于网络的机制来减小因失控和高速UDP流量负荷而导致的拥塞崩溃效应。

UDP协议只在IP的数据报服务之上增加了很少的功能,这就是端口的功能(有了端口,运输层就能进行复用和分用)和差错检测的功能。另外,UDP协议应用程序可以是客户机,也可以是服务器程序,不必向TCP协议应用程序那样必须分别建立客户机程序和服务器程序。在远程控制软件中,如果在局域网内部传输屏幕信息,则使用UDP协议比较容易实现。但UDP协议不提供可靠性,它的可靠性是交给其他网络设备来解决。同时用UDP协议来传输的数据一般较小,它需要IP协议来为它对数据进行分段。理论上IP协议数据报的***长度为65535个字节 。

UDP数据报格式

在这个数据报格式中,源端口是可选域,当其有意义时,指的是发送应用程序的UDP端口。如果不使用它,则在此域中填0。目的端口在有特定的目的网络地址时有意义,指目标应用程序的UDP端口。长度指的是此用户数据报长度的八进制表示(这表明最小的数据报长度是8)。校验和同样是一种简单的数学运算,用于检查UDP消息中的位级错误。是对IP头、UDP头和数据中信息包头的数位取反之和,再取反得到的。UDP协议包不具备TCP协议包复杂的可靠性与控制机制,没有“序列”和“确认”两个字段。

UDP协议的应用

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

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

责任编辑:佟健 来源: 赛迪网
相关推荐

2010-03-17 17:30:26

JAVA多线程实现

2010-07-05 16:17:18

UDP协议

2009-06-25 15:29:00

软件测试

2014-12-03 14:05:01

TCPUDP

2019-06-27 08:03:34

Oracle数据库监听

2010-07-12 17:31:36

UDTUDP协议

2010-07-07 11:02:26

TCP UDP协议服务

2010-08-29 21:06:30

DHCP协议

2010-06-28 21:27:55

HART协议

2010-07-08 13:06:34

UDP协议

2010-06-29 13:00:49

EIGRP协议

2010-06-12 14:12:22

RSVP协议

2014-06-13 13:47:31

UDP

2010-07-12 15:40:24

2010-07-06 15:16:34

UDP协议

2010-07-12 14:41:35

UDP协议

2010-07-06 15:28:57

UDP协议基础

2010-07-08 12:58:03

UDP协议

2013-08-01 10:01:02

网络协议TCP协议UDP协议

2010-07-12 11:58:02

Java UDP协议
点赞
收藏

51CTO技术栈公众号