理解UDP套接字

原创 2016年06月02日 08:06:55
TCP 是面向连接的传输协议,建立连接时要经过三次握手,断开连接时要经过四次握手,中间传输数据时也要回复ACK包确认,多种机制保证了数据能够正确到达,不会丢失或出错。

UDP 是非连接的传输协议,没有建立连接和断开连接的过程,它只是简单地把数据丢到网络中,也不需要ACK包确认。

UDP 传输数据就好像我们邮寄包裹,邮寄前需要填好寄件人和收件人地址,之后送到快递公司即可,但包裹是否正确送达、是否损坏我们无法得知,也无法保证。UDP 协议也是如此,它只管把数据包发送到网络,然后就不管了,如果数据丢失或损坏,发送端是无法知道的,当然也不会重发。

既然如此,TCP应该是更加优质的传输协议吧?

如果只考虑可靠性,TCP的确比UDP好。但UDP在结构上比TCP更加简洁,不会发送ACK的应答消息,也不会给数据包分配Seq序号,所以UDP的传输效率有时会比TCP高出很多,编程中实现UDP也比TCP简单。

UDP 的可靠性虽然比不上TCP,但也不会像想象中那么频繁地发生数据损毁,在更加重视传输效率而非可靠性的情况下,UDP是一种很好的选择。比如视频通信或音频通信,就非常适合采用UDP协议;通信时数据必须高效传输才不会产生“卡顿”现象,用户体验才更加流畅,如果丢失几个数据包,视频画面可能会出现“雪花”,音频可能会夹带一些杂音,这些都是无妨的。

与UDP相比,TCP的生命在于流控制,这保证了数据传输的正确性。

最后需要说明的是:TCP的速度无法超越UDP,但在收发某些类型的数据时有可能接近UDP。例如,每次交换的数据量越大,TCP 的传输速率就越接近于 UDP。
版权声明:本文为芝麻软件工作室原创文章,未经芝麻软件工作室允许不得转载。

相关文章推荐

TCP/UDP的套接字Socket通信工作流程

一.面向连接的套接字Socket通信工作流程为了实现服务器与客户机的通信,服务器和客户机都必须建立套接字。服务器与客户机的工作原理可以用下面的过程来描述。 1.服务器先用 socket 函数...

C#实现UDP套接字的通讯

  • 2011年05月10日 11:02
  • 50KB
  • 下载

UDP套接字实例.

  • 2015年09月16日 15:40
  • 32KB
  • 下载

Android开发菜鸟级入门4--网络编程之套接字UDP

由于项目需要,现在小白开始安卓网络编程的学习 安卓的网络编程分为 基于socket 基于http 首先来学基于socket的 socket通信有两种协议UDP和TCP UDP不需要连接但不保证发送成功...

UDP套接字详解

  • 2015年09月16日 15:43
  • 160KB
  • 下载

TCP和UDP套接字_简单的客户/服务器

  • 2015年06月10日 23:10
  • 4.18MB
  • 下载

Java Socket(套接字)编程、TCP和UDP通信过程详解

网路上的两个程序通过一个双向的通信连接实现数据的交换,这个双向链路的一端被称为一个Socket。Socket也被称为套接字,可以用来实现不同虚拟机或不同计算机之间的通信。在Java语言中,Socket...

UNIX域套接字及TCP、UDP示例

UNIX域套接字用于在同一台机器上运行的进程之间的通信。虽然因特网域套接字可用于同一目的,但UNIX域套接字的效率更高。UNIX域套接字仅仅复制数据;它们并不执行协议处理,不需要添加或删除网络报头,无...
  • bytxl
  • bytxl
  • 2015年08月22日 18:08
  • 2438
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:理解UDP套接字
举报原因:
原因补充:

(最多只允许输入30个字)