UDP协议

一.UDP协议的简介

UDP称为用户数据报协议,是一种无连接的、不可靠的传输协议,它只在低级程度上实现了传输层功能。UDP只是简单地完成数据从一个进程到另一个进程的交付,它没有提供任何流量控制机制,收到的报文也没有确认;在差错控制上,UDP只提供了一种简单的差错控制方法,即校验和计算,当UDP收到的报文校验和计算不成功时,它将丢弃掉这个报文。UDP协议的可靠性如此差,那为何还要使用它呢?首先,这里的不可靠定义还是要根据具体使用环境来的,在如今高可靠性、低时延的局域网环境下,使用UDP协议出现传输错误的可能性很小,但使用UDP却可以带来数据递交效率和处理速度的提升,因为它省去了连接建立、数据确认、流量控制等一系列过程。从代码的实现角度讲,UDP协议的代码量非常小,对于小型嵌入式设备来说,在局域网中使用UDP来实现通信还是很合适的。除此之外,UDP也经常在那些对轻微数据差错不敏感的应用中被使用到,例如实时视频传输、网络电话等

二.UDP协议端口号

在TCP/IP协议簇中,端口号范围为0~65535,进程可以绑定到某一个端口号上,UDP报文需要在其内部指出该报文应该递交的目的端口号,这样,绑定到相关端口号的进程将最终得到数据报文。两个进程要进行互相间的通信,它们都必须知道对方的IP地址和绑定的端口号,每个报文必须携带目标主机的端口号,这样才能在接收端被正确地递交给应用程序。这样说来,IP协议使用IP地址来标识不同的主机,而UDP协议则使用端口号来标识主机上的不同进程,UDP报文的最终目的地是目的主机上与报文中目的端口号相关联的进程。当UDP接收到递交给某一个端口号的报文,但此时却没有任何进程与该端口号绑定,则这个报文将会被丢弃,同时一个ICMP端口不可达差错报文将会被返回至源主机

三.UDP协议端口号分类

熟知端口号:已经明确规定的一些端口号,通常只占用编号较低的端口号,通常服务器绑定在熟知端口上
短暂端口号:应用程序临时绑定的端口号,通常客户端绑定在短暂端口号上

四.UDP报文的封装

用户进程使用UDP来传送数据时,UDP协议会在数据前加上首部组成UDP报文,并交给IP协议来发送,而IP层将报文封装在IP数据报中并交给底层发送,在底层,IP数据报会被封装在物理数据帧中。在接收端,物理网络先接收到数据帧,然后逐层地将数据递交给上层协议,每一层都在向上层递交前去除掉一个首部。在UDP层,它将从IP层得到UDP报文,UDP协议会根据该报文首部中的目的端口字段将报文递交给用户进程,绑定到这个目的端口的进程将得到报文中的数据

五.UDP报文格式


UDP报文称为用户数据报,用户数据报的结构也可以分为两部分:UDP首部和UDP数据区。如图所示展示了一份UDP报文的具体结构,UDP首部很简单,它由四个16位字段组成,分别指出了该用户数据报从哪个端口来、要到哪个端口去、总长度和校验和。源端口号和目的端口号都是16位的,这样端口号的取值范围在0到65535之间,16位的总长度字段定义了用户数据报的总长度,包括首部长度和数据区长度,以字节为单位。显然,该字段的最小值为8,它恰好为一个UDP首部大小,此时的报文只有首部没有数据。UDP数据区的数据最多只能有65507字节(65535-8-20),因为在IP数据报首部时,IP首部中的总长度字段也为16位,UDP要使用IP层来传送数据报,所以其数据长度也必须满足IP首部中的长度要求。16位的校验和字段用来对数据报的正确性进行检验,它的算法与IP首部校验和算法完全相同,即二进制反码求和,但是在UDP中,校验和的覆盖范围有一定的特殊性,值得指出的是,校验和字段是可选用的,如果不使用校验和,可以直接将该字段填入0,之所以可以不使用校验和,是因为在某些特殊场合,例如在高可靠性的局域网中使用UDP时,减少校验和的计算能增加UDP的处理速度。在以太网的底层物理帧接收过程中,通常会对整个数据帧进行CRC校验,因此,数据报出错的可能性已被降到最低

六.UDP协议伪首部校验和

UDP校验和的计算超出了UDP报文本身,为了计算校验和,UDP引入了伪首部的概念,如图上图所示。值得指出的是,伪首部完全是虚拟的,它并不会和用户数据报一起被发送出去,只是在校验和的计算过程中被使用到。UDP校验和的计算覆盖了三部分:UDP伪首部、UDP首部和UDP数据区

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值