传输层UDP协议

UDP协议的概念

UDP(用户数据报协议 User Datagram Protocol)是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。在网络中它与TCP协议一样用于处理数据包,但是它是一种不可靠的传输协议。UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据,UDP传输的可靠性由应用层负责。

UDP报文

UDP协议分为首部字段和数据字段,其中首部字段只占用8个字节,分别是个占用两个字节的源端口、目的端口、长度和检验和。

源端口和目的端口:各2个字节,UDP协议使用端口号为不同的应用保留其各自的数据传输通道。端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。

长度:2个字节,是指包括报头和数据部分在内的总字节数。报头的长度是固定的,主要被用来计算可变长度的数据部分(又称为数据负载)。数据报的最大长度根据操作环境的不同而各异。从理论上说,包含报头在内的数据报的最大长度为65535字节。不过,一些实际应用往往会限制数据报的大小,有时会降低到8192字节。

校验和:2个字节,保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检测是否出错。在进行检验和计算时,会添加一个伪首部一起进行运算。

伪首部:12个字节,包括4个字节的源IP地址、4个字节的目的IP地址、1个字节的0、一个字节的数字17、以及占用2个字节UDP长度。伪首部不是报文的真正首部,只是引入为了计算校验和。UDP检验和会把首部和数据一起进行校验。接收端进行的校验和与UDP报文中的校验和相与,如果无差错应该全为1。若有误,则将报文丢弃或者发给应用层、并附上差错警告。

UDP协议建立在IP协议之上。使用UDP时,先从进程的缓冲区输出一个UDP数据报,把生成的UDP数据报直接封装在IP数据报中进行传输,在传输层使用UDP协议时,发送端不需要发送缓冲区。被封装在IP中的UDP数据报再通过网络传输到目标主机的IP层后,由目标主机的UDP层根据目标端口号送到接收该数据的相应进程。

UDP协议的特点

UDP具有以下几个特点:

1、是无连接的。相比于TCP协议,UDP协议在传送数据前不需要建立连接,当然也就没有释放连接,这就使得UDP的传输效率高。

2、是尽最大努力交付的。UDP协议无法保证数据能够准确的交付到目的主机,也不需要对接收到的UDP报文进行确认。

3、是面向报文的。UDP协议将应用层传输下来的数据封装在一个UDP包中,不进行拆分或合并。运输层在收到对方的UDP包后,会去掉首部后,将数据原封不动的交给应用进程。

4、没有拥塞控制。UDP协议的发送速率不送网络的拥塞度影响。

5、UDP支持一对一、一对多、多对一和多对多的交互通信。

6、UDP的头部占用较小,只占用8个字节。

7、UDP设计简单,保证了UDP在工作时的高效性和低延时性。

正是这些特点,UDP通常被用于输延时小,对可靠性要求不高,有少量数据要进行传输的情况,如DNS(域名服务)、TFTP(简单文件传输)、SNMP(简单网络管理协议、语音和视频等。

猜你喜欢

转载自www.cnblogs.com/HuangJiaPing/p/12539895.html