> 文章列表 > 传输层协议——UDP协议

传输层协议——UDP协议

传输层协议——UDP协议

传输层协议——UDP协议

  • UDP协议端格式
  • UDP报文结构
  • UDP传输的特点
  • UDP与TCP的区别(高频面试题)

UDP协议端格式

传输层协议——UDP协议
**注意: **

  • 源端口、目的端口、长度、校验和组成了UDP报文报头,每个大小是16bit(2字节),所以UDP报头大小就是8个字节
  • UDP数据也是有大小范围的,就在UDP报头中的长度有限制,即2字节的范围是0 ~ 65535字节,转换成kb就是64KB最大报文长度
  • 如果校验和出错,则数据就会直接丢弃

UDP报文结构

传输层协议——UDP协议

  1. 源端口号:发送方端口号(2字节)
  2. 目的端口号:接收方端口号(2字节)
  3. UDP长度:表示数据最大长度为65535字节也就是大约64KB
  4. UDP校验和:数据在传输的时候,本质上是通过0/1bit流,通过光电或者电信号来表示,如果在传输过程中收到干扰,就可能会出现比特翻转现象,这时候就需要校验和验证数据是否出错。
  5. 数据:也称为UDP载荷,UDP报文接为UDP报头+UDP载荷,其中载荷就是存数据的。

UDP传输的特点

UDP传输的过程类似于寄信

  1. 无连接:
    知道对端的IP和端口号就直接传输,不需要建立连接

  2. 不可靠:
    没有任何安全机制,发送端发送数据报以后,如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息

  3. 面向数据报:
    应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并
    例:

如果发送端一次发送200字节,那么接收端也必须一次接收100个字节;
而不能循环接收10次,每次接收20个字节。
  1. 缓冲区:
    UDP只有只有接收缓冲区,没有发送缓冲区
    例:
UDP没有真正意义上发送缓冲区。发送的数据会直接交给内核,由内核
将数据交给网络层协议进行后续传输动作;UDP具有接收缓冲区,但这个接收缓冲区不能保证收到的UDP报文的顺
序和发送UDP报文的顺序一致;如果缓冲区满了,在到达的UDP数据就
会直接丢弃
  1. 全双工: UDP的socket既能读也能写,这就是全双工

UDP与TCP的区别(高频面试题)

  • TCP面向连接(如打电话要先拨号建立连接)提供可靠服务,UDP是无连接的,即发送数据之前不需要建立连接,UDP尽最大努力交付,即不保证可靠交付。
  • UDP具有较好的实时性, 工作效率比TCP高,适用于对高速传输和实时性有较高的通信或者广播通信
  • 每一条TCP连接只能是一对一的, UDP支持一对一,一对多,多对一和多对多的交互通信
  • UDP分组首部开销小 TCP首部开销20字节,UDP首部开销小,只有8字节
  • TCP面向字节流, 实际上TCP把数据看成一连串无结构的字节流,UDP是面向报文的一次交付一个完整的报文,报文不可分割,报文是UDP处理数据的最小单位
  • UDP适合一次性传输较小数据 的网路应用,如DNS、SNMP等