UDP套接字的作用和特点

网络 网络管理
本文我们介绍了UDP套接字的相关内容。在UDP协议的应用中,我们使用UDP套接字进行更加高效和灵活的工作。现在就让我们一起来了解一下吧。

在UDP协议的应用过程中,为了更加方便对于服务器以及客户端的接触,我们发现了UDP套接字的好处。那么什么是UDP套接字呢?现在我们就来简要对大家进行一下介绍。

 UDP套接字

UDP协议提供了一种不同于TCP协议的端到端服务。实际上UDP协议只实现两个功能:

1)在IP协议的基础上添加了另一层地址(端口)

2)对数据传输过程中可能产生的数据错误进行了检测,并抛弃已经损坏的数据。

由于其简单性,UDP套接字具有一些与我们之前所看到的TCP套接字不同的特征。

例如,UDP套接字在使用前不需要进行连接。TCP协议与电话通信相似,而UDP协议则与邮件通信相似:你寄包裹或信件时不需要进行"连接",但是你得为每个包裹和信件指定目的地址。类似的,每条信息(即数据报文,datagram)负载了自己的地址信息,并与其他信息相互独立。在接收信息时,UDP套接字扮演的角色就像是一个信箱,从不同地址发送来的信件和包裹都可以放到里面。一旦被创建,UDP套接字就可以用来连续地向不同的地址发送信息,或从任何地址接收信息。

UDP套接字与TCP套接字的另一个不同点在于他们对信息边界的处理方式不同:UDP套接字将保留边界信息。这个特性使应用程序在接受信息时,从某些方面来说比使用TCP套接字更简单。

最后一个不同点是,UDP协议所提供的端到端传输服务是尽力而为(best-effort)的,即UDP套接字将尽可能地传送信息,但并不保证信息一定能成功到达目的地址,而且信息到达的顺序与其发送顺序不一定一致(就像通过邮政部门寄信一样)。因此,使用了UDP套接字的程序必须准备好处理信息的丢失和重排。(稍后我们将给出一个这样的例子)

既然UDP协议为程序带来了这个额外的负担,为什么还会使用它而不使用TCP协议呢?

原因之一是效率:如果应用程序只交换非常少量的数据,例如从客户端到服务器端的简单请求消息,或一个反方向的响应消息,TCP连接的建立阶段就至少要传输其两倍的信息量(还有两倍的往返延迟时间)。

另一个原因是灵活性:如果除可靠的字节流服务外,还有其他的需求,UDP协议则提供了一个最小开销的平台来满足任何需求的实现。

Java程序员通过DatagramPacket 类和 DatagramSocket类来使用UDP套接字。客户端和服务器端都使用DatagramSockets来发送数据,使用DatagramPackets来接收数据。

责任编辑:佟健 来源: IBM
相关推荐

2014-12-15 09:28:54

UDP

2010-06-28 10:57:07

UDP协议

2010-07-06 17:02:06

LDP协议

2010-07-09 09:29:00

UDP协议

2019-06-04 09:00:00

Linux进程进程间通信

2010-06-13 15:42:24

UDP协议

2012-01-06 13:58:47

JavaTCP

2014-12-11 09:20:30

TCP

2010-07-07 11:29:28

UDP协议特点

2009-03-10 13:59:41

C#套接字编程

2021-02-05 15:20:06

网络安全套接字命令

2017-01-16 09:26:07

2009-08-26 09:48:48

C#异步套接字

2009-08-21 09:20:44

C#异步套接字

2010-07-07 10:42:36

TCP UDP协议

2020-10-15 19:10:05

LinuxAPI函数

2021-03-14 18:22:23

套接字网络通信

2015-11-10 16:10:22

C语言StaticConst

2015-03-31 11:24:02

2015-10-16 09:33:26

TCPIP网络协议
点赞
收藏

51CTO技术栈公众号