传输层协议——UDP协议
- UDP协议端格式
- UDP报文结构
- UDP传输的特点
- UDP与TCP的区别(高频面试题)
UDP协议端格式
**注意: **
- 源端口、目的端口、长度、校验和组成了UDP报文报头,每个大小是16bit(2字节),所以UDP报头大小就是8个字节
- UDP数据也是有大小范围的,就在UDP报头中的长度有限制,即2字节的范围是0 ~ 65535字节,转换成kb就是64KB最大报文长度
- 如果校验和出错,则数据就会直接丢弃
UDP报文结构
- 源端口号:发送方端口号(2字节)
- 目的端口号:接收方端口号(2字节)
- UDP长度:表示数据最大长度为65535字节也就是大约64KB
- UDP校验和:数据在传输的时候,本质上是通过0/1bit流,通过光电或者电信号来表示,如果在传输过程中收到干扰,就可能会出现比特翻转现象,这时候就需要校验和验证数据是否出错。
- 数据:也称为UDP载荷,UDP报文接为UDP报头+UDP载荷,其中载荷就是存数据的。
UDP传输的特点
UDP传输的过程类似于寄信
- 无连接:
知道对端的IP和端口号就直接传输,不需要建立连接 - 不可靠:
没有任何安全机制,发送端发送数据报以后,如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息 - 面向数据报:
应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并
例:
如果发送端一次发送200字节,那么接收端也必须一次接收100个字节;
而不能循环接收10次,每次接收20个字节。
- 缓冲区:
UDP只有只有接收缓冲区,没有发送缓冲区
例:
UDP没有真正意义上发送缓冲区。发送的数据会直接交给内核,由内核
将数据交给网络层协议进行后续传输动作;
UDP具有接收缓冲区,但这个接收缓冲区不能保证收到的UDP报文的顺
序和发送UDP报文的顺序一致;如果缓冲区满了,在到达的UDP数据就
会直接丢弃
- 全双工: UDP的socket既能读也能写,这就是全双工
UDP与TCP的区别(高频面试题)
- TCP面向连接(如打电话要先拨号建立连接)提供可靠服务,UDP是无连接的,即发送数据之前不需要建立连接,UDP尽最大努力交付,即不保证可靠交付。
- UDP具有较好的实时性, 工作效率比TCP高,适用于对高速传输和实时性有较高的通信或者广播通信
- 每一条TCP连接只能是一对一的, UDP支持一对一,一对多,多对一和多对多的交互通信
- UDP分组首部开销小 TCP首部开销20字节,UDP首部开销小,只有8字节
- TCP面向字节流, 实际上TCP把数据看成一连串无结构的字节流,UDP是面向报文的一次交付一个完整的报文,报文不可分割,报文是UDP处理数据的最小单位
- UDP适合一次性传输较小数据 的网路应用,如DNS、SNMP等