网络基础-----UDP(User Datagram Protocol)协议

UDP用户数据报协议;所谓数据报,就是一种自带寻址信息,从发送端走到接收端的数据包

我们先来认识下UDP协议端格式

这里写图片描述

源端口号:在需要对方回信的时候选用。不需要时可用全0
目的端口号:这在终点交付报文时必须要用到
16位UDP长度表示: 整个数据报(UDP首部+UDP数据)的最大长度。其最小值为8(仅有首部)
校验和:检测UDP用户数据报在传输中是否有错。有错就丢弃。在计算校验和的时候要在UDP用户数据报之前增加12个字节的伪首部。UDP的校验和是把首部和数据部分一起都校验。

UDP的特点

UDP传输的过程类似于寄信。

  • 1)无连接:知道对端的IP和端口号就直接进行传输,不需要建立连接。)
  • 2)不可靠:没有确认机制,没有重传机制,如果因为网络的故障该段无法发到对方,UDP协议也不会给应用层返回各种错误信息;
  • 3)面向数据报:不能够灵活的控制读写数据的次数和数量;发送方的UDP对应用程序交下来的报文,在添加首部之后,就向下交付给了IP层,UDP对应用层交下来的报文,既不会合并也不会进行拆分的,而是保留这些报文的边界,在接收方的UDP,对IP层交上来的UDP用户数据报,在去除首部之后就原封不动的交付给上层的应用进程,UDP一次只交付一个完整的报文,因此应用程序必须选择合适大小的报文,若报文太长,UDP把它交给IP层之后,IP在进行传送的时候可能要进行分片,这会降低IP层的效率,若报文态短的话,UDP把它交给IP层之后,会使IP数据报的首部的相对长度太大,这也会降低IP层的效率。
  • 4)UDP没有拥塞控制,因此某些拥塞不会使源主机的发送速率降低,很多的实时应用(如IP电话、实时视频会议等)要求源主机以恒定的速率发送数据,并且允许网络发生拥塞的时丢失一些数据,但是不允许丢失的数据有太大的时延。
  • 5)UDP支持一对一、一对多、多对一和多对多的交互通信。
  • 6)UDP的首部开销小。只有8字节,而TCP20字节

UDP的缓冲区

  • UDP没有真正意义上的发送缓冲区,调用sendto会直接交给内核,而内核将数据交给网络层协议进行后序的传输动作。
  • UDP具有接收缓冲区,但是这个缓冲区并不能保证接收到的UDP报的顺序和发送UDP报的顺序一致,如果缓冲区满了,再到达的UDP数据就会丢弃。

UDP使用的注意事项

UDP协议首部中有一个16位的最大长度,也就是说一个UDP能传输的数据最大长度是64K(包含UDP首部)
我们在传输过程中如果超过了64K,就需要在应用层进行手动的分包、多次发送、并在接收端手动的拼接。

基于UDP的应用层协议

  1. NFS:网络文件系统
  2. TFTP:简单文件传输协议
  3. DHCP:动态主机配置协议
  4. BOOTP:启动协议(用于无盘设备启动)
  5. DNS:域名解析协议

猜你喜欢

转载自blog.csdn.net/daboluo521/article/details/80687102