UDP传输概述

概述

网络中并非所有应用都需要可靠性传输,如视频流,网络通话,丢失一部分数据影响并不大,而且这类应用持续时间都较长,对实时性要求较高,甚至还需要一对多传输。在这种前提下,就不值得花费高昂的代价来做可靠性传输了,一来影响时延一来降低效率。

因此我们需要一种不可靠但实时性较高(也就是传输花销较低)的传输协议,UDP就是为此而生的。

UDP的特征

用户数据报协议(UDP, User Datagram Protocol)是一种无连接的传输层协议,它不必等待连接建立后才能进行通信。该服务对数据的传输提供不可靠、尽力的传输。这意味着数据报是可能被丢失的,也可能出现顺序错误等现象。

它具有如下明显的特征:

  1. 无连接性

    使用UDP时无需建立连接,使用后自然也无需释放连接。

  2. 不可靠性

    因为是无连接传输,因此它的传输是不可靠的,很有可能会出现报文直接丢失的现象。

    这种特性适合一些短数据的传输,因为对于短数据而言,建立连接的花销太大了,如DNS、DHCP就是采用UDP传输的。

  3. 以报文做边界

    UDP对应用层报文封装、传输,但不会拆分,也不合并。因此,UDP属于报文流传输。

    注意,网络层仍然可以根据MTU对整个报文进行拆分,但这并不是UDP的范畴。

  4. 无流量控制及拥塞控制

    需要使用UDP传输的数据对连续性的要求更高,因此不能进行流量控制和拥塞控制。

  5. 支持各种交互方式

    TCP是一对一的连接,而UDP由于无连接,所以可以是一对一、一对多甚至是多对一的。

UDP数据报格式

UDP报文格式比较简单,如下表所示:

大小(比特)16161616
字段源端口目的端口长度校验和数据

它只是将来自应用层的报文在头部加上8个字节的UDP报头即可。

  1. 源端口

    表示源主机上使用的UDP端口,这个字段是可选的,如果不需要目的主机应答则可以设置为0。

  2. 目的端口

    表示目的主机上使用的UDP端口,如果目的主机没有对应端口的进程,则报文直接丢弃。

  3. 长度

    标识UDP数据报整体长度(包含数据部分),由于它占2个字节,因此一个UDP数据报的数据部分理论最大长度为65535字节,因为UDP也是IP数据报,所以要减去IP数据报头和UDP报头。因此理论最大值为:65507字节

  4. 校验和

    校验比较特殊,计算时要构造出另一部分的头部放到UDP数据报最前面组合进行计算(但该组合出来的头部不参与传输,仅用于计算校验和)。校验也包括数据部分,校验算法通常使用CRC法。

    其另外构造的头部如下表:

大小(比特)32328816
字段源IP地址目的IP地址保留协议UDP长度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值