加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

普通易懂用户数据报协议(UDP)

发布时间:2019-06-24 20:16:22 所属栏目:教程 来源:码砖杂役
导读:什么是UDP? UDP是User Datagram Protocol(用户数据报协议)的缩写,它是一个简朴的协议,简朴到UDP类型RFC0768只有戋戋3页。 UDP是事变在IP层之上的传输层协议,UDP对IP首要有两个扩展: 扩展出端标语使得IP数据报可以多路分发到用户历程。 扩展出校验和提
副问题[/!--empirenews.page--]

什么是UDP?

UDP是User Datagram Protocol(用户数据报协议)的缩写,它是一个简朴的协议,简朴到UDP类型RFC0768只有戋戋3页。

UDP是事变在IP层之上的传输层协议,UDP对IP首要有两个扩展:

  • 扩展出端标语使得IP数据报可以多路分发到用户历程。
  • 扩展出校验和提供收集传输进程中数据过错的检讨。

IP提供了一种极力而为、无毗连的数据报交付处事。IP基于IP地点实现路由和分组转发,可以将一个IP数据报从收集的一台主机传送到另一台主机,IP地点抉择IP数据报将被送往哪个主机。以是,IP提供主机到主机的数据报传输处事。

IP数据报达到目标主机后,内核层实现的IP模块,会认真吸取网卡上的IP数据报,但主机上凡是会同时运行多个历程,IP数据报应该交给哪个历程行止理赏罚呢?IP搞不定。

端标语(位于UDP首部)抉择命据报交给主机上的哪个历程处理赏罚。以是,UDP为端主机上运行的应用措施提供了端到端处事。

UDP的特性

  • UDP是无毗连的,通讯之前无须建连便可直接发送数据报,而TCP是面向毗连的。
  • UDP不提供过错更正,但UDP提供过错检测(端到端校验和)。
  • UDP不做一再消除。
  • UDP不做流量节制。
  • UDP不做拥塞节制,没有协议机制防备高速UDP流量对其他收集用户的悲观影响。
  • UDP不担保次序,数据报递交应用的次序。
  • UDP不行靠,UDP只认真把应用措施传给IP层的数据发送出去,并不能担保数据报达到目标地,靠得住转达必要应用措施去实现。
  • UDP支持组播交付。
  • UDP是一种保存动静界线的传输层协议。

动静界线

应用措施每哀求一次UDP输出将发生一个UDP数据报,从而发送一个IP数据报,而吸取端每哀求一次UDP吸取都将吸取一个完备的UDP报(假若有),这跟面向数据流的TCP纷歧样。

假设主机A给主机B发送2次数据,第一次4字节“abcd”,第二次3字节“xyz”,而主机B吸取2次,别离返回“abcd”、“xyz”两个动静,也可以返回“xyz”,“abcd”两个动静(次序不重要),那么这就是保存动静界线。

UDP是保存动静界线的传输层协议,操作UDP通讯的应用措施每次发送操纵会发生一个IP数据报(不思量分片),这就束缚每次发送的数据量不能大于MTU(最大传输单位),吸取端每次吸取城市返回一个个UDP数据报的完备负载,不会呈现返回半个数据报负载的环境。

而TCP是不保存动静界线的流协议,发送端挪用发送的次数和每次发送的数据量,跟吸取端挪用吸取的次数和每次吸取的数据量,没有任何对应相关,以是行使TCP的应用措施必要行止理赏罚动静界线。

UDP数据报封装名目

IPv4协议(Protocol)字段用值17来标识UDP,UDP数据报头部凡是是8字节,IPv4头部之后紧接着是UDP头部,然后是UDP数据Payload(若有)。

普通易懂用户数据报协议(UDP)

IPv4 UDP数据报封装名目

IPv4封装包对应的UDP头部由源端标语、目标端标语、长度、校验和构成,每个字段都是2字节。

(1) 端标语,纯抽象的标识,它不跟任何物理实体相干。

