资讯专栏INFORMATION COLUMN

快速了解UDP协议

Tecode / 2147人阅读

摘要:是什么是的缩写,是一种用户数据报协议,又称为用户数据报文协议。协议所需资源多,首部需个字节不算可选项,首部字段只需个字节。协议没有数据边界,有。因此容易发生粘包的现象。采用协议,通过服务器中转方式。

UDP是什么?
UDP是User Datagram Protocol的缩写,是一种用户数据报协议,又称为用户数据报文协议。区别于TCP是面向连接的协议,UDP是一个简单的面向数据报的传输层协议,UDP的发起和接受是不需要经过连接的,仅仅只需要发送在对应端口上进行监听接受即可,不需要两个客户端一定是连接的

由于UDP的速度快,所以适合于在线视频媒体,电话视频聊天,电视广播,多人在线游戏这些项目

UDP传输不可靠的原因有五点:

  1. 它一但把数据发送给网络的数据发送出去,就不保留备份数据
  2. 在UDP的数据层面,只管发送或者是接受数据,而不对这个数据进行保存备份重发等等
  3. UDP在IP数据报的头部仅仅加入了复用和数据校验
  4. 发送端生产数据、接受端从网络中抓取数据,发送的时机和抓取的时机不想等,可能会导致客户端发送的数据服务器端没有接受到,在UDP中其实是没有标准的客户端和服务器端的,
  5. UDP结构简单,无校验,速度快,容易丢包、可广播

TCP协议和UDP协议的区别是什么?
1.TCP协议是有连接的,有连接的意思是开始传输实际数据之前TCP的客户端和服务器端必须通过三次握手建立连接,会话结束之后也要结束连接。而UDP是无连接的
2.TCP协议保证数据按序发送,按序到达,提供超时重传来保证可靠性,但是UDP不保证按序到达,甚至不保证到达,只是努力交付,即便是按序发送的序列,也不保证按序送到。
3.TCP协议所需资源多,TCP首部需20个字节(不算可选项),UDP首部字段只需8个字节。
4.TCP有流量控制和拥塞控制,UDP没有,网络拥堵不会影响发送端的发送速率
5.TCP是一对一的连接,而UDP则可以支持一对一,多对多,一对多的通信。
6.TCP面向的是字节流的服务,UDP面向的是报文的服务。
7.TCP协议没有数据边界,UDP有。因此TCP容易发生粘包的现象。在UDP中数据包是多带带发送的,只有当他们到达时才会再次集成,包有明确的界限来判断哪些包已经收到。

例子:
QQ客户端之间的消息传送也采用了UDP模式,因为国内的网络环境非常复杂,而且很多用户采用的方式是通过代理服务器共享一条线路上网的方式,在这些复杂的情况下,客户端之间能彼此建立起来TCP连接的概率较小,严重影响传送信息的效率。

采用UDP协议,通过服务器中转方式。大家都知道,UDP协议是不可靠协议,它只管发送,不管对方是否收到的,但它的传输很高效。但是,作为聊天软件,怎么可以采用这样的不可靠方式来传输消息呢?于是,腾讯采用了上层协议来保证可靠传输:如果客户端使用UDP协议发出消息后,服务器收到该包,需要使用UDP协议发回一个应答包。如此来保证消息可以无遗漏传输。之所以会发生在客户端明明看到“消息发送失败”但对方又收到了这个消息的情况,就是因为客户端发出的消息服务器已经收到并转发成功,但客户端由于网络原因没有收到服务器的应答包引起的。

之所以当时应用UDP,最本质上UDP的优势还是带宽的利用。这一切要回归到99~03年的网络状况,当时网络的特点就是接入带宽很窄而且抖动特别厉害。所谓抖动可能是多方面的,例如延时突发性地暴增、也有可能是由于路由层面的变化突然导致路由黑洞,还各种等等等等的问题。TCP因为拥塞控制、保证有序等原因,在这种网络状态上对带宽的利用是非常低的。而且因为网络抖动的原因,应用层心跳超时,应用层主动断掉socket之后TCP需要三次握手才能重新建立链接,一旦出现频繁的小抖动就会使得带宽利用更低。而等待四次挥手的时间,也会占用服务器上宝贵的资源。

总结来说,当网络差到一定程度了,TCP的优势反而会成为劣势。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/126104.html

相关文章

  • 快速理解TCP和UDP的差异

    摘要:由于本身发送的就是一份一份的数据报,所以自然而然的就有一个上限的大小。并且由于本身的不可靠性以及无序性,如果发送了这三个数据报过来,端接收到的可能是任意顺序任意个数三个数据报的排列组合。 前言 最头疼的问题莫过于到底该选TCP还是UDP作为传输层协议。通过快速对比分析 TCP 和 UDP 的区别,来帮助即时通讯初学者快速了解这些基础的知识点,从而在IM、消息推送等网络通信应用场景中能准...

    tomato 评论0 收藏0
  • 每个前端都要了解点网络知识

    摘要:前端主要关注于应用层的协议,传输层的协议断舍离一下,就主要总结这两种协议了。是序号,是确认序号。根据服务端发来的返回一个包给服务端。服务端接收后进入状态。并在两端维护了索引表,用于记录出现过的,避免重复传输。 前端主要关注于应用层的 HTTP 协议,传输层的 TCP 协议,断舍离一下,就主要总结这两种协议了。 OSI 参考模型 与 TCP/IP 五层模型 showImg(https:/...

    wslongchen 评论0 收藏0
  • 一文讲透前端开发所需网络知识

    摘要:这时候超过定时器设定的时间就会再次发送丢包的数据直到对端响应,所以需要每次都备份发送的数据。 UDP 面向报文 UDP 是一个面向报文(报文可以理解为一段段的数据)的协议。意思就是 UDP 只是报文的搬运工,不会对报文进行任何拆分和拼接操作。 具体来说 在发送端,应用层将数据传递给传输层的 UDP 协议,UDP 只会给数据增加一个 UDP 头标识下是 UDP 协议,然后就传递给网络层...

    smallStone 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<