传输层协议——UDP协议

来源:互联网 发布:成都多益网络面试通知 编辑:程序博客网 时间:2024/05/16 19:46

用户数据报协议UDP:

UDP在传送数据之前不需要先建立连接。远地主机的运输层在收到UDP报文后,不需要给出任何确认。

1、UDP的特点:

(1)UDP是无连接的。即发送数据之前不需要建立连接(当然,发送数据结束时也没有连接可释放),因此减少了开销和发送数据之前的时延。

(2)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。

(3)UDP是面向报文的。对应用程序交下来的报文在添加首部后就向下交付IP层。对应用层交下来的报文即不合并也不拆分,而是保留这些报文的边界。即UDP一次交付一个完整的报文。



发送端应用程序每执行一次写操作,UDP模块就将其封装成一个UDP数据报发送。接收端必须及时针对每一个UDP数据报执行读操作,否则就会丢包。并且,如果用户没有足够的应用程序缓冲区来读取UDP数据,则UDP数据将被截断。


(4)UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送效率降低。

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

(6)UDP的首部开销小,只有8个字节,比TCP的20个字节的首部要短。

2、UDP的首部格式




  • 源端口:占2字节,源端口号。需要对方回信时选用,不需要时可用全0

  • 目的端口:占2字节,目的端口号,这在终点交付报文时必须要使用到

  • 长度:占2字节,UDP用户数据报的长度,最小值为8(仅有首部)

  • 检验和:占2字节,检验UDP用户数据报在传输中是否有错,有错就丢弃

  • 计算检验和时要在UDP用户数据报之前增加12个字节的伪首部

  • 伪首部不是UDP用户数据报真正的首部,只是在计算检验和时临时添加,变成临时UDP用户数据报

  • UDP计算检验和方法和IP数据报首部检验和方法相似,但IP数据报的检验和只检验IP数据报的首部,UDP的检验和把首部和数据部分一起检验