端标语用于辅佐协议判别发送和吸取历程。吸取端的内核层从网卡吸取到IP数据报之后,辨认出UDP数据报(IP数据报头部协议字段值=17)之后,会按照UDP头部的目标端标语,映射到对应历程,把UDP数据报交给对应的历程行止理赏罚,这个映射相关由体系内查打点维护。

普通易懂用户数据报协议(UDP)

UDP头部和负载

目标端标语是必需的,但源端标语是可选的,假如数据报发送者不必要对方回覆的话,则源端标语可被配置为0。

由于IP层按照IP头部的协议范例字段,将进入的IP数据报,分发到特定的传输协议(TCP或UDP等),到了传输协议层,再按照端标语将协议数据分发到差异历程。以是,端标语是协议独立的,差异协议的沟通端标语并不会引起分发紊乱。

好比,一台呆板上的两个收集处事历程行使沟通的IP地点和端标语,但一个行使TCP协议,另一个行使UDP协议,这样是没有题目。

(2) 长度字段,是以字节为单元的UDP头部和UDP数据的总长度,由于UDP头部长度为8,且空数据的UDP数据报是应承的,这意味着该长度字段值最小为8。UDP长度值是冗余的,由于可以通过IP数据报的总长度减去IP首部的长度推导出来。

(3) 校验和,包围了UDP首部、UDP数据和一个伪首部,由初始发送方计较,由最终目标方校验,用于判定数据报在收集传输进程中是否堕落,好比某一位从1酿成了0。

行使UDP的应用措施怎样实现靠得住传输

众所周知,UDP不行靠、不担保次序。

(1) 什么叫不行靠?A给B发送一个UDP数据报,该UDP数据报不必然被正确交付给吸取端B,但由于收集质量等各类缘故起因,也许丢包,IP数据报是极力而为的交付,统统随缘。

有没有步伐担保,发送的UDP必然达到目标端?Sorry,担保不了,做不到。

那TCP提供的靠得住传输是什么意思?TCP提供的靠得住传输并不是指不丢包,由于TCP也依靠IP(IP不行靠)实现数据报交付,TCP的靠得住性是指丢掉的包会被重传,直到被正确投递,才会继承传输下一个数据报。

那TCP是怎么做到靠得住传输的呢?很简朴,收报确认(ack)+丢包重传。以是UDP假如要提供靠得住传输,也可以参考TCP的实现机制,只是TCP是实此刻内核层,而基于UDP的应用措施,可以把靠得住传输做到应用层。要做收报确认+丢包重传,必要一些特另外信息,好比包序列号之类,可以放到Payload,约定好这些特殊信息在Payload中的布局机关即可。

(2) 什么叫不担保次序?A给B发送两个UDP数据报,两个UDP数据报会被封装为两个IP数据报,通过IP协议传输,由于两个IP数据报独立路由,以是哪个先到?不必然,看神色。

有没有步伐担保,UDP数据报凭证发送端发送的时刻次序达到目标端?也Sorry,办不到。

以是,TCP提供的次序性,着实只是在吸取端对IP数据报按照发送次序从头排序,很显然,UDP要支持重排序,也必要一些特殊信息,也只能通过payload携带,而不能像TCP一样(TCP首部的一些字段用于吸取端重排序)。

综上,UDP只提供最简朴端主机上应用措施的端到端处事,其他的特征,假如要提供,那请参考TCP的思绪去实现吧。

这是有甜头的:由于简朴,以是开销很小。而某些应用场景,可以容忍丢包、乱序,UDP就是很得当的。保时捷是很好,但拉砖照旧用拖沓机吧。

UDP Socket编程

UDP Socket收集编程的API不多,socket()用于建设套接字,close()用于封锁套接字,sendto()用于发送数据,recvfrom()用于吸取数据。

bind()顾名思义是绑定,TCP可以绑定,UDP也可以,bind用于UDP便是汇报内核:这个套接字跟收集远端的一个

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